diff --git a/hpc/batch_gpu/submit_breakdown_imaging_fixed_light_certified_lane_rate_a100_hst_fp64 b/hpc/batch_gpu/submit_breakdown_imaging_fixed_light_certified_lane_rate_a100_hst_fp64 new file mode 100755 index 000000000..f4bd4b9a8 --- /dev/null +++ b/hpc/batch_gpu/submit_breakdown_imaging_fixed_light_certified_lane_rate_a100_hst_fp64 @@ -0,0 +1,293 @@ +#!/bin/bash -l +# +# 2026-09 certified-positive-solver PHASE C1 — the uncertified-lane RATE on real Nautilus +# batches, and the matched timing table at the production batch size, on the A100 +# (autolens_profiling#304). Measurement only: no library edits, library mains incl. the +# unreleased PyAutoArray#567 (release block overridden by the human on 2026-09-24). +# +# Phase B (#300, array 350588) found library certified + certified_fallback=none the +# fastest jit(vmap) row with ZERO uncertified lanes, but its lanes were one seeded draw +# family near the fiducial. Whether the phase-C2 guard (re-run uncertified lanes through +# scalar certified+PDIP) is worth four repos of library work depends on how often a lane +# fails its certificate on what a REAL search proposes. So: +# +# 1. CAPTURE (tasks 0-3): nautilus_batch_capture.py fits the phase-B S3 system with +# af.Nautilus at the production settings of BOTH pixelized stages, on both meshes, +# and records every batch reaching Fitness.call_wrap to +# results/breakdown/imaging/nautilus_batches__.npz: +# --stage pix1 source_pix_1: mass + shear + regularization free, n_live=150 +# --stage pix2 source_pix_2: mass + shear fixed, regularization free, n_live=75 +# n_batch=20, use_jax_vmap=True, library PDIP. The regularization is FREE with the +# production priors (inner/outer LogUniform 1e-6..1e6, signal_scale Uniform 0..1) +# and the production class - AdaptSplit on Delaunay, Adapt on rectangular, in both +# stages, as every SLaM source_pix_1 / source_pix_2 does. The rate plausibly depends on +# the regularization through how many pixels sit at the positivity bound, so a +# fixed-regularization capture would not answer the question. Capped at +# --n-like-max 40000 and --capture-seconds 3600 (about an hour). +# 2. RATE (tasks 4-7): fixed_light_trace.py --lanes captured --captured-pass rate +# replays EVERY captured lane (its own mass, shear and regularization, through the +# Fitness instance_from_vector path) under library certified + certified_fallback= +# none in jax.jit(jax.vmap(fn)) chunks of 20 (one chunk = one real Nautilus batch), +# untimed, and reports the uncertified-lane rate overall, by Nautilus phase and by +# call half, plus max passes against the packaged budget 16, per mesh and stage. +# 3. TIME (tasks 8-37): the phase-B matched pair (--arms both) on B captured lanes +# (nautilus_batches.timed_window: consecutive calls from the first post-prior +# batch; at B=20 exactly one real batch) and the three phase-B rows: PDIP vmap and +# scalar PDIP (pdip/on), certified+PDIP vmap and SCALAR certified+PDIP +# (certified/on), certified+none vmap (certified/off). pix1 gets the full +# B=16/20/50/100 grid; pix2 gets B=20 only. Why: the batch-size scaling is a +# property of the program's shapes, which pix2 shares with pix1; what pix2 can +# change is the per-lane pass count under vmap (the certified while_loop runs to +# the batch's max passes), and B=20 is the one production batch size where that +# enters the C2 verdict. Six tasks, cheap. +# +# TWO-STEP SUBMISSION — the replay tasks read the captures' npz files, so they must start +# after them. Submit from hpc/batch_gpu/ on RAL (the -o/-e paths are relative): +# +# CAP=$(sbatch --parsable --array=0-3 submit_breakdown_imaging_fixed_light_certified_lane_rate_a100_hst_fp64) +# sbatch --array=4-37 --dependency=afterok:${CAP} submit_breakdown_imaging_fixed_light_certified_lane_rate_a100_hst_fp64 +# +# A plain `sbatch` (or `hpc/sync submit`) of this file runs all 38 tasks at once; every +# replay task then refuses to start (FATAL, no npz) — nothing is measured on a stale or +# missing capture. +# +# Rectangular captures written before the rectangular stages moved to Adapt (both pix1 +# and pix2 now free Adapt, as production does) recorded the Constant class, so the replay +# fingerprint refuses them. Re-capture tasks 1 and 3 before any rectangular replay task +# (5, 7, 20-31, 35-37); the Delaunay captures (tasks 0 and 2) are unaffected. +# +# Array tasks +# ----------- +# task mesh stage pass B solver fallback +# 0 delaunay pix1 capture 20 - - +# 1 rectangular pix1 capture 20 - - +# 2 delaunay pix2 capture 20 - - +# 3 rectangular pix2 capture 20 - - +# 4-7 (same mesh/stage order) rate 20 certified off +# 8-19 delaunay pix1 time 16/20/50/100 x (pdip on, certified on, certified off) +# 20-31 rectangular pix1 time 16/20/50/100 x the same three rows +# 32-34 delaunay pix2 time 20 x the three rows +# 35-37 rectangular pix2 time 20 x the three rows +# +# The pass budget is NOT passed: every certified row runs the library's resolved +# certified_pass_budget (16 as packaged), and the JSON records it and its basis. +# +# The numerical gate — PRE-REGISTERED before submission (unchanged from phase B) +# ------------------------------------------------------------------------------ +# Phase 3 (results/notes/hst_gpu_residue_phase3_psf_2026_09.md) placed the ~2.5e-9 +# residual BETWEEN the jit(vmap) and scalar-jit compositions, so per lane of a TIME task: +# GATED at 1e-9 relative: the jit(vmap) arm vs the jit(vmap) library PDIP +# GATED at 1e-9 relative: the scalar jit arm vs the scalar jit library PDIP +# RECORDED, NOT gated: jit(vmap) vs scalar across compositions (relative + nats) +# RECORDED: uncertified_lanes; the window vs the capture's own PDIP values +# No pin is drawn tighter than 1e-9 (Delaunay's ~2e-10 run-to-run floor). A RATE task has +# no gate: it records, per lane, certified / passes, the certified value against the +# capture's library-PDIP figure of merit, and every uncertified lane re-run through scalar +# library PDIP. Timing is never gated. A failing task writes its JSON, then exits non-zero. +# +# MEMORY. The PSF-convolved mapping-matrix cube is (180, 180, 1500) fp64 = 389 MB per +# lane, so B=50 needs about 19 GB and B=100 about 39 GB for the cube alone. B=100 may +# exceed the card; an OOM task is itself the memory-limit row, read from its .err. +# +# Every task starts from an EMPTY JAX compilation cache (a seeded XLA autotune cache +# silently changes kernels, results/notes/xla_autotune_triton_gemm.md); the +# AUTOTUNE_ENTRIES census at the end is the check. +# +# WALL-BASIS: +# Neither cell's wall has been measured on the A100 in these modes. A capture is +# capped by the cell itself at 3600 s of sampling plus setup and compiles (pix2, with +# half the live points, is expected to converge sooner); a rate task +# replays up to 40000 lanes at roughly one second per 20-lane chunk; the B=100 timing +# tasks run 100 sequential scalar calls per invocation. The laptop CPU witness in the +# phase-C1 note is the probe. Both cells therefore declare unmeasured with the 3x +# floor, which the twelve-hour allocation covers. +# NOTE for anyone editing this block - check_submits reads any line here shaped like +# a keyword, a colon and a value as row data, so the prose must never contain that +# shape. +# cell: imaging/nautilus_batch_capture/hst device: a100 precision: fp64 +# source: unmeasured probe-first: yes wall: 4800 headroom: 3.0 +# cell: imaging/fixed_light_trace/hst device: a100 precision: fp64 +# source: unmeasured probe-first: yes wall: 5400 headroom: 3.0 + +#SBATCH -J flt_lanerate_hst +#SBATCH --partition=gpu +#SBATCH --gres=gpu:1 +#SBATCH --ntasks=1 +#SBATCH --cpus-per-task=4 +#SBATCH --mem=64gb +#SBATCH --time=12:00:00 +#SBATCH --array=0-37 +#SBATCH --export=ALL,PYAUTO_HPC_BASE=/mnt/ral/jnightin/PyAuto +#SBATCH -o output/output.%A_%a.out +#SBATCH -e error/error.%A_%a.err +#SBATCH --mail-type=END,FAIL +#SBATCH --mail-user=james.w.nightingale@durham.ac.uk + +# Derive the repo root from where this was submitted (hpc/batch_gpu/../..): it runs from +# a worktree of the feature branch, not the canonical RAL checkout. +export AP_ROOT="$(cd "${SLURM_SUBMIT_DIR:-$(dirname "$0")}/../.." && pwd)" +export PROJECT_PATH="$AP_ROOT" +export PYAUTO_HPC_BASE="${PYAUTO_HPC_BASE:-/mnt/ral/jnightin/PyAuto}" +echo "AP_ROOT=$AP_ROOT" +echo "PYAUTO_HPC_BASE=$PYAUTO_HPC_BASE" +source $AP_ROOT/activate.sh + +export JAX_PLATFORM_NAME=cuda +export JAX_PLATFORMS=cuda,cpu +export XLA_PYTHON_CLIENT_PREALLOCATE=false +export JAX_ENABLE_X64=True +export XLA_FLAGS="--xla_disable_hlo_passes=constant_folding" +export NUMBA_CACHE_DIR=/tmp/numba_cache +export MPLCONFIGDIR=/tmp/matplotlib + +CELL="$AP_ROOT/scripts/imaging/likelihood_breakdown/fixed_light_trace.py" +CAPTURE="$AP_ROOT/scripts/imaging/likelihood_breakdown/nautilus_batch_capture.py" + +# A stale checkout fails before allocating a GPU. +if [ ! -f "$CAPTURE" ] || ! grep -q -- "--captured-pass" "$CELL"; then + echo "FATAL: this checkout has no nautilus_batch_capture.py or no --captured-pass in" >&2 + echo " fixed_light_trace.py. It predates #304; refusing to run." >&2 + exit 1 +fi + +MESHES=(delaunay rectangular delaunay rectangular delaunay rectangular delaunay rectangular delaunay delaunay delaunay delaunay delaunay delaunay delaunay delaunay delaunay delaunay delaunay delaunay rectangular rectangular rectangular rectangular rectangular rectangular rectangular rectangular rectangular rectangular rectangular rectangular delaunay delaunay delaunay rectangular rectangular rectangular) +STAGES=(pix1 pix1 pix2 pix2 pix1 pix1 pix2 pix2 pix1 pix1 pix1 pix1 pix1 pix1 pix1 pix1 pix1 pix1 pix1 pix1 pix1 pix1 pix1 pix1 pix1 pix1 pix1 pix1 pix1 pix1 pix1 pix1 pix2 pix2 pix2 pix2 pix2 pix2) +PASSES=(capture capture capture capture rate rate rate rate time time time time time time time time time time time time time time time time time time time time time time time time time time time time time time) +BATCHES=(20 20 20 20 20 20 20 20 16 16 16 20 20 20 50 50 50 100 100 100 16 16 16 20 20 20 50 50 50 100 100 100 20 20 20 20 20 20) +SOLVERS=(- - - - certified certified certified certified pdip certified certified pdip certified certified pdip certified certified pdip certified certified pdip certified certified pdip certified certified pdip certified certified pdip certified certified pdip certified certified pdip certified certified) +FALLBACKS=(- - - - off off off off on on off on on off on on off on on off on on off on on off on on off on on off on on off on on off) +MESH=${MESHES[$SLURM_ARRAY_TASK_ID]} +STAGE=${STAGES[$SLURM_ARRAY_TASK_ID]} +PASS=${PASSES[$SLURM_ARRAY_TASK_ID]} +BATCH=${BATCHES[$SLURM_ARRAY_TASK_ID]} +SOLVER=${SOLVERS[$SLURM_ARRAY_TASK_ID]} +FALLBACK=${FALLBACKS[$SLURM_ARRAY_TASK_ID]} +if [ -z "$MESH" ] || [ -z "$STAGE" ] || [ -z "$PASS" ] || [ -z "$BATCH" ] || [ -z "$SOLVER" ] || [ -z "$FALLBACK" ]; then + echo "FATAL: no (mesh, stage, pass, batch, solver, fallback) arm for array task ${SLURM_ARRAY_TASK_ID} (expected 0-37)." >&2 + exit 1 +fi + +BORDER=cell +CONFIG_NAME=hpc_a100_fp64_fixed_light_trace +NPZ="$AP_ROOT/results/breakdown/imaging/nautilus_batches_${MESH}_${STAGE}.npz" + +# The dataset is tracked but its adapt image cache is not; concurrent tasks must not +# auto-simulate the same dataset/imaging/hst/, so it is prepared once before submitting. +if [ ! -f "$AP_ROOT/dataset/imaging/hst/data.fits" ]; then + echo "FATAL: dataset/imaging/hst/data.fits missing. Simulate it once before" >&2 + echo " submitting (concurrent tasks must not auto-simulate the same dir)." >&2 + exit 1 +fi + +# A replay task measures the capture it reads, so the npz must exist. The cell refuses +# an npz captured on a different S3 system (fingerprint check); that it is THIS run's +# capture is what the two-step --dependency above guarantees. +if [ "$PASS" != "capture" ] && [ ! -f "$NPZ" ]; then + echo "FATAL: $NPZ missing. The replay tasks (4-37) must be submitted with" >&2 + echo " --dependency=afterok: after tasks 0-3 (see the header)." >&2 + exit 1 +fi + +LEG="${MESH}_${STAGE}_${PASS}_${BATCH}_${SOLVER}_${FALLBACK}" + +# Fresh per-task compilation cache and trace dir, under output/ (gitignored). +export JAX_COMPILATION_CACHE_DIR="$AP_ROOT/output/jax_cache/fixed_light_lanerate_${LEG}_${SLURM_ARRAY_JOB_ID:-local}_${SLURM_ARRAY_TASK_ID:-0}" +rm -rf "$JAX_COMPILATION_CACHE_DIR" && mkdir -p "$JAX_COMPILATION_CACHE_DIR" +echo "JAX_COMPILATION_CACHE_DIR=$JAX_COMPILATION_CACHE_DIR (fresh)" +TRACE_DIR="$AP_ROOT/output/trace/fixed_light_lanerate_${LEG}_${SLURM_ARRAY_JOB_ID:-local}_${SLURM_ARRAY_TASK_ID:-0}" +rm -rf "$TRACE_DIR" && mkdir -p "$TRACE_DIR" +echo "TRACE_DIR=$TRACE_DIR (fresh)" + +nvidia-smi + +echo "==========================================" +date +hostname +echo "Task: $SLURM_ARRAY_TASK_ID / 37" +echo "Stage: $STAGE" +echo "Pass: $PASS" +echo "Dataset: hst (0.05\"/px)" +echo "Precision: fp64" +echo "Source mesh: $MESH (cell fiducial; --source-pixels NOT passed)" +echo "Batches file: $NPZ" +echo "LANE_RATE_LEG mesh=$MESH stage=$STAGE pass=$PASS batch=$BATCH solver=$SOLVER fallback=$FALLBACK dataset=hst hardware=hpc_a100_fp64" + +echo "=== source revisions (shared install, untouched) ===" +for r in PyAutoNerves PyAutoFit PyAutoArray PyAutoGalaxy PyAutoLens; do + printf '%-14s %s\n' "$r" "$(git -C $PYAUTO_HPC_BASE/$r rev-parse HEAD 2>&1)" +done +echo "AP_ROOT rev: $(git -C $AP_ROOT rev-parse HEAD 2>&1)" +# PyAutoArray#567 (the library certified solver) merged at 11b93476. +if git -C $PYAUTO_HPC_BASE/PyAutoArray merge-base --is-ancestor 11b93476 HEAD 2>/dev/null; then + echo "PyAutoArray contains 11b93476 (#567): yes" +else + echo "FATAL: $PYAUTO_HPC_BASE/PyAutoArray does not contain 11b93476 (#567)." >&2 + exit 1 +fi + +cd $AP_ROOT + +echo "=== import provenance ===" +python3 -c "import autoarray, autolens, nautilus; print('autoarray.__file__ =', autoarray.__file__); print('autolens.__file__ =', autolens.__file__); print('nautilus.__version__ =', nautilus.__version__); print('Settings().certified_pass_budget =', autolens.Settings().certified_pass_budget)" + +# The exit code is CAPTURED, not inherited: a failing leg still writes its JSON and has +# its provenance recorded. activate.sh installs an ERR trap that exits even with errexit +# off, so preserve and remove it around the python call and restore it after. +SAVED_ERR_TRAP=$(trap -p ERR) +trap - ERR +set +e +if [ "$PASS" = "capture" ]; then + python3 -u scripts/imaging/likelihood_breakdown/nautilus_batch_capture.py \ + --mesh $MESH \ + --n-like-max 40000 \ + --capture-seconds 3600 \ + --stage $STAGE \ + --n-batch 20 \ + --seed 1 +elif [ "$PASS" = "rate" ]; then + python3 -u scripts/imaging/likelihood_breakdown/fixed_light_trace.py \ + --mesh $MESH \ + --border-relocator $BORDER \ + --vmap-batch $BATCH \ + --lanes captured \ + --batches "$NPZ" \ + --captured-pass rate \ + --fallback $FALLBACK \ + --solver-source library \ + --solver $SOLVER \ + --routes b,d \ + --trace-dir "$TRACE_DIR" \ + --config-name $CONFIG_NAME +else + python3 -u scripts/imaging/likelihood_breakdown/fixed_light_trace.py \ + --mesh $MESH \ + --border-relocator $BORDER \ + --vmap-batch $BATCH \ + --lanes captured \ + --batches "$NPZ" \ + --captured-pass time \ + --arms both \ + --fallback $FALLBACK \ + --solver-source library \ + --solver $SOLVER \ + --trace-calls 10 \ + --routes b,d \ + --trace-dir "$TRACE_DIR" \ + --config-name $CONFIG_NAME +fi +CELL_RC=$? +set -e +eval "$SAVED_ERR_TRAP" + +# Autotune-cache census (non-fatal: the directory exists only if XLA wrote entries). +echo -n "AUTOTUNE_ENTRIES count=" +ls "$JAX_COMPILATION_CACHE_DIR/xla_gpu_per_fusion_autotune_cache_dir" 2>/dev/null | wc -l +if [ "$PASS" = "capture" ] && [ -f "$NPZ" ]; then + echo "NPZ_SHA256 $(sha256sum "$NPZ" | cut -d' ' -f1)" +fi + +echo "CELL_EXIT=$CELL_RC" +echo "Finished." +date + +exit $CELL_RC diff --git a/results/breakdown/imaging/fixed_light_trace_delaunay_captured_rate_libcertified_fboff_b16_pix1_hpc_a100_fp64_fixed_light_trace.json b/results/breakdown/imaging/fixed_light_trace_delaunay_captured_rate_libcertified_fboff_b16_pix1_hpc_a100_fp64_fixed_light_trace.json new file mode 100644 index 000000000..62e1444cf --- /dev/null +++ b/results/breakdown/imaging/fixed_light_trace_delaunay_captured_rate_libcertified_fboff_b16_pix1_hpc_a100_fp64_fixed_light_trace.json @@ -0,0 +1,59202 @@ +{ + "device": { + "backend": "gpu", + "device": "cuda:0", + "hostname": "euclid-ral-gpu-1", + "xla_flags": "--xla_disable_hlo_passes=constant_folding --xla_gpu_autotune_level=0 --xla_gpu_enable_triton_gemm=false", + "omp_num_threads": null, + "cpu_count": 124, + "jax_compilation_cache_dir": "/mnt/ral/jnightin/autolens_profiling_wt/certified-solver-phase-c1-lane-rate/output/jax_cache/fixed_light_lanerate_delaunay_pix1_rate_20_certified_off_350768_4", + "autotune_cache_entries_at_start": 0, + "cache_fresh": true, + "nvidia_smi": "NVIDIA A100 80GB PCIe, 35443 MiB, 81920 MiB" + }, + "machine": { + "cpu_model": "AMD EPYC 7702 64-Core Processor", + "cpu_count_os": 124, + "nproc": 4, + "nproc_all": 124, + "nproc_note": "GNU nproc honours OMP_NUM_THREADS, so `nproc` can print 1 on a multi-core host; `nproc_all` is the core count.", + "ram_total": "928298200 kB", + "kernel": "5.14.0-687.50.1.el9_8.x86_64", + "platform": "Linux-5.14.0-687.50.1.el9_8.x86_64-x86_64-with-glibc2.34", + "python": "3.12.4", + "jax_thread_env": { + "NPROC": null + }, + "blas_thread_env": { + "OMP_NUM_THREADS": null, + "OPENBLAS_NUM_THREADS": null, + "MKL_NUM_THREADS": null, + "VECLIB_MAXIMUM_THREADS": null, + "NUMEXPR_NUM_THREADS": null + }, + "thread_env_note": "NPROC sizes XLA's CPU intra-op pool (the JAX rows); the BLAS knobs pin OpenBLAS/MKL/OpenMP (the numpy/scipy rows) and do not touch JAX. Two disjoint families; both are recorded on every CPU timing.", + "gpu": "NVIDIA A100 80GB PCIe, 81920 MiB, 610.57.04" + }, + "precision": "fp64", + "configuration": { + "mesh": "delaunay", + "source_pixels": 1500, + "dataset": "hst", + "dataset_sha256": { + "data.fits": "e4e833a28e9c6f6fb023cd85c0d3dde74068720256bc77a240633500e5b04fac", + "noise_map.fits": "315c6266a0acd3ac9c8da82fcd2b45a08697362481fd7a35072bab1658530ba3", + "psf.fits": "8389ba0e8bf4a09b4a561cfc246181a2fb944ed396754cd0ff76fdd22910d303" + }, + "cell_source_sha256": "06a162fcdae6b329384ec33322f443df07215d86e56f0505ac15b3d3473eb432", + "border_relocator_mode": "cell", + "border_relocator": true, + "regularization": { + "scheme": "adapt_split", + "inner_coefficient": 0.1, + "outer_coefficient": 10.0, + "signal_scale": 0.1 + }, + "vmap_batch": 20, + "lanes": "captured", + "captured_pass": "rate", + "batch_sample": null, + "solver_source": "library", + "solver": "certified", + "certified_fallback": "none", + "certified_pass_budget": 16, + "certified_tau_rel": 1e-09, + "use_mixed_precision": false, + "thread_env": { + "n_threads": null, + "vars": [ + "OPENBLAS_NUM_THREADS", + "MKL_NUM_THREADS", + "OMP_NUM_THREADS", + "VECLIB_MAXIMUM_THREADS", + "NUMEXPR_NUM_THREADS" + ], + "set_to": null, + "preexisting": {}, + "overridden": {}, + "note": "Not pinned (legacy variant): recorded as found." + } + }, + "captured": { + "batches_path": "/mnt/ral/jnightin/autolens_profiling_wt/certified-solver-phase-c1-lane-rate/results/breakdown/imaging/nautilus_batches_delaunay_pix1.npz", + "batches_sha256": "e71a5e23026b342d1ff4359b8fb914a87980d8aea0060659d2334dcfa3215c00", + "schema_version": 2, + "n_calls": 932, + "n_lanes": 18640, + "call_sizes_seen": [ + 20 + ], + "calls_by_phase": { + "prior": 15, + "exploration": 917 + }, + "parameter_paths": [ + "galaxies.source.pixelization.regularization.inner_coefficient", + "galaxies.source.pixelization.regularization.outer_coefficient", + "galaxies.source.pixelization.regularization.signal_scale", + "galaxies.lens.mass.centre.centre_0", + "galaxies.lens.mass.centre.centre_1", + "galaxies.lens.mass.einstein_radius", + "galaxies.lens.mass.ell_comps.ell_comps_0", + "galaxies.lens.mass.ell_comps.ell_comps_1", + "galaxies.lens.shear.gamma_1", + "galaxies.lens.shear.gamma_2" + ], + "stage": "pix1", + "regularization": { + "class": "AdaptSplit", + "free": true, + "priors": { + "inner_coefficient": [ + "LogUniform", + 1e-06, + 1000000.0 + ], + "outer_coefficient": [ + "LogUniform", + 1e-06, + 1000000.0 + ], + "signal_scale": [ + "Uniform", + 0.0, + 1.0 + ] + }, + "priors_source": "PyAutoGalaxy packaged config/priors/regularization (adapt_split.yaml / constant.yaml); adapt_split.yaml is identical to euclid_strong_lens_modeling_pipeline/config/priors/regularization/adapt_split.yaml" + }, + "nautilus": { + "departures_from_production": [ + "mass/shear priors are the phase-B cell's Gaussians, not chained from source_lp", + "no positions likelihood", + "the cell's mesh (Hilbert 1500, weight_power 1) in both stages; source_pix_2 redraws a 500-vertex Hilbert grid at weight_power 3.5", + "seeded (production passes no seed)", + "quick updates disabled (iterations_per_quick_update=1e12; render-only)", + "NullPaths: no output directory, so no checkpoint and one Sampler.run call", + "post-fit perform_update skipped (samples / latent variables never built)" + ], + "n_batch": 20, + "n_like_max": 40000, + "n_live": 150, + "number_of_cores": 1, + "production_reference": "euclid_strong_lens_modeling_pipeline/scripts/full_model.py source_pix_1 (n_live=150) / source_pix_2 (n_live=75): af.Nautilus(n_batch=20, **SettingsSearch.search_dict) with use_jax_vmap=True and number_of_cores=1 (SettingsSearch defaults)", + "production_stage": "source_pix_1", + "seed": 1, + "stage": "pix1", + "use_jax_vmap": true, + "version": "1.0.5" + }, + "capture_fit_status": "sampling complete (n_like_max or convergence); post-fit result skipped", + "capture_library_revisions": { + "PyAutoArray": { + "head": "7fa8d2714f7da43fec2b23c31bff580764831670", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoArray" + }, + "PyAutoFit": { + "head": "a736840127be7a3c21e15a5c945e94d8f1082983", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoFit" + }, + "PyAutoGalaxy": { + "head": "70a61e26cd715cefe7012a38285698091246a8a4", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy" + }, + "PyAutoLens": { + "head": "86054bbc19baa2f710a12e04a94fa27ab37cc354", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoLens" + }, + "PyAutoNerves": { + "head": "1fa613aa8d89a79613009fb66f5b4e2d21deb57a", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoNerves" + } + }, + "fingerprint_check": { + "fields": [ + "mesh", + "source_pixels", + "dataset_sha256", + "regularization_class", + "regularization_s0_fiducial", + "border_relocator", + "use_mixed_precision", + "log_evidence_s3_library" + ], + "not_identity": "the regularization coefficients: free per lane since the capture frees them", + "log_evidence_s3_library_rel_diff": 0.0, + "passed": true + } + }, + "rate": { + "pass": "rate", + "solver": "certified", + "certified_fallback": "none", + "certified_pass_budget": 16, + "certified_pass_budget_basis": "config default (Settings().certified_pass_budget)", + "composition": "jax.jit(jax.vmap(fn)) \u2014 the current Fitness._vmap composition", + "chunk_size": 20, + "chunk_rule": "the replayed lanes in capture order, split into chunks of --vmap-batch; the last chunk is padded by repeating its final lane and the padded rows are dropped. At --vmap-batch == n_batch every chunk is exactly one captured Nautilus batch.", + "batch_sample": null, + "stage": "pix1", + "regularization_range": { + "galaxies.source.pixelization.regularization.inner_coefficient": { + "min": 1.0007180966404194e-06, + "max": 797698.1658704937 + }, + "galaxies.source.pixelization.regularization.outer_coefficient": { + "min": 1.0197809368525751e-06, + "max": 994245.7042339334 + }, + "galaxies.source.pixelization.regularization.signal_scale": { + "min": 0.0005176482272193361, + "max": 0.9996966003384972 + } + }, + "calls_replayed": 932, + "calls_rule": "all captured calls", + "report_source": "library solve observed through its stats= out-dict (PyAutoArray #566) and jax.debug.callback(..., ordered=True); untimed; one row per lane checked per chunk", + "traced_solver_kwargs_jax": [ + "certified" + ], + "overall": { + "n_lanes": 18640, + "n_uncertified": 368, + "uncertified_rate": 0.019742489270386267, + "max_passes": 16, + "mean_passes": 2.4495171673819742, + "n_at_budget": 387, + "budget": 16, + "passes_histogram": { + "0": 319, + "1": 1146, + "2": 15166, + "3": 734, + "4": 287, + "5": 174, + "6": 100, + "7": 83, + "8": 54, + "9": 48, + "10": 36, + "11": 25, + "12": 22, + "13": 17, + "14": 26, + "15": 16, + "16": 387 + } + }, + "by_nautilus_phase": { + "prior": { + "n_lanes": 300, + "n_uncertified": 35, + "uncertified_rate": 0.11666666666666667, + "max_passes": 16, + "mean_passes": 3.6766666666666667, + "n_at_budget": 42, + "budget": 16, + "passes_histogram": { + "0": 177, + "1": 12, + "2": 14, + "3": 13, + "4": 5, + "5": 4, + "6": 5, + "7": 8, + "8": 2, + "9": 3, + "10": 3, + "11": 3, + "12": 3, + "13": 1, + "14": 4, + "15": 1, + "16": 42 + } + }, + "exploration": { + "n_lanes": 18340, + "n_uncertified": 333, + "uncertified_rate": 0.01815703380588877, + "max_passes": 16, + "mean_passes": 2.429443838604144, + "n_at_budget": 345, + "budget": 16, + "passes_histogram": { + "0": 142, + "1": 1134, + "2": 15152, + "3": 721, + "4": 282, + "5": 170, + "6": 95, + "7": 75, + "8": 52, + "9": 45, + "10": 33, + "11": 22, + "12": 19, + "13": 16, + "14": 22, + "15": 15, + "16": 345 + } + } + }, + "by_call_half": { + "early": { + "n_lanes": 9320, + "n_uncertified": 368, + "uncertified_rate": 0.039484978540772535, + "max_passes": 16, + "mean_passes": 2.8988197424892705, + "n_at_budget": 387, + "budget": 16, + "passes_histogram": { + "0": 319, + "1": 1136, + "2": 5868, + "3": 722, + "4": 287, + "5": 174, + "6": 100, + "7": 83, + "8": 54, + "9": 48, + "10": 36, + "11": 25, + "12": 22, + "13": 17, + "14": 26, + "15": 16, + "16": 387 + } + }, + "late": { + "n_lanes": 9320, + "n_uncertified": 0, + "uncertified_rate": 0.0, + "max_passes": 3, + "mean_passes": 2.000214592274678, + "n_at_budget": 0, + "budget": 16, + "passes_histogram": { + "1": 10, + "2": 9298, + "3": 12 + } + } + }, + "phase_rule": "by_nautilus_phase: the sampler state when the batch was requested (nautilus_batches.phase_of) \u2014 prior = only the unit-cube bound (prior draws), exploration = more bounds and Sampler.explored False, sampling = explored True. by_call_half: early = call index below the median replayed call index, late = the rest.", + "vs_capture_pdip": { + "reference": "the capture's own figure of merit for the lane: library PDIP through Fitness.call_wrap's jax.jit(jax.vmap(call)) over parameter vectors", + "n_compared": 18552, + "n_excluded_resampled_or_nonfinite": 88, + "max_rel_diff": 0.28143148056401085, + "median_rel_diff": 3.8503027697988626e-13, + "max_abs_diff_nats": 81078.13093022996, + "n_above_lane_rtol": 648, + "n_above_lane_rtol_uncertified": 333, + "lane_rtol": 1e-09, + "gated": false, + "note": "RECORDED, NOT GATED: a cross-composition comparison (Fitness over vectors vs this cell over trees) and, for certified lanes, certified vs PDIP. The gated 1e-9 pin is the timed pass's (same composition, same lanes). It still shows whether a certified_fallback=none lane that FAILED its certificate returned a wrong answer." + }, + "uncertified_pdip_recheck": { + "n_uncertified": 368, + "n_rechecked": 256, + "cap": 256, + "max_rel_diff": 0.0020431399602221546, + "rows": [ + { + "lane_row": 6, + "call_index": 0, + "lane_in_call": 6, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 18838.952634021352, + "log_likelihood_scalar_library_pdip": 18838.95330681149, + "rel_diff": 3.5712713293533995e-08, + "abs_diff_nats": 0.000672790138196433 + }, + { + "lane_row": 11, + "call_index": 0, + "lane_in_call": 11, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 16523.206921884914, + "log_likelihood_scalar_library_pdip": 16521.318352187824, + "rel_diff": 0.00011431107716897429, + "abs_diff_nats": 1.8885696970901336 + }, + { + "lane_row": 24, + "call_index": 1, + "lane_in_call": 4, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 19260.085681203545, + "log_likelihood_scalar_library_pdip": 19259.781506382937, + "rel_diff": 1.579326434767409e-05, + "abs_diff_nats": 0.30417482060875045 + }, + { + "lane_row": 27, + "call_index": 1, + "lane_in_call": 7, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 16820.74128728444, + "log_likelihood_scalar_library_pdip": 16820.741287290806, + "rel_diff": 3.784888432485901e-13, + "abs_diff_nats": 6.366462912410498e-09 + }, + { + "lane_row": 32, + "call_index": 1, + "lane_in_call": 12, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 13277.703343316593, + "log_likelihood_scalar_library_pdip": 13277.68872822231, + "rel_diff": 1.1007257799953265e-06, + "abs_diff_nats": 0.014615094281907659 + }, + { + "lane_row": 51, + "call_index": 2, + "lane_in_call": 11, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 20657.953635196154, + "log_likelihood_scalar_library_pdip": 20656.211309600094, + "rel_diff": 8.434874963011724e-05, + "abs_diff_nats": 1.7423255960602546 + }, + { + "lane_row": 60, + "call_index": 3, + "lane_in_call": 0, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 18040.117061681733, + "log_likelihood_scalar_library_pdip": 18040.13666815689, + "rel_diff": 1.0868252008688257e-06, + "abs_diff_nats": 0.01960647515807068 + }, + { + "lane_row": 84, + "call_index": 4, + "lane_in_call": 4, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 18597.116997657053, + "log_likelihood_scalar_library_pdip": 18597.116992201765, + "rel_diff": 2.933404928686651e-10, + "abs_diff_nats": 5.455287464428693e-06 + }, + { + "lane_row": 86, + "call_index": 4, + "lane_in_call": 6, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 19119.459453652642, + "log_likelihood_scalar_library_pdip": 19122.068286931215, + "rel_diff": 0.00013643049692255217, + "abs_diff_nats": 2.6088332785730017 + }, + { + "lane_row": 91, + "call_index": 4, + "lane_in_call": 11, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 19513.61029910301, + "log_likelihood_scalar_library_pdip": 19513.471687664805, + "rel_diff": 7.1033714770280345e-06, + "abs_diff_nats": 0.13861143820395228 + }, + { + "lane_row": 98, + "call_index": 4, + "lane_in_call": 18, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 21859.545804096797, + "log_likelihood_scalar_library_pdip": 21860.144147246312, + "rel_diff": 2.7371418298287073e-05, + "abs_diff_nats": 0.5983431495151308 + }, + { + "lane_row": 112, + "call_index": 5, + "lane_in_call": 12, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 17672.593850168632, + "log_likelihood_scalar_library_pdip": 17676.733790433493, + "rel_diff": 0.00023420278394987459, + "abs_diff_nats": 4.139940264860343 + }, + { + "lane_row": 115, + "call_index": 5, + "lane_in_call": 15, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 19426.84290931878, + "log_likelihood_scalar_library_pdip": 19426.84290710452, + "rel_diff": 1.1397937634557231e-10, + "abs_diff_nats": 2.214259438915178e-06 + }, + { + "lane_row": 127, + "call_index": 6, + "lane_in_call": 7, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 19544.639833862217, + "log_likelihood_scalar_library_pdip": 19544.639833495832, + "rel_diff": 1.874603404116455e-11, + "abs_diff_nats": 3.663844836410135e-07 + }, + { + "lane_row": 131, + "call_index": 6, + "lane_in_call": 11, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 20688.518723506466, + "log_likelihood_scalar_library_pdip": 20688.756882472582, + "rel_diff": 1.1511516495129938e-05, + "abs_diff_nats": 0.23815896611631615 + }, + { + "lane_row": 133, + "call_index": 6, + "lane_in_call": 13, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 18789.90029990989, + "log_likelihood_scalar_library_pdip": 18789.73948691099, + "rel_diff": 8.558553939076754e-06, + "abs_diff_nats": 0.16081299889992806 + }, + { + "lane_row": 138, + "call_index": 6, + "lane_in_call": 18, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 20503.024814690412, + "log_likelihood_scalar_library_pdip": 20503.419129876398, + "rel_diff": 1.9231679530522176e-05, + "abs_diff_nats": 0.39431518598576076 + }, + { + "lane_row": 145, + "call_index": 7, + "lane_in_call": 5, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 19198.270837349286, + "log_likelihood_scalar_library_pdip": 19198.276709074962, + "rel_diff": 3.058464968024998e-07, + "abs_diff_nats": 0.005871725676115602 + }, + { + "lane_row": 159, + "call_index": 7, + "lane_in_call": 19, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 19538.815749503345, + "log_likelihood_scalar_library_pdip": 19538.80422262944, + "rel_diff": 5.899477662535129e-07, + "abs_diff_nats": 0.011526873906404944 + }, + { + "lane_row": 161, + "call_index": 8, + "lane_in_call": 1, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 18777.519369692578, + "log_likelihood_scalar_library_pdip": 18777.79984700292, + "rel_diff": 1.493664394268388e-05, + "abs_diff_nats": 0.28047731034166645 + }, + { + "lane_row": 162, + "call_index": 8, + "lane_in_call": 2, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 17586.998198308913, + "log_likelihood_scalar_library_pdip": 17577.990889450393, + "rel_diff": 0.0005124197022951788, + "abs_diff_nats": 9.007308858519536 + }, + { + "lane_row": 169, + "call_index": 8, + "lane_in_call": 9, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 2997.581196816718, + "log_likelihood_scalar_library_pdip": 2997.581196918967, + "rel_diff": 3.4110512988677433e-11, + "abs_diff_nats": 1.0224903235211968e-07 + }, + { + "lane_row": 184, + "call_index": 9, + "lane_in_call": 4, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 19178.8375492294, + "log_likelihood_scalar_library_pdip": 19178.158361524027, + "rel_diff": 3.541464683780637e-05, + "abs_diff_nats": 0.6791877053728967 + }, + { + "lane_row": 185, + "call_index": 9, + "lane_in_call": 5, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 19584.820216815635, + "log_likelihood_scalar_library_pdip": 19584.82021377877, + "rel_diff": 1.550621666020177e-10, + "abs_diff_nats": 3.036864654859528e-06 + }, + { + "lane_row": 194, + "call_index": 9, + "lane_in_call": 14, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 12101.442716011574, + "log_likelihood_scalar_library_pdip": 12101.524908058418, + "rel_diff": 6.791875194964254e-06, + "abs_diff_nats": 0.08219204684428405 + }, + { + "lane_row": 210, + "call_index": 10, + "lane_in_call": 10, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 15197.470612442736, + "log_likelihood_scalar_library_pdip": 15196.795342311627, + "rel_diff": 4.44350348805927e-05, + "abs_diff_nats": 0.6752701311088458 + }, + { + "lane_row": 215, + "call_index": 10, + "lane_in_call": 15, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 14818.970964949294, + "log_likelihood_scalar_library_pdip": 14818.970964617569, + "rel_diff": 2.2385188576041694e-11, + "abs_diff_nats": 3.3172545954585075e-07 + }, + { + "lane_row": 216, + "call_index": 10, + "lane_in_call": 16, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 17980.755954764845, + "log_likelihood_scalar_library_pdip": 17979.73890336924, + "rel_diff": 5.6566527526884385e-05, + "abs_diff_nats": 1.0170513956036302 + }, + { + "lane_row": 222, + "call_index": 11, + "lane_in_call": 2, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 22073.09316163139, + "log_likelihood_scalar_library_pdip": 22072.697677031945, + "rel_diff": 1.7917365844068342e-05, + "abs_diff_nats": 0.3954845994448988 + }, + { + "lane_row": 238, + "call_index": 11, + "lane_in_call": 18, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 16048.782933223934, + "log_likelihood_scalar_library_pdip": 16050.234911212749, + "rel_diff": 9.046459424714224e-05, + "abs_diff_nats": 1.4519779888141784 + }, + { + "lane_row": 241, + "call_index": 12, + "lane_in_call": 1, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 18820.11688643777, + "log_likelihood_scalar_library_pdip": 18827.258395130197, + "rel_diff": 0.00037931750563721135, + "abs_diff_nats": 7.141508692428033 + }, + { + "lane_row": 253, + "call_index": 12, + "lane_in_call": 13, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 18841.998074266252, + "log_likelihood_scalar_library_pdip": 18841.8820286601, + "rel_diff": 6.158917987868002e-06, + "abs_diff_nats": 0.11604560615160153 + }, + { + "lane_row": 256, + "call_index": 12, + "lane_in_call": 16, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 17925.220470759377, + "log_likelihood_scalar_library_pdip": 17926.99550400996, + "rel_diff": 9.901454207343394e-05, + "abs_diff_nats": 1.7750332505820552 + }, + { + "lane_row": 276, + "call_index": 13, + "lane_in_call": 16, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 18604.202809554543, + "log_likelihood_scalar_library_pdip": 18601.915683132407, + "rel_diff": 0.00012295112294319558, + "abs_diff_nats": 2.2871264221357706 + }, + { + "lane_row": 283, + "call_index": 14, + "lane_in_call": 3, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 19548.90300039443, + "log_likelihood_scalar_library_pdip": 19548.487167306175, + "rel_diff": 2.127188076998286e-05, + "abs_diff_nats": 0.4158330882564769 + }, + { + "lane_row": 301, + "call_index": 15, + "lane_in_call": 1, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 20552.706459416004, + "log_likelihood_scalar_library_pdip": 20551.004887772564, + "rel_diff": 8.279749105856236e-05, + "abs_diff_nats": 1.70157164343982 + }, + { + "lane_row": 311, + "call_index": 15, + "lane_in_call": 11, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 18959.672781158308, + "log_likelihood_scalar_library_pdip": 18957.52834975746, + "rel_diff": 0.00011311766815187777, + "abs_diff_nats": 2.1444314008476795 + }, + { + "lane_row": 314, + "call_index": 15, + "lane_in_call": 14, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 11129.438563023068, + "log_likelihood_scalar_library_pdip": 11126.921475785763, + "rel_diff": 0.00022621596124167666, + "abs_diff_nats": 2.5170872373055317 + }, + { + "lane_row": 315, + "call_index": 15, + "lane_in_call": 15, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 20407.7806549969, + "log_likelihood_scalar_library_pdip": 20410.34397371976, + "rel_diff": 0.00012558919762254195, + "abs_diff_nats": 2.563318722859549 + }, + { + "lane_row": 317, + "call_index": 15, + "lane_in_call": 17, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19481.580998496996, + "log_likelihood_scalar_library_pdip": 19481.557217641563, + "rel_diff": 1.220685552402098e-06, + "abs_diff_nats": 0.023780855433869874 + }, + { + "lane_row": 318, + "call_index": 15, + "lane_in_call": 18, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 18817.121700992862, + "log_likelihood_scalar_library_pdip": 18812.946857997056, + "rel_diff": 0.00022191329339940431, + "abs_diff_nats": 4.174842995806102 + }, + { + "lane_row": 319, + "call_index": 15, + "lane_in_call": 19, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 16927.857229255307, + "log_likelihood_scalar_library_pdip": 16927.63254956882, + "rel_diff": 1.32729539011253e-05, + "abs_diff_nats": 0.2246796864856151 + }, + { + "lane_row": 322, + "call_index": 16, + "lane_in_call": 2, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 17853.264769854122, + "log_likelihood_scalar_library_pdip": 17852.91967933103, + "rel_diff": 1.9329640713752443e-05, + "abs_diff_nats": 0.3450905230929493 + }, + { + "lane_row": 329, + "call_index": 16, + "lane_in_call": 9, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 15883.222766173763, + "log_likelihood_scalar_library_pdip": 15888.261826774295, + "rel_diff": 0.0003171561908703944, + "abs_diff_nats": 5.039060600531229 + }, + { + "lane_row": 331, + "call_index": 16, + "lane_in_call": 11, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19181.833418679766, + "log_likelihood_scalar_library_pdip": 19182.855515516767, + "rel_diff": 5.3281787801328045e-05, + "abs_diff_nats": 1.0220968370012997 + }, + { + "lane_row": 333, + "call_index": 16, + "lane_in_call": 13, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 15902.15093470096, + "log_likelihood_scalar_library_pdip": 15902.910586796046, + "rel_diff": 4.776811709657868e-05, + "abs_diff_nats": 0.7596520950864942 + }, + { + "lane_row": 335, + "call_index": 16, + "lane_in_call": 15, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 18756.824767787177, + "log_likelihood_scalar_library_pdip": 18757.07135339752, + "rel_diff": 1.3146274580856535e-05, + "abs_diff_nats": 0.24658561034448212 + }, + { + "lane_row": 336, + "call_index": 16, + "lane_in_call": 16, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 11735.125602989006, + "log_likelihood_scalar_library_pdip": 11735.12560234069, + "rel_diff": 5.5245844758993176e-11, + "abs_diff_nats": 6.483169272542e-07 + }, + { + "lane_row": 338, + "call_index": 16, + "lane_in_call": 18, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 18932.585368953885, + "log_likelihood_scalar_library_pdip": 18932.692618873218, + "rel_diff": 5.664800115408637e-06, + "abs_diff_nats": 0.10724991933238925 + }, + { + "lane_row": 340, + "call_index": 17, + "lane_in_call": 0, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 13403.270057699687, + "log_likelihood_scalar_library_pdip": 13398.840222654067, + "rel_diff": 0.0003306133196610196, + "abs_diff_nats": 4.429835045619257 + }, + { + "lane_row": 341, + "call_index": 17, + "lane_in_call": 1, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19660.94108185915, + "log_likelihood_scalar_library_pdip": 19660.903121954405, + "rel_diff": 1.9307304709848767e-06, + "abs_diff_nats": 0.03795990474463906 + }, + { + "lane_row": 345, + "call_index": 17, + "lane_in_call": 5, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19903.28817967307, + "log_likelihood_scalar_library_pdip": 19903.394044771638, + "rel_diff": 5.318947026352309e-06, + "abs_diff_nats": 0.10586509856875637 + }, + { + "lane_row": 346, + "call_index": 17, + "lane_in_call": 6, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19139.791232693067, + "log_likelihood_scalar_library_pdip": 19139.565581617124, + "rel_diff": 1.1789769991445906e-05, + "abs_diff_nats": 0.22565107594346046 + }, + { + "lane_row": 354, + "call_index": 17, + "lane_in_call": 14, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 23371.740940218002, + "log_likelihood_scalar_library_pdip": 23371.67368934279, + "rel_diff": 2.8774522571360952e-06, + "abs_diff_nats": 0.0672508752104477 + }, + { + "lane_row": 355, + "call_index": 17, + "lane_in_call": 15, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 22070.848474229504, + "log_likelihood_scalar_library_pdip": 22074.325684181036, + "rel_diff": 0.00015752281638319667, + "abs_diff_nats": 3.4772099515321315 + }, + { + "lane_row": 357, + "call_index": 17, + "lane_in_call": 17, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 15663.503863185775, + "log_likelihood_scalar_library_pdip": 15643.416441637419, + "rel_diff": 0.001284081493534272, + "abs_diff_nats": 20.08742154835636 + }, + { + "lane_row": 363, + "call_index": 18, + "lane_in_call": 3, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 18903.428002036104, + "log_likelihood_scalar_library_pdip": 18902.66367518641, + "rel_diff": 4.043487536084018e-05, + "abs_diff_nats": 0.7643268496940436 + }, + { + "lane_row": 364, + "call_index": 18, + "lane_in_call": 4, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19422.13372551884, + "log_likelihood_scalar_library_pdip": 19425.0578927202, + "rel_diff": 0.00015053582941729066, + "abs_diff_nats": 2.9241672013595235 + }, + { + "lane_row": 370, + "call_index": 18, + "lane_in_call": 10, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19494.608664681902, + "log_likelihood_scalar_library_pdip": 19495.201507307527, + "rel_diff": 3.0409669035882172e-05, + "abs_diff_nats": 0.5928426256250532 + }, + { + "lane_row": 373, + "call_index": 18, + "lane_in_call": 13, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 11787.035422616056, + "log_likelihood_scalar_library_pdip": 11787.035422591041, + "rel_diff": 2.1222250872021087e-12, + "abs_diff_nats": 2.5014742277562618e-08 + }, + { + "lane_row": 376, + "call_index": 18, + "lane_in_call": 16, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19825.997636586693, + "log_likelihood_scalar_library_pdip": 19825.989973034266, + "rel_diff": 3.8654071942060997e-07, + "abs_diff_nats": 0.007663552427402465 + }, + { + "lane_row": 379, + "call_index": 18, + "lane_in_call": 19, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 18432.13466791899, + "log_likelihood_scalar_library_pdip": 18432.36616258826, + "rel_diff": 1.2559140114154269e-05, + "abs_diff_nats": 0.231494669271342 + }, + { + "lane_row": 380, + "call_index": 19, + "lane_in_call": 0, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 18755.41398961148, + "log_likelihood_scalar_library_pdip": 18755.107459157654, + "rel_diff": 1.6343838844564488e-05, + "abs_diff_nats": 0.306530453824962 + }, + { + "lane_row": 384, + "call_index": 19, + "lane_in_call": 4, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 18151.412563408263, + "log_likelihood_scalar_library_pdip": 18153.656896982942, + "rel_diff": 0.0001236298332294872, + "abs_diff_nats": 2.244333574679331 + }, + { + "lane_row": 386, + "call_index": 19, + "lane_in_call": 6, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 20730.45379651614, + "log_likelihood_scalar_library_pdip": 20729.996889304697, + "rel_diff": 2.2040872166192836e-05, + "abs_diff_nats": 0.45690721144273994 + }, + { + "lane_row": 387, + "call_index": 19, + "lane_in_call": 7, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19553.684501017524, + "log_likelihood_scalar_library_pdip": 19554.334856701782, + "rel_diff": 3.325890085364924e-05, + "abs_diff_nats": 0.650355684258102 + }, + { + "lane_row": 388, + "call_index": 19, + "lane_in_call": 8, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 20090.179845092665, + "log_likelihood_scalar_library_pdip": 20090.015000771946, + "rel_diff": 8.205286094272845e-06, + "abs_diff_nats": 0.1648443207195669 + }, + { + "lane_row": 391, + "call_index": 19, + "lane_in_call": 11, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 17150.51098148531, + "log_likelihood_scalar_library_pdip": 17146.762735295648, + "rel_diff": 0.00021859789206425721, + "abs_diff_nats": 3.748246189661586 + }, + { + "lane_row": 395, + "call_index": 19, + "lane_in_call": 15, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 18886.99601434199, + "log_likelihood_scalar_library_pdip": 18886.988195662016, + "rel_diff": 4.1397177209220707e-07, + "abs_diff_nats": 0.007818679972842801 + }, + { + "lane_row": 405, + "call_index": 20, + "lane_in_call": 5, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 15239.353996783815, + "log_likelihood_scalar_library_pdip": 15239.35399455257, + "rel_diff": 1.464133691469511e-10, + "abs_diff_nats": 2.2312451619654894e-06 + }, + { + "lane_row": 406, + "call_index": 20, + "lane_in_call": 6, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19243.315566557958, + "log_likelihood_scalar_library_pdip": 19242.74940825397, + "rel_diff": 2.942190286718979e-05, + "abs_diff_nats": 0.5661583039873221 + }, + { + "lane_row": 407, + "call_index": 20, + "lane_in_call": 7, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 17606.274560462167, + "log_likelihood_scalar_library_pdip": 17606.18507862347, + "rel_diff": 5.08240929511237e-06, + "abs_diff_nats": 0.08948183869506465 + }, + { + "lane_row": 409, + "call_index": 20, + "lane_in_call": 9, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 17311.20223080038, + "log_likelihood_scalar_library_pdip": 17305.940399254658, + "rel_diff": 0.0003040477098805164, + "abs_diff_nats": 5.261831545722089 + }, + { + "lane_row": 410, + "call_index": 20, + "lane_in_call": 10, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 14047.929631998715, + "log_likelihood_scalar_library_pdip": 14047.929557770647, + "rel_diff": 5.28391517126666e-09, + "abs_diff_nats": 7.422806811518967e-05 + }, + { + "lane_row": 411, + "call_index": 20, + "lane_in_call": 11, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19569.122195179043, + "log_likelihood_scalar_library_pdip": 19569.107535428113, + "rel_diff": 7.491272099971793e-07, + "abs_diff_nats": 0.01465975093015004 + }, + { + "lane_row": 413, + "call_index": 20, + "lane_in_call": 13, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19749.133191812172, + "log_likelihood_scalar_library_pdip": 19749.27623898889, + "rel_diff": 7.243160457384567e-06, + "abs_diff_nats": 0.14304717671620892 + }, + { + "lane_row": 415, + "call_index": 20, + "lane_in_call": 15, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19279.164335583388, + "log_likelihood_scalar_library_pdip": 19278.984184532776, + "rel_diff": 9.344426495072896e-06, + "abs_diff_nats": 0.1801510506120394 + }, + { + "lane_row": 418, + "call_index": 20, + "lane_in_call": 18, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 8752.542946706657, + "log_likelihood_scalar_library_pdip": 8752.023752705085, + "rel_diff": 5.932273680262339e-05, + "abs_diff_nats": 0.519194001572032 + }, + { + "lane_row": 421, + "call_index": 21, + "lane_in_call": 1, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 20219.993915791147, + "log_likelihood_scalar_library_pdip": 20220.409243226597, + "rel_diff": 2.054001135458888e-05, + "abs_diff_nats": 0.41532743545030826 + }, + { + "lane_row": 426, + "call_index": 21, + "lane_in_call": 6, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 16309.599609431902, + "log_likelihood_scalar_library_pdip": 16309.590599877069, + "rel_diff": 5.524083990861267e-07, + "abs_diff_nats": 0.009009554833028233 + }, + { + "lane_row": 427, + "call_index": 21, + "lane_in_call": 7, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19597.767639653342, + "log_likelihood_scalar_library_pdip": 19597.5719439425, + "rel_diff": 9.985712077045347e-06, + "abs_diff_nats": 0.1956957108413917 + }, + { + "lane_row": 429, + "call_index": 21, + "lane_in_call": 9, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 20369.001851457073, + "log_likelihood_scalar_library_pdip": 20365.64296239446, + "rel_diff": 0.00016492919319142956, + "abs_diff_nats": 3.358889062612434 + }, + { + "lane_row": 431, + "call_index": 21, + "lane_in_call": 11, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 18468.11071199973, + "log_likelihood_scalar_library_pdip": 18467.882680559003, + "rel_diff": 1.234745989400096e-05, + "abs_diff_nats": 0.22803144072531722 + }, + { + "lane_row": 437, + "call_index": 21, + "lane_in_call": 17, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 15923.310599247081, + "log_likelihood_scalar_library_pdip": 15921.026476740488, + "rel_diff": 0.0001434657815518406, + "abs_diff_nats": 2.284122506593121 + }, + { + "lane_row": 438, + "call_index": 21, + "lane_in_call": 18, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 18639.75314353759, + "log_likelihood_scalar_library_pdip": 18639.51857088619, + "rel_diff": 1.2584694744524766e-05, + "abs_diff_nats": 0.23457265139950323 + }, + { + "lane_row": 445, + "call_index": 22, + "lane_in_call": 5, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19131.929346868485, + "log_likelihood_scalar_library_pdip": 19131.12395098933, + "rel_diff": 4.209872254325739e-05, + "abs_diff_nats": 0.805395879153366 + }, + { + "lane_row": 446, + "call_index": 22, + "lane_in_call": 6, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 17347.80235890946, + "log_likelihood_scalar_library_pdip": 17347.802835782, + "rel_diff": 2.748893019474454e-08, + "abs_diff_nats": 0.0004768725411850028 + }, + { + "lane_row": 451, + "call_index": 22, + "lane_in_call": 11, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 4423.308943365133, + "log_likelihood_scalar_library_pdip": 4423.194929103338, + "rel_diff": 2.5776449743354224e-05, + "abs_diff_nats": 0.11401426179509144 + }, + { + "lane_row": 455, + "call_index": 22, + "lane_in_call": 15, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 17004.13415215286, + "log_likelihood_scalar_library_pdip": 17003.376674467134, + "rel_diff": 4.454866231734529e-05, + "abs_diff_nats": 0.7574776857254619 + }, + { + "lane_row": 459, + "call_index": 22, + "lane_in_call": 19, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19149.45020229627, + "log_likelihood_scalar_library_pdip": 19149.45495517933, + "rel_diff": 2.4819939121021995e-07, + "abs_diff_nats": 0.00475288306188304 + }, + { + "lane_row": 460, + "call_index": 23, + "lane_in_call": 0, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 21303.194927261684, + "log_likelihood_scalar_library_pdip": 21303.86468430847, + "rel_diff": 3.143828862567942e-05, + "abs_diff_nats": 0.6697570467877085 + }, + { + "lane_row": 462, + "call_index": 23, + "lane_in_call": 2, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 21917.7878935114, + "log_likelihood_scalar_library_pdip": 21917.787632350315, + "rel_diff": 1.1915485625314282e-08, + "abs_diff_nats": 0.0002611610834719613 + }, + { + "lane_row": 465, + "call_index": 23, + "lane_in_call": 5, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19183.119744290747, + "log_likelihood_scalar_library_pdip": 19183.116509326974, + "rel_diff": 1.686359863146181e-07, + "abs_diff_nats": 0.0032349637731385883 + }, + { + "lane_row": 467, + "call_index": 23, + "lane_in_call": 7, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 20996.497964086397, + "log_likelihood_scalar_library_pdip": 20995.64933214846, + "rel_diff": 4.041941854295255e-05, + "abs_diff_nats": 0.8486319379371707 + }, + { + "lane_row": 468, + "call_index": 23, + "lane_in_call": 8, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 18276.585694376223, + "log_likelihood_scalar_library_pdip": 18276.585692869452, + "rel_diff": 8.244268440967576e-11, + "abs_diff_nats": 1.5067707863636315e-06 + }, + { + "lane_row": 474, + "call_index": 23, + "lane_in_call": 14, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 22905.60784652603, + "log_likelihood_scalar_library_pdip": 22905.607672801176, + "rel_diff": 7.584380888995531e-09, + "abs_diff_nats": 0.00017372485308442265 + }, + { + "lane_row": 475, + "call_index": 23, + "lane_in_call": 15, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 16841.03837229394, + "log_likelihood_scalar_library_pdip": 16837.93023644892, + "rel_diff": 0.00018459132454966883, + "abs_diff_nats": 3.1081358450210246 + }, + { + "lane_row": 476, + "call_index": 23, + "lane_in_call": 16, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19502.15467043128, + "log_likelihood_scalar_library_pdip": 19500.221611839497, + "rel_diff": 9.91300832503255e-05, + "abs_diff_nats": 1.933058591781446 + }, + { + "lane_row": 479, + "call_index": 23, + "lane_in_call": 19, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 18424.562308945948, + "log_likelihood_scalar_library_pdip": 18423.86590187024, + "rel_diff": 3.779918283267232e-05, + "abs_diff_nats": 0.6964070757094305 + }, + { + "lane_row": 482, + "call_index": 24, + "lane_in_call": 2, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 18233.16122868311, + "log_likelihood_scalar_library_pdip": 18233.16122725294, + "rel_diff": 7.843802425454609e-11, + "abs_diff_nats": 1.4301731425803155e-06 + }, + { + "lane_row": 485, + "call_index": 24, + "lane_in_call": 5, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 12362.936804278703, + "log_likelihood_scalar_library_pdip": 12359.91836325603, + "rel_diff": 0.00024421205172724846, + "abs_diff_nats": 3.01844102267205 + }, + { + "lane_row": 486, + "call_index": 24, + "lane_in_call": 6, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 12848.351030690515, + "log_likelihood_scalar_library_pdip": 12844.532871217212, + "rel_diff": 0.0002972595042252721, + "abs_diff_nats": 3.81815947330324 + }, + { + "lane_row": 487, + "call_index": 24, + "lane_in_call": 7, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19273.843550296144, + "log_likelihood_scalar_library_pdip": 19273.837877258098, + "rel_diff": 2.9433878617069415e-07, + "abs_diff_nats": 0.0056730380456428975 + }, + { + "lane_row": 488, + "call_index": 24, + "lane_in_call": 8, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 22440.555101526254, + "log_likelihood_scalar_library_pdip": 22440.55510152754, + "rel_diff": 5.738915512044539e-14, + "abs_diff_nats": 1.2878444977104664e-09 + }, + { + "lane_row": 493, + "call_index": 24, + "lane_in_call": 13, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 18999.453484991922, + "log_likelihood_scalar_library_pdip": 18999.2472749116, + "rel_diff": 1.085359211022619e-05, + "abs_diff_nats": 0.20621008032321697 + }, + { + "lane_row": 495, + "call_index": 24, + "lane_in_call": 15, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 22212.448006471663, + "log_likelihood_scalar_library_pdip": 22212.44805691014, + "rel_diff": 2.270730219259369e-09, + "abs_diff_nats": 5.043847704655491e-05 + }, + { + "lane_row": 497, + "call_index": 24, + "lane_in_call": 17, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 17372.83241718437, + "log_likelihood_scalar_library_pdip": 17375.909264047375, + "rel_diff": 0.00017707544487304786, + "abs_diff_nats": 3.076846863004903 + }, + { + "lane_row": 498, + "call_index": 24, + "lane_in_call": 18, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19245.368418545728, + "log_likelihood_scalar_library_pdip": 19245.36984751212, + "rel_diff": 7.424987950818303e-08, + "abs_diff_nats": 0.0014289663922681939 + }, + { + "lane_row": 499, + "call_index": 24, + "lane_in_call": 19, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19550.808828035846, + "log_likelihood_scalar_library_pdip": 19552.13682428083, + "rel_diff": 6.792077290170877e-05, + "abs_diff_nats": 1.3279962449851155 + }, + { + "lane_row": 500, + "call_index": 25, + "lane_in_call": 0, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 20689.618820849428, + "log_likelihood_scalar_library_pdip": 20689.6340610091, + "rel_diff": 7.366084690807482e-07, + "abs_diff_nats": 0.015240159671520814 + }, + { + "lane_row": 501, + "call_index": 25, + "lane_in_call": 1, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 20057.506861632486, + "log_likelihood_scalar_library_pdip": 20058.409152444572, + "rel_diff": 4.4983169165039655e-05, + "abs_diff_nats": 0.9022908120859938 + }, + { + "lane_row": 503, + "call_index": 25, + "lane_in_call": 3, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 17817.864983755615, + "log_likelihood_scalar_library_pdip": 17814.50391893646, + "rel_diff": 0.00018867013274395216, + "abs_diff_nats": 3.3610648191533983 + }, + { + "lane_row": 504, + "call_index": 25, + "lane_in_call": 4, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19835.30079737337, + "log_likelihood_scalar_library_pdip": 19835.300594190325, + "rel_diff": 1.0243507202726808e-08, + "abs_diff_nats": 0.00020318304450483993 + }, + { + "lane_row": 505, + "call_index": 25, + "lane_in_call": 5, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 17858.455952731332, + "log_likelihood_scalar_library_pdip": 17861.161604809495, + "rel_diff": 0.000151482425277087, + "abs_diff_nats": 2.7056520781625295 + }, + { + "lane_row": 506, + "call_index": 25, + "lane_in_call": 6, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 22054.690384221267, + "log_likelihood_scalar_library_pdip": 22053.711382242836, + "rel_diff": 4.4391710830982e-05, + "abs_diff_nats": 0.9790019784304604 + }, + { + "lane_row": 507, + "call_index": 25, + "lane_in_call": 7, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19515.839830029123, + "log_likelihood_scalar_library_pdip": 19518.56754351547, + "rel_diff": 0.00013974967580309281, + "abs_diff_nats": 2.7277134863470565 + }, + { + "lane_row": 508, + "call_index": 25, + "lane_in_call": 8, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 15736.389542964673, + "log_likelihood_scalar_library_pdip": 15735.671678263912, + "rel_diff": 4.5620213451199946e-05, + "abs_diff_nats": 0.7178647007604013 + }, + { + "lane_row": 510, + "call_index": 25, + "lane_in_call": 10, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19195.003296143135, + "log_likelihood_scalar_library_pdip": 19194.477621970538, + "rel_diff": 2.738674023591883e-05, + "abs_diff_nats": 0.5256741725970642 + }, + { + "lane_row": 511, + "call_index": 25, + "lane_in_call": 11, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 18628.28666933233, + "log_likelihood_scalar_library_pdip": 18628.359924083124, + "rel_diff": 3.932431577051707e-06, + "abs_diff_nats": 0.073254750794149 + }, + { + "lane_row": 512, + "call_index": 25, + "lane_in_call": 12, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 13415.098868967878, + "log_likelihood_scalar_library_pdip": 13405.29224007321, + "rel_diff": 0.0007315490568234592, + "abs_diff_nats": 9.806628894668393 + }, + { + "lane_row": 516, + "call_index": 25, + "lane_in_call": 16, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 22110.86560385036, + "log_likelihood_scalar_library_pdip": 22110.763218513803, + "rel_diff": 4.630565464738245e-06, + "abs_diff_nats": 0.10238533655865467 + }, + { + "lane_row": 517, + "call_index": 25, + "lane_in_call": 17, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 18841.2559732092, + "log_likelihood_scalar_library_pdip": 18842.4514425756, + "rel_diff": 6.344553255401869e-05, + "abs_diff_nats": 1.1954693663974467 + }, + { + "lane_row": 518, + "call_index": 25, + "lane_in_call": 18, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 20778.006318485684, + "log_likelihood_scalar_library_pdip": 20778.115993490595, + "rel_diff": 5.278390251807618e-06, + "abs_diff_nats": 0.10967500491096871 + }, + { + "lane_row": 519, + "call_index": 25, + "lane_in_call": 19, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19208.43607996047, + "log_likelihood_scalar_library_pdip": 19208.09183978307, + "rel_diff": 1.7921622838555826e-05, + "abs_diff_nats": 0.34424017740093404 + }, + { + "lane_row": 521, + "call_index": 26, + "lane_in_call": 1, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 20823.46833399652, + "log_likelihood_scalar_library_pdip": 20823.044655620663, + "rel_diff": 2.0346610347522765e-05, + "abs_diff_nats": 0.42367837585698 + }, + { + "lane_row": 523, + "call_index": 26, + "lane_in_call": 3, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19992.431234965337, + "log_likelihood_scalar_library_pdip": 19991.227250600088, + "rel_diff": 6.022563548283697e-05, + "abs_diff_nats": 1.2039843652491982 + }, + { + "lane_row": 526, + "call_index": 26, + "lane_in_call": 6, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 18177.852758806293, + "log_likelihood_scalar_library_pdip": 18172.806350726438, + "rel_diff": 0.00027769008167821506, + "abs_diff_nats": 5.04640807985561 + }, + { + "lane_row": 527, + "call_index": 26, + "lane_in_call": 7, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19402.3833227188, + "log_likelihood_scalar_library_pdip": 19401.592856348587, + "rel_diff": 4.0742343995492035e-05, + "abs_diff_nats": 0.790466370213835 + }, + { + "lane_row": 528, + "call_index": 26, + "lane_in_call": 8, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19026.487360603584, + "log_likelihood_scalar_library_pdip": 19026.484089398673, + "rel_diff": 1.7192902772740264e-07, + "abs_diff_nats": 0.0032712049105612095 + }, + { + "lane_row": 530, + "call_index": 26, + "lane_in_call": 10, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 21036.056036948456, + "log_likelihood_scalar_library_pdip": 21036.33013572616, + "rel_diff": 1.3029781142188183e-05, + "abs_diff_nats": 0.2740987777033297 + }, + { + "lane_row": 532, + "call_index": 26, + "lane_in_call": 12, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19592.213071317514, + "log_likelihood_scalar_library_pdip": 19594.527131412553, + "rel_diff": 0.00011809726662550742, + "abs_diff_nats": 2.314060095039167 + }, + { + "lane_row": 533, + "call_index": 26, + "lane_in_call": 13, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 17318.425270181266, + "log_likelihood_scalar_library_pdip": 17318.424408698087, + "rel_diff": 4.9743738706597917e-08, + "abs_diff_nats": 0.0008614831785962451 + }, + { + "lane_row": 535, + "call_index": 26, + "lane_in_call": 15, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 20544.69336492713, + "log_likelihood_scalar_library_pdip": 20544.81524939329, + "rel_diff": 5.932614369137548e-06, + "abs_diff_nats": 0.12188446615982684 + }, + { + "lane_row": 536, + "call_index": 26, + "lane_in_call": 16, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19583.795297000623, + "log_likelihood_scalar_library_pdip": 19583.8019302802, + "rel_diff": 3.387125543611533e-07, + "abs_diff_nats": 0.006633279575908091 + }, + { + "lane_row": 537, + "call_index": 26, + "lane_in_call": 17, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19633.420439832073, + "log_likelihood_scalar_library_pdip": 19633.31049750804, + "rel_diff": 5.599785326466655e-06, + "abs_diff_nats": 0.10994232403390924 + }, + { + "lane_row": 539, + "call_index": 26, + "lane_in_call": 19, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 20215.27003728713, + "log_likelihood_scalar_library_pdip": 20215.247001815558, + "rel_diff": 1.139509775432306e-06, + "abs_diff_nats": 0.023035471571347443 + }, + { + "lane_row": 542, + "call_index": 27, + "lane_in_call": 2, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19157.809535638735, + "log_likelihood_scalar_library_pdip": 19154.660287094688, + "rel_diff": 0.0001644116103781019, + "abs_diff_nats": 3.1492485440467135 + }, + { + "lane_row": 543, + "call_index": 27, + "lane_in_call": 3, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19818.335161015606, + "log_likelihood_scalar_library_pdip": 19818.439691097068, + "rel_diff": 5.274385021798747e-06, + "abs_diff_nats": 0.10453008146214415 + }, + { + "lane_row": 544, + "call_index": 27, + "lane_in_call": 4, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 17457.72911081127, + "log_likelihood_scalar_library_pdip": 17457.948103301736, + "rel_diff": 1.2543999396211973e-05, + "abs_diff_nats": 0.21899249046691693 + }, + { + "lane_row": 547, + "call_index": 27, + "lane_in_call": 7, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 23165.743450713213, + "log_likelihood_scalar_library_pdip": 23165.66182733109, + "rel_diff": 3.5234642866078106e-06, + "abs_diff_nats": 0.08162338212423492 + }, + { + "lane_row": 549, + "call_index": 27, + "lane_in_call": 9, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19461.196719800333, + "log_likelihood_scalar_library_pdip": 19461.337712104105, + "rel_diff": 7.244738561013237e-06, + "abs_diff_nats": 0.14099230377178174 + }, + { + "lane_row": 551, + "call_index": 27, + "lane_in_call": 11, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19260.658463183066, + "log_likelihood_scalar_library_pdip": 19264.52874461008, + "rel_diff": 0.00020090195188903368, + "abs_diff_nats": 3.870281427014561 + }, + { + "lane_row": 552, + "call_index": 27, + "lane_in_call": 12, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 21683.025706579483, + "log_likelihood_scalar_library_pdip": 21683.025706554017, + "rel_diff": 1.174460243431089e-12, + "abs_diff_nats": 2.546585164964199e-08 + }, + { + "lane_row": 553, + "call_index": 27, + "lane_in_call": 13, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19463.609047992813, + "log_likelihood_scalar_library_pdip": 19464.466191293155, + "rel_diff": 4.4036311703483625e-05, + "abs_diff_nats": 0.8571433003417042 + }, + { + "lane_row": 555, + "call_index": 27, + "lane_in_call": 15, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 17775.847960836567, + "log_likelihood_scalar_library_pdip": 17774.97633648145, + "rel_diff": 4.903659721493782e-05, + "abs_diff_nats": 0.8716243551170919 + }, + { + "lane_row": 556, + "call_index": 27, + "lane_in_call": 16, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 14708.502391352125, + "log_likelihood_scalar_library_pdip": 14708.502438631564, + "rel_diff": 3.214429092742875e-09, + "abs_diff_nats": 4.727943814941682e-05 + }, + { + "lane_row": 557, + "call_index": 27, + "lane_in_call": 17, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19541.37795591248, + "log_likelihood_scalar_library_pdip": 19541.24531905603, + "rel_diff": 6.787533459911248e-06, + "abs_diff_nats": 0.13263685645142687 + }, + { + "lane_row": 559, + "call_index": 27, + "lane_in_call": 19, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19613.450677077773, + "log_likelihood_scalar_library_pdip": 19613.376193977347, + "rel_diff": 3.7975665020693374e-06, + "abs_diff_nats": 0.07448310042673256 + }, + { + "lane_row": 561, + "call_index": 28, + "lane_in_call": 1, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 18923.561677893125, + "log_likelihood_scalar_library_pdip": 18923.0601855797, + "rel_diff": 2.6501649760011026e-05, + "abs_diff_nats": 0.5014923134258424 + }, + { + "lane_row": 562, + "call_index": 28, + "lane_in_call": 2, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 20818.188119264196, + "log_likelihood_scalar_library_pdip": 20818.401164212642, + "rel_diff": 1.0233492320863344e-05, + "abs_diff_nats": 0.21304494844662258 + }, + { + "lane_row": 563, + "call_index": 28, + "lane_in_call": 3, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19335.168318171596, + "log_likelihood_scalar_library_pdip": 19334.462151271873, + "rel_diff": 3.652374160698214e-05, + "abs_diff_nats": 0.7061668997230299 + }, + { + "lane_row": 565, + "call_index": 28, + "lane_in_call": 5, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 18910.35557962783, + "log_likelihood_scalar_library_pdip": 18910.343954744258, + "rel_diff": 6.147367599854185e-07, + "abs_diff_nats": 0.01162488357294933 + }, + { + "lane_row": 569, + "call_index": 28, + "lane_in_call": 9, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19239.018216839533, + "log_likelihood_scalar_library_pdip": 19238.82424428422, + "rel_diff": 1.008234977615993e-05, + "abs_diff_nats": 0.19397255531293922 + }, + { + "lane_row": 571, + "call_index": 28, + "lane_in_call": 11, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 18044.460051352038, + "log_likelihood_scalar_library_pdip": 18038.708428979942, + "rel_diff": 0.0003188489017792237, + "abs_diff_nats": 5.751622372095881 + }, + { + "lane_row": 574, + "call_index": 28, + "lane_in_call": 14, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19488.681466913895, + "log_likelihood_scalar_library_pdip": 19488.6814667917, + "rel_diff": 6.2701045404032625e-12, + "abs_diff_nats": 1.2219607015140355e-07 + }, + { + "lane_row": 575, + "call_index": 28, + "lane_in_call": 15, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19362.72274955584, + "log_likelihood_scalar_library_pdip": 19362.261028482942, + "rel_diff": 2.3846443977708634e-05, + "abs_diff_nats": 0.46172107289748965 + }, + { + "lane_row": 576, + "call_index": 28, + "lane_in_call": 16, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19436.836230285942, + "log_likelihood_scalar_library_pdip": 19435.85795849566, + "rel_diff": 5.0333347381462463e-05, + "abs_diff_nats": 0.978271790281724 + }, + { + "lane_row": 577, + "call_index": 28, + "lane_in_call": 17, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 21722.81023082808, + "log_likelihood_scalar_library_pdip": 21722.837428821258, + "rel_diff": 1.252046067539746e-06, + "abs_diff_nats": 0.027197993178560864 + }, + { + "lane_row": 578, + "call_index": 28, + "lane_in_call": 18, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 20455.75257589689, + "log_likelihood_scalar_library_pdip": 20455.72237791656, + "rel_diff": 1.4762607632195776e-06, + "abs_diff_nats": 0.030197980329830898 + }, + { + "lane_row": 580, + "call_index": 29, + "lane_in_call": 0, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19530.671958297877, + "log_likelihood_scalar_library_pdip": 19530.953157773783, + "rel_diff": 1.4397631986272832e-05, + "abs_diff_nats": 0.2811994759067602 + }, + { + "lane_row": 581, + "call_index": 29, + "lane_in_call": 1, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 17863.072703859645, + "log_likelihood_scalar_library_pdip": 17865.262327768105, + "rel_diff": 0.00012256321056403183, + "abs_diff_nats": 2.1896239084599074 + }, + { + "lane_row": 584, + "call_index": 29, + "lane_in_call": 4, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19289.025882549842, + "log_likelihood_scalar_library_pdip": 19292.445145462167, + "rel_diff": 0.00017723325822848013, + "abs_diff_nats": 3.419262912324484 + }, + { + "lane_row": 585, + "call_index": 29, + "lane_in_call": 5, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 18177.79603430265, + "log_likelihood_scalar_library_pdip": 18177.70402748402, + "rel_diff": 5.061520337902871e-06, + "abs_diff_nats": 0.0920068186314893 + }, + { + "lane_row": 587, + "call_index": 29, + "lane_in_call": 7, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 18067.378943574848, + "log_likelihood_scalar_library_pdip": 18067.30517030492, + "rel_diff": 4.083247016186991e-06, + "abs_diff_nats": 0.07377326992718736 + }, + { + "lane_row": 588, + "call_index": 29, + "lane_in_call": 8, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19397.592590532626, + "log_likelihood_scalar_library_pdip": 19397.537635377306, + "rel_diff": 2.8330995589485853e-06, + "abs_diff_nats": 0.054955155319476034 + }, + { + "lane_row": 589, + "call_index": 29, + "lane_in_call": 9, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 18442.19541897381, + "log_likelihood_scalar_library_pdip": 18442.195418659165, + "rel_diff": 1.706115470006398e-11, + "abs_diff_nats": 3.1464514904655516e-07 + }, + { + "lane_row": 591, + "call_index": 29, + "lane_in_call": 11, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19212.60967850248, + "log_likelihood_scalar_library_pdip": 19210.409735601745, + "rel_diff": 0.00011451827061536751, + "abs_diff_nats": 2.199942900733731 + }, + { + "lane_row": 597, + "call_index": 29, + "lane_in_call": 17, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 21659.948701883804, + "log_likelihood_scalar_library_pdip": 21659.587205260163, + "rel_diff": 1.668991288781708e-05, + "abs_diff_nats": 0.3614966236418695 + }, + { + "lane_row": 598, + "call_index": 29, + "lane_in_call": 18, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19527.46454878728, + "log_likelihood_scalar_library_pdip": 19527.422812025798, + "rel_diff": 2.137341004213285e-06, + "abs_diff_nats": 0.04173676148275263 + }, + { + "lane_row": 600, + "call_index": 30, + "lane_in_call": 0, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19808.789373513286, + "log_likelihood_scalar_library_pdip": 19809.166050703163, + "rel_diff": 1.901529771183158e-05, + "abs_diff_nats": 0.37667718987722765 + }, + { + "lane_row": 603, + "call_index": 30, + "lane_in_call": 3, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 11283.924225485083, + "log_likelihood_scalar_library_pdip": 11280.049121394404, + "rel_diff": 0.00034353610068322643, + "abs_diff_nats": 3.8751040906790877 + }, + { + "lane_row": 605, + "call_index": 30, + "lane_in_call": 5, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 18584.288542085997, + "log_likelihood_scalar_library_pdip": 18584.41615741409, + "rel_diff": 6.866792424977519e-06, + "abs_diff_nats": 0.12761532809236087 + }, + { + "lane_row": 606, + "call_index": 30, + "lane_in_call": 6, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19378.18721953455, + "log_likelihood_scalar_library_pdip": 19378.575615348505, + "rel_diff": 2.0042536751165767e-05, + "abs_diff_nats": 0.3883958139558672 + }, + { + "lane_row": 607, + "call_index": 30, + "lane_in_call": 7, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 18642.62231636487, + "log_likelihood_scalar_library_pdip": 18644.192639941102, + "rel_diff": 8.422588237314483e-05, + "abs_diff_nats": 1.5703235762339318 + }, + { + "lane_row": 609, + "call_index": 30, + "lane_in_call": 9, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 23084.74157385393, + "log_likelihood_scalar_library_pdip": 23084.37982894503, + "rel_diff": 1.5670549158358785e-05, + "abs_diff_nats": 0.3617449088997091 + }, + { + "lane_row": 611, + "call_index": 30, + "lane_in_call": 11, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 13342.699765061134, + "log_likelihood_scalar_library_pdip": 13342.699763707693, + "rel_diff": 1.0143680945759665e-10, + "abs_diff_nats": 1.353440893581137e-06 + }, + { + "lane_row": 613, + "call_index": 30, + "lane_in_call": 13, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19173.23417344294, + "log_likelihood_scalar_library_pdip": 19172.889628817644, + "rel_diff": 1.7970406754833634e-05, + "abs_diff_nats": 0.3445446252953843 + }, + { + "lane_row": 614, + "call_index": 30, + "lane_in_call": 14, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19622.98269424989, + "log_likelihood_scalar_library_pdip": 19624.435782933393, + "rel_diff": 7.404486424855796e-05, + "abs_diff_nats": 1.4530886835018464 + }, + { + "lane_row": 617, + "call_index": 30, + "lane_in_call": 17, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19583.75192701495, + "log_likelihood_scalar_library_pdip": 19583.56922871476, + "rel_diff": 9.329162526740243e-06, + "abs_diff_nats": 0.1826983001883491 + }, + { + "lane_row": 619, + "call_index": 30, + "lane_in_call": 19, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 17413.951638953087, + "log_likelihood_scalar_library_pdip": 17414.009318673787, + "rel_diff": 3.3122596665704534e-06, + "abs_diff_nats": 0.057679720699525205 + }, + { + "lane_row": 621, + "call_index": 31, + "lane_in_call": 1, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19331.237597309628, + "log_likelihood_scalar_library_pdip": 19336.09252388913, + "rel_diff": 0.0002510810585697596, + "abs_diff_nats": 4.854926579500898 + }, + { + "lane_row": 622, + "call_index": 31, + "lane_in_call": 2, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 18356.17675622036, + "log_likelihood_scalar_library_pdip": 18356.177416558552, + "rel_diff": 3.597362221336489e-08, + "abs_diff_nats": 0.0006603381916647777 + }, + { + "lane_row": 625, + "call_index": 31, + "lane_in_call": 5, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 20410.124665616764, + "log_likelihood_scalar_library_pdip": 20407.475579395097, + "rel_diff": 0.0001298095990050657, + "abs_diff_nats": 2.6490862216669484 + }, + { + "lane_row": 631, + "call_index": 31, + "lane_in_call": 11, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19289.34285317442, + "log_likelihood_scalar_library_pdip": 19286.70581734762, + "rel_diff": 0.00013672816144826757, + "abs_diff_nats": 2.637035826799547 + }, + { + "lane_row": 632, + "call_index": 31, + "lane_in_call": 12, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 18077.127499311475, + "log_likelihood_scalar_library_pdip": 18083.96258764094, + "rel_diff": 0.0003779640826141373, + "abs_diff_nats": 6.835088329466089 + }, + { + "lane_row": 634, + "call_index": 31, + "lane_in_call": 14, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 18583.01664798819, + "log_likelihood_scalar_library_pdip": 18583.02788794668, + "rel_diff": 6.048507572745093e-07, + "abs_diff_nats": 0.011239958490477875 + }, + { + "lane_row": 636, + "call_index": 31, + "lane_in_call": 16, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19690.40555553937, + "log_likelihood_scalar_library_pdip": 19690.74766516834, + "rel_diff": 1.7374130976893346e-05, + "abs_diff_nats": 0.34210962896759156 + }, + { + "lane_row": 638, + "call_index": 31, + "lane_in_call": 18, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 18993.586328322788, + "log_likelihood_scalar_library_pdip": 18996.21846477853, + "rel_diff": 0.00013856107522773636, + "abs_diff_nats": 2.6321364557406923 + }, + { + "lane_row": 639, + "call_index": 31, + "lane_in_call": 19, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 20561.496402127734, + "log_likelihood_scalar_library_pdip": 20560.278004476124, + "rel_diff": 5.925978487959132e-05, + "abs_diff_nats": 1.2183976516098483 + }, + { + "lane_row": 641, + "call_index": 32, + "lane_in_call": 1, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 22134.052576327966, + "log_likelihood_scalar_library_pdip": 22138.246728707316, + "rel_diff": 0.00018945277965086506, + "abs_diff_nats": 4.194152379350271 + }, + { + "lane_row": 643, + "call_index": 32, + "lane_in_call": 3, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19223.54904309679, + "log_likelihood_scalar_library_pdip": 19219.00614245618, + "rel_diff": 0.00023637541956846893, + "abs_diff_nats": 4.542900640612061 + }, + { + "lane_row": 649, + "call_index": 32, + "lane_in_call": 9, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 13369.922132524534, + "log_likelihood_scalar_library_pdip": 13385.061237037553, + "rel_diff": 0.001131044845064093, + "abs_diff_nats": 15.139104513018538 + }, + { + "lane_row": 650, + "call_index": 32, + "lane_in_call": 10, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 18198.66237697639, + "log_likelihood_scalar_library_pdip": 18198.92965467207, + "rel_diff": 1.4686451387550123e-05, + "abs_diff_nats": 0.2672776956787857 + }, + { + "lane_row": 651, + "call_index": 32, + "lane_in_call": 11, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 18471.398934117147, + "log_likelihood_scalar_library_pdip": 18471.409333834443, + "rel_diff": 5.630169906128326e-07, + "abs_diff_nats": 0.010399717295513256 + }, + { + "lane_row": 652, + "call_index": 32, + "lane_in_call": 12, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 20037.834990545816, + "log_likelihood_scalar_library_pdip": 20037.230505445285, + "rel_diff": 3.0168096352810486e-05, + "abs_diff_nats": 0.6044851005317469 + }, + { + "lane_row": 653, + "call_index": 32, + "lane_in_call": 13, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 16023.928752640342, + "log_likelihood_scalar_library_pdip": 16023.929205628581, + "rel_diff": 2.8269485789851535e-08, + "abs_diff_nats": 0.0004529882389761042 + }, + { + "lane_row": 655, + "call_index": 32, + "lane_in_call": 15, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 20391.014313772477, + "log_likelihood_scalar_library_pdip": 20390.401630238946, + "rel_diff": 3.0047644212274348e-05, + "abs_diff_nats": 0.6126835335307987 + }, + { + "lane_row": 656, + "call_index": 32, + "lane_in_call": 16, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 15313.347430368121, + "log_likelihood_scalar_library_pdip": 15344.698797659192, + "rel_diff": 0.0020431399602221546, + "abs_diff_nats": 31.351367291070346 + }, + { + "lane_row": 658, + "call_index": 32, + "lane_in_call": 18, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 21545.211784070638, + "log_likelihood_scalar_library_pdip": 21545.17346372279, + "rel_diff": 1.778604749372855e-06, + "abs_diff_nats": 0.03832034784863936 + }, + { + "lane_row": 659, + "call_index": 32, + "lane_in_call": 19, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 18603.683909327872, + "log_likelihood_scalar_library_pdip": 18603.77049833459, + "rel_diff": 4.65437942946768e-06, + "abs_diff_nats": 0.0865890067179862 + }, + { + "lane_row": 660, + "call_index": 33, + "lane_in_call": 0, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19096.62161771348, + "log_likelihood_scalar_library_pdip": 19097.05932864862, + "rel_diff": 2.2920331743459134e-05, + "abs_diff_nats": 0.4377109351371473 + }, + { + "lane_row": 661, + "call_index": 33, + "lane_in_call": 1, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19496.90170871284, + "log_likelihood_scalar_library_pdip": 19496.956980067604, + "rel_diff": 2.8348708374712978e-06, + "abs_diff_nats": 0.05527135476222611 + }, + { + "lane_row": 664, + "call_index": 33, + "lane_in_call": 4, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19363.18023431392, + "log_likelihood_scalar_library_pdip": 19362.67497527152, + "rel_diff": 2.609448555260613e-05, + "abs_diff_nats": 0.5052590424020309 + }, + { + "lane_row": 666, + "call_index": 33, + "lane_in_call": 6, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 18338.396608437222, + "log_likelihood_scalar_library_pdip": 18338.577431066158, + "rel_diff": 9.860232049926494e-06, + "abs_diff_nats": 0.1808226289358572 + }, + { + "lane_row": 668, + "call_index": 33, + "lane_in_call": 8, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 15342.732244899384, + "log_likelihood_scalar_library_pdip": 15342.732244166153, + "rel_diff": 4.779011840406248e-11, + "abs_diff_nats": 7.332309905905277e-07 + }, + { + "lane_row": 671, + "call_index": 33, + "lane_in_call": 11, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19617.671341162193, + "log_likelihood_scalar_library_pdip": 19617.599897901135, + "rel_diff": 3.6417941761617715e-06, + "abs_diff_nats": 0.07144326105844812 + }, + { + "lane_row": 675, + "call_index": 33, + "lane_in_call": 15, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 17757.689146190725, + "log_likelihood_scalar_library_pdip": 17755.86093616872, + "rel_diff": 0.00010296374974877948, + "abs_diff_nats": 1.8282100220058055 + }, + { + "lane_row": 676, + "call_index": 33, + "lane_in_call": 16, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": -14608.861382360694, + "log_likelihood_scalar_library_pdip": -14612.113461829897, + "rel_diff": 0.00022256051307689915, + "abs_diff_nats": 3.2520794692027266 + }, + { + "lane_row": 677, + "call_index": 33, + "lane_in_call": 17, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19271.664412154372, + "log_likelihood_scalar_library_pdip": 19257.02046923912, + "rel_diff": 0.0007604469725025441, + "abs_diff_nats": 14.64394291525241 + }, + { + "lane_row": 678, + "call_index": 33, + "lane_in_call": 18, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 18957.08259393646, + "log_likelihood_scalar_library_pdip": 18956.234099786932, + "rel_diff": 4.476069165740937e-05, + "abs_diff_nats": 0.8484941495262319 + }, + { + "lane_row": 682, + "call_index": 34, + "lane_in_call": 2, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19368.572008545536, + "log_likelihood_scalar_library_pdip": 19364.966601544405, + "rel_diff": 0.00018618193748100632, + "abs_diff_nats": 3.6054070011305157 + }, + { + "lane_row": 686, + "call_index": 34, + "lane_in_call": 6, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 18589.023764843223, + "log_likelihood_scalar_library_pdip": 18589.02376354496, + "rel_diff": 6.984033618591684e-11, + "abs_diff_nats": 1.298263669013977e-06 + }, + { + "lane_row": 687, + "call_index": 34, + "lane_in_call": 7, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 17399.773605901893, + "log_likelihood_scalar_library_pdip": 17411.667430164543, + "rel_diff": 0.0006830950746305183, + "abs_diff_nats": 11.893824262650014 + }, + { + "lane_row": 689, + "call_index": 34, + "lane_in_call": 9, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 22381.98847184513, + "log_likelihood_scalar_library_pdip": 22381.732289626714, + "rel_diff": 1.1446040686183032e-05, + "abs_diff_nats": 0.25618221841432387 + }, + { + "lane_row": 691, + "call_index": 34, + "lane_in_call": 11, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 22338.462089300658, + "log_likelihood_scalar_library_pdip": 22338.310114502092, + "rel_diff": 6.8033256672860945e-06, + "abs_diff_nats": 0.15197479856578866 + }, + { + "lane_row": 693, + "call_index": 34, + "lane_in_call": 13, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 21459.259829308947, + "log_likelihood_scalar_library_pdip": 21459.119780170295, + "rel_diff": 6.5263226118676875e-06, + "abs_diff_nats": 0.14004913865210256 + }, + { + "lane_row": 694, + "call_index": 34, + "lane_in_call": 14, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 17579.166783951863, + "log_likelihood_scalar_library_pdip": 17579.049488148037, + "rel_diff": 6.6724770247142255e-06, + "abs_diff_nats": 0.11729580382598215 + }, + { + "lane_row": 697, + "call_index": 34, + "lane_in_call": 17, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 20143.139511364156, + "log_likelihood_scalar_library_pdip": 20142.210631044487, + "rel_diff": 4.611610595696123e-05, + "abs_diff_nats": 0.9288803196686786 + }, + { + "lane_row": 698, + "call_index": 34, + "lane_in_call": 18, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 16738.475696902315, + "log_likelihood_scalar_library_pdip": 16738.475695517205, + "rel_diff": 8.275003795404272e-11, + "abs_diff_nats": 1.3851094990968704e-06 + }, + { + "lane_row": 699, + "call_index": 34, + "lane_in_call": 19, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 18690.146874445654, + "log_likelihood_scalar_library_pdip": 18689.78237224133, + "rel_diff": 1.9502752737515505e-05, + "abs_diff_nats": 0.36450220432379865 + }, + { + "lane_row": 701, + "call_index": 35, + "lane_in_call": 1, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 22057.149243958484, + "log_likelihood_scalar_library_pdip": 22056.17518692988, + "rel_diff": 4.4162554039835747e-05, + "abs_diff_nats": 0.9740570286048751 + }, + { + "lane_row": 703, + "call_index": 35, + "lane_in_call": 3, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 20048.83337972723, + "log_likelihood_scalar_library_pdip": 20050.887601049897, + "rel_diff": 0.00010245039339594304, + "abs_diff_nats": 2.0542213226653985 + }, + { + "lane_row": 704, + "call_index": 35, + "lane_in_call": 4, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 18598.67327861386, + "log_likelihood_scalar_library_pdip": 18600.13025700386, + "rel_diff": 7.833162294398246e-05, + "abs_diff_nats": 1.456978390000586 + }, + { + "lane_row": 705, + "call_index": 35, + "lane_in_call": 5, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 18127.862782971217, + "log_likelihood_scalar_library_pdip": 18127.936990333605, + "rel_diff": 4.093535984121847e-06, + "abs_diff_nats": 0.0742073623878241 + }, + { + "lane_row": 711, + "call_index": 35, + "lane_in_call": 11, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19550.05781912669, + "log_likelihood_scalar_library_pdip": 19550.057794053188, + "rel_diff": 1.2825283267899965e-09, + "abs_diff_nats": 2.5073502911254764e-05 + }, + { + "lane_row": 714, + "call_index": 35, + "lane_in_call": 14, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 18878.817755169628, + "log_likelihood_scalar_library_pdip": 18880.347317477237, + "rel_diff": 8.101346240559467e-05, + "abs_diff_nats": 1.5295623076090124 + }, + { + "lane_row": 717, + "call_index": 35, + "lane_in_call": 17, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 17560.42987570153, + "log_likelihood_scalar_library_pdip": 17560.4260978409, + "rel_diff": 2.1513490675228676e-07, + "abs_diff_nats": 0.0037778606310894247 + }, + { + "lane_row": 719, + "call_index": 35, + "lane_in_call": 19, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19495.695091334743, + "log_likelihood_scalar_library_pdip": 19495.69510445355, + "rel_diff": 6.729078479429228e-10, + "abs_diff_nats": 1.3118806236889213e-05 + }, + { + "lane_row": 755, + "call_index": 37, + "lane_in_call": 15, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 20079.685980900555, + "log_likelihood_scalar_library_pdip": 20084.129783256503, + "rel_diff": 0.0002212593925604571, + "abs_diff_nats": 4.443802355948719 + }, + { + "lane_row": 759, + "call_index": 37, + "lane_in_call": 19, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 21095.8563965809, + "log_likelihood_scalar_library_pdip": 21095.659261127443, + "rel_diff": 9.344834926362743e-06, + "abs_diff_nats": 0.1971354534580314 + }, + { + "lane_row": 763, + "call_index": 38, + "lane_in_call": 3, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 23102.027312104205, + "log_likelihood_scalar_library_pdip": 23102.02662982643, + "rel_diff": 2.9533243418639564e-08, + "abs_diff_nats": 0.0006822777759225573 + }, + { + "lane_row": 764, + "call_index": 38, + "lane_in_call": 4, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 23744.620092277488, + "log_likelihood_scalar_library_pdip": 23750.127860152883, + "rel_diff": 0.00023190476732699243, + "abs_diff_nats": 5.507767875395075 + }, + { + "lane_row": 765, + "call_index": 38, + "lane_in_call": 5, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 20901.38609819571, + "log_likelihood_scalar_library_pdip": 20903.275146459273, + "rel_diff": 9.037092275377437e-05, + "abs_diff_nats": 1.8890482635615626 + }, + { + "lane_row": 770, + "call_index": 38, + "lane_in_call": 10, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19361.92022608064, + "log_likelihood_scalar_library_pdip": 19361.810249529422, + "rel_diff": 5.6800758710915984e-06, + "abs_diff_nats": 0.10997655121900607 + }, + { + "lane_row": 772, + "call_index": 38, + "lane_in_call": 12, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19138.606946788783, + "log_likelihood_scalar_library_pdip": 19138.63835983257, + "rel_diff": 1.6413416250788793e-06, + "abs_diff_nats": 0.03141304378732457 + }, + { + "lane_row": 775, + "call_index": 38, + "lane_in_call": 15, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 23716.78755435303, + "log_likelihood_scalar_library_pdip": 23716.810142235558, + "rel_diff": 9.52399685723984e-07, + "abs_diff_nats": 0.02258788252584054 + }, + { + "lane_row": 776, + "call_index": 38, + "lane_in_call": 16, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 21704.941810780576, + "log_likelihood_scalar_library_pdip": 21704.942343132985, + "rel_diff": 2.4526782923132275e-08, + "abs_diff_nats": 0.0005323524092091247 + }, + { + "lane_row": 777, + "call_index": 38, + "lane_in_call": 17, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 18367.151929418076, + "log_likelihood_scalar_library_pdip": 18362.426881709904, + "rel_diff": 0.00025732152610387967, + "abs_diff_nats": 4.725047708172497 + }, + { + "lane_row": 779, + "call_index": 38, + "lane_in_call": 19, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 23320.19083436332, + "log_likelihood_scalar_library_pdip": 23320.190834363468, + "rel_diff": 6.396051050790276e-15, + "abs_diff_nats": 1.4915713109076023e-10 + }, + { + "lane_row": 782, + "call_index": 39, + "lane_in_call": 2, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 21711.401437813234, + "log_likelihood_scalar_library_pdip": 21711.371975720816, + "rel_diff": 1.3569889756742573e-06, + "abs_diff_nats": 0.029462092417816166 + }, + { + "lane_row": 786, + "call_index": 39, + "lane_in_call": 6, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 20558.20746696892, + "log_likelihood_scalar_library_pdip": 20556.79230839147, + "rel_diff": 6.884141047992442e-05, + "abs_diff_nats": 1.4151585774525302 + }, + { + "lane_row": 787, + "call_index": 39, + "lane_in_call": 7, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 17234.92132301579, + "log_likelihood_scalar_library_pdip": 17239.970617075443, + "rel_diff": 0.0002928829852326549, + "abs_diff_nats": 5.049294059652311 + }, + { + "lane_row": 790, + "call_index": 39, + "lane_in_call": 10, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 20545.784169264756, + "log_likelihood_scalar_library_pdip": 20545.78416898095, + "rel_diff": 1.3813344886943549e-11, + "abs_diff_nats": 2.838060026988387e-07 + }, + { + "lane_row": 792, + "call_index": 39, + "lane_in_call": 12, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 20440.00062012439, + "log_likelihood_scalar_library_pdip": 20440.067209817447, + "rel_diff": 3.257802059801843e-06, + "abs_diff_nats": 0.06658969305863138 + }, + { + "lane_row": 793, + "call_index": 39, + "lane_in_call": 13, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19315.2725536376, + "log_likelihood_scalar_library_pdip": 19315.294307407716, + "rel_diff": 1.1262458532156043e-06, + "abs_diff_nats": 0.021753770117356908 + }, + { + "lane_row": 798, + "call_index": 39, + "lane_in_call": 18, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19603.27347368605, + "log_likelihood_scalar_library_pdip": 19605.464817131997, + "rel_diff": 0.0001117720730615271, + "abs_diff_nats": 2.1913434459456766 + }, + { + "lane_row": 799, + "call_index": 39, + "lane_in_call": 19, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19149.15600035359, + "log_likelihood_scalar_library_pdip": 19149.157833499692, + "rel_diff": 9.572985502796449e-08, + "abs_diff_nats": 0.0018331461033085361 + }, + { + "lane_row": 804, + "call_index": 40, + "lane_in_call": 4, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 20013.143424188944, + "log_likelihood_scalar_library_pdip": 20013.108625188444, + "rel_diff": 1.738810354306255e-06, + "abs_diff_nats": 0.03479900049933349 + }, + { + "lane_row": 818, + "call_index": 40, + "lane_in_call": 18, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19229.35595738731, + "log_likelihood_scalar_library_pdip": 19229.98950422863, + "rel_diff": 3.294577156064474e-05, + "abs_diff_nats": 0.6335468413199123 + }, + { + "lane_row": 830, + "call_index": 41, + "lane_in_call": 10, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 20461.547724445496, + "log_likelihood_scalar_library_pdip": 20461.423696428013, + "rel_diff": 6.061553649570302e-06, + "abs_diff_nats": 0.12402801748248748 + }, + { + "lane_row": 832, + "call_index": 41, + "lane_in_call": 12, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 21073.4250847821, + "log_likelihood_scalar_library_pdip": 21074.477632773243, + "rel_diff": 4.994420310129e-05, + "abs_diff_nats": 1.0525479911448201 + }, + { + "lane_row": 837, + "call_index": 41, + "lane_in_call": 17, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 21613.08513223394, + "log_likelihood_scalar_library_pdip": 21613.085132232274, + "rel_diff": 7.709192294639863e-14, + "abs_diff_nats": 1.6661942936480045e-09 + }, + { + "lane_row": 841, + "call_index": 42, + "lane_in_call": 1, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 22206.4632419306, + "log_likelihood_scalar_library_pdip": 22206.49781526716, + "rel_diff": 1.5569018063434918e-06, + "abs_diff_nats": 0.034573336561152246 + }, + { + "lane_row": 851, + "call_index": 42, + "lane_in_call": 11, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19676.866423680676, + "log_likelihood_scalar_library_pdip": 19674.62122646191, + "rel_diff": 0.00011411641387772531, + "abs_diff_nats": 2.245197218766407 + }, + { + "lane_row": 852, + "call_index": 42, + "lane_in_call": 12, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19526.752222807772, + "log_likelihood_scalar_library_pdip": 19526.234790638537, + "rel_diff": 2.6499331529279894e-05, + "abs_diff_nats": 0.5174321692356898 + }, + { + "lane_row": 854, + "call_index": 42, + "lane_in_call": 14, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19843.92799214407, + "log_likelihood_scalar_library_pdip": 19843.927992100995, + "rel_diff": 2.17062212144247e-12, + "abs_diff_nats": 4.307366907596588e-08 + } + ], + "gated": false + }, + "lane_certified": [ + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 0, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 0, + 1, + 0, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 0, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 0, + 0, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 0, + 0, + 1, + 0, + 0, + 0, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 0, + 1, + 0, + 1, + 0, + 0, + 1, + 1, + 1, + 0, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 0, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 0, + 0, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 0, + 1, + 1, + 0, + 1, + 1, + 0, + 0, + 1, + 1, + 1, + 0, + 1, + 0, + 0, + 0, + 1, + 1, + 0, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 1, + 0, + 1, + 0, + 1, + 1, + 0, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 0, + 0, + 1, + 0, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 0, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 0, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 0, + 0, + 1, + 0, + 1, + 1, + 0, + 1, + 0, + 0, + 1, + 1, + 1, + 1, + 1, + 0, + 0, + 0, + 1, + 1, + 0, + 1, + 1, + 0, + 1, + 1, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1, + 0, + 1, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 1, + 1, + 1, + 0, + 0, + 0, + 0, + 1, + 0, + 1, + 0, + 1, + 1, + 0, + 0, + 0, + 1, + 0, + 1, + 0, + 0, + 1, + 0, + 0, + 0, + 1, + 0, + 1, + 1, + 0, + 0, + 0, + 1, + 1, + 0, + 1, + 0, + 1, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 1, + 0, + 1, + 0, + 0, + 0, + 1, + 0, + 1, + 1, + 1, + 0, + 1, + 0, + 1, + 1, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 1, + 1, + 0, + 0, + 1, + 0, + 0, + 0, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 0, + 0, + 1, + 0, + 1, + 1, + 0, + 1, + 0, + 0, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 0, + 1, + 1, + 0, + 1, + 0, + 1, + 0, + 0, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 0, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 0, + 1, + 0, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 1, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 1, + 0, + 1, + 1, + 1, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 0, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 0, + 1, + 1, + 0, + 0, + 0, + 1, + 0, + 1, + 0, + 0, + 0, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 0, + 1, + 1, + 0, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 0, + 0, + 0, + 1, + 1, + 1, + 1, + 0, + 1, + 0, + 1, + 1, + 0, + 0, + 0, + 1, + 0, + 1, + 1, + 0, + 1, + 1, + 1, + 0, + 0, + 1, + 1, + 0, + 1, + 0, + 0, + 1, + 1, + 1, + 1, + 0, + 0, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 0, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 0, + 1, + 0, + 0, + 1, + 1, + 0, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 0, + 1, + 1, + 0, + 1, + 1, + 1, + 0, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 0, + 1, + 0, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 0, + 1, + 0, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 0, + 1, + 0, + 0, + 1, + 1, + 1, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 0, + 0, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 0, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 0, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 0, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 0, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1 + ], + "lane_passes": [ + 0, + 0, + 0, + 7, + 0, + 0, + 16, + 7, + 2, + 0, + 3, + 16, + 0, + 2, + 7, + 0, + 0, + 0, + 0, + 0, + 5, + 0, + 0, + 3, + 16, + 2, + 0, + 16, + 11, + 14, + 2, + 3, + 16, + 2, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 12, + 2, + 0, + 0, + 1, + 0, + 0, + 12, + 16, + 0, + 0, + 0, + 0, + 13, + 0, + 8, + 0, + 16, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 3, + 0, + 1, + 0, + 14, + 0, + 9, + 0, + 0, + 0, + 16, + 0, + 16, + 0, + 0, + 0, + 0, + 16, + 0, + 0, + 0, + 0, + 0, + 0, + 16, + 1, + 0, + 0, + 0, + 0, + 5, + 0, + 1, + 3, + 0, + 1, + 0, + 0, + 16, + 0, + 3, + 16, + 3, + 0, + 0, + 0, + 7, + 0, + 15, + 1, + 0, + 0, + 7, + 16, + 0, + 0, + 0, + 16, + 6, + 16, + 0, + 0, + 0, + 16, + 16, + 2, + 0, + 0, + 0, + 0, + 0, + 16, + 1, + 0, + 0, + 0, + 0, + 1, + 0, + 2, + 0, + 0, + 2, + 2, + 2, + 16, + 16, + 16, + 16, + 0, + 0, + 3, + 0, + 0, + 0, + 16, + 16, + 0, + 8, + 5, + 0, + 7, + 1, + 5, + 0, + 0, + 0, + 0, + 0, + 6, + 16, + 16, + 0, + 0, + 0, + 4, + 0, + 0, + 6, + 6, + 16, + 0, + 0, + 0, + 0, + 11, + 16, + 3, + 0, + 9, + 0, + 0, + 2, + 4, + 4, + 0, + 16, + 16, + 10, + 2, + 0, + 16, + 16, + 0, + 0, + 0, + 0, + 0, + 16, + 2, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 3, + 0, + 0, + 4, + 9, + 16, + 0, + 16, + 16, + 0, + 16, + 0, + 0, + 0, + 12, + 11, + 7, + 14, + 0, + 3, + 0, + 0, + 16, + 0, + 3, + 16, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 4, + 0, + 0, + 7, + 1, + 0, + 0, + 6, + 0, + 16, + 0, + 0, + 0, + 3, + 10, + 1, + 16, + 0, + 0, + 0, + 0, + 10, + 0, + 0, + 14, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 10, + 16, + 0, + 0, + 10, + 4, + 0, + 1, + 4, + 0, + 2, + 16, + 9, + 2, + 16, + 16, + 16, + 16, + 16, + 16, + 5, + 4, + 16, + 5, + 4, + 0, + 0, + 4, + 3, + 16, + 5, + 16, + 8, + 16, + 0, + 16, + 16, + 14, + 16, + 2, + 16, + 16, + 1, + 0, + 2, + 16, + 16, + 4, + 5, + 0, + 2, + 2, + 9, + 5, + 16, + 16, + 5, + 16, + 13, + 8, + 1, + 7, + 0, + 16, + 16, + 8, + 0, + 2, + 4, + 7, + 16, + 4, + 3, + 16, + 0, + 3, + 16, + 0, + 2, + 16, + 16, + 7, + 13, + 2, + 16, + 3, + 16, + 16, + 16, + 16, + 3, + 16, + 0, + 0, + 0, + 16, + 8, + 1, + 15, + 1, + 12, + 5, + 0, + 0, + 16, + 16, + 16, + 16, + 1, + 16, + 16, + 16, + 0, + 16, + 4, + 16, + 2, + 3, + 16, + 1, + 7, + 16, + 15, + 5, + 3, + 0, + 16, + 16, + 11, + 16, + 0, + 16, + 7, + 0, + 0, + 8, + 7, + 16, + 16, + 0, + 5, + 1, + 9, + 1, + 0, + 16, + 16, + 4, + 2, + 0, + 3, + 16, + 0, + 3, + 3, + 16, + 6, + 4, + 9, + 16, + 16, + 5, + 16, + 6, + 1, + 16, + 0, + 16, + 16, + 2, + 6, + 12, + 0, + 2, + 16, + 16, + 16, + 10, + 0, + 16, + 1, + 0, + 16, + 3, + 0, + 16, + 16, + 16, + 16, + 0, + 1, + 9, + 2, + 16, + 0, + 16, + 5, + 16, + 16, + 16, + 16, + 16, + 15, + 16, + 16, + 16, + 16, + 16, + 16, + 4, + 16, + 16, + 16, + 14, + 5, + 2, + 16, + 16, + 16, + 16, + 4, + 16, + 11, + 16, + 6, + 9, + 16, + 16, + 16, + 3, + 16, + 3, + 16, + 16, + 1, + 16, + 16, + 16, + 6, + 16, + 8, + 1, + 16, + 16, + 16, + 3, + 3, + 16, + 9, + 16, + 7, + 16, + 16, + 16, + 13, + 16, + 16, + 16, + 12, + 16, + 13, + 16, + 16, + 16, + 7, + 16, + 6, + 9, + 6, + 16, + 14, + 16, + 7, + 5, + 16, + 16, + 16, + 16, + 16, + 11, + 16, + 16, + 7, + 10, + 16, + 16, + 10, + 16, + 16, + 16, + 9, + 16, + 1, + 14, + 6, + 3, + 1, + 16, + 16, + 14, + 16, + 1, + 12, + 16, + 5, + 16, + 16, + 16, + 9, + 16, + 3, + 16, + 14, + 16, + 16, + 4, + 5, + 16, + 3, + 16, + 15, + 16, + 16, + 0, + 2, + 16, + 7, + 0, + 3, + 9, + 6, + 16, + 16, + 3, + 16, + 7, + 16, + 8, + 16, + 16, + 4, + 16, + 13, + 16, + 6, + 4, + 4, + 0, + 0, + 16, + 16, + 16, + 16, + 16, + 7, + 16, + 16, + 3, + 16, + 16, + 16, + 16, + 5, + 9, + 16, + 3, + 16, + 10, + 16, + 1, + 10, + 16, + 3, + 3, + 3, + 16, + 16, + 16, + 16, + 15, + 3, + 2, + 16, + 14, + 3, + 5, + 16, + 16, + 14, + 16, + 2, + 16, + 15, + 16, + 16, + 12, + 2, + 16, + 16, + 16, + 4, + 16, + 7, + 16, + 16, + 16, + 16, + 3, + 3, + 7, + 5, + 16, + 1, + 4, + 16, + 1, + 6, + 16, + 13, + 16, + 2, + 3, + 0, + 4, + 0, + 12, + 0, + 7, + 5, + 3, + 5, + 1, + 4, + 1, + 0, + 3, + 4, + 0, + 0, + 3, + 0, + 1, + 5, + 0, + 1, + 3, + 1, + 3, + 5, + 3, + 1, + 0, + 0, + 2, + 1, + 16, + 7, + 0, + 8, + 16, + 1, + 4, + 6, + 16, + 16, + 16, + 3, + 8, + 4, + 5, + 16, + 16, + 16, + 5, + 7, + 16, + 16, + 16, + 8, + 16, + 9, + 10, + 16, + 12, + 12, + 2, + 16, + 16, + 1, + 4, + 16, + 8, + 16, + 16, + 11, + 7, + 1, + 1, + 16, + 16, + 9, + 16, + 0, + 10, + 16, + 13, + 9, + 2, + 0, + 2, + 16, + 11, + 0, + 6, + 5, + 5, + 3, + 10, + 16, + 4, + 5, + 9, + 3, + 2, + 3, + 3, + 9, + 5, + 7, + 3, + 16, + 3, + 16, + 0, + 14, + 7, + 0, + 16, + 6, + 3, + 13, + 16, + 7, + 6, + 12, + 12, + 8, + 8, + 2, + 1, + 1, + 16, + 16, + 7, + 16, + 16, + 15, + 0, + 16, + 4, + 10, + 16, + 0, + 2, + 0, + 11, + 4, + 4, + 2, + 16, + 1, + 8, + 0, + 13, + 4, + 16, + 0, + 2, + 4, + 2, + 1, + 4, + 0, + 1, + 16, + 6, + 16, + 8, + 11, + 16, + 8, + 4, + 6, + 16, + 16, + 7, + 8, + 13, + 10, + 9, + 1, + 3, + 0, + 0, + 0, + 16, + 16, + 2, + 16, + 16, + 11, + 6, + 3, + 9, + 6, + 2, + 8, + 16, + 9, + 16, + 13, + 0, + 5, + 1, + 2, + 1, + 5, + 3, + 5, + 14, + 0, + 3, + 10, + 3, + 1, + 16, + 11, + 0, + 6, + 4, + 5, + 1, + 2, + 16, + 3, + 2, + 9, + 6, + 5, + 2, + 2, + 1, + 12, + 2, + 10, + 5, + 3, + 11, + 5, + 0, + 16, + 4, + 5, + 0, + 1, + 1, + 2, + 7, + 8, + 16, + 1, + 1, + 16, + 2, + 16, + 7, + 6, + 3, + 2, + 16, + 0, + 13, + 14, + 0, + 4, + 5, + 5, + 1, + 16, + 0, + 8, + 7, + 10, + 3, + 16, + 1, + 0, + 0, + 4, + 16, + 7, + 16, + 16, + 14, + 1, + 5, + 3, + 16, + 12, + 16, + 1, + 16, + 5, + 14, + 14, + 10, + 2, + 4, + 16, + 6, + 3, + 11, + 3, + 16, + 1, + 2, + 2, + 16, + 3, + 5, + 5, + 2, + 4, + 16, + 2, + 16, + 5, + 6, + 0, + 1, + 15, + 4, + 2, + 5, + 3, + 8, + 9, + 2, + 1, + 3, + 4, + 1, + 12, + 3, + 5, + 10, + 16, + 3, + 9, + 6, + 5, + 5, + 3, + 4, + 5, + 3, + 16, + 16, + 9, + 4, + 2, + 5, + 1, + 1, + 3, + 10, + 9, + 2, + 3, + 1, + 2, + 3, + 2, + 0, + 1, + 6, + 14, + 1, + 7, + 1, + 1, + 4, + 4, + 5, + 5, + 9, + 1, + 3, + 12, + 9, + 1, + 3, + 5, + 3, + 9, + 8, + 3, + 3, + 3, + 8, + 2, + 5, + 8, + 0, + 6, + 11, + 3, + 3, + 7, + 16, + 7, + 1, + 7, + 3, + 6, + 2, + 5, + 7, + 11, + 4, + 8, + 2, + 16, + 1, + 1, + 3, + 6, + 16, + 1, + 5, + 1, + 4, + 4, + 6, + 1, + 3, + 5, + 6, + 9, + 5, + 3, + 16, + 4, + 8, + 4, + 4, + 3, + 8, + 1, + 6, + 7, + 1, + 4, + 16, + 11, + 4, + 7, + 2, + 3, + 2, + 8, + 1, + 3, + 3, + 4, + 4, + 16, + 1, + 2, + 10, + 14, + 2, + 5, + 4, + 8, + 4, + 14, + 4, + 4, + 2, + 0, + 5, + 4, + 7, + 3, + 3, + 1, + 3, + 16, + 2, + 1, + 2, + 4, + 9, + 1, + 5, + 4, + 3, + 16, + 8, + 3, + 2, + 10, + 2, + 3, + 3, + 16, + 4, + 3, + 10, + 9, + 2, + 1, + 5, + 3, + 16, + 2, + 1, + 3, + 5, + 5, + 9, + 11, + 3, + 7, + 3, + 5, + 8, + 2, + 16, + 4, + 1, + 3, + 5, + 7, + 2, + 8, + 6, + 6, + 6, + 16, + 3, + 5, + 4, + 7, + 4, + 6, + 4, + 5, + 7, + 9, + 1, + 15, + 3, + 15, + 5, + 3, + 10, + 10, + 9, + 1, + 4, + 7, + 16, + 6, + 1, + 4, + 8, + 11, + 9, + 6, + 2, + 3, + 5, + 5, + 5, + 3, + 3, + 0, + 2, + 10, + 16, + 10, + 6, + 5, + 1, + 9, + 16, + 10, + 2, + 1, + 4, + 1, + 13, + 8, + 7, + 6, + 6, + 6, + 5, + 2, + 4, + 2, + 3, + 4, + 12, + 4, + 2, + 8, + 1, + 1, + 7, + 1, + 0, + 5, + 1, + 2, + 4, + 1, + 2, + 1, + 2, + 1, + 0, + 0, + 2, + 6, + 8, + 4, + 0, + 3, + 4, + 5, + 2, + 3, + 2, + 6, + 1, + 2, + 6, + 3, + 2, + 5, + 4, + 3, + 5, + 2, + 6, + 2, + 16, + 1, + 3, + 1, + 4, + 1, + 1, + 3, + 6, + 2, + 2, + 5, + 2, + 5, + 2, + 3, + 2, + 3, + 3, + 2, + 6, + 2, + 2, + 3, + 2, + 1, + 2, + 3, + 4, + 2, + 4, + 10, + 1, + 3, + 6, + 1, + 9, + 6, + 1, + 4, + 4, + 6, + 4, + 3, + 7, + 6, + 7, + 8, + 1, + 2, + 1, + 2, + 2, + 3, + 3, + 1, + 2, + 1, + 2, + 4, + 4, + 3, + 8, + 1, + 2, + 6, + 4, + 2, + 1, + 6, + 1, + 14, + 5, + 9, + 1, + 6, + 5, + 8, + 2, + 9, + 5, + 3, + 3, + 5, + 5, + 2, + 3, + 0, + 7, + 0, + 3, + 5, + 7, + 4, + 1, + 3, + 1, + 2, + 2, + 2, + 2, + 5, + 4, + 5, + 2, + 4, + 7, + 4, + 4, + 3, + 8, + 0, + 0, + 5, + 3, + 8, + 3, + 1, + 3, + 1, + 10, + 8, + 5, + 3, + 3, + 10, + 8, + 4, + 8, + 2, + 5, + 3, + 1, + 3, + 5, + 4, + 1, + 4, + 3, + 4, + 7, + 1, + 4, + 2, + 4, + 4, + 3, + 3, + 2, + 2, + 2, + 3, + 4, + 1, + 3, + 3, + 6, + 7, + 5, + 2, + 6, + 4, + 1, + 4, + 3, + 3, + 2, + 5, + 5, + 5, + 1, + 6, + 1, + 7, + 2, + 3, + 6, + 3, + 4, + 3, + 4, + 0, + 2, + 16, + 5, + 3, + 3, + 5, + 2, + 4, + 1, + 2, + 3, + 4, + 6, + 4, + 2, + 5, + 2, + 1, + 1, + 3, + 1, + 3, + 1, + 3, + 4, + 2, + 6, + 4, + 5, + 4, + 4, + 6, + 5, + 2, + 0, + 4, + 1, + 1, + 3, + 1, + 3, + 3, + 4, + 9, + 0, + 5, + 3, + 3, + 2, + 5, + 4, + 4, + 1, + 4, + 1, + 4, + 2, + 3, + 4, + 8, + 3, + 5, + 4, + 4, + 5, + 2, + 5, + 3, + 1, + 7, + 3, + 5, + 4, + 5, + 6, + 7, + 3, + 2, + 3, + 1, + 4, + 2, + 1, + 1, + 0, + 7, + 9, + 1, + 1, + 5, + 4, + 15, + 0, + 3, + 0, + 4, + 0, + 1, + 1, + 1, + 1, + 3, + 3, + 4, + 4, + 2, + 2, + 2, + 1, + 2, + 4, + 2, + 1, + 2, + 2, + 2, + 2, + 3, + 5, + 5, + 1, + 1, + 1, + 0, + 1, + 3, + 3, + 2, + 4, + 3, + 3, + 5, + 1, + 3, + 2, + 1, + 2, + 1, + 3, + 5, + 2, + 6, + 2, + 4, + 4, + 1, + 4, + 1, + 5, + 1, + 1, + 3, + 2, + 3, + 3, + 4, + 3, + 3, + 1, + 1, + 2, + 1, + 1, + 5, + 4, + 2, + 10, + 3, + 2, + 3, + 2, + 3, + 1, + 5, + 1, + 3, + 1, + 3, + 2, + 1, + 2, + 2, + 2, + 2, + 1, + 1, + 3, + 3, + 3, + 5, + 2, + 3, + 3, + 3, + 2, + 4, + 3, + 0, + 2, + 2, + 2, + 2, + 1, + 4, + 4, + 12, + 1, + 4, + 2, + 1, + 3, + 1, + 4, + 8, + 1, + 3, + 2, + 3, + 4, + 4, + 2, + 3, + 4, + 3, + 4, + 2, + 2, + 4, + 2, + 2, + 2, + 4, + 1, + 4, + 4, + 4, + 3, + 1, + 2, + 1, + 6, + 1, + 1, + 3, + 2, + 1, + 3, + 4, + 2, + 1, + 2, + 2, + 4, + 2, + 1, + 3, + 1, + 2, + 9, + 1, + 3, + 2, + 2, + 3, + 2, + 2, + 4, + 2, + 4, + 10, + 2, + 1, + 1, + 4, + 1, + 7, + 4, + 2, + 5, + 2, + 1, + 3, + 3, + 3, + 2, + 3, + 5, + 2, + 6, + 3, + 1, + 3, + 2, + 3, + 2, + 3, + 4, + 2, + 1, + 1, + 10, + 0, + 4, + 2, + 4, + 7, + 2, + 1, + 1, + 2, + 1, + 4, + 1, + 3, + 3, + 1, + 4, + 6, + 5, + 5, + 5, + 7, + 2, + 2, + 4, + 1, + 1, + 3, + 4, + 3, + 5, + 3, + 2, + 3, + 2, + 4, + 5, + 3, + 2, + 4, + 4, + 5, + 1, + 2, + 2, + 3, + 3, + 4, + 2, + 3, + 3, + 3, + 4, + 6, + 3, + 4, + 3, + 4, + 7, + 3, + 3, + 2, + 2, + 2, + 2, + 3, + 3, + 2, + 2, + 2, + 2, + 3, + 3, + 1, + 3, + 2, + 2, + 3, + 0, + 2, + 2, + 3, + 0, + 2, + 2, + 1, + 4, + 3, + 1, + 3, + 12, + 1, + 5, + 3, + 3, + 3, + 4, + 2, + 1, + 15, + 2, + 2, + 1, + 4, + 4, + 16, + 16, + 3, + 3, + 2, + 2, + 2, + 4, + 2, + 16, + 1, + 16, + 1, + 3, + 3, + 2, + 12, + 3, + 16, + 6, + 1, + 4, + 4, + 2, + 16, + 4, + 1, + 0, + 16, + 16, + 4, + 16, + 1, + 2, + 3, + 0, + 1, + 5, + 1, + 2, + 4, + 4, + 16, + 0, + 4, + 0, + 2, + 2, + 0, + 0, + 1, + 6, + 16, + 1, + 2, + 2, + 4, + 0, + 5, + 16, + 3, + 5, + 1, + 15, + 16, + 1, + 4, + 1, + 1, + 16, + 2, + 16, + 3, + 14, + 4, + 5, + 3, + 1, + 1, + 16, + 6, + 16, + 1, + 1, + 16, + 2, + 4, + 1, + 0, + 2, + 1, + 2, + 4, + 11, + 0, + 11, + 16, + 2, + 1, + 1, + 2, + 1, + 3, + 16, + 16, + 3, + 1, + 3, + 5, + 16, + 4, + 3, + 2, + 4, + 2, + 2, + 1, + 4, + 16, + 2, + 4, + 4, + 7, + 0, + 2, + 4, + 4, + 2, + 6, + 5, + 15, + 16, + 1, + 1, + 16, + 6, + 4, + 1, + 4, + 0, + 1, + 0, + 1, + 1, + 0, + 4, + 1, + 0, + 3, + 5, + 2, + 2, + 14, + 2, + 1, + 16, + 1, + 1, + 16, + 3, + 2, + 5, + 4, + 1, + 2, + 4, + 4, + 0, + 6, + 0, + 4, + 4, + 1, + 2, + 7, + 0, + 2, + 2, + 4, + 1, + 2, + 1, + 2, + 2, + 1, + 11, + 3, + 16, + 2, + 2, + 1, + 3, + 3, + 8, + 2, + 1, + 3, + 3, + 3, + 2, + 16, + 2, + 2, + 4, + 2, + 2, + 7, + 4, + 1, + 3, + 2, + 4, + 2, + 4, + 1, + 2, + 2, + 3, + 1, + 2, + 3, + 2, + 16, + 0, + 1, + 1, + 2, + 3, + 3, + 2, + 3, + 0, + 2, + 4, + 1, + 2, + 16, + 2, + 2, + 1, + 3, + 3, + 14, + 1, + 2, + 4, + 0, + 4, + 3, + 1, + 16, + 2, + 3, + 2, + 16, + 2, + 16, + 2, + 5, + 2, + 3, + 16, + 6, + 4, + 4, + 3, + 16, + 2, + 3, + 3, + 3, + 2, + 0, + 3, + 12, + 3, + 5, + 2, + 2, + 1, + 5, + 4, + 0, + 2, + 16, + 0, + 3, + 2, + 2, + 1, + 2, + 3, + 11, + 3, + 4, + 1, + 7, + 3, + 6, + 16, + 2, + 2, + 4, + 3, + 3, + 3, + 1, + 3, + 13, + 0, + 5, + 0, + 4, + 1, + 8, + 4, + 3, + 2, + 3, + 1, + 1, + 2, + 5, + 0, + 3, + 3, + 3, + 16, + 3, + 5, + 16, + 2, + 4, + 3, + 3, + 0, + 3, + 3, + 4, + 2, + 16, + 0, + 0, + 1, + 2, + 7, + 3, + 0, + 3, + 2, + 3, + 2, + 2, + 16, + 2, + 7, + 5, + 2, + 3, + 1, + 2, + 4, + 3, + 6, + 3, + 3, + 4, + 3, + 3, + 4, + 4, + 3, + 16, + 3, + 0, + 7, + 2, + 2, + 3, + 4, + 3, + 3, + 3, + 2, + 1, + 2, + 4, + 1, + 3, + 0, + 3, + 9, + 2, + 1, + 7, + 4, + 1, + 5, + 2, + 1, + 0, + 2, + 16, + 3, + 1, + 0, + 5, + 3, + 16, + 3, + 2, + 3, + 3, + 9, + 2, + 13, + 2, + 2, + 1, + 2, + 2, + 3, + 2, + 3, + 5, + 4, + 1, + 14, + 4, + 1, + 2, + 1, + 1, + 2, + 1, + 3, + 16, + 1, + 2, + 3, + 0, + 3, + 0, + 4, + 2, + 4, + 1, + 4, + 3, + 3, + 2, + 2, + 3, + 3, + 1, + 2, + 2, + 3, + 4, + 2, + 16, + 3, + 1, + 3, + 3, + 2, + 1, + 1, + 6, + 0, + 2, + 2, + 5, + 1, + 2, + 7, + 2, + 2, + 2, + 0, + 2, + 16, + 3, + 1, + 3, + 2, + 4, + 1, + 1, + 1, + 2, + 1, + 9, + 2, + 2, + 3, + 16, + 1, + 16, + 2, + 3, + 2, + 1, + 3, + 2, + 4, + 4, + 2, + 3, + 11, + 3, + 2, + 3, + 1, + 3, + 1, + 2, + 4, + 16, + 0, + 1, + 3, + 4, + 2, + 3, + 16, + 8, + 2, + 1, + 3, + 16, + 13, + 1, + 4, + 5, + 7, + 4, + 2, + 2, + 2, + 1, + 5, + 2, + 3, + 16, + 2, + 1, + 7, + 2, + 4, + 2, + 3, + 3, + 0, + 16, + 3, + 3, + 2, + 1, + 3, + 3, + 2, + 3, + 1, + 16, + 6, + 2, + 3, + 3, + 3, + 5, + 1, + 15, + 5, + 3, + 11, + 2, + 16, + 1, + 6, + 2, + 1, + 3, + 16, + 1, + 3, + 3, + 2, + 1, + 1, + 2, + 1, + 4, + 3, + 2, + 2, + 1, + 2, + 0, + 2, + 16, + 16, + 1, + 4, + 3, + 3, + 3, + 2, + 3, + 7, + 16, + 1, + 5, + 3, + 2, + 6, + 5, + 5, + 1, + 4, + 8, + 2, + 1, + 1, + 1, + 2, + 1, + 5, + 2, + 2, + 1, + 2, + 6, + 2, + 2, + 2, + 4, + 2, + 2, + 3, + 2, + 2, + 3, + 5, + 1, + 2, + 3, + 4, + 3, + 1, + 3, + 1, + 5, + 1, + 2, + 5, + 2, + 1, + 3, + 2, + 4, + 3, + 1, + 3, + 1, + 1, + 1, + 1, + 6, + 1, + 1, + 0, + 2, + 2, + 1, + 1, + 1, + 5, + 1, + 1, + 1, + 3, + 2, + 1, + 5, + 1, + 4, + 1, + 3, + 3, + 1, + 3, + 2, + 2, + 4, + 3, + 4, + 1, + 4, + 3, + 3, + 1, + 5, + 2, + 1, + 3, + 1, + 1, + 2, + 2, + 1, + 2, + 2, + 6, + 1, + 3, + 2, + 2, + 2, + 4, + 2, + 2, + 3, + 2, + 2, + 2, + 1, + 3, + 2, + 4, + 3, + 3, + 2, + 1, + 2, + 5, + 2, + 1, + 4, + 1, + 4, + 5, + 2, + 4, + 2, + 3, + 2, + 3, + 1, + 6, + 3, + 2, + 0, + 4, + 1, + 3, + 6, + 1, + 1, + 1, + 2, + 2, + 3, + 6, + 4, + 2, + 4, + 6, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 4, + 4, + 2, + 2, + 3, + 1, + 2, + 1, + 3, + 3, + 2, + 2, + 2, + 3, + 2, + 7, + 3, + 1, + 6, + 2, + 2, + 0, + 1, + 2, + 3, + 7, + 2, + 2, + 2, + 3, + 2, + 2, + 4, + 2, + 1, + 2, + 1, + 2, + 3, + 2, + 2, + 2, + 2, + 2, + 4, + 1, + 3, + 5, + 1, + 2, + 1, + 2, + 5, + 2, + 3, + 3, + 2, + 2, + 3, + 2, + 2, + 1, + 2, + 1, + 2, + 1, + 3, + 2, + 2, + 3, + 1, + 1, + 2, + 1, + 2, + 8, + 3, + 2, + 2, + 2, + 3, + 3, + 3, + 6, + 1, + 1, + 4, + 4, + 1, + 1, + 2, + 2, + 2, + 4, + 4, + 2, + 2, + 4, + 1, + 3, + 1, + 3, + 1, + 2, + 3, + 1, + 1, + 2, + 4, + 2, + 2, + 3, + 5, + 2, + 3, + 3, + 2, + 2, + 1, + 1, + 3, + 2, + 2, + 1, + 6, + 3, + 1, + 1, + 1, + 2, + 3, + 2, + 3, + 4, + 4, + 4, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 1, + 1, + 2, + 2, + 2, + 2, + 2, + 3, + 3, + 2, + 10, + 4, + 3, + 2, + 2, + 3, + 2, + 6, + 3, + 3, + 4, + 3, + 3, + 2, + 1, + 3, + 2, + 3, + 1, + 2, + 2, + 3, + 2, + 6, + 1, + 3, + 1, + 2, + 2, + 1, + 3, + 1, + 4, + 3, + 2, + 2, + 3, + 4, + 3, + 3, + 3, + 1, + 2, + 1, + 2, + 1, + 1, + 2, + 1, + 2, + 3, + 2, + 2, + 2, + 2, + 3, + 2, + 4, + 5, + 1, + 4, + 1, + 4, + 3, + 1, + 5, + 3, + 1, + 3, + 3, + 8, + 1, + 5, + 1, + 3, + 3, + 3, + 1, + 1, + 2, + 2, + 3, + 3, + 3, + 1, + 6, + 2, + 1, + 3, + 1, + 2, + 1, + 2, + 2, + 1, + 3, + 1, + 1, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 5, + 2, + 1, + 2, + 3, + 2, + 2, + 1, + 3, + 2, + 3, + 1, + 2, + 2, + 1, + 2, + 1, + 3, + 2, + 1, + 3, + 5, + 2, + 4, + 3, + 3, + 2, + 3, + 3, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 7, + 3, + 1, + 2, + 2, + 2, + 1, + 3, + 2, + 2, + 3, + 3, + 2, + 7, + 2, + 1, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 1, + 1, + 2, + 2, + 1, + 1, + 3, + 2, + 2, + 1, + 2, + 1, + 2, + 2, + 2, + 2, + 1, + 1, + 2, + 2, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 5, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 4, + 1, + 1, + 2, + 2, + 3, + 2, + 2, + 1, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 3, + 2, + 2, + 1, + 2, + 2, + 3, + 1, + 2, + 1, + 2, + 2, + 3, + 2, + 3, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 3, + 2, + 2, + 1, + 1, + 3, + 2, + 1, + 2, + 2, + 2, + 2, + 1, + 2, + 1, + 3, + 2, + 2, + 3, + 2, + 3, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 1, + 2, + 3, + 3, + 2, + 3, + 2, + 2, + 3, + 2, + 2, + 2, + 3, + 2, + 1, + 2, + 4, + 2, + 2, + 3, + 3, + 2, + 1, + 3, + 1, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 2, + 1, + 2, + 3, + 1, + 2, + 2, + 1, + 2, + 2, + 3, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 3, + 2, + 3, + 2, + 3, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 2, + 1, + 2, + 2, + 1, + 1, + 1, + 1, + 2, + 1, + 2, + 1, + 2, + 1, + 2, + 3, + 2, + 1, + 2, + 2, + 1, + 2, + 2, + 2, + 1, + 2, + 3, + 1, + 2, + 1, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 1, + 2, + 1, + 2, + 1, + 2, + 1, + 2, + 2, + 2, + 1, + 3, + 2, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 1, + 2, + 3, + 1, + 1, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 1, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 2, + 1, + 2, + 3, + 1, + 1, + 2, + 1, + 2, + 4, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 3, + 2, + 1, + 1, + 2, + 1, + 2, + 2, + 1, + 2, + 2, + 1, + 2, + 1, + 2, + 2, + 3, + 2, + 2, + 3, + 2, + 1, + 2, + 2, + 2, + 2, + 3, + 2, + 2, + 1, + 1, + 2, + 2, + 2, + 2, + 2, + 1, + 1, + 1, + 1, + 2, + 1, + 2, + 2, + 2, + 3, + 1, + 2, + 2, + 3, + 2, + 2, + 2, + 3, + 1, + 2, + 2, + 2, + 1, + 2, + 3, + 2, + 2, + 2, + 1, + 2, + 2, + 1, + 2, + 3, + 2, + 2, + 3, + 3, + 1, + 1, + 1, + 2, + 3, + 1, + 3, + 2, + 1, + 3, + 1, + 2, + 1, + 2, + 1, + 1, + 3, + 2, + 2, + 2, + 1, + 2, + 2, + 1, + 2, + 2, + 3, + 3, + 2, + 2, + 2, + 2, + 1, + 1, + 1, + 2, + 2, + 2, + 1, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 1, + 1, + 1, + 2, + 1, + 3, + 3, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 6, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 1, + 1, + 2, + 1, + 1, + 2, + 2, + 1, + 2, + 2, + 3, + 3, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 2, + 2, + 1, + 2, + 2, + 3, + 2, + 1, + 1, + 2, + 2, + 2, + 1, + 2, + 2, + 1, + 2, + 1, + 2, + 1, + 2, + 1, + 1, + 1, + 1, + 2, + 2, + 2, + 1, + 1, + 1, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 3, + 2, + 2, + 1, + 2, + 1, + 1, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 1, + 3, + 1, + 2, + 3, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 1, + 2, + 3, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 1, + 1, + 1, + 2, + 3, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 1, + 1, + 2, + 2, + 1, + 2, + 1, + 2, + 3, + 1, + 1, + 2, + 2, + 1, + 2, + 3, + 2, + 2, + 2, + 3, + 1, + 2, + 2, + 2, + 2, + 2, + 3, + 2, + 1, + 2, + 2, + 2, + 1, + 1, + 2, + 1, + 1, + 2, + 1, + 1, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 2, + 1, + 1, + 2, + 2, + 2, + 1, + 2, + 1, + 2, + 2, + 1, + 1, + 2, + 2, + 3, + 2, + 3, + 2, + 1, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 1, + 1, + 1, + 2, + 2, + 2, + 2, + 2, + 1, + 1, + 2, + 2, + 1, + 2, + 3, + 1, + 3, + 2, + 3, + 1, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 1, + 2, + 2, + 3, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 3, + 2, + 2, + 3, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 5, + 1, + 2, + 1, + 2, + 2, + 1, + 2, + 2, + 1, + 2, + 2, + 1, + 2, + 2, + 1, + 2, + 2, + 1, + 1, + 2, + 2, + 1, + 1, + 1, + 2, + 2, + 1, + 2, + 2, + 3, + 2, + 1, + 3, + 2, + 1, + 1, + 2, + 2, + 2, + 1, + 1, + 2, + 1, + 1, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 1, + 3, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 1, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 2, + 1, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 1, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 1, + 3, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 1, + 2, + 2, + 1, + 1, + 1, + 1, + 3, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 1, + 3, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 1, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 1, + 2, + 3, + 1, + 2, + 2, + 1, + 3, + 2, + 2, + 1, + 1, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 2, + 2, + 3, + 2, + 2, + 2, + 1, + 2, + 2, + 1, + 2, + 2, + 3, + 1, + 3, + 1, + 3, + 2, + 2, + 1, + 1, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 1, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 3, + 2, + 2, + 1, + 1, + 1, + 2, + 2, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 2, + 2, + 1, + 1, + 2, + 2, + 2, + 1, + 1, + 2, + 2, + 2, + 2, + 3, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 1, + 2, + 2, + 2, + 2, + 1, + 3, + 2, + 1, + 2, + 1, + 3, + 2, + 1, + 1, + 2, + 2, + 2, + 1, + 2, + 2, + 3, + 1, + 1, + 2, + 2, + 2, + 2, + 1, + 1, + 2, + 2, + 3, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 4, + 2, + 2, + 4, + 1, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 1, + 3, + 1, + 2, + 3, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 1, + 1, + 2, + 2, + 2, + 2, + 2, + 3, + 1, + 1, + 2, + 1, + 1, + 1, + 2, + 1, + 2, + 1, + 2, + 1, + 1, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 1, + 1, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 1, + 2, + 1, + 1, + 1, + 3, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 3, + 3, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 1, + 2, + 2, + 1, + 1, + 2, + 2, + 2, + 1, + 2, + 2, + 1, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 3, + 1, + 1, + 2, + 1, + 1, + 2, + 1, + 2, + 2, + 3, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 3, + 2, + 3, + 2, + 3, + 2, + 2, + 3, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 1, + 3, + 2, + 1, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 1, + 2, + 1, + 1, + 3, + 2, + 2, + 1, + 1, + 2, + 2, + 2, + 2, + 2, + 1, + 1, + 2, + 2, + 1, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 1, + 1, + 2, + 1, + 2, + 1, + 2, + 2, + 2, + 1, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 3, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 3, + 2, + 3, + 1, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 3, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 1, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 1, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 1, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 1, + 2, + 2, + 1, + 2, + 3, + 3, + 2, + 1, + 1, + 2, + 2, + 1, + 2, + 3, + 2, + 2, + 3, + 2, + 3, + 2, + 1, + 2, + 2, + 1, + 2, + 1, + 2, + 2, + 2, + 2, + 3, + 2, + 1, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 1, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 1, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 1, + 1, + 1, + 2, + 2, + 2, + 1, + 2, + 2, + 1, + 2, + 2, + 3, + 2, + 2, + 3, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 2, + 1, + 2, + 2, + 1, + 2, + 2, + 3, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 1, + 1, + 2, + 2, + 2, + 1, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 1, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 1, + 1, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 1, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 3, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 1, + 2, + 1, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 1, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 2, + 1, + 2, + 2, + 1, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 1, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 3, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 1, + 2, + 1, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 1, + 1, + 3, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 1, + 2, + 2, + 1, + 2, + 1, + 2, + 3, + 1, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 2, + 3, + 4, + 2, + 2, + 2, + 2, + 2, + 1, + 1, + 2, + 2, + 1, + 1, + 2, + 3, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 1, + 2, + 2, + 1, + 2, + 7, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 2, + 2, + 3, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 3, + 2, + 2, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 2, + 2, + 3, + 2, + 1, + 3, + 3, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 1, + 2, + 2, + 1, + 2, + 2, + 2, + 1, + 4, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 3, + 2, + 3, + 2, + 3, + 2, + 2, + 1, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 3, + 2, + 2, + 2, + 2, + 1, + 1, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 3, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 1, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 3, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 1, + 2, + 2, + 2, + 1, + 2, + 2, + 3, + 2, + 2, + 2, + 1, + 2, + 3, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 1, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 1, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 1, + 2, + 2, + 1, + 1, + 2, + 1, + 2, + 2, + 1, + 2, + 1, + 1, + 2, + 2, + 2, + 2, + 1, + 2, + 3, + 1, + 3, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 3, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 1, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 3, + 2, + 3, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 1, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 1, + 1, + 2, + 2, + 2, + 1, + 1, + 2, + 2, + 1, + 2, + 2, + 2, + 1, + 2, + 1, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 1, + 2, + 1, + 2, + 2, + 3, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 1, + 2, + 3, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 1, + 2, + 2, + 1, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 2, + 1, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 2, + 2, + 3, + 1, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 2, + 2, + 3, + 2, + 2, + 1, + 2, + 2, + 3, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 2, + 2, + 1, + 2, + 3, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 2, + 2, + 1, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 1, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 1, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 1, + 2, + 2, + 1, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 1, + 2, + 2, + 2, + 2, + 1, + 2, + 1, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 1, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 1, + 2, + 1, + 2, + 2, + 2, + 1, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 1, + 3, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 3, + 2, + 1, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 3, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 3, + 3, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 3, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 3, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 3, + 1, + 2, + 3, + 2, + 2, + 1, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 3, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 3, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 2, + 1, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 1, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 3, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2 + ], + "lane_rows": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621, + 622, + 623, + 624, + 625, + 626, + 627, + 628, + 629, + 630, + 631, + 632, + 633, + 634, + 635, + 636, + 637, + 638, + 639, + 640, + 641, + 642, + 643, + 644, + 645, + 646, + 647, + 648, + 649, + 650, + 651, + 652, + 653, + 654, + 655, + 656, + 657, + 658, + 659, + 660, + 661, + 662, + 663, + 664, + 665, + 666, + 667, + 668, + 669, + 670, + 671, + 672, + 673, + 674, + 675, + 676, + 677, + 678, + 679, + 680, + 681, + 682, + 683, + 684, + 685, + 686, + 687, + 688, + 689, + 690, + 691, + 692, + 693, + 694, + 695, + 696, + 697, + 698, + 699, + 700, + 701, + 702, + 703, + 704, + 705, + 706, + 707, + 708, + 709, + 710, + 711, + 712, + 713, + 714, + 715, + 716, + 717, + 718, + 719, + 720, + 721, + 722, + 723, + 724, + 725, + 726, + 727, + 728, + 729, + 730, + 731, + 732, + 733, + 734, + 735, + 736, + 737, + 738, + 739, + 740, + 741, + 742, + 743, + 744, + 745, + 746, + 747, + 748, + 749, + 750, + 751, + 752, + 753, + 754, + 755, + 756, + 757, + 758, + 759, + 760, + 761, + 762, + 763, + 764, + 765, + 766, + 767, + 768, + 769, + 770, + 771, + 772, + 773, + 774, + 775, + 776, + 777, + 778, + 779, + 780, + 781, + 782, + 783, + 784, + 785, + 786, + 787, + 788, + 789, + 790, + 791, + 792, + 793, + 794, + 795, + 796, + 797, + 798, + 799, + 800, + 801, + 802, + 803, + 804, + 805, + 806, + 807, + 808, + 809, + 810, + 811, + 812, + 813, + 814, + 815, + 816, + 817, + 818, + 819, + 820, + 821, + 822, + 823, + 824, + 825, + 826, + 827, + 828, + 829, + 830, + 831, + 832, + 833, + 834, + 835, + 836, + 837, + 838, + 839, + 840, + 841, + 842, + 843, + 844, + 845, + 846, + 847, + 848, + 849, + 850, + 851, + 852, + 853, + 854, + 855, + 856, + 857, + 858, + 859, + 860, + 861, + 862, + 863, + 864, + 865, + 866, + 867, + 868, + 869, + 870, + 871, + 872, + 873, + 874, + 875, + 876, + 877, + 878, + 879, + 880, + 881, + 882, + 883, + 884, + 885, + 886, + 887, + 888, + 889, + 890, + 891, + 892, + 893, + 894, + 895, + 896, + 897, + 898, + 899, + 900, + 901, + 902, + 903, + 904, + 905, + 906, + 907, + 908, + 909, + 910, + 911, + 912, + 913, + 914, + 915, + 916, + 917, + 918, + 919, + 920, + 921, + 922, + 923, + 924, + 925, + 926, + 927, + 928, + 929, + 930, + 931, + 932, + 933, + 934, + 935, + 936, + 937, + 938, + 939, + 940, + 941, + 942, + 943, + 944, + 945, + 946, + 947, + 948, + 949, + 950, + 951, + 952, + 953, + 954, + 955, + 956, + 957, + 958, + 959, + 960, + 961, + 962, + 963, + 964, + 965, + 966, + 967, + 968, + 969, + 970, + 971, + 972, + 973, + 974, + 975, + 976, + 977, + 978, + 979, + 980, + 981, + 982, + 983, + 984, + 985, + 986, + 987, + 988, + 989, + 990, + 991, + 992, + 993, + 994, + 995, + 996, + 997, + 998, + 999, + 1000, + 1001, + 1002, + 1003, + 1004, + 1005, + 1006, + 1007, + 1008, + 1009, + 1010, + 1011, + 1012, + 1013, + 1014, + 1015, + 1016, + 1017, + 1018, + 1019, + 1020, + 1021, + 1022, + 1023, + 1024, + 1025, + 1026, + 1027, + 1028, + 1029, + 1030, + 1031, + 1032, + 1033, + 1034, + 1035, + 1036, + 1037, + 1038, + 1039, + 1040, + 1041, + 1042, + 1043, + 1044, + 1045, + 1046, + 1047, + 1048, + 1049, + 1050, + 1051, + 1052, + 1053, + 1054, + 1055, + 1056, + 1057, + 1058, + 1059, + 1060, + 1061, + 1062, + 1063, + 1064, + 1065, + 1066, + 1067, + 1068, + 1069, + 1070, + 1071, + 1072, + 1073, + 1074, + 1075, + 1076, + 1077, + 1078, + 1079, + 1080, + 1081, + 1082, + 1083, + 1084, + 1085, + 1086, + 1087, + 1088, + 1089, + 1090, + 1091, + 1092, + 1093, + 1094, + 1095, + 1096, + 1097, + 1098, + 1099, + 1100, + 1101, + 1102, + 1103, + 1104, + 1105, + 1106, + 1107, + 1108, + 1109, + 1110, + 1111, + 1112, + 1113, + 1114, + 1115, + 1116, + 1117, + 1118, + 1119, + 1120, + 1121, + 1122, + 1123, + 1124, + 1125, + 1126, + 1127, + 1128, + 1129, + 1130, + 1131, + 1132, + 1133, + 1134, + 1135, + 1136, + 1137, + 1138, + 1139, + 1140, + 1141, + 1142, + 1143, + 1144, + 1145, + 1146, + 1147, + 1148, + 1149, + 1150, + 1151, + 1152, + 1153, + 1154, + 1155, + 1156, + 1157, + 1158, + 1159, + 1160, + 1161, + 1162, + 1163, + 1164, + 1165, + 1166, + 1167, + 1168, + 1169, + 1170, + 1171, + 1172, + 1173, + 1174, + 1175, + 1176, + 1177, + 1178, + 1179, + 1180, + 1181, + 1182, + 1183, + 1184, + 1185, + 1186, + 1187, + 1188, + 1189, + 1190, + 1191, + 1192, + 1193, + 1194, + 1195, + 1196, + 1197, + 1198, + 1199, + 1200, + 1201, + 1202, + 1203, + 1204, + 1205, + 1206, + 1207, + 1208, + 1209, + 1210, + 1211, + 1212, + 1213, + 1214, + 1215, + 1216, + 1217, + 1218, + 1219, + 1220, + 1221, + 1222, + 1223, + 1224, + 1225, + 1226, + 1227, + 1228, + 1229, + 1230, + 1231, + 1232, + 1233, + 1234, + 1235, + 1236, + 1237, + 1238, + 1239, + 1240, + 1241, + 1242, + 1243, + 1244, + 1245, + 1246, + 1247, + 1248, + 1249, + 1250, + 1251, + 1252, + 1253, + 1254, + 1255, + 1256, + 1257, + 1258, + 1259, + 1260, + 1261, + 1262, + 1263, + 1264, + 1265, + 1266, + 1267, + 1268, + 1269, + 1270, + 1271, + 1272, + 1273, + 1274, + 1275, + 1276, + 1277, + 1278, + 1279, + 1280, + 1281, + 1282, + 1283, + 1284, + 1285, + 1286, + 1287, + 1288, + 1289, + 1290, + 1291, + 1292, + 1293, + 1294, + 1295, + 1296, + 1297, + 1298, + 1299, + 1300, + 1301, + 1302, + 1303, + 1304, + 1305, + 1306, + 1307, + 1308, + 1309, + 1310, + 1311, + 1312, + 1313, + 1314, + 1315, + 1316, + 1317, + 1318, + 1319, + 1320, + 1321, + 1322, + 1323, + 1324, + 1325, + 1326, + 1327, + 1328, + 1329, + 1330, + 1331, + 1332, + 1333, + 1334, + 1335, + 1336, + 1337, + 1338, + 1339, + 1340, + 1341, + 1342, + 1343, + 1344, + 1345, + 1346, + 1347, + 1348, + 1349, + 1350, + 1351, + 1352, + 1353, + 1354, + 1355, + 1356, + 1357, + 1358, + 1359, + 1360, + 1361, + 1362, + 1363, + 1364, + 1365, + 1366, + 1367, + 1368, + 1369, + 1370, + 1371, + 1372, + 1373, + 1374, + 1375, + 1376, + 1377, + 1378, + 1379, + 1380, + 1381, + 1382, + 1383, + 1384, + 1385, + 1386, + 1387, + 1388, + 1389, + 1390, + 1391, + 1392, + 1393, + 1394, + 1395, + 1396, + 1397, + 1398, + 1399, + 1400, + 1401, + 1402, + 1403, + 1404, + 1405, + 1406, + 1407, + 1408, + 1409, + 1410, + 1411, + 1412, + 1413, + 1414, + 1415, + 1416, + 1417, + 1418, + 1419, + 1420, + 1421, + 1422, + 1423, + 1424, + 1425, + 1426, + 1427, + 1428, + 1429, + 1430, + 1431, + 1432, + 1433, + 1434, + 1435, + 1436, + 1437, + 1438, + 1439, + 1440, + 1441, + 1442, + 1443, + 1444, + 1445, + 1446, + 1447, + 1448, + 1449, + 1450, + 1451, + 1452, + 1453, + 1454, + 1455, + 1456, + 1457, + 1458, + 1459, + 1460, + 1461, + 1462, + 1463, + 1464, + 1465, + 1466, + 1467, + 1468, + 1469, + 1470, + 1471, + 1472, + 1473, + 1474, + 1475, + 1476, + 1477, + 1478, + 1479, + 1480, + 1481, + 1482, + 1483, + 1484, + 1485, + 1486, + 1487, + 1488, + 1489, + 1490, + 1491, + 1492, + 1493, + 1494, + 1495, + 1496, + 1497, + 1498, + 1499, + 1500, + 1501, + 1502, + 1503, + 1504, + 1505, + 1506, + 1507, + 1508, + 1509, + 1510, + 1511, + 1512, + 1513, + 1514, + 1515, + 1516, + 1517, + 1518, + 1519, + 1520, + 1521, + 1522, + 1523, + 1524, + 1525, + 1526, + 1527, + 1528, + 1529, + 1530, + 1531, + 1532, + 1533, + 1534, + 1535, + 1536, + 1537, + 1538, + 1539, + 1540, + 1541, + 1542, + 1543, + 1544, + 1545, + 1546, + 1547, + 1548, + 1549, + 1550, + 1551, + 1552, + 1553, + 1554, + 1555, + 1556, + 1557, + 1558, + 1559, + 1560, + 1561, + 1562, + 1563, + 1564, + 1565, + 1566, + 1567, + 1568, + 1569, + 1570, + 1571, + 1572, + 1573, + 1574, + 1575, + 1576, + 1577, + 1578, + 1579, + 1580, + 1581, + 1582, + 1583, + 1584, + 1585, + 1586, + 1587, + 1588, + 1589, + 1590, + 1591, + 1592, + 1593, + 1594, + 1595, + 1596, + 1597, + 1598, + 1599, + 1600, + 1601, + 1602, + 1603, + 1604, + 1605, + 1606, + 1607, + 1608, + 1609, + 1610, + 1611, + 1612, + 1613, + 1614, + 1615, + 1616, + 1617, + 1618, + 1619, + 1620, + 1621, + 1622, + 1623, + 1624, + 1625, + 1626, + 1627, + 1628, + 1629, + 1630, + 1631, + 1632, + 1633, + 1634, + 1635, + 1636, + 1637, + 1638, + 1639, + 1640, + 1641, + 1642, + 1643, + 1644, + 1645, + 1646, + 1647, + 1648, + 1649, + 1650, + 1651, + 1652, + 1653, + 1654, + 1655, + 1656, + 1657, + 1658, + 1659, + 1660, + 1661, + 1662, + 1663, + 1664, + 1665, + 1666, + 1667, + 1668, + 1669, + 1670, + 1671, + 1672, + 1673, + 1674, + 1675, + 1676, + 1677, + 1678, + 1679, + 1680, + 1681, + 1682, + 1683, + 1684, + 1685, + 1686, + 1687, + 1688, + 1689, + 1690, + 1691, + 1692, + 1693, + 1694, + 1695, + 1696, + 1697, + 1698, + 1699, + 1700, + 1701, + 1702, + 1703, + 1704, + 1705, + 1706, + 1707, + 1708, + 1709, + 1710, + 1711, + 1712, + 1713, + 1714, + 1715, + 1716, + 1717, + 1718, + 1719, + 1720, + 1721, + 1722, + 1723, + 1724, + 1725, + 1726, + 1727, + 1728, + 1729, + 1730, + 1731, + 1732, + 1733, + 1734, + 1735, + 1736, + 1737, + 1738, + 1739, + 1740, + 1741, + 1742, + 1743, + 1744, + 1745, + 1746, + 1747, + 1748, + 1749, + 1750, + 1751, + 1752, + 1753, + 1754, + 1755, + 1756, + 1757, + 1758, + 1759, + 1760, + 1761, + 1762, + 1763, + 1764, + 1765, + 1766, + 1767, + 1768, + 1769, + 1770, + 1771, + 1772, + 1773, + 1774, + 1775, + 1776, + 1777, + 1778, + 1779, + 1780, + 1781, + 1782, + 1783, + 1784, + 1785, + 1786, + 1787, + 1788, + 1789, + 1790, + 1791, + 1792, + 1793, + 1794, + 1795, + 1796, + 1797, + 1798, + 1799, + 1800, + 1801, + 1802, + 1803, + 1804, + 1805, + 1806, + 1807, + 1808, + 1809, + 1810, + 1811, + 1812, + 1813, + 1814, + 1815, + 1816, + 1817, + 1818, + 1819, + 1820, + 1821, + 1822, + 1823, + 1824, + 1825, + 1826, + 1827, + 1828, + 1829, + 1830, + 1831, + 1832, + 1833, + 1834, + 1835, + 1836, + 1837, + 1838, + 1839, + 1840, + 1841, + 1842, + 1843, + 1844, + 1845, + 1846, + 1847, + 1848, + 1849, + 1850, + 1851, + 1852, + 1853, + 1854, + 1855, + 1856, + 1857, + 1858, + 1859, + 1860, + 1861, + 1862, + 1863, + 1864, + 1865, + 1866, + 1867, + 1868, + 1869, + 1870, + 1871, + 1872, + 1873, + 1874, + 1875, + 1876, + 1877, + 1878, + 1879, + 1880, + 1881, + 1882, + 1883, + 1884, + 1885, + 1886, + 1887, + 1888, + 1889, + 1890, + 1891, + 1892, + 1893, + 1894, + 1895, + 1896, + 1897, + 1898, + 1899, + 1900, + 1901, + 1902, + 1903, + 1904, + 1905, + 1906, + 1907, + 1908, + 1909, + 1910, + 1911, + 1912, + 1913, + 1914, + 1915, + 1916, + 1917, + 1918, + 1919, + 1920, + 1921, + 1922, + 1923, + 1924, + 1925, + 1926, + 1927, + 1928, + 1929, + 1930, + 1931, + 1932, + 1933, + 1934, + 1935, + 1936, + 1937, + 1938, + 1939, + 1940, + 1941, + 1942, + 1943, + 1944, + 1945, + 1946, + 1947, + 1948, + 1949, + 1950, + 1951, + 1952, + 1953, + 1954, + 1955, + 1956, + 1957, + 1958, + 1959, + 1960, + 1961, + 1962, + 1963, + 1964, + 1965, + 1966, + 1967, + 1968, + 1969, + 1970, + 1971, + 1972, + 1973, + 1974, + 1975, + 1976, + 1977, + 1978, + 1979, + 1980, + 1981, + 1982, + 1983, + 1984, + 1985, + 1986, + 1987, + 1988, + 1989, + 1990, + 1991, + 1992, + 1993, + 1994, + 1995, + 1996, + 1997, + 1998, + 1999, + 2000, + 2001, + 2002, + 2003, + 2004, + 2005, + 2006, + 2007, + 2008, + 2009, + 2010, + 2011, + 2012, + 2013, + 2014, + 2015, + 2016, + 2017, + 2018, + 2019, + 2020, + 2021, + 2022, + 2023, + 2024, + 2025, + 2026, + 2027, + 2028, + 2029, + 2030, + 2031, + 2032, + 2033, + 2034, + 2035, + 2036, + 2037, + 2038, + 2039, + 2040, + 2041, + 2042, + 2043, + 2044, + 2045, + 2046, + 2047, + 2048, + 2049, + 2050, + 2051, + 2052, + 2053, + 2054, + 2055, + 2056, + 2057, + 2058, + 2059, + 2060, + 2061, + 2062, + 2063, + 2064, + 2065, + 2066, + 2067, + 2068, + 2069, + 2070, + 2071, + 2072, + 2073, + 2074, + 2075, + 2076, + 2077, + 2078, + 2079, + 2080, + 2081, + 2082, + 2083, + 2084, + 2085, + 2086, + 2087, + 2088, + 2089, + 2090, + 2091, + 2092, + 2093, + 2094, + 2095, + 2096, + 2097, + 2098, + 2099, + 2100, + 2101, + 2102, + 2103, + 2104, + 2105, + 2106, + 2107, + 2108, + 2109, + 2110, + 2111, + 2112, + 2113, + 2114, + 2115, + 2116, + 2117, + 2118, + 2119, + 2120, + 2121, + 2122, + 2123, + 2124, + 2125, + 2126, + 2127, + 2128, + 2129, + 2130, + 2131, + 2132, + 2133, + 2134, + 2135, + 2136, + 2137, + 2138, + 2139, + 2140, + 2141, + 2142, + 2143, + 2144, + 2145, + 2146, + 2147, + 2148, + 2149, + 2150, + 2151, + 2152, + 2153, + 2154, + 2155, + 2156, + 2157, + 2158, + 2159, + 2160, + 2161, + 2162, + 2163, + 2164, + 2165, + 2166, + 2167, + 2168, + 2169, + 2170, + 2171, + 2172, + 2173, + 2174, + 2175, + 2176, + 2177, + 2178, + 2179, + 2180, + 2181, + 2182, + 2183, + 2184, + 2185, + 2186, + 2187, + 2188, + 2189, + 2190, + 2191, + 2192, + 2193, + 2194, + 2195, + 2196, + 2197, + 2198, + 2199, + 2200, + 2201, + 2202, + 2203, + 2204, + 2205, + 2206, + 2207, + 2208, + 2209, + 2210, + 2211, + 2212, + 2213, + 2214, + 2215, + 2216, + 2217, + 2218, + 2219, + 2220, + 2221, + 2222, + 2223, + 2224, + 2225, + 2226, + 2227, + 2228, + 2229, + 2230, + 2231, + 2232, + 2233, + 2234, + 2235, + 2236, + 2237, + 2238, + 2239, + 2240, + 2241, + 2242, + 2243, + 2244, + 2245, + 2246, + 2247, + 2248, + 2249, + 2250, + 2251, + 2252, + 2253, + 2254, + 2255, + 2256, + 2257, + 2258, + 2259, + 2260, + 2261, + 2262, + 2263, + 2264, + 2265, + 2266, + 2267, + 2268, + 2269, + 2270, + 2271, + 2272, + 2273, + 2274, + 2275, + 2276, + 2277, + 2278, + 2279, + 2280, + 2281, + 2282, + 2283, + 2284, + 2285, + 2286, + 2287, + 2288, + 2289, + 2290, + 2291, + 2292, + 2293, + 2294, + 2295, + 2296, + 2297, + 2298, + 2299, + 2300, + 2301, + 2302, + 2303, + 2304, + 2305, + 2306, + 2307, + 2308, + 2309, + 2310, + 2311, + 2312, + 2313, + 2314, + 2315, + 2316, + 2317, + 2318, + 2319, + 2320, + 2321, + 2322, + 2323, + 2324, + 2325, + 2326, + 2327, + 2328, + 2329, + 2330, + 2331, + 2332, + 2333, + 2334, + 2335, + 2336, + 2337, + 2338, + 2339, + 2340, + 2341, + 2342, + 2343, + 2344, + 2345, + 2346, + 2347, + 2348, + 2349, + 2350, + 2351, + 2352, + 2353, + 2354, + 2355, + 2356, + 2357, + 2358, + 2359, + 2360, + 2361, + 2362, + 2363, + 2364, + 2365, + 2366, + 2367, + 2368, + 2369, + 2370, + 2371, + 2372, + 2373, + 2374, + 2375, + 2376, + 2377, + 2378, + 2379, + 2380, + 2381, + 2382, + 2383, + 2384, + 2385, + 2386, + 2387, + 2388, + 2389, + 2390, + 2391, + 2392, + 2393, + 2394, + 2395, + 2396, + 2397, + 2398, + 2399, + 2400, + 2401, + 2402, + 2403, + 2404, + 2405, + 2406, + 2407, + 2408, + 2409, + 2410, + 2411, + 2412, + 2413, + 2414, + 2415, + 2416, + 2417, + 2418, + 2419, + 2420, + 2421, + 2422, + 2423, + 2424, + 2425, + 2426, + 2427, + 2428, + 2429, + 2430, + 2431, + 2432, + 2433, + 2434, + 2435, + 2436, + 2437, + 2438, + 2439, + 2440, + 2441, + 2442, + 2443, + 2444, + 2445, + 2446, + 2447, + 2448, + 2449, + 2450, + 2451, + 2452, + 2453, + 2454, + 2455, + 2456, + 2457, + 2458, + 2459, + 2460, + 2461, + 2462, + 2463, + 2464, + 2465, + 2466, + 2467, + 2468, + 2469, + 2470, + 2471, + 2472, + 2473, + 2474, + 2475, + 2476, + 2477, + 2478, + 2479, + 2480, + 2481, + 2482, + 2483, + 2484, + 2485, + 2486, + 2487, + 2488, + 2489, + 2490, + 2491, + 2492, + 2493, + 2494, + 2495, + 2496, + 2497, + 2498, + 2499, + 2500, + 2501, + 2502, + 2503, + 2504, + 2505, + 2506, + 2507, + 2508, + 2509, + 2510, + 2511, + 2512, + 2513, + 2514, + 2515, + 2516, + 2517, + 2518, + 2519, + 2520, + 2521, + 2522, + 2523, + 2524, + 2525, + 2526, + 2527, + 2528, + 2529, + 2530, + 2531, + 2532, + 2533, + 2534, + 2535, + 2536, + 2537, + 2538, + 2539, + 2540, + 2541, + 2542, + 2543, + 2544, + 2545, + 2546, + 2547, + 2548, + 2549, + 2550, + 2551, + 2552, + 2553, + 2554, + 2555, + 2556, + 2557, + 2558, + 2559, + 2560, + 2561, + 2562, + 2563, + 2564, + 2565, + 2566, + 2567, + 2568, + 2569, + 2570, + 2571, + 2572, + 2573, + 2574, + 2575, + 2576, + 2577, + 2578, + 2579, + 2580, + 2581, + 2582, + 2583, + 2584, + 2585, + 2586, + 2587, + 2588, + 2589, + 2590, + 2591, + 2592, + 2593, + 2594, + 2595, + 2596, + 2597, + 2598, + 2599, + 2600, + 2601, + 2602, + 2603, + 2604, + 2605, + 2606, + 2607, + 2608, + 2609, + 2610, + 2611, + 2612, + 2613, + 2614, + 2615, + 2616, + 2617, + 2618, + 2619, + 2620, + 2621, + 2622, + 2623, + 2624, + 2625, + 2626, + 2627, + 2628, + 2629, + 2630, + 2631, + 2632, + 2633, + 2634, + 2635, + 2636, + 2637, + 2638, + 2639, + 2640, + 2641, + 2642, + 2643, + 2644, + 2645, + 2646, + 2647, + 2648, + 2649, + 2650, + 2651, + 2652, + 2653, + 2654, + 2655, + 2656, + 2657, + 2658, + 2659, + 2660, + 2661, + 2662, + 2663, + 2664, + 2665, + 2666, + 2667, + 2668, + 2669, + 2670, + 2671, + 2672, + 2673, + 2674, + 2675, + 2676, + 2677, + 2678, + 2679, + 2680, + 2681, + 2682, + 2683, + 2684, + 2685, + 2686, + 2687, + 2688, + 2689, + 2690, + 2691, + 2692, + 2693, + 2694, + 2695, + 2696, + 2697, + 2698, + 2699, + 2700, + 2701, + 2702, + 2703, + 2704, + 2705, + 2706, + 2707, + 2708, + 2709, + 2710, + 2711, + 2712, + 2713, + 2714, + 2715, + 2716, + 2717, + 2718, + 2719, + 2720, + 2721, + 2722, + 2723, + 2724, + 2725, + 2726, + 2727, + 2728, + 2729, + 2730, + 2731, + 2732, + 2733, + 2734, + 2735, + 2736, + 2737, + 2738, + 2739, + 2740, + 2741, + 2742, + 2743, + 2744, + 2745, + 2746, + 2747, + 2748, + 2749, + 2750, + 2751, + 2752, + 2753, + 2754, + 2755, + 2756, + 2757, + 2758, + 2759, + 2760, + 2761, + 2762, + 2763, + 2764, + 2765, + 2766, + 2767, + 2768, + 2769, + 2770, + 2771, + 2772, + 2773, + 2774, + 2775, + 2776, + 2777, + 2778, + 2779, + 2780, + 2781, + 2782, + 2783, + 2784, + 2785, + 2786, + 2787, + 2788, + 2789, + 2790, + 2791, + 2792, + 2793, + 2794, + 2795, + 2796, + 2797, + 2798, + 2799, + 2800, + 2801, + 2802, + 2803, + 2804, + 2805, + 2806, + 2807, + 2808, + 2809, + 2810, + 2811, + 2812, + 2813, + 2814, + 2815, + 2816, + 2817, + 2818, + 2819, + 2820, + 2821, + 2822, + 2823, + 2824, + 2825, + 2826, + 2827, + 2828, + 2829, + 2830, + 2831, + 2832, + 2833, + 2834, + 2835, + 2836, + 2837, + 2838, + 2839, + 2840, + 2841, + 2842, + 2843, + 2844, + 2845, + 2846, + 2847, + 2848, + 2849, + 2850, + 2851, + 2852, + 2853, + 2854, + 2855, + 2856, + 2857, + 2858, + 2859, + 2860, + 2861, + 2862, + 2863, + 2864, + 2865, + 2866, + 2867, + 2868, + 2869, + 2870, + 2871, + 2872, + 2873, + 2874, + 2875, + 2876, + 2877, + 2878, + 2879, + 2880, + 2881, + 2882, + 2883, + 2884, + 2885, + 2886, + 2887, + 2888, + 2889, + 2890, + 2891, + 2892, + 2893, + 2894, + 2895, + 2896, + 2897, + 2898, + 2899, + 2900, + 2901, + 2902, + 2903, + 2904, + 2905, + 2906, + 2907, + 2908, + 2909, + 2910, + 2911, + 2912, + 2913, + 2914, + 2915, + 2916, + 2917, + 2918, + 2919, + 2920, + 2921, + 2922, + 2923, + 2924, + 2925, + 2926, + 2927, + 2928, + 2929, + 2930, + 2931, + 2932, + 2933, + 2934, + 2935, + 2936, + 2937, + 2938, + 2939, + 2940, + 2941, + 2942, + 2943, + 2944, + 2945, + 2946, + 2947, + 2948, + 2949, + 2950, + 2951, + 2952, + 2953, + 2954, + 2955, + 2956, + 2957, + 2958, + 2959, + 2960, + 2961, + 2962, + 2963, + 2964, + 2965, + 2966, + 2967, + 2968, + 2969, + 2970, + 2971, + 2972, + 2973, + 2974, + 2975, + 2976, + 2977, + 2978, + 2979, + 2980, + 2981, + 2982, + 2983, + 2984, + 2985, + 2986, + 2987, + 2988, + 2989, + 2990, + 2991, + 2992, + 2993, + 2994, + 2995, + 2996, + 2997, + 2998, + 2999, + 3000, + 3001, + 3002, + 3003, + 3004, + 3005, + 3006, + 3007, + 3008, + 3009, + 3010, + 3011, + 3012, + 3013, + 3014, + 3015, + 3016, + 3017, + 3018, + 3019, + 3020, + 3021, + 3022, + 3023, + 3024, + 3025, + 3026, + 3027, + 3028, + 3029, + 3030, + 3031, + 3032, + 3033, + 3034, + 3035, + 3036, + 3037, + 3038, + 3039, + 3040, + 3041, + 3042, + 3043, + 3044, + 3045, + 3046, + 3047, + 3048, + 3049, + 3050, + 3051, + 3052, + 3053, + 3054, + 3055, + 3056, + 3057, + 3058, + 3059, + 3060, + 3061, + 3062, + 3063, + 3064, + 3065, + 3066, + 3067, + 3068, + 3069, + 3070, + 3071, + 3072, + 3073, + 3074, + 3075, + 3076, + 3077, + 3078, + 3079, + 3080, + 3081, + 3082, + 3083, + 3084, + 3085, + 3086, + 3087, + 3088, + 3089, + 3090, + 3091, + 3092, + 3093, + 3094, + 3095, + 3096, + 3097, + 3098, + 3099, + 3100, + 3101, + 3102, + 3103, + 3104, + 3105, + 3106, + 3107, + 3108, + 3109, + 3110, + 3111, + 3112, + 3113, + 3114, + 3115, + 3116, + 3117, + 3118, + 3119, + 3120, + 3121, + 3122, + 3123, + 3124, + 3125, + 3126, + 3127, + 3128, + 3129, + 3130, + 3131, + 3132, + 3133, + 3134, + 3135, + 3136, + 3137, + 3138, + 3139, + 3140, + 3141, + 3142, + 3143, + 3144, + 3145, + 3146, + 3147, + 3148, + 3149, + 3150, + 3151, + 3152, + 3153, + 3154, + 3155, + 3156, + 3157, + 3158, + 3159, + 3160, + 3161, + 3162, + 3163, + 3164, + 3165, + 3166, + 3167, + 3168, + 3169, + 3170, + 3171, + 3172, + 3173, + 3174, + 3175, + 3176, + 3177, + 3178, + 3179, + 3180, + 3181, + 3182, + 3183, + 3184, + 3185, + 3186, + 3187, + 3188, + 3189, + 3190, + 3191, + 3192, + 3193, + 3194, + 3195, + 3196, + 3197, + 3198, + 3199, + 3200, + 3201, + 3202, + 3203, + 3204, + 3205, + 3206, + 3207, + 3208, + 3209, + 3210, + 3211, + 3212, + 3213, + 3214, + 3215, + 3216, + 3217, + 3218, + 3219, + 3220, + 3221, + 3222, + 3223, + 3224, + 3225, + 3226, + 3227, + 3228, + 3229, + 3230, + 3231, + 3232, + 3233, + 3234, + 3235, + 3236, + 3237, + 3238, + 3239, + 3240, + 3241, + 3242, + 3243, + 3244, + 3245, + 3246, + 3247, + 3248, + 3249, + 3250, + 3251, + 3252, + 3253, + 3254, + 3255, + 3256, + 3257, + 3258, + 3259, + 3260, + 3261, + 3262, + 3263, + 3264, + 3265, + 3266, + 3267, + 3268, + 3269, + 3270, + 3271, + 3272, + 3273, + 3274, + 3275, + 3276, + 3277, + 3278, + 3279, + 3280, + 3281, + 3282, + 3283, + 3284, + 3285, + 3286, + 3287, + 3288, + 3289, + 3290, + 3291, + 3292, + 3293, + 3294, + 3295, + 3296, + 3297, + 3298, + 3299, + 3300, + 3301, + 3302, + 3303, + 3304, + 3305, + 3306, + 3307, + 3308, + 3309, + 3310, + 3311, + 3312, + 3313, + 3314, + 3315, + 3316, + 3317, + 3318, + 3319, + 3320, + 3321, + 3322, + 3323, + 3324, + 3325, + 3326, + 3327, + 3328, + 3329, + 3330, + 3331, + 3332, + 3333, + 3334, + 3335, + 3336, + 3337, + 3338, + 3339, + 3340, + 3341, + 3342, + 3343, + 3344, + 3345, + 3346, + 3347, + 3348, + 3349, + 3350, + 3351, + 3352, + 3353, + 3354, + 3355, + 3356, + 3357, + 3358, + 3359, + 3360, + 3361, + 3362, + 3363, + 3364, + 3365, + 3366, + 3367, + 3368, + 3369, + 3370, + 3371, + 3372, + 3373, + 3374, + 3375, + 3376, + 3377, + 3378, + 3379, + 3380, + 3381, + 3382, + 3383, + 3384, + 3385, + 3386, + 3387, + 3388, + 3389, + 3390, + 3391, + 3392, + 3393, + 3394, + 3395, + 3396, + 3397, + 3398, + 3399, + 3400, + 3401, + 3402, + 3403, + 3404, + 3405, + 3406, + 3407, + 3408, + 3409, + 3410, + 3411, + 3412, + 3413, + 3414, + 3415, + 3416, + 3417, + 3418, + 3419, + 3420, + 3421, + 3422, + 3423, + 3424, + 3425, + 3426, + 3427, + 3428, + 3429, + 3430, + 3431, + 3432, + 3433, + 3434, + 3435, + 3436, + 3437, + 3438, + 3439, + 3440, + 3441, + 3442, + 3443, + 3444, + 3445, + 3446, + 3447, + 3448, + 3449, + 3450, + 3451, + 3452, + 3453, + 3454, + 3455, + 3456, + 3457, + 3458, + 3459, + 3460, + 3461, + 3462, + 3463, + 3464, + 3465, + 3466, + 3467, + 3468, + 3469, + 3470, + 3471, + 3472, + 3473, + 3474, + 3475, + 3476, + 3477, + 3478, + 3479, + 3480, + 3481, + 3482, + 3483, + 3484, + 3485, + 3486, + 3487, + 3488, + 3489, + 3490, + 3491, + 3492, + 3493, + 3494, + 3495, + 3496, + 3497, + 3498, + 3499, + 3500, + 3501, + 3502, + 3503, + 3504, + 3505, + 3506, + 3507, + 3508, + 3509, + 3510, + 3511, + 3512, + 3513, + 3514, + 3515, + 3516, + 3517, + 3518, + 3519, + 3520, + 3521, + 3522, + 3523, + 3524, + 3525, + 3526, + 3527, + 3528, + 3529, + 3530, + 3531, + 3532, + 3533, + 3534, + 3535, + 3536, + 3537, + 3538, + 3539, + 3540, + 3541, + 3542, + 3543, + 3544, + 3545, + 3546, + 3547, + 3548, + 3549, + 3550, + 3551, + 3552, + 3553, + 3554, + 3555, + 3556, + 3557, + 3558, + 3559, + 3560, + 3561, + 3562, + 3563, + 3564, + 3565, + 3566, + 3567, + 3568, + 3569, + 3570, + 3571, + 3572, + 3573, + 3574, + 3575, + 3576, + 3577, + 3578, + 3579, + 3580, + 3581, + 3582, + 3583, + 3584, + 3585, + 3586, + 3587, + 3588, + 3589, + 3590, + 3591, + 3592, + 3593, + 3594, + 3595, + 3596, + 3597, + 3598, + 3599, + 3600, + 3601, + 3602, + 3603, + 3604, + 3605, + 3606, + 3607, + 3608, + 3609, + 3610, + 3611, + 3612, + 3613, + 3614, + 3615, + 3616, + 3617, + 3618, + 3619, + 3620, + 3621, + 3622, + 3623, + 3624, + 3625, + 3626, + 3627, + 3628, + 3629, + 3630, + 3631, + 3632, + 3633, + 3634, + 3635, + 3636, + 3637, + 3638, + 3639, + 3640, + 3641, + 3642, + 3643, + 3644, + 3645, + 3646, + 3647, + 3648, + 3649, + 3650, + 3651, + 3652, + 3653, + 3654, + 3655, + 3656, + 3657, + 3658, + 3659, + 3660, + 3661, + 3662, + 3663, + 3664, + 3665, + 3666, + 3667, + 3668, + 3669, + 3670, + 3671, + 3672, + 3673, + 3674, + 3675, + 3676, + 3677, + 3678, + 3679, + 3680, + 3681, + 3682, + 3683, + 3684, + 3685, + 3686, + 3687, + 3688, + 3689, + 3690, + 3691, + 3692, + 3693, + 3694, + 3695, + 3696, + 3697, + 3698, + 3699, + 3700, + 3701, + 3702, + 3703, + 3704, + 3705, + 3706, + 3707, + 3708, + 3709, + 3710, + 3711, + 3712, + 3713, + 3714, + 3715, + 3716, + 3717, + 3718, + 3719, + 3720, + 3721, + 3722, + 3723, + 3724, + 3725, + 3726, + 3727, + 3728, + 3729, + 3730, + 3731, + 3732, + 3733, + 3734, + 3735, + 3736, + 3737, + 3738, + 3739, + 3740, + 3741, + 3742, + 3743, + 3744, + 3745, + 3746, + 3747, + 3748, + 3749, + 3750, + 3751, + 3752, + 3753, + 3754, + 3755, + 3756, + 3757, + 3758, + 3759, + 3760, + 3761, + 3762, + 3763, + 3764, + 3765, + 3766, + 3767, + 3768, + 3769, + 3770, + 3771, + 3772, + 3773, + 3774, + 3775, + 3776, + 3777, + 3778, + 3779, + 3780, + 3781, + 3782, + 3783, + 3784, + 3785, + 3786, + 3787, + 3788, + 3789, + 3790, + 3791, + 3792, + 3793, + 3794, + 3795, + 3796, + 3797, + 3798, + 3799, + 3800, + 3801, + 3802, + 3803, + 3804, + 3805, + 3806, + 3807, + 3808, + 3809, + 3810, + 3811, + 3812, + 3813, + 3814, + 3815, + 3816, + 3817, + 3818, + 3819, + 3820, + 3821, + 3822, + 3823, + 3824, + 3825, + 3826, + 3827, + 3828, + 3829, + 3830, + 3831, + 3832, + 3833, + 3834, + 3835, + 3836, + 3837, + 3838, + 3839, + 3840, + 3841, + 3842, + 3843, + 3844, + 3845, + 3846, + 3847, + 3848, + 3849, + 3850, + 3851, + 3852, + 3853, + 3854, + 3855, + 3856, + 3857, + 3858, + 3859, + 3860, + 3861, + 3862, + 3863, + 3864, + 3865, + 3866, + 3867, + 3868, + 3869, + 3870, + 3871, + 3872, + 3873, + 3874, + 3875, + 3876, + 3877, + 3878, + 3879, + 3880, + 3881, + 3882, + 3883, + 3884, + 3885, + 3886, + 3887, + 3888, + 3889, + 3890, + 3891, + 3892, + 3893, + 3894, + 3895, + 3896, + 3897, + 3898, + 3899, + 3900, + 3901, + 3902, + 3903, + 3904, + 3905, + 3906, + 3907, + 3908, + 3909, + 3910, + 3911, + 3912, + 3913, + 3914, + 3915, + 3916, + 3917, + 3918, + 3919, + 3920, + 3921, + 3922, + 3923, + 3924, + 3925, + 3926, + 3927, + 3928, + 3929, + 3930, + 3931, + 3932, + 3933, + 3934, + 3935, + 3936, + 3937, + 3938, + 3939, + 3940, + 3941, + 3942, + 3943, + 3944, + 3945, + 3946, + 3947, + 3948, + 3949, + 3950, + 3951, + 3952, + 3953, + 3954, + 3955, + 3956, + 3957, + 3958, + 3959, + 3960, + 3961, + 3962, + 3963, + 3964, + 3965, + 3966, + 3967, + 3968, + 3969, + 3970, + 3971, + 3972, + 3973, + 3974, + 3975, + 3976, + 3977, + 3978, + 3979, + 3980, + 3981, + 3982, + 3983, + 3984, + 3985, + 3986, + 3987, + 3988, + 3989, + 3990, + 3991, + 3992, + 3993, + 3994, + 3995, + 3996, + 3997, + 3998, + 3999, + 4000, + 4001, + 4002, + 4003, + 4004, + 4005, + 4006, + 4007, + 4008, + 4009, + 4010, + 4011, + 4012, + 4013, + 4014, + 4015, + 4016, + 4017, + 4018, + 4019, + 4020, + 4021, + 4022, + 4023, + 4024, + 4025, + 4026, + 4027, + 4028, + 4029, + 4030, + 4031, + 4032, + 4033, + 4034, + 4035, + 4036, + 4037, + 4038, + 4039, + 4040, + 4041, + 4042, + 4043, + 4044, + 4045, + 4046, + 4047, + 4048, + 4049, + 4050, + 4051, + 4052, + 4053, + 4054, + 4055, + 4056, + 4057, + 4058, + 4059, + 4060, + 4061, + 4062, + 4063, + 4064, + 4065, + 4066, + 4067, + 4068, + 4069, + 4070, + 4071, + 4072, + 4073, + 4074, + 4075, + 4076, + 4077, + 4078, + 4079, + 4080, + 4081, + 4082, + 4083, + 4084, + 4085, + 4086, + 4087, + 4088, + 4089, + 4090, + 4091, + 4092, + 4093, + 4094, + 4095, + 4096, + 4097, + 4098, + 4099, + 4100, + 4101, + 4102, + 4103, + 4104, + 4105, + 4106, + 4107, + 4108, + 4109, + 4110, + 4111, + 4112, + 4113, + 4114, + 4115, + 4116, + 4117, + 4118, + 4119, + 4120, + 4121, + 4122, + 4123, + 4124, + 4125, + 4126, + 4127, + 4128, + 4129, + 4130, + 4131, + 4132, + 4133, + 4134, + 4135, + 4136, + 4137, + 4138, + 4139, + 4140, + 4141, + 4142, + 4143, + 4144, + 4145, + 4146, + 4147, + 4148, + 4149, + 4150, + 4151, + 4152, + 4153, + 4154, + 4155, + 4156, + 4157, + 4158, + 4159, + 4160, + 4161, + 4162, + 4163, + 4164, + 4165, + 4166, + 4167, + 4168, + 4169, + 4170, + 4171, + 4172, + 4173, + 4174, + 4175, + 4176, + 4177, + 4178, + 4179, + 4180, + 4181, + 4182, + 4183, + 4184, + 4185, + 4186, + 4187, + 4188, + 4189, + 4190, + 4191, + 4192, + 4193, + 4194, + 4195, + 4196, + 4197, + 4198, + 4199, + 4200, + 4201, + 4202, + 4203, + 4204, + 4205, + 4206, + 4207, + 4208, + 4209, + 4210, + 4211, + 4212, + 4213, + 4214, + 4215, + 4216, + 4217, + 4218, + 4219, + 4220, + 4221, + 4222, + 4223, + 4224, + 4225, + 4226, + 4227, + 4228, + 4229, + 4230, + 4231, + 4232, + 4233, + 4234, + 4235, + 4236, + 4237, + 4238, + 4239, + 4240, + 4241, + 4242, + 4243, + 4244, + 4245, + 4246, + 4247, + 4248, + 4249, + 4250, + 4251, + 4252, + 4253, + 4254, + 4255, + 4256, + 4257, + 4258, + 4259, + 4260, + 4261, + 4262, + 4263, + 4264, + 4265, + 4266, + 4267, + 4268, + 4269, + 4270, + 4271, + 4272, + 4273, + 4274, + 4275, + 4276, + 4277, + 4278, + 4279, + 4280, + 4281, + 4282, + 4283, + 4284, + 4285, + 4286, + 4287, + 4288, + 4289, + 4290, + 4291, + 4292, + 4293, + 4294, + 4295, + 4296, + 4297, + 4298, + 4299, + 4300, + 4301, + 4302, + 4303, + 4304, + 4305, + 4306, + 4307, + 4308, + 4309, + 4310, + 4311, + 4312, + 4313, + 4314, + 4315, + 4316, + 4317, + 4318, + 4319, + 4320, + 4321, + 4322, + 4323, + 4324, + 4325, + 4326, + 4327, + 4328, + 4329, + 4330, + 4331, + 4332, + 4333, + 4334, + 4335, + 4336, + 4337, + 4338, + 4339, + 4340, + 4341, + 4342, + 4343, + 4344, + 4345, + 4346, + 4347, + 4348, + 4349, + 4350, + 4351, + 4352, + 4353, + 4354, + 4355, + 4356, + 4357, + 4358, + 4359, + 4360, + 4361, + 4362, + 4363, + 4364, + 4365, + 4366, + 4367, + 4368, + 4369, + 4370, + 4371, + 4372, + 4373, + 4374, + 4375, + 4376, + 4377, + 4378, + 4379, + 4380, + 4381, + 4382, + 4383, + 4384, + 4385, + 4386, + 4387, + 4388, + 4389, + 4390, + 4391, + 4392, + 4393, + 4394, + 4395, + 4396, + 4397, + 4398, + 4399, + 4400, + 4401, + 4402, + 4403, + 4404, + 4405, + 4406, + 4407, + 4408, + 4409, + 4410, + 4411, + 4412, + 4413, + 4414, + 4415, + 4416, + 4417, + 4418, + 4419, + 4420, + 4421, + 4422, + 4423, + 4424, + 4425, + 4426, + 4427, + 4428, + 4429, + 4430, + 4431, + 4432, + 4433, + 4434, + 4435, + 4436, + 4437, + 4438, + 4439, + 4440, + 4441, + 4442, + 4443, + 4444, + 4445, + 4446, + 4447, + 4448, + 4449, + 4450, + 4451, + 4452, + 4453, + 4454, + 4455, + 4456, + 4457, + 4458, + 4459, + 4460, + 4461, + 4462, + 4463, + 4464, + 4465, + 4466, + 4467, + 4468, + 4469, + 4470, + 4471, + 4472, + 4473, + 4474, + 4475, + 4476, + 4477, + 4478, + 4479, + 4480, + 4481, + 4482, + 4483, + 4484, + 4485, + 4486, + 4487, + 4488, + 4489, + 4490, + 4491, + 4492, + 4493, + 4494, + 4495, + 4496, + 4497, + 4498, + 4499, + 4500, + 4501, + 4502, + 4503, + 4504, + 4505, + 4506, + 4507, + 4508, + 4509, + 4510, + 4511, + 4512, + 4513, + 4514, + 4515, + 4516, + 4517, + 4518, + 4519, + 4520, + 4521, + 4522, + 4523, + 4524, + 4525, + 4526, + 4527, + 4528, + 4529, + 4530, + 4531, + 4532, + 4533, + 4534, + 4535, + 4536, + 4537, + 4538, + 4539, + 4540, + 4541, + 4542, + 4543, + 4544, + 4545, + 4546, + 4547, + 4548, + 4549, + 4550, + 4551, + 4552, + 4553, + 4554, + 4555, + 4556, + 4557, + 4558, + 4559, + 4560, + 4561, + 4562, + 4563, + 4564, + 4565, + 4566, + 4567, + 4568, + 4569, + 4570, + 4571, + 4572, + 4573, + 4574, + 4575, + 4576, + 4577, + 4578, + 4579, + 4580, + 4581, + 4582, + 4583, + 4584, + 4585, + 4586, + 4587, + 4588, + 4589, + 4590, + 4591, + 4592, + 4593, + 4594, + 4595, + 4596, + 4597, + 4598, + 4599, + 4600, + 4601, + 4602, + 4603, + 4604, + 4605, + 4606, + 4607, + 4608, + 4609, + 4610, + 4611, + 4612, + 4613, + 4614, + 4615, + 4616, + 4617, + 4618, + 4619, + 4620, + 4621, + 4622, + 4623, + 4624, + 4625, + 4626, + 4627, + 4628, + 4629, + 4630, + 4631, + 4632, + 4633, + 4634, + 4635, + 4636, + 4637, + 4638, + 4639, + 4640, + 4641, + 4642, + 4643, + 4644, + 4645, + 4646, + 4647, + 4648, + 4649, + 4650, + 4651, + 4652, + 4653, + 4654, + 4655, + 4656, + 4657, + 4658, + 4659, + 4660, + 4661, + 4662, + 4663, + 4664, + 4665, + 4666, + 4667, + 4668, + 4669, + 4670, + 4671, + 4672, + 4673, + 4674, + 4675, + 4676, + 4677, + 4678, + 4679, + 4680, + 4681, + 4682, + 4683, + 4684, + 4685, + 4686, + 4687, + 4688, + 4689, + 4690, + 4691, + 4692, + 4693, + 4694, + 4695, + 4696, + 4697, + 4698, + 4699, + 4700, + 4701, + 4702, + 4703, + 4704, + 4705, + 4706, + 4707, + 4708, + 4709, + 4710, + 4711, + 4712, + 4713, + 4714, + 4715, + 4716, + 4717, + 4718, + 4719, + 4720, + 4721, + 4722, + 4723, + 4724, + 4725, + 4726, + 4727, + 4728, + 4729, + 4730, + 4731, + 4732, + 4733, + 4734, + 4735, + 4736, + 4737, + 4738, + 4739, + 4740, + 4741, + 4742, + 4743, + 4744, + 4745, + 4746, + 4747, + 4748, + 4749, + 4750, + 4751, + 4752, + 4753, + 4754, + 4755, + 4756, + 4757, + 4758, + 4759, + 4760, + 4761, + 4762, + 4763, + 4764, + 4765, + 4766, + 4767, + 4768, + 4769, + 4770, + 4771, + 4772, + 4773, + 4774, + 4775, + 4776, + 4777, + 4778, + 4779, + 4780, + 4781, + 4782, + 4783, + 4784, + 4785, + 4786, + 4787, + 4788, + 4789, + 4790, + 4791, + 4792, + 4793, + 4794, + 4795, + 4796, + 4797, + 4798, + 4799, + 4800, + 4801, + 4802, + 4803, + 4804, + 4805, + 4806, + 4807, + 4808, + 4809, + 4810, + 4811, + 4812, + 4813, + 4814, + 4815, + 4816, + 4817, + 4818, + 4819, + 4820, + 4821, + 4822, + 4823, + 4824, + 4825, + 4826, + 4827, + 4828, + 4829, + 4830, + 4831, + 4832, + 4833, + 4834, + 4835, + 4836, + 4837, + 4838, + 4839, + 4840, + 4841, + 4842, + 4843, + 4844, + 4845, + 4846, + 4847, + 4848, + 4849, + 4850, + 4851, + 4852, + 4853, + 4854, + 4855, + 4856, + 4857, + 4858, + 4859, + 4860, + 4861, + 4862, + 4863, + 4864, + 4865, + 4866, + 4867, + 4868, + 4869, + 4870, + 4871, + 4872, + 4873, + 4874, + 4875, + 4876, + 4877, + 4878, + 4879, + 4880, + 4881, + 4882, + 4883, + 4884, + 4885, + 4886, + 4887, + 4888, + 4889, + 4890, + 4891, + 4892, + 4893, + 4894, + 4895, + 4896, + 4897, + 4898, + 4899, + 4900, + 4901, + 4902, + 4903, + 4904, + 4905, + 4906, + 4907, + 4908, + 4909, + 4910, + 4911, + 4912, + 4913, + 4914, + 4915, + 4916, + 4917, + 4918, + 4919, + 4920, + 4921, + 4922, + 4923, + 4924, + 4925, + 4926, + 4927, + 4928, + 4929, + 4930, + 4931, + 4932, + 4933, + 4934, + 4935, + 4936, + 4937, + 4938, + 4939, + 4940, + 4941, + 4942, + 4943, + 4944, + 4945, + 4946, + 4947, + 4948, + 4949, + 4950, + 4951, + 4952, + 4953, + 4954, + 4955, + 4956, + 4957, + 4958, + 4959, + 4960, + 4961, + 4962, + 4963, + 4964, + 4965, + 4966, + 4967, + 4968, + 4969, + 4970, + 4971, + 4972, + 4973, + 4974, + 4975, + 4976, + 4977, + 4978, + 4979, + 4980, + 4981, + 4982, + 4983, + 4984, + 4985, + 4986, + 4987, + 4988, + 4989, + 4990, + 4991, + 4992, + 4993, + 4994, + 4995, + 4996, + 4997, + 4998, + 4999, + 5000, + 5001, + 5002, + 5003, + 5004, + 5005, + 5006, + 5007, + 5008, + 5009, + 5010, + 5011, + 5012, + 5013, + 5014, + 5015, + 5016, + 5017, + 5018, + 5019, + 5020, + 5021, + 5022, + 5023, + 5024, + 5025, + 5026, + 5027, + 5028, + 5029, + 5030, + 5031, + 5032, + 5033, + 5034, + 5035, + 5036, + 5037, + 5038, + 5039, + 5040, + 5041, + 5042, + 5043, + 5044, + 5045, + 5046, + 5047, + 5048, + 5049, + 5050, + 5051, + 5052, + 5053, + 5054, + 5055, + 5056, + 5057, + 5058, + 5059, + 5060, + 5061, + 5062, + 5063, + 5064, + 5065, + 5066, + 5067, + 5068, + 5069, + 5070, + 5071, + 5072, + 5073, + 5074, + 5075, + 5076, + 5077, + 5078, + 5079, + 5080, + 5081, + 5082, + 5083, + 5084, + 5085, + 5086, + 5087, + 5088, + 5089, + 5090, + 5091, + 5092, + 5093, + 5094, + 5095, + 5096, + 5097, + 5098, + 5099, + 5100, + 5101, + 5102, + 5103, + 5104, + 5105, + 5106, + 5107, + 5108, + 5109, + 5110, + 5111, + 5112, + 5113, + 5114, + 5115, + 5116, + 5117, + 5118, + 5119, + 5120, + 5121, + 5122, + 5123, + 5124, + 5125, + 5126, + 5127, + 5128, + 5129, + 5130, + 5131, + 5132, + 5133, + 5134, + 5135, + 5136, + 5137, + 5138, + 5139, + 5140, + 5141, + 5142, + 5143, + 5144, + 5145, + 5146, + 5147, + 5148, + 5149, + 5150, + 5151, + 5152, + 5153, + 5154, + 5155, + 5156, + 5157, + 5158, + 5159, + 5160, + 5161, + 5162, + 5163, + 5164, + 5165, + 5166, + 5167, + 5168, + 5169, + 5170, + 5171, + 5172, + 5173, + 5174, + 5175, + 5176, + 5177, + 5178, + 5179, + 5180, + 5181, + 5182, + 5183, + 5184, + 5185, + 5186, + 5187, + 5188, + 5189, + 5190, + 5191, + 5192, + 5193, + 5194, + 5195, + 5196, + 5197, + 5198, + 5199, + 5200, + 5201, + 5202, + 5203, + 5204, + 5205, + 5206, + 5207, + 5208, + 5209, + 5210, + 5211, + 5212, + 5213, + 5214, + 5215, + 5216, + 5217, + 5218, + 5219, + 5220, + 5221, + 5222, + 5223, + 5224, + 5225, + 5226, + 5227, + 5228, + 5229, + 5230, + 5231, + 5232, + 5233, + 5234, + 5235, + 5236, + 5237, + 5238, + 5239, + 5240, + 5241, + 5242, + 5243, + 5244, + 5245, + 5246, + 5247, + 5248, + 5249, + 5250, + 5251, + 5252, + 5253, + 5254, + 5255, + 5256, + 5257, + 5258, + 5259, + 5260, + 5261, + 5262, + 5263, + 5264, + 5265, + 5266, + 5267, + 5268, + 5269, + 5270, + 5271, + 5272, + 5273, + 5274, + 5275, + 5276, + 5277, + 5278, + 5279, + 5280, + 5281, + 5282, + 5283, + 5284, + 5285, + 5286, + 5287, + 5288, + 5289, + 5290, + 5291, + 5292, + 5293, + 5294, + 5295, + 5296, + 5297, + 5298, + 5299, + 5300, + 5301, + 5302, + 5303, + 5304, + 5305, + 5306, + 5307, + 5308, + 5309, + 5310, + 5311, + 5312, + 5313, + 5314, + 5315, + 5316, + 5317, + 5318, + 5319, + 5320, + 5321, + 5322, + 5323, + 5324, + 5325, + 5326, + 5327, + 5328, + 5329, + 5330, + 5331, + 5332, + 5333, + 5334, + 5335, + 5336, + 5337, + 5338, + 5339, + 5340, + 5341, + 5342, + 5343, + 5344, + 5345, + 5346, + 5347, + 5348, + 5349, + 5350, + 5351, + 5352, + 5353, + 5354, + 5355, + 5356, + 5357, + 5358, + 5359, + 5360, + 5361, + 5362, + 5363, + 5364, + 5365, + 5366, + 5367, + 5368, + 5369, + 5370, + 5371, + 5372, + 5373, + 5374, + 5375, + 5376, + 5377, + 5378, + 5379, + 5380, + 5381, + 5382, + 5383, + 5384, + 5385, + 5386, + 5387, + 5388, + 5389, + 5390, + 5391, + 5392, + 5393, + 5394, + 5395, + 5396, + 5397, + 5398, + 5399, + 5400, + 5401, + 5402, + 5403, + 5404, + 5405, + 5406, + 5407, + 5408, + 5409, + 5410, + 5411, + 5412, + 5413, + 5414, + 5415, + 5416, + 5417, + 5418, + 5419, + 5420, + 5421, + 5422, + 5423, + 5424, + 5425, + 5426, + 5427, + 5428, + 5429, + 5430, + 5431, + 5432, + 5433, + 5434, + 5435, + 5436, + 5437, + 5438, + 5439, + 5440, + 5441, + 5442, + 5443, + 5444, + 5445, + 5446, + 5447, + 5448, + 5449, + 5450, + 5451, + 5452, + 5453, + 5454, + 5455, + 5456, + 5457, + 5458, + 5459, + 5460, + 5461, + 5462, + 5463, + 5464, + 5465, + 5466, + 5467, + 5468, + 5469, + 5470, + 5471, + 5472, + 5473, + 5474, + 5475, + 5476, + 5477, + 5478, + 5479, + 5480, + 5481, + 5482, + 5483, + 5484, + 5485, + 5486, + 5487, + 5488, + 5489, + 5490, + 5491, + 5492, + 5493, + 5494, + 5495, + 5496, + 5497, + 5498, + 5499, + 5500, + 5501, + 5502, + 5503, + 5504, + 5505, + 5506, + 5507, + 5508, + 5509, + 5510, + 5511, + 5512, + 5513, + 5514, + 5515, + 5516, + 5517, + 5518, + 5519, + 5520, + 5521, + 5522, + 5523, + 5524, + 5525, + 5526, + 5527, + 5528, + 5529, + 5530, + 5531, + 5532, + 5533, + 5534, + 5535, + 5536, + 5537, + 5538, + 5539, + 5540, + 5541, + 5542, + 5543, + 5544, + 5545, + 5546, + 5547, + 5548, + 5549, + 5550, + 5551, + 5552, + 5553, + 5554, + 5555, + 5556, + 5557, + 5558, + 5559, + 5560, + 5561, + 5562, + 5563, + 5564, + 5565, + 5566, + 5567, + 5568, + 5569, + 5570, + 5571, + 5572, + 5573, + 5574, + 5575, + 5576, + 5577, + 5578, + 5579, + 5580, + 5581, + 5582, + 5583, + 5584, + 5585, + 5586, + 5587, + 5588, + 5589, + 5590, + 5591, + 5592, + 5593, + 5594, + 5595, + 5596, + 5597, + 5598, + 5599, + 5600, + 5601, + 5602, + 5603, + 5604, + 5605, + 5606, + 5607, + 5608, + 5609, + 5610, + 5611, + 5612, + 5613, + 5614, + 5615, + 5616, + 5617, + 5618, + 5619, + 5620, + 5621, + 5622, + 5623, + 5624, + 5625, + 5626, + 5627, + 5628, + 5629, + 5630, + 5631, + 5632, + 5633, + 5634, + 5635, + 5636, + 5637, + 5638, + 5639, + 5640, + 5641, + 5642, + 5643, + 5644, + 5645, + 5646, + 5647, + 5648, + 5649, + 5650, + 5651, + 5652, + 5653, + 5654, + 5655, + 5656, + 5657, + 5658, + 5659, + 5660, + 5661, + 5662, + 5663, + 5664, + 5665, + 5666, + 5667, + 5668, + 5669, + 5670, + 5671, + 5672, + 5673, + 5674, + 5675, + 5676, + 5677, + 5678, + 5679, + 5680, + 5681, + 5682, + 5683, + 5684, + 5685, + 5686, + 5687, + 5688, + 5689, + 5690, + 5691, + 5692, + 5693, + 5694, + 5695, + 5696, + 5697, + 5698, + 5699, + 5700, + 5701, + 5702, + 5703, + 5704, + 5705, + 5706, + 5707, + 5708, + 5709, + 5710, + 5711, + 5712, + 5713, + 5714, + 5715, + 5716, + 5717, + 5718, + 5719, + 5720, + 5721, + 5722, + 5723, + 5724, + 5725, + 5726, + 5727, + 5728, + 5729, + 5730, + 5731, + 5732, + 5733, + 5734, + 5735, + 5736, + 5737, + 5738, + 5739, + 5740, + 5741, + 5742, + 5743, + 5744, + 5745, + 5746, + 5747, + 5748, + 5749, + 5750, + 5751, + 5752, + 5753, + 5754, + 5755, + 5756, + 5757, + 5758, + 5759, + 5760, + 5761, + 5762, + 5763, + 5764, + 5765, + 5766, + 5767, + 5768, + 5769, + 5770, + 5771, + 5772, + 5773, + 5774, + 5775, + 5776, + 5777, + 5778, + 5779, + 5780, + 5781, + 5782, + 5783, + 5784, + 5785, + 5786, + 5787, + 5788, + 5789, + 5790, + 5791, + 5792, + 5793, + 5794, + 5795, + 5796, + 5797, + 5798, + 5799, + 5800, + 5801, + 5802, + 5803, + 5804, + 5805, + 5806, + 5807, + 5808, + 5809, + 5810, + 5811, + 5812, + 5813, + 5814, + 5815, + 5816, + 5817, + 5818, + 5819, + 5820, + 5821, + 5822, + 5823, + 5824, + 5825, + 5826, + 5827, + 5828, + 5829, + 5830, + 5831, + 5832, + 5833, + 5834, + 5835, + 5836, + 5837, + 5838, + 5839, + 5840, + 5841, + 5842, + 5843, + 5844, + 5845, + 5846, + 5847, + 5848, + 5849, + 5850, + 5851, + 5852, + 5853, + 5854, + 5855, + 5856, + 5857, + 5858, + 5859, + 5860, + 5861, + 5862, + 5863, + 5864, + 5865, + 5866, + 5867, + 5868, + 5869, + 5870, + 5871, + 5872, + 5873, + 5874, + 5875, + 5876, + 5877, + 5878, + 5879, + 5880, + 5881, + 5882, + 5883, + 5884, + 5885, + 5886, + 5887, + 5888, + 5889, + 5890, + 5891, + 5892, + 5893, + 5894, + 5895, + 5896, + 5897, + 5898, + 5899, + 5900, + 5901, + 5902, + 5903, + 5904, + 5905, + 5906, + 5907, + 5908, + 5909, + 5910, + 5911, + 5912, + 5913, + 5914, + 5915, + 5916, + 5917, + 5918, + 5919, + 5920, + 5921, + 5922, + 5923, + 5924, + 5925, + 5926, + 5927, + 5928, + 5929, + 5930, + 5931, + 5932, + 5933, + 5934, + 5935, + 5936, + 5937, + 5938, + 5939, + 5940, + 5941, + 5942, + 5943, + 5944, + 5945, + 5946, + 5947, + 5948, + 5949, + 5950, + 5951, + 5952, + 5953, + 5954, + 5955, + 5956, + 5957, + 5958, + 5959, + 5960, + 5961, + 5962, + 5963, + 5964, + 5965, + 5966, + 5967, + 5968, + 5969, + 5970, + 5971, + 5972, + 5973, + 5974, + 5975, + 5976, + 5977, + 5978, + 5979, + 5980, + 5981, + 5982, + 5983, + 5984, + 5985, + 5986, + 5987, + 5988, + 5989, + 5990, + 5991, + 5992, + 5993, + 5994, + 5995, + 5996, + 5997, + 5998, + 5999, + 6000, + 6001, + 6002, + 6003, + 6004, + 6005, + 6006, + 6007, + 6008, + 6009, + 6010, + 6011, + 6012, + 6013, + 6014, + 6015, + 6016, + 6017, + 6018, + 6019, + 6020, + 6021, + 6022, + 6023, + 6024, + 6025, + 6026, + 6027, + 6028, + 6029, + 6030, + 6031, + 6032, + 6033, + 6034, + 6035, + 6036, + 6037, + 6038, + 6039, + 6040, + 6041, + 6042, + 6043, + 6044, + 6045, + 6046, + 6047, + 6048, + 6049, + 6050, + 6051, + 6052, + 6053, + 6054, + 6055, + 6056, + 6057, + 6058, + 6059, + 6060, + 6061, + 6062, + 6063, + 6064, + 6065, + 6066, + 6067, + 6068, + 6069, + 6070, + 6071, + 6072, + 6073, + 6074, + 6075, + 6076, + 6077, + 6078, + 6079, + 6080, + 6081, + 6082, + 6083, + 6084, + 6085, + 6086, + 6087, + 6088, + 6089, + 6090, + 6091, + 6092, + 6093, + 6094, + 6095, + 6096, + 6097, + 6098, + 6099, + 6100, + 6101, + 6102, + 6103, + 6104, + 6105, + 6106, + 6107, + 6108, + 6109, + 6110, + 6111, + 6112, + 6113, + 6114, + 6115, + 6116, + 6117, + 6118, + 6119, + 6120, + 6121, + 6122, + 6123, + 6124, + 6125, + 6126, + 6127, + 6128, + 6129, + 6130, + 6131, + 6132, + 6133, + 6134, + 6135, + 6136, + 6137, + 6138, + 6139, + 6140, + 6141, + 6142, + 6143, + 6144, + 6145, + 6146, + 6147, + 6148, + 6149, + 6150, + 6151, + 6152, + 6153, + 6154, + 6155, + 6156, + 6157, + 6158, + 6159, + 6160, + 6161, + 6162, + 6163, + 6164, + 6165, + 6166, + 6167, + 6168, + 6169, + 6170, + 6171, + 6172, + 6173, + 6174, + 6175, + 6176, + 6177, + 6178, + 6179, + 6180, + 6181, + 6182, + 6183, + 6184, + 6185, + 6186, + 6187, + 6188, + 6189, + 6190, + 6191, + 6192, + 6193, + 6194, + 6195, + 6196, + 6197, + 6198, + 6199, + 6200, + 6201, + 6202, + 6203, + 6204, + 6205, + 6206, + 6207, + 6208, + 6209, + 6210, + 6211, + 6212, + 6213, + 6214, + 6215, + 6216, + 6217, + 6218, + 6219, + 6220, + 6221, + 6222, + 6223, + 6224, + 6225, + 6226, + 6227, + 6228, + 6229, + 6230, + 6231, + 6232, + 6233, + 6234, + 6235, + 6236, + 6237, + 6238, + 6239, + 6240, + 6241, + 6242, + 6243, + 6244, + 6245, + 6246, + 6247, + 6248, + 6249, + 6250, + 6251, + 6252, + 6253, + 6254, + 6255, + 6256, + 6257, + 6258, + 6259, + 6260, + 6261, + 6262, + 6263, + 6264, + 6265, + 6266, + 6267, + 6268, + 6269, + 6270, + 6271, + 6272, + 6273, + 6274, + 6275, + 6276, + 6277, + 6278, + 6279, + 6280, + 6281, + 6282, + 6283, + 6284, + 6285, + 6286, + 6287, + 6288, + 6289, + 6290, + 6291, + 6292, + 6293, + 6294, + 6295, + 6296, + 6297, + 6298, + 6299, + 6300, + 6301, + 6302, + 6303, + 6304, + 6305, + 6306, + 6307, + 6308, + 6309, + 6310, + 6311, + 6312, + 6313, + 6314, + 6315, + 6316, + 6317, + 6318, + 6319, + 6320, + 6321, + 6322, + 6323, + 6324, + 6325, + 6326, + 6327, + 6328, + 6329, + 6330, + 6331, + 6332, + 6333, + 6334, + 6335, + 6336, + 6337, + 6338, + 6339, + 6340, + 6341, + 6342, + 6343, + 6344, + 6345, + 6346, + 6347, + 6348, + 6349, + 6350, + 6351, + 6352, + 6353, + 6354, + 6355, + 6356, + 6357, + 6358, + 6359, + 6360, + 6361, + 6362, + 6363, + 6364, + 6365, + 6366, + 6367, + 6368, + 6369, + 6370, + 6371, + 6372, + 6373, + 6374, + 6375, + 6376, + 6377, + 6378, + 6379, + 6380, + 6381, + 6382, + 6383, + 6384, + 6385, + 6386, + 6387, + 6388, + 6389, + 6390, + 6391, + 6392, + 6393, + 6394, + 6395, + 6396, + 6397, + 6398, + 6399, + 6400, + 6401, + 6402, + 6403, + 6404, + 6405, + 6406, + 6407, + 6408, + 6409, + 6410, + 6411, + 6412, + 6413, + 6414, + 6415, + 6416, + 6417, + 6418, + 6419, + 6420, + 6421, + 6422, + 6423, + 6424, + 6425, + 6426, + 6427, + 6428, + 6429, + 6430, + 6431, + 6432, + 6433, + 6434, + 6435, + 6436, + 6437, + 6438, + 6439, + 6440, + 6441, + 6442, + 6443, + 6444, + 6445, + 6446, + 6447, + 6448, + 6449, + 6450, + 6451, + 6452, + 6453, + 6454, + 6455, + 6456, + 6457, + 6458, + 6459, + 6460, + 6461, + 6462, + 6463, + 6464, + 6465, + 6466, + 6467, + 6468, + 6469, + 6470, + 6471, + 6472, + 6473, + 6474, + 6475, + 6476, + 6477, + 6478, + 6479, + 6480, + 6481, + 6482, + 6483, + 6484, + 6485, + 6486, + 6487, + 6488, + 6489, + 6490, + 6491, + 6492, + 6493, + 6494, + 6495, + 6496, + 6497, + 6498, + 6499, + 6500, + 6501, + 6502, + 6503, + 6504, + 6505, + 6506, + 6507, + 6508, + 6509, + 6510, + 6511, + 6512, + 6513, + 6514, + 6515, + 6516, + 6517, + 6518, + 6519, + 6520, + 6521, + 6522, + 6523, + 6524, + 6525, + 6526, + 6527, + 6528, + 6529, + 6530, + 6531, + 6532, + 6533, + 6534, + 6535, + 6536, + 6537, + 6538, + 6539, + 6540, + 6541, + 6542, + 6543, + 6544, + 6545, + 6546, + 6547, + 6548, + 6549, + 6550, + 6551, + 6552, + 6553, + 6554, + 6555, + 6556, + 6557, + 6558, + 6559, + 6560, + 6561, + 6562, + 6563, + 6564, + 6565, + 6566, + 6567, + 6568, + 6569, + 6570, + 6571, + 6572, + 6573, + 6574, + 6575, + 6576, + 6577, + 6578, + 6579, + 6580, + 6581, + 6582, + 6583, + 6584, + 6585, + 6586, + 6587, + 6588, + 6589, + 6590, + 6591, + 6592, + 6593, + 6594, + 6595, + 6596, + 6597, + 6598, + 6599, + 6600, + 6601, + 6602, + 6603, + 6604, + 6605, + 6606, + 6607, + 6608, + 6609, + 6610, + 6611, + 6612, + 6613, + 6614, + 6615, + 6616, + 6617, + 6618, + 6619, + 6620, + 6621, + 6622, + 6623, + 6624, + 6625, + 6626, + 6627, + 6628, + 6629, + 6630, + 6631, + 6632, + 6633, + 6634, + 6635, + 6636, + 6637, + 6638, + 6639, + 6640, + 6641, + 6642, + 6643, + 6644, + 6645, + 6646, + 6647, + 6648, + 6649, + 6650, + 6651, + 6652, + 6653, + 6654, + 6655, + 6656, + 6657, + 6658, + 6659, + 6660, + 6661, + 6662, + 6663, + 6664, + 6665, + 6666, + 6667, + 6668, + 6669, + 6670, + 6671, + 6672, + 6673, + 6674, + 6675, + 6676, + 6677, + 6678, + 6679, + 6680, + 6681, + 6682, + 6683, + 6684, + 6685, + 6686, + 6687, + 6688, + 6689, + 6690, + 6691, + 6692, + 6693, + 6694, + 6695, + 6696, + 6697, + 6698, + 6699, + 6700, + 6701, + 6702, + 6703, + 6704, + 6705, + 6706, + 6707, + 6708, + 6709, + 6710, + 6711, + 6712, + 6713, + 6714, + 6715, + 6716, + 6717, + 6718, + 6719, + 6720, + 6721, + 6722, + 6723, + 6724, + 6725, + 6726, + 6727, + 6728, + 6729, + 6730, + 6731, + 6732, + 6733, + 6734, + 6735, + 6736, + 6737, + 6738, + 6739, + 6740, + 6741, + 6742, + 6743, + 6744, + 6745, + 6746, + 6747, + 6748, + 6749, + 6750, + 6751, + 6752, + 6753, + 6754, + 6755, + 6756, + 6757, + 6758, + 6759, + 6760, + 6761, + 6762, + 6763, + 6764, + 6765, + 6766, + 6767, + 6768, + 6769, + 6770, + 6771, + 6772, + 6773, + 6774, + 6775, + 6776, + 6777, + 6778, + 6779, + 6780, + 6781, + 6782, + 6783, + 6784, + 6785, + 6786, + 6787, + 6788, + 6789, + 6790, + 6791, + 6792, + 6793, + 6794, + 6795, + 6796, + 6797, + 6798, + 6799, + 6800, + 6801, + 6802, + 6803, + 6804, + 6805, + 6806, + 6807, + 6808, + 6809, + 6810, + 6811, + 6812, + 6813, + 6814, + 6815, + 6816, + 6817, + 6818, + 6819, + 6820, + 6821, + 6822, + 6823, + 6824, + 6825, + 6826, + 6827, + 6828, + 6829, + 6830, + 6831, + 6832, + 6833, + 6834, + 6835, + 6836, + 6837, + 6838, + 6839, + 6840, + 6841, + 6842, + 6843, + 6844, + 6845, + 6846, + 6847, + 6848, + 6849, + 6850, + 6851, + 6852, + 6853, + 6854, + 6855, + 6856, + 6857, + 6858, + 6859, + 6860, + 6861, + 6862, + 6863, + 6864, + 6865, + 6866, + 6867, + 6868, + 6869, + 6870, + 6871, + 6872, + 6873, + 6874, + 6875, + 6876, + 6877, + 6878, + 6879, + 6880, + 6881, + 6882, + 6883, + 6884, + 6885, + 6886, + 6887, + 6888, + 6889, + 6890, + 6891, + 6892, + 6893, + 6894, + 6895, + 6896, + 6897, + 6898, + 6899, + 6900, + 6901, + 6902, + 6903, + 6904, + 6905, + 6906, + 6907, + 6908, + 6909, + 6910, + 6911, + 6912, + 6913, + 6914, + 6915, + 6916, + 6917, + 6918, + 6919, + 6920, + 6921, + 6922, + 6923, + 6924, + 6925, + 6926, + 6927, + 6928, + 6929, + 6930, + 6931, + 6932, + 6933, + 6934, + 6935, + 6936, + 6937, + 6938, + 6939, + 6940, + 6941, + 6942, + 6943, + 6944, + 6945, + 6946, + 6947, + 6948, + 6949, + 6950, + 6951, + 6952, + 6953, + 6954, + 6955, + 6956, + 6957, + 6958, + 6959, + 6960, + 6961, + 6962, + 6963, + 6964, + 6965, + 6966, + 6967, + 6968, + 6969, + 6970, + 6971, + 6972, + 6973, + 6974, + 6975, + 6976, + 6977, + 6978, + 6979, + 6980, + 6981, + 6982, + 6983, + 6984, + 6985, + 6986, + 6987, + 6988, + 6989, + 6990, + 6991, + 6992, + 6993, + 6994, + 6995, + 6996, + 6997, + 6998, + 6999, + 7000, + 7001, + 7002, + 7003, + 7004, + 7005, + 7006, + 7007, + 7008, + 7009, + 7010, + 7011, + 7012, + 7013, + 7014, + 7015, + 7016, + 7017, + 7018, + 7019, + 7020, + 7021, + 7022, + 7023, + 7024, + 7025, + 7026, + 7027, + 7028, + 7029, + 7030, + 7031, + 7032, + 7033, + 7034, + 7035, + 7036, + 7037, + 7038, + 7039, + 7040, + 7041, + 7042, + 7043, + 7044, + 7045, + 7046, + 7047, + 7048, + 7049, + 7050, + 7051, + 7052, + 7053, + 7054, + 7055, + 7056, + 7057, + 7058, + 7059, + 7060, + 7061, + 7062, + 7063, + 7064, + 7065, + 7066, + 7067, + 7068, + 7069, + 7070, + 7071, + 7072, + 7073, + 7074, + 7075, + 7076, + 7077, + 7078, + 7079, + 7080, + 7081, + 7082, + 7083, + 7084, + 7085, + 7086, + 7087, + 7088, + 7089, + 7090, + 7091, + 7092, + 7093, + 7094, + 7095, + 7096, + 7097, + 7098, + 7099, + 7100, + 7101, + 7102, + 7103, + 7104, + 7105, + 7106, + 7107, + 7108, + 7109, + 7110, + 7111, + 7112, + 7113, + 7114, + 7115, + 7116, + 7117, + 7118, + 7119, + 7120, + 7121, + 7122, + 7123, + 7124, + 7125, + 7126, + 7127, + 7128, + 7129, + 7130, + 7131, + 7132, + 7133, + 7134, + 7135, + 7136, + 7137, + 7138, + 7139, + 7140, + 7141, + 7142, + 7143, + 7144, + 7145, + 7146, + 7147, + 7148, + 7149, + 7150, + 7151, + 7152, + 7153, + 7154, + 7155, + 7156, + 7157, + 7158, + 7159, + 7160, + 7161, + 7162, + 7163, + 7164, + 7165, + 7166, + 7167, + 7168, + 7169, + 7170, + 7171, + 7172, + 7173, + 7174, + 7175, + 7176, + 7177, + 7178, + 7179, + 7180, + 7181, + 7182, + 7183, + 7184, + 7185, + 7186, + 7187, + 7188, + 7189, + 7190, + 7191, + 7192, + 7193, + 7194, + 7195, + 7196, + 7197, + 7198, + 7199, + 7200, + 7201, + 7202, + 7203, + 7204, + 7205, + 7206, + 7207, + 7208, + 7209, + 7210, + 7211, + 7212, + 7213, + 7214, + 7215, + 7216, + 7217, + 7218, + 7219, + 7220, + 7221, + 7222, + 7223, + 7224, + 7225, + 7226, + 7227, + 7228, + 7229, + 7230, + 7231, + 7232, + 7233, + 7234, + 7235, + 7236, + 7237, + 7238, + 7239, + 7240, + 7241, + 7242, + 7243, + 7244, + 7245, + 7246, + 7247, + 7248, + 7249, + 7250, + 7251, + 7252, + 7253, + 7254, + 7255, + 7256, + 7257, + 7258, + 7259, + 7260, + 7261, + 7262, + 7263, + 7264, + 7265, + 7266, + 7267, + 7268, + 7269, + 7270, + 7271, + 7272, + 7273, + 7274, + 7275, + 7276, + 7277, + 7278, + 7279, + 7280, + 7281, + 7282, + 7283, + 7284, + 7285, + 7286, + 7287, + 7288, + 7289, + 7290, + 7291, + 7292, + 7293, + 7294, + 7295, + 7296, + 7297, + 7298, + 7299, + 7300, + 7301, + 7302, + 7303, + 7304, + 7305, + 7306, + 7307, + 7308, + 7309, + 7310, + 7311, + 7312, + 7313, + 7314, + 7315, + 7316, + 7317, + 7318, + 7319, + 7320, + 7321, + 7322, + 7323, + 7324, + 7325, + 7326, + 7327, + 7328, + 7329, + 7330, + 7331, + 7332, + 7333, + 7334, + 7335, + 7336, + 7337, + 7338, + 7339, + 7340, + 7341, + 7342, + 7343, + 7344, + 7345, + 7346, + 7347, + 7348, + 7349, + 7350, + 7351, + 7352, + 7353, + 7354, + 7355, + 7356, + 7357, + 7358, + 7359, + 7360, + 7361, + 7362, + 7363, + 7364, + 7365, + 7366, + 7367, + 7368, + 7369, + 7370, + 7371, + 7372, + 7373, + 7374, + 7375, + 7376, + 7377, + 7378, + 7379, + 7380, + 7381, + 7382, + 7383, + 7384, + 7385, + 7386, + 7387, + 7388, + 7389, + 7390, + 7391, + 7392, + 7393, + 7394, + 7395, + 7396, + 7397, + 7398, + 7399, + 7400, + 7401, + 7402, + 7403, + 7404, + 7405, + 7406, + 7407, + 7408, + 7409, + 7410, + 7411, + 7412, + 7413, + 7414, + 7415, + 7416, + 7417, + 7418, + 7419, + 7420, + 7421, + 7422, + 7423, + 7424, + 7425, + 7426, + 7427, + 7428, + 7429, + 7430, + 7431, + 7432, + 7433, + 7434, + 7435, + 7436, + 7437, + 7438, + 7439, + 7440, + 7441, + 7442, + 7443, + 7444, + 7445, + 7446, + 7447, + 7448, + 7449, + 7450, + 7451, + 7452, + 7453, + 7454, + 7455, + 7456, + 7457, + 7458, + 7459, + 7460, + 7461, + 7462, + 7463, + 7464, + 7465, + 7466, + 7467, + 7468, + 7469, + 7470, + 7471, + 7472, + 7473, + 7474, + 7475, + 7476, + 7477, + 7478, + 7479, + 7480, + 7481, + 7482, + 7483, + 7484, + 7485, + 7486, + 7487, + 7488, + 7489, + 7490, + 7491, + 7492, + 7493, + 7494, + 7495, + 7496, + 7497, + 7498, + 7499, + 7500, + 7501, + 7502, + 7503, + 7504, + 7505, + 7506, + 7507, + 7508, + 7509, + 7510, + 7511, + 7512, + 7513, + 7514, + 7515, + 7516, + 7517, + 7518, + 7519, + 7520, + 7521, + 7522, + 7523, + 7524, + 7525, + 7526, + 7527, + 7528, + 7529, + 7530, + 7531, + 7532, + 7533, + 7534, + 7535, + 7536, + 7537, + 7538, + 7539, + 7540, + 7541, + 7542, + 7543, + 7544, + 7545, + 7546, + 7547, + 7548, + 7549, + 7550, + 7551, + 7552, + 7553, + 7554, + 7555, + 7556, + 7557, + 7558, + 7559, + 7560, + 7561, + 7562, + 7563, + 7564, + 7565, + 7566, + 7567, + 7568, + 7569, + 7570, + 7571, + 7572, + 7573, + 7574, + 7575, + 7576, + 7577, + 7578, + 7579, + 7580, + 7581, + 7582, + 7583, + 7584, + 7585, + 7586, + 7587, + 7588, + 7589, + 7590, + 7591, + 7592, + 7593, + 7594, + 7595, + 7596, + 7597, + 7598, + 7599, + 7600, + 7601, + 7602, + 7603, + 7604, + 7605, + 7606, + 7607, + 7608, + 7609, + 7610, + 7611, + 7612, + 7613, + 7614, + 7615, + 7616, + 7617, + 7618, + 7619, + 7620, + 7621, + 7622, + 7623, + 7624, + 7625, + 7626, + 7627, + 7628, + 7629, + 7630, + 7631, + 7632, + 7633, + 7634, + 7635, + 7636, + 7637, + 7638, + 7639, + 7640, + 7641, + 7642, + 7643, + 7644, + 7645, + 7646, + 7647, + 7648, + 7649, + 7650, + 7651, + 7652, + 7653, + 7654, + 7655, + 7656, + 7657, + 7658, + 7659, + 7660, + 7661, + 7662, + 7663, + 7664, + 7665, + 7666, + 7667, + 7668, + 7669, + 7670, + 7671, + 7672, + 7673, + 7674, + 7675, + 7676, + 7677, + 7678, + 7679, + 7680, + 7681, + 7682, + 7683, + 7684, + 7685, + 7686, + 7687, + 7688, + 7689, + 7690, + 7691, + 7692, + 7693, + 7694, + 7695, + 7696, + 7697, + 7698, + 7699, + 7700, + 7701, + 7702, + 7703, + 7704, + 7705, + 7706, + 7707, + 7708, + 7709, + 7710, + 7711, + 7712, + 7713, + 7714, + 7715, + 7716, + 7717, + 7718, + 7719, + 7720, + 7721, + 7722, + 7723, + 7724, + 7725, + 7726, + 7727, + 7728, + 7729, + 7730, + 7731, + 7732, + 7733, + 7734, + 7735, + 7736, + 7737, + 7738, + 7739, + 7740, + 7741, + 7742, + 7743, + 7744, + 7745, + 7746, + 7747, + 7748, + 7749, + 7750, + 7751, + 7752, + 7753, + 7754, + 7755, + 7756, + 7757, + 7758, + 7759, + 7760, + 7761, + 7762, + 7763, + 7764, + 7765, + 7766, + 7767, + 7768, + 7769, + 7770, + 7771, + 7772, + 7773, + 7774, + 7775, + 7776, + 7777, + 7778, + 7779, + 7780, + 7781, + 7782, + 7783, + 7784, + 7785, + 7786, + 7787, + 7788, + 7789, + 7790, + 7791, + 7792, + 7793, + 7794, + 7795, + 7796, + 7797, + 7798, + 7799, + 7800, + 7801, + 7802, + 7803, + 7804, + 7805, + 7806, + 7807, + 7808, + 7809, + 7810, + 7811, + 7812, + 7813, + 7814, + 7815, + 7816, + 7817, + 7818, + 7819, + 7820, + 7821, + 7822, + 7823, + 7824, + 7825, + 7826, + 7827, + 7828, + 7829, + 7830, + 7831, + 7832, + 7833, + 7834, + 7835, + 7836, + 7837, + 7838, + 7839, + 7840, + 7841, + 7842, + 7843, + 7844, + 7845, + 7846, + 7847, + 7848, + 7849, + 7850, + 7851, + 7852, + 7853, + 7854, + 7855, + 7856, + 7857, + 7858, + 7859, + 7860, + 7861, + 7862, + 7863, + 7864, + 7865, + 7866, + 7867, + 7868, + 7869, + 7870, + 7871, + 7872, + 7873, + 7874, + 7875, + 7876, + 7877, + 7878, + 7879, + 7880, + 7881, + 7882, + 7883, + 7884, + 7885, + 7886, + 7887, + 7888, + 7889, + 7890, + 7891, + 7892, + 7893, + 7894, + 7895, + 7896, + 7897, + 7898, + 7899, + 7900, + 7901, + 7902, + 7903, + 7904, + 7905, + 7906, + 7907, + 7908, + 7909, + 7910, + 7911, + 7912, + 7913, + 7914, + 7915, + 7916, + 7917, + 7918, + 7919, + 7920, + 7921, + 7922, + 7923, + 7924, + 7925, + 7926, + 7927, + 7928, + 7929, + 7930, + 7931, + 7932, + 7933, + 7934, + 7935, + 7936, + 7937, + 7938, + 7939, + 7940, + 7941, + 7942, + 7943, + 7944, + 7945, + 7946, + 7947, + 7948, + 7949, + 7950, + 7951, + 7952, + 7953, + 7954, + 7955, + 7956, + 7957, + 7958, + 7959, + 7960, + 7961, + 7962, + 7963, + 7964, + 7965, + 7966, + 7967, + 7968, + 7969, + 7970, + 7971, + 7972, + 7973, + 7974, + 7975, + 7976, + 7977, + 7978, + 7979, + 7980, + 7981, + 7982, + 7983, + 7984, + 7985, + 7986, + 7987, + 7988, + 7989, + 7990, + 7991, + 7992, + 7993, + 7994, + 7995, + 7996, + 7997, + 7998, + 7999, + 8000, + 8001, + 8002, + 8003, + 8004, + 8005, + 8006, + 8007, + 8008, + 8009, + 8010, + 8011, + 8012, + 8013, + 8014, + 8015, + 8016, + 8017, + 8018, + 8019, + 8020, + 8021, + 8022, + 8023, + 8024, + 8025, + 8026, + 8027, + 8028, + 8029, + 8030, + 8031, + 8032, + 8033, + 8034, + 8035, + 8036, + 8037, + 8038, + 8039, + 8040, + 8041, + 8042, + 8043, + 8044, + 8045, + 8046, + 8047, + 8048, + 8049, + 8050, + 8051, + 8052, + 8053, + 8054, + 8055, + 8056, + 8057, + 8058, + 8059, + 8060, + 8061, + 8062, + 8063, + 8064, + 8065, + 8066, + 8067, + 8068, + 8069, + 8070, + 8071, + 8072, + 8073, + 8074, + 8075, + 8076, + 8077, + 8078, + 8079, + 8080, + 8081, + 8082, + 8083, + 8084, + 8085, + 8086, + 8087, + 8088, + 8089, + 8090, + 8091, + 8092, + 8093, + 8094, + 8095, + 8096, + 8097, + 8098, + 8099, + 8100, + 8101, + 8102, + 8103, + 8104, + 8105, + 8106, + 8107, + 8108, + 8109, + 8110, + 8111, + 8112, + 8113, + 8114, + 8115, + 8116, + 8117, + 8118, + 8119, + 8120, + 8121, + 8122, + 8123, + 8124, + 8125, + 8126, + 8127, + 8128, + 8129, + 8130, + 8131, + 8132, + 8133, + 8134, + 8135, + 8136, + 8137, + 8138, + 8139, + 8140, + 8141, + 8142, + 8143, + 8144, + 8145, + 8146, + 8147, + 8148, + 8149, + 8150, + 8151, + 8152, + 8153, + 8154, + 8155, + 8156, + 8157, + 8158, + 8159, + 8160, + 8161, + 8162, + 8163, + 8164, + 8165, + 8166, + 8167, + 8168, + 8169, + 8170, + 8171, + 8172, + 8173, + 8174, + 8175, + 8176, + 8177, + 8178, + 8179, + 8180, + 8181, + 8182, + 8183, + 8184, + 8185, + 8186, + 8187, + 8188, + 8189, + 8190, + 8191, + 8192, + 8193, + 8194, + 8195, + 8196, + 8197, + 8198, + 8199, + 8200, + 8201, + 8202, + 8203, + 8204, + 8205, + 8206, + 8207, + 8208, + 8209, + 8210, + 8211, + 8212, + 8213, + 8214, + 8215, + 8216, + 8217, + 8218, + 8219, + 8220, + 8221, + 8222, + 8223, + 8224, + 8225, + 8226, + 8227, + 8228, + 8229, + 8230, + 8231, + 8232, + 8233, + 8234, + 8235, + 8236, + 8237, + 8238, + 8239, + 8240, + 8241, + 8242, + 8243, + 8244, + 8245, + 8246, + 8247, + 8248, + 8249, + 8250, + 8251, + 8252, + 8253, + 8254, + 8255, + 8256, + 8257, + 8258, + 8259, + 8260, + 8261, + 8262, + 8263, + 8264, + 8265, + 8266, + 8267, + 8268, + 8269, + 8270, + 8271, + 8272, + 8273, + 8274, + 8275, + 8276, + 8277, + 8278, + 8279, + 8280, + 8281, + 8282, + 8283, + 8284, + 8285, + 8286, + 8287, + 8288, + 8289, + 8290, + 8291, + 8292, + 8293, + 8294, + 8295, + 8296, + 8297, + 8298, + 8299, + 8300, + 8301, + 8302, + 8303, + 8304, + 8305, + 8306, + 8307, + 8308, + 8309, + 8310, + 8311, + 8312, + 8313, + 8314, + 8315, + 8316, + 8317, + 8318, + 8319, + 8320, + 8321, + 8322, + 8323, + 8324, + 8325, + 8326, + 8327, + 8328, + 8329, + 8330, + 8331, + 8332, + 8333, + 8334, + 8335, + 8336, + 8337, + 8338, + 8339, + 8340, + 8341, + 8342, + 8343, + 8344, + 8345, + 8346, + 8347, + 8348, + 8349, + 8350, + 8351, + 8352, + 8353, + 8354, + 8355, + 8356, + 8357, + 8358, + 8359, + 8360, + 8361, + 8362, + 8363, + 8364, + 8365, + 8366, + 8367, + 8368, + 8369, + 8370, + 8371, + 8372, + 8373, + 8374, + 8375, + 8376, + 8377, + 8378, + 8379, + 8380, + 8381, + 8382, + 8383, + 8384, + 8385, + 8386, + 8387, + 8388, + 8389, + 8390, + 8391, + 8392, + 8393, + 8394, + 8395, + 8396, + 8397, + 8398, + 8399, + 8400, + 8401, + 8402, + 8403, + 8404, + 8405, + 8406, + 8407, + 8408, + 8409, + 8410, + 8411, + 8412, + 8413, + 8414, + 8415, + 8416, + 8417, + 8418, + 8419, + 8420, + 8421, + 8422, + 8423, + 8424, + 8425, + 8426, + 8427, + 8428, + 8429, + 8430, + 8431, + 8432, + 8433, + 8434, + 8435, + 8436, + 8437, + 8438, + 8439, + 8440, + 8441, + 8442, + 8443, + 8444, + 8445, + 8446, + 8447, + 8448, + 8449, + 8450, + 8451, + 8452, + 8453, + 8454, + 8455, + 8456, + 8457, + 8458, + 8459, + 8460, + 8461, + 8462, + 8463, + 8464, + 8465, + 8466, + 8467, + 8468, + 8469, + 8470, + 8471, + 8472, + 8473, + 8474, + 8475, + 8476, + 8477, + 8478, + 8479, + 8480, + 8481, + 8482, + 8483, + 8484, + 8485, + 8486, + 8487, + 8488, + 8489, + 8490, + 8491, + 8492, + 8493, + 8494, + 8495, + 8496, + 8497, + 8498, + 8499, + 8500, + 8501, + 8502, + 8503, + 8504, + 8505, + 8506, + 8507, + 8508, + 8509, + 8510, + 8511, + 8512, + 8513, + 8514, + 8515, + 8516, + 8517, + 8518, + 8519, + 8520, + 8521, + 8522, + 8523, + 8524, + 8525, + 8526, + 8527, + 8528, + 8529, + 8530, + 8531, + 8532, + 8533, + 8534, + 8535, + 8536, + 8537, + 8538, + 8539, + 8540, + 8541, + 8542, + 8543, + 8544, + 8545, + 8546, + 8547, + 8548, + 8549, + 8550, + 8551, + 8552, + 8553, + 8554, + 8555, + 8556, + 8557, + 8558, + 8559, + 8560, + 8561, + 8562, + 8563, + 8564, + 8565, + 8566, + 8567, + 8568, + 8569, + 8570, + 8571, + 8572, + 8573, + 8574, + 8575, + 8576, + 8577, + 8578, + 8579, + 8580, + 8581, + 8582, + 8583, + 8584, + 8585, + 8586, + 8587, + 8588, + 8589, + 8590, + 8591, + 8592, + 8593, + 8594, + 8595, + 8596, + 8597, + 8598, + 8599, + 8600, + 8601, + 8602, + 8603, + 8604, + 8605, + 8606, + 8607, + 8608, + 8609, + 8610, + 8611, + 8612, + 8613, + 8614, + 8615, + 8616, + 8617, + 8618, + 8619, + 8620, + 8621, + 8622, + 8623, + 8624, + 8625, + 8626, + 8627, + 8628, + 8629, + 8630, + 8631, + 8632, + 8633, + 8634, + 8635, + 8636, + 8637, + 8638, + 8639, + 8640, + 8641, + 8642, + 8643, + 8644, + 8645, + 8646, + 8647, + 8648, + 8649, + 8650, + 8651, + 8652, + 8653, + 8654, + 8655, + 8656, + 8657, + 8658, + 8659, + 8660, + 8661, + 8662, + 8663, + 8664, + 8665, + 8666, + 8667, + 8668, + 8669, + 8670, + 8671, + 8672, + 8673, + 8674, + 8675, + 8676, + 8677, + 8678, + 8679, + 8680, + 8681, + 8682, + 8683, + 8684, + 8685, + 8686, + 8687, + 8688, + 8689, + 8690, + 8691, + 8692, + 8693, + 8694, + 8695, + 8696, + 8697, + 8698, + 8699, + 8700, + 8701, + 8702, + 8703, + 8704, + 8705, + 8706, + 8707, + 8708, + 8709, + 8710, + 8711, + 8712, + 8713, + 8714, + 8715, + 8716, + 8717, + 8718, + 8719, + 8720, + 8721, + 8722, + 8723, + 8724, + 8725, + 8726, + 8727, + 8728, + 8729, + 8730, + 8731, + 8732, + 8733, + 8734, + 8735, + 8736, + 8737, + 8738, + 8739, + 8740, + 8741, + 8742, + 8743, + 8744, + 8745, + 8746, + 8747, + 8748, + 8749, + 8750, + 8751, + 8752, + 8753, + 8754, + 8755, + 8756, + 8757, + 8758, + 8759, + 8760, + 8761, + 8762, + 8763, + 8764, + 8765, + 8766, + 8767, + 8768, + 8769, + 8770, + 8771, + 8772, + 8773, + 8774, + 8775, + 8776, + 8777, + 8778, + 8779, + 8780, + 8781, + 8782, + 8783, + 8784, + 8785, + 8786, + 8787, + 8788, + 8789, + 8790, + 8791, + 8792, + 8793, + 8794, + 8795, + 8796, + 8797, + 8798, + 8799, + 8800, + 8801, + 8802, + 8803, + 8804, + 8805, + 8806, + 8807, + 8808, + 8809, + 8810, + 8811, + 8812, + 8813, + 8814, + 8815, + 8816, + 8817, + 8818, + 8819, + 8820, + 8821, + 8822, + 8823, + 8824, + 8825, + 8826, + 8827, + 8828, + 8829, + 8830, + 8831, + 8832, + 8833, + 8834, + 8835, + 8836, + 8837, + 8838, + 8839, + 8840, + 8841, + 8842, + 8843, + 8844, + 8845, + 8846, + 8847, + 8848, + 8849, + 8850, + 8851, + 8852, + 8853, + 8854, + 8855, + 8856, + 8857, + 8858, + 8859, + 8860, + 8861, + 8862, + 8863, + 8864, + 8865, + 8866, + 8867, + 8868, + 8869, + 8870, + 8871, + 8872, + 8873, + 8874, + 8875, + 8876, + 8877, + 8878, + 8879, + 8880, + 8881, + 8882, + 8883, + 8884, + 8885, + 8886, + 8887, + 8888, + 8889, + 8890, + 8891, + 8892, + 8893, + 8894, + 8895, + 8896, + 8897, + 8898, + 8899, + 8900, + 8901, + 8902, + 8903, + 8904, + 8905, + 8906, + 8907, + 8908, + 8909, + 8910, + 8911, + 8912, + 8913, + 8914, + 8915, + 8916, + 8917, + 8918, + 8919, + 8920, + 8921, + 8922, + 8923, + 8924, + 8925, + 8926, + 8927, + 8928, + 8929, + 8930, + 8931, + 8932, + 8933, + 8934, + 8935, + 8936, + 8937, + 8938, + 8939, + 8940, + 8941, + 8942, + 8943, + 8944, + 8945, + 8946, + 8947, + 8948, + 8949, + 8950, + 8951, + 8952, + 8953, + 8954, + 8955, + 8956, + 8957, + 8958, + 8959, + 8960, + 8961, + 8962, + 8963, + 8964, + 8965, + 8966, + 8967, + 8968, + 8969, + 8970, + 8971, + 8972, + 8973, + 8974, + 8975, + 8976, + 8977, + 8978, + 8979, + 8980, + 8981, + 8982, + 8983, + 8984, + 8985, + 8986, + 8987, + 8988, + 8989, + 8990, + 8991, + 8992, + 8993, + 8994, + 8995, + 8996, + 8997, + 8998, + 8999, + 9000, + 9001, + 9002, + 9003, + 9004, + 9005, + 9006, + 9007, + 9008, + 9009, + 9010, + 9011, + 9012, + 9013, + 9014, + 9015, + 9016, + 9017, + 9018, + 9019, + 9020, + 9021, + 9022, + 9023, + 9024, + 9025, + 9026, + 9027, + 9028, + 9029, + 9030, + 9031, + 9032, + 9033, + 9034, + 9035, + 9036, + 9037, + 9038, + 9039, + 9040, + 9041, + 9042, + 9043, + 9044, + 9045, + 9046, + 9047, + 9048, + 9049, + 9050, + 9051, + 9052, + 9053, + 9054, + 9055, + 9056, + 9057, + 9058, + 9059, + 9060, + 9061, + 9062, + 9063, + 9064, + 9065, + 9066, + 9067, + 9068, + 9069, + 9070, + 9071, + 9072, + 9073, + 9074, + 9075, + 9076, + 9077, + 9078, + 9079, + 9080, + 9081, + 9082, + 9083, + 9084, + 9085, + 9086, + 9087, + 9088, + 9089, + 9090, + 9091, + 9092, + 9093, + 9094, + 9095, + 9096, + 9097, + 9098, + 9099, + 9100, + 9101, + 9102, + 9103, + 9104, + 9105, + 9106, + 9107, + 9108, + 9109, + 9110, + 9111, + 9112, + 9113, + 9114, + 9115, + 9116, + 9117, + 9118, + 9119, + 9120, + 9121, + 9122, + 9123, + 9124, + 9125, + 9126, + 9127, + 9128, + 9129, + 9130, + 9131, + 9132, + 9133, + 9134, + 9135, + 9136, + 9137, + 9138, + 9139, + 9140, + 9141, + 9142, + 9143, + 9144, + 9145, + 9146, + 9147, + 9148, + 9149, + 9150, + 9151, + 9152, + 9153, + 9154, + 9155, + 9156, + 9157, + 9158, + 9159, + 9160, + 9161, + 9162, + 9163, + 9164, + 9165, + 9166, + 9167, + 9168, + 9169, + 9170, + 9171, + 9172, + 9173, + 9174, + 9175, + 9176, + 9177, + 9178, + 9179, + 9180, + 9181, + 9182, + 9183, + 9184, + 9185, + 9186, + 9187, + 9188, + 9189, + 9190, + 9191, + 9192, + 9193, + 9194, + 9195, + 9196, + 9197, + 9198, + 9199, + 9200, + 9201, + 9202, + 9203, + 9204, + 9205, + 9206, + 9207, + 9208, + 9209, + 9210, + 9211, + 9212, + 9213, + 9214, + 9215, + 9216, + 9217, + 9218, + 9219, + 9220, + 9221, + 9222, + 9223, + 9224, + 9225, + 9226, + 9227, + 9228, + 9229, + 9230, + 9231, + 9232, + 9233, + 9234, + 9235, + 9236, + 9237, + 9238, + 9239, + 9240, + 9241, + 9242, + 9243, + 9244, + 9245, + 9246, + 9247, + 9248, + 9249, + 9250, + 9251, + 9252, + 9253, + 9254, + 9255, + 9256, + 9257, + 9258, + 9259, + 9260, + 9261, + 9262, + 9263, + 9264, + 9265, + 9266, + 9267, + 9268, + 9269, + 9270, + 9271, + 9272, + 9273, + 9274, + 9275, + 9276, + 9277, + 9278, + 9279, + 9280, + 9281, + 9282, + 9283, + 9284, + 9285, + 9286, + 9287, + 9288, + 9289, + 9290, + 9291, + 9292, + 9293, + 9294, + 9295, + 9296, + 9297, + 9298, + 9299, + 9300, + 9301, + 9302, + 9303, + 9304, + 9305, + 9306, + 9307, + 9308, + 9309, + 9310, + 9311, + 9312, + 9313, + 9314, + 9315, + 9316, + 9317, + 9318, + 9319, + 9320, + 9321, + 9322, + 9323, + 9324, + 9325, + 9326, + 9327, + 9328, + 9329, + 9330, + 9331, + 9332, + 9333, + 9334, + 9335, + 9336, + 9337, + 9338, + 9339, + 9340, + 9341, + 9342, + 9343, + 9344, + 9345, + 9346, + 9347, + 9348, + 9349, + 9350, + 9351, + 9352, + 9353, + 9354, + 9355, + 9356, + 9357, + 9358, + 9359, + 9360, + 9361, + 9362, + 9363, + 9364, + 9365, + 9366, + 9367, + 9368, + 9369, + 9370, + 9371, + 9372, + 9373, + 9374, + 9375, + 9376, + 9377, + 9378, + 9379, + 9380, + 9381, + 9382, + 9383, + 9384, + 9385, + 9386, + 9387, + 9388, + 9389, + 9390, + 9391, + 9392, + 9393, + 9394, + 9395, + 9396, + 9397, + 9398, + 9399, + 9400, + 9401, + 9402, + 9403, + 9404, + 9405, + 9406, + 9407, + 9408, + 9409, + 9410, + 9411, + 9412, + 9413, + 9414, + 9415, + 9416, + 9417, + 9418, + 9419, + 9420, + 9421, + 9422, + 9423, + 9424, + 9425, + 9426, + 9427, + 9428, + 9429, + 9430, + 9431, + 9432, + 9433, + 9434, + 9435, + 9436, + 9437, + 9438, + 9439, + 9440, + 9441, + 9442, + 9443, + 9444, + 9445, + 9446, + 9447, + 9448, + 9449, + 9450, + 9451, + 9452, + 9453, + 9454, + 9455, + 9456, + 9457, + 9458, + 9459, + 9460, + 9461, + 9462, + 9463, + 9464, + 9465, + 9466, + 9467, + 9468, + 9469, + 9470, + 9471, + 9472, + 9473, + 9474, + 9475, + 9476, + 9477, + 9478, + 9479, + 9480, + 9481, + 9482, + 9483, + 9484, + 9485, + 9486, + 9487, + 9488, + 9489, + 9490, + 9491, + 9492, + 9493, + 9494, + 9495, + 9496, + 9497, + 9498, + 9499, + 9500, + 9501, + 9502, + 9503, + 9504, + 9505, + 9506, + 9507, + 9508, + 9509, + 9510, + 9511, + 9512, + 9513, + 9514, + 9515, + 9516, + 9517, + 9518, + 9519, + 9520, + 9521, + 9522, + 9523, + 9524, + 9525, + 9526, + 9527, + 9528, + 9529, + 9530, + 9531, + 9532, + 9533, + 9534, + 9535, + 9536, + 9537, + 9538, + 9539, + 9540, + 9541, + 9542, + 9543, + 9544, + 9545, + 9546, + 9547, + 9548, + 9549, + 9550, + 9551, + 9552, + 9553, + 9554, + 9555, + 9556, + 9557, + 9558, + 9559, + 9560, + 9561, + 9562, + 9563, + 9564, + 9565, + 9566, + 9567, + 9568, + 9569, + 9570, + 9571, + 9572, + 9573, + 9574, + 9575, + 9576, + 9577, + 9578, + 9579, + 9580, + 9581, + 9582, + 9583, + 9584, + 9585, + 9586, + 9587, + 9588, + 9589, + 9590, + 9591, + 9592, + 9593, + 9594, + 9595, + 9596, + 9597, + 9598, + 9599, + 9600, + 9601, + 9602, + 9603, + 9604, + 9605, + 9606, + 9607, + 9608, + 9609, + 9610, + 9611, + 9612, + 9613, + 9614, + 9615, + 9616, + 9617, + 9618, + 9619, + 9620, + 9621, + 9622, + 9623, + 9624, + 9625, + 9626, + 9627, + 9628, + 9629, + 9630, + 9631, + 9632, + 9633, + 9634, + 9635, + 9636, + 9637, + 9638, + 9639, + 9640, + 9641, + 9642, + 9643, + 9644, + 9645, + 9646, + 9647, + 9648, + 9649, + 9650, + 9651, + 9652, + 9653, + 9654, + 9655, + 9656, + 9657, + 9658, + 9659, + 9660, + 9661, + 9662, + 9663, + 9664, + 9665, + 9666, + 9667, + 9668, + 9669, + 9670, + 9671, + 9672, + 9673, + 9674, + 9675, + 9676, + 9677, + 9678, + 9679, + 9680, + 9681, + 9682, + 9683, + 9684, + 9685, + 9686, + 9687, + 9688, + 9689, + 9690, + 9691, + 9692, + 9693, + 9694, + 9695, + 9696, + 9697, + 9698, + 9699, + 9700, + 9701, + 9702, + 9703, + 9704, + 9705, + 9706, + 9707, + 9708, + 9709, + 9710, + 9711, + 9712, + 9713, + 9714, + 9715, + 9716, + 9717, + 9718, + 9719, + 9720, + 9721, + 9722, + 9723, + 9724, + 9725, + 9726, + 9727, + 9728, + 9729, + 9730, + 9731, + 9732, + 9733, + 9734, + 9735, + 9736, + 9737, + 9738, + 9739, + 9740, + 9741, + 9742, + 9743, + 9744, + 9745, + 9746, + 9747, + 9748, + 9749, + 9750, + 9751, + 9752, + 9753, + 9754, + 9755, + 9756, + 9757, + 9758, + 9759, + 9760, + 9761, + 9762, + 9763, + 9764, + 9765, + 9766, + 9767, + 9768, + 9769, + 9770, + 9771, + 9772, + 9773, + 9774, + 9775, + 9776, + 9777, + 9778, + 9779, + 9780, + 9781, + 9782, + 9783, + 9784, + 9785, + 9786, + 9787, + 9788, + 9789, + 9790, + 9791, + 9792, + 9793, + 9794, + 9795, + 9796, + 9797, + 9798, + 9799, + 9800, + 9801, + 9802, + 9803, + 9804, + 9805, + 9806, + 9807, + 9808, + 9809, + 9810, + 9811, + 9812, + 9813, + 9814, + 9815, + 9816, + 9817, + 9818, + 9819, + 9820, + 9821, + 9822, + 9823, + 9824, + 9825, + 9826, + 9827, + 9828, + 9829, + 9830, + 9831, + 9832, + 9833, + 9834, + 9835, + 9836, + 9837, + 9838, + 9839, + 9840, + 9841, + 9842, + 9843, + 9844, + 9845, + 9846, + 9847, + 9848, + 9849, + 9850, + 9851, + 9852, + 9853, + 9854, + 9855, + 9856, + 9857, + 9858, + 9859, + 9860, + 9861, + 9862, + 9863, + 9864, + 9865, + 9866, + 9867, + 9868, + 9869, + 9870, + 9871, + 9872, + 9873, + 9874, + 9875, + 9876, + 9877, + 9878, + 9879, + 9880, + 9881, + 9882, + 9883, + 9884, + 9885, + 9886, + 9887, + 9888, + 9889, + 9890, + 9891, + 9892, + 9893, + 9894, + 9895, + 9896, + 9897, + 9898, + 9899, + 9900, + 9901, + 9902, + 9903, + 9904, + 9905, + 9906, + 9907, + 9908, + 9909, + 9910, + 9911, + 9912, + 9913, + 9914, + 9915, + 9916, + 9917, + 9918, + 9919, + 9920, + 9921, + 9922, + 9923, + 9924, + 9925, + 9926, + 9927, + 9928, + 9929, + 9930, + 9931, + 9932, + 9933, + 9934, + 9935, + 9936, + 9937, + 9938, + 9939, + 9940, + 9941, + 9942, + 9943, + 9944, + 9945, + 9946, + 9947, + 9948, + 9949, + 9950, + 9951, + 9952, + 9953, + 9954, + 9955, + 9956, + 9957, + 9958, + 9959, + 9960, + 9961, + 9962, + 9963, + 9964, + 9965, + 9966, + 9967, + 9968, + 9969, + 9970, + 9971, + 9972, + 9973, + 9974, + 9975, + 9976, + 9977, + 9978, + 9979, + 9980, + 9981, + 9982, + 9983, + 9984, + 9985, + 9986, + 9987, + 9988, + 9989, + 9990, + 9991, + 9992, + 9993, + 9994, + 9995, + 9996, + 9997, + 9998, + 9999, + 10000, + 10001, + 10002, + 10003, + 10004, + 10005, + 10006, + 10007, + 10008, + 10009, + 10010, + 10011, + 10012, + 10013, + 10014, + 10015, + 10016, + 10017, + 10018, + 10019, + 10020, + 10021, + 10022, + 10023, + 10024, + 10025, + 10026, + 10027, + 10028, + 10029, + 10030, + 10031, + 10032, + 10033, + 10034, + 10035, + 10036, + 10037, + 10038, + 10039, + 10040, + 10041, + 10042, + 10043, + 10044, + 10045, + 10046, + 10047, + 10048, + 10049, + 10050, + 10051, + 10052, + 10053, + 10054, + 10055, + 10056, + 10057, + 10058, + 10059, + 10060, + 10061, + 10062, + 10063, + 10064, + 10065, + 10066, + 10067, + 10068, + 10069, + 10070, + 10071, + 10072, + 10073, + 10074, + 10075, + 10076, + 10077, + 10078, + 10079, + 10080, + 10081, + 10082, + 10083, + 10084, + 10085, + 10086, + 10087, + 10088, + 10089, + 10090, + 10091, + 10092, + 10093, + 10094, + 10095, + 10096, + 10097, + 10098, + 10099, + 10100, + 10101, + 10102, + 10103, + 10104, + 10105, + 10106, + 10107, + 10108, + 10109, + 10110, + 10111, + 10112, + 10113, + 10114, + 10115, + 10116, + 10117, + 10118, + 10119, + 10120, + 10121, + 10122, + 10123, + 10124, + 10125, + 10126, + 10127, + 10128, + 10129, + 10130, + 10131, + 10132, + 10133, + 10134, + 10135, + 10136, + 10137, + 10138, + 10139, + 10140, + 10141, + 10142, + 10143, + 10144, + 10145, + 10146, + 10147, + 10148, + 10149, + 10150, + 10151, + 10152, + 10153, + 10154, + 10155, + 10156, + 10157, + 10158, + 10159, + 10160, + 10161, + 10162, + 10163, + 10164, + 10165, + 10166, + 10167, + 10168, + 10169, + 10170, + 10171, + 10172, + 10173, + 10174, + 10175, + 10176, + 10177, + 10178, + 10179, + 10180, + 10181, + 10182, + 10183, + 10184, + 10185, + 10186, + 10187, + 10188, + 10189, + 10190, + 10191, + 10192, + 10193, + 10194, + 10195, + 10196, + 10197, + 10198, + 10199, + 10200, + 10201, + 10202, + 10203, + 10204, + 10205, + 10206, + 10207, + 10208, + 10209, + 10210, + 10211, + 10212, + 10213, + 10214, + 10215, + 10216, + 10217, + 10218, + 10219, + 10220, + 10221, + 10222, + 10223, + 10224, + 10225, + 10226, + 10227, + 10228, + 10229, + 10230, + 10231, + 10232, + 10233, + 10234, + 10235, + 10236, + 10237, + 10238, + 10239, + 10240, + 10241, + 10242, + 10243, + 10244, + 10245, + 10246, + 10247, + 10248, + 10249, + 10250, + 10251, + 10252, + 10253, + 10254, + 10255, + 10256, + 10257, + 10258, + 10259, + 10260, + 10261, + 10262, + 10263, + 10264, + 10265, + 10266, + 10267, + 10268, + 10269, + 10270, + 10271, + 10272, + 10273, + 10274, + 10275, + 10276, + 10277, + 10278, + 10279, + 10280, + 10281, + 10282, + 10283, + 10284, + 10285, + 10286, + 10287, + 10288, + 10289, + 10290, + 10291, + 10292, + 10293, + 10294, + 10295, + 10296, + 10297, + 10298, + 10299, + 10300, + 10301, + 10302, + 10303, + 10304, + 10305, + 10306, + 10307, + 10308, + 10309, + 10310, + 10311, + 10312, + 10313, + 10314, + 10315, + 10316, + 10317, + 10318, + 10319, + 10320, + 10321, + 10322, + 10323, + 10324, + 10325, + 10326, + 10327, + 10328, + 10329, + 10330, + 10331, + 10332, + 10333, + 10334, + 10335, + 10336, + 10337, + 10338, + 10339, + 10340, + 10341, + 10342, + 10343, + 10344, + 10345, + 10346, + 10347, + 10348, + 10349, + 10350, + 10351, + 10352, + 10353, + 10354, + 10355, + 10356, + 10357, + 10358, + 10359, + 10360, + 10361, + 10362, + 10363, + 10364, + 10365, + 10366, + 10367, + 10368, + 10369, + 10370, + 10371, + 10372, + 10373, + 10374, + 10375, + 10376, + 10377, + 10378, + 10379, + 10380, + 10381, + 10382, + 10383, + 10384, + 10385, + 10386, + 10387, + 10388, + 10389, + 10390, + 10391, + 10392, + 10393, + 10394, + 10395, + 10396, + 10397, + 10398, + 10399, + 10400, + 10401, + 10402, + 10403, + 10404, + 10405, + 10406, + 10407, + 10408, + 10409, + 10410, + 10411, + 10412, + 10413, + 10414, + 10415, + 10416, + 10417, + 10418, + 10419, + 10420, + 10421, + 10422, + 10423, + 10424, + 10425, + 10426, + 10427, + 10428, + 10429, + 10430, + 10431, + 10432, + 10433, + 10434, + 10435, + 10436, + 10437, + 10438, + 10439, + 10440, + 10441, + 10442, + 10443, + 10444, + 10445, + 10446, + 10447, + 10448, + 10449, + 10450, + 10451, + 10452, + 10453, + 10454, + 10455, + 10456, + 10457, + 10458, + 10459, + 10460, + 10461, + 10462, + 10463, + 10464, + 10465, + 10466, + 10467, + 10468, + 10469, + 10470, + 10471, + 10472, + 10473, + 10474, + 10475, + 10476, + 10477, + 10478, + 10479, + 10480, + 10481, + 10482, + 10483, + 10484, + 10485, + 10486, + 10487, + 10488, + 10489, + 10490, + 10491, + 10492, + 10493, + 10494, + 10495, + 10496, + 10497, + 10498, + 10499, + 10500, + 10501, + 10502, + 10503, + 10504, + 10505, + 10506, + 10507, + 10508, + 10509, + 10510, + 10511, + 10512, + 10513, + 10514, + 10515, + 10516, + 10517, + 10518, + 10519, + 10520, + 10521, + 10522, + 10523, + 10524, + 10525, + 10526, + 10527, + 10528, + 10529, + 10530, + 10531, + 10532, + 10533, + 10534, + 10535, + 10536, + 10537, + 10538, + 10539, + 10540, + 10541, + 10542, + 10543, + 10544, + 10545, + 10546, + 10547, + 10548, + 10549, + 10550, + 10551, + 10552, + 10553, + 10554, + 10555, + 10556, + 10557, + 10558, + 10559, + 10560, + 10561, + 10562, + 10563, + 10564, + 10565, + 10566, + 10567, + 10568, + 10569, + 10570, + 10571, + 10572, + 10573, + 10574, + 10575, + 10576, + 10577, + 10578, + 10579, + 10580, + 10581, + 10582, + 10583, + 10584, + 10585, + 10586, + 10587, + 10588, + 10589, + 10590, + 10591, + 10592, + 10593, + 10594, + 10595, + 10596, + 10597, + 10598, + 10599, + 10600, + 10601, + 10602, + 10603, + 10604, + 10605, + 10606, + 10607, + 10608, + 10609, + 10610, + 10611, + 10612, + 10613, + 10614, + 10615, + 10616, + 10617, + 10618, + 10619, + 10620, + 10621, + 10622, + 10623, + 10624, + 10625, + 10626, + 10627, + 10628, + 10629, + 10630, + 10631, + 10632, + 10633, + 10634, + 10635, + 10636, + 10637, + 10638, + 10639, + 10640, + 10641, + 10642, + 10643, + 10644, + 10645, + 10646, + 10647, + 10648, + 10649, + 10650, + 10651, + 10652, + 10653, + 10654, + 10655, + 10656, + 10657, + 10658, + 10659, + 10660, + 10661, + 10662, + 10663, + 10664, + 10665, + 10666, + 10667, + 10668, + 10669, + 10670, + 10671, + 10672, + 10673, + 10674, + 10675, + 10676, + 10677, + 10678, + 10679, + 10680, + 10681, + 10682, + 10683, + 10684, + 10685, + 10686, + 10687, + 10688, + 10689, + 10690, + 10691, + 10692, + 10693, + 10694, + 10695, + 10696, + 10697, + 10698, + 10699, + 10700, + 10701, + 10702, + 10703, + 10704, + 10705, + 10706, + 10707, + 10708, + 10709, + 10710, + 10711, + 10712, + 10713, + 10714, + 10715, + 10716, + 10717, + 10718, + 10719, + 10720, + 10721, + 10722, + 10723, + 10724, + 10725, + 10726, + 10727, + 10728, + 10729, + 10730, + 10731, + 10732, + 10733, + 10734, + 10735, + 10736, + 10737, + 10738, + 10739, + 10740, + 10741, + 10742, + 10743, + 10744, + 10745, + 10746, + 10747, + 10748, + 10749, + 10750, + 10751, + 10752, + 10753, + 10754, + 10755, + 10756, + 10757, + 10758, + 10759, + 10760, + 10761, + 10762, + 10763, + 10764, + 10765, + 10766, + 10767, + 10768, + 10769, + 10770, + 10771, + 10772, + 10773, + 10774, + 10775, + 10776, + 10777, + 10778, + 10779, + 10780, + 10781, + 10782, + 10783, + 10784, + 10785, + 10786, + 10787, + 10788, + 10789, + 10790, + 10791, + 10792, + 10793, + 10794, + 10795, + 10796, + 10797, + 10798, + 10799, + 10800, + 10801, + 10802, + 10803, + 10804, + 10805, + 10806, + 10807, + 10808, + 10809, + 10810, + 10811, + 10812, + 10813, + 10814, + 10815, + 10816, + 10817, + 10818, + 10819, + 10820, + 10821, + 10822, + 10823, + 10824, + 10825, + 10826, + 10827, + 10828, + 10829, + 10830, + 10831, + 10832, + 10833, + 10834, + 10835, + 10836, + 10837, + 10838, + 10839, + 10840, + 10841, + 10842, + 10843, + 10844, + 10845, + 10846, + 10847, + 10848, + 10849, + 10850, + 10851, + 10852, + 10853, + 10854, + 10855, + 10856, + 10857, + 10858, + 10859, + 10860, + 10861, + 10862, + 10863, + 10864, + 10865, + 10866, + 10867, + 10868, + 10869, + 10870, + 10871, + 10872, + 10873, + 10874, + 10875, + 10876, + 10877, + 10878, + 10879, + 10880, + 10881, + 10882, + 10883, + 10884, + 10885, + 10886, + 10887, + 10888, + 10889, + 10890, + 10891, + 10892, + 10893, + 10894, + 10895, + 10896, + 10897, + 10898, + 10899, + 10900, + 10901, + 10902, + 10903, + 10904, + 10905, + 10906, + 10907, + 10908, + 10909, + 10910, + 10911, + 10912, + 10913, + 10914, + 10915, + 10916, + 10917, + 10918, + 10919, + 10920, + 10921, + 10922, + 10923, + 10924, + 10925, + 10926, + 10927, + 10928, + 10929, + 10930, + 10931, + 10932, + 10933, + 10934, + 10935, + 10936, + 10937, + 10938, + 10939, + 10940, + 10941, + 10942, + 10943, + 10944, + 10945, + 10946, + 10947, + 10948, + 10949, + 10950, + 10951, + 10952, + 10953, + 10954, + 10955, + 10956, + 10957, + 10958, + 10959, + 10960, + 10961, + 10962, + 10963, + 10964, + 10965, + 10966, + 10967, + 10968, + 10969, + 10970, + 10971, + 10972, + 10973, + 10974, + 10975, + 10976, + 10977, + 10978, + 10979, + 10980, + 10981, + 10982, + 10983, + 10984, + 10985, + 10986, + 10987, + 10988, + 10989, + 10990, + 10991, + 10992, + 10993, + 10994, + 10995, + 10996, + 10997, + 10998, + 10999, + 11000, + 11001, + 11002, + 11003, + 11004, + 11005, + 11006, + 11007, + 11008, + 11009, + 11010, + 11011, + 11012, + 11013, + 11014, + 11015, + 11016, + 11017, + 11018, + 11019, + 11020, + 11021, + 11022, + 11023, + 11024, + 11025, + 11026, + 11027, + 11028, + 11029, + 11030, + 11031, + 11032, + 11033, + 11034, + 11035, + 11036, + 11037, + 11038, + 11039, + 11040, + 11041, + 11042, + 11043, + 11044, + 11045, + 11046, + 11047, + 11048, + 11049, + 11050, + 11051, + 11052, + 11053, + 11054, + 11055, + 11056, + 11057, + 11058, + 11059, + 11060, + 11061, + 11062, + 11063, + 11064, + 11065, + 11066, + 11067, + 11068, + 11069, + 11070, + 11071, + 11072, + 11073, + 11074, + 11075, + 11076, + 11077, + 11078, + 11079, + 11080, + 11081, + 11082, + 11083, + 11084, + 11085, + 11086, + 11087, + 11088, + 11089, + 11090, + 11091, + 11092, + 11093, + 11094, + 11095, + 11096, + 11097, + 11098, + 11099, + 11100, + 11101, + 11102, + 11103, + 11104, + 11105, + 11106, + 11107, + 11108, + 11109, + 11110, + 11111, + 11112, + 11113, + 11114, + 11115, + 11116, + 11117, + 11118, + 11119, + 11120, + 11121, + 11122, + 11123, + 11124, + 11125, + 11126, + 11127, + 11128, + 11129, + 11130, + 11131, + 11132, + 11133, + 11134, + 11135, + 11136, + 11137, + 11138, + 11139, + 11140, + 11141, + 11142, + 11143, + 11144, + 11145, + 11146, + 11147, + 11148, + 11149, + 11150, + 11151, + 11152, + 11153, + 11154, + 11155, + 11156, + 11157, + 11158, + 11159, + 11160, + 11161, + 11162, + 11163, + 11164, + 11165, + 11166, + 11167, + 11168, + 11169, + 11170, + 11171, + 11172, + 11173, + 11174, + 11175, + 11176, + 11177, + 11178, + 11179, + 11180, + 11181, + 11182, + 11183, + 11184, + 11185, + 11186, + 11187, + 11188, + 11189, + 11190, + 11191, + 11192, + 11193, + 11194, + 11195, + 11196, + 11197, + 11198, + 11199, + 11200, + 11201, + 11202, + 11203, + 11204, + 11205, + 11206, + 11207, + 11208, + 11209, + 11210, + 11211, + 11212, + 11213, + 11214, + 11215, + 11216, + 11217, + 11218, + 11219, + 11220, + 11221, + 11222, + 11223, + 11224, + 11225, + 11226, + 11227, + 11228, + 11229, + 11230, + 11231, + 11232, + 11233, + 11234, + 11235, + 11236, + 11237, + 11238, + 11239, + 11240, + 11241, + 11242, + 11243, + 11244, + 11245, + 11246, + 11247, + 11248, + 11249, + 11250, + 11251, + 11252, + 11253, + 11254, + 11255, + 11256, + 11257, + 11258, + 11259, + 11260, + 11261, + 11262, + 11263, + 11264, + 11265, + 11266, + 11267, + 11268, + 11269, + 11270, + 11271, + 11272, + 11273, + 11274, + 11275, + 11276, + 11277, + 11278, + 11279, + 11280, + 11281, + 11282, + 11283, + 11284, + 11285, + 11286, + 11287, + 11288, + 11289, + 11290, + 11291, + 11292, + 11293, + 11294, + 11295, + 11296, + 11297, + 11298, + 11299, + 11300, + 11301, + 11302, + 11303, + 11304, + 11305, + 11306, + 11307, + 11308, + 11309, + 11310, + 11311, + 11312, + 11313, + 11314, + 11315, + 11316, + 11317, + 11318, + 11319, + 11320, + 11321, + 11322, + 11323, + 11324, + 11325, + 11326, + 11327, + 11328, + 11329, + 11330, + 11331, + 11332, + 11333, + 11334, + 11335, + 11336, + 11337, + 11338, + 11339, + 11340, + 11341, + 11342, + 11343, + 11344, + 11345, + 11346, + 11347, + 11348, + 11349, + 11350, + 11351, + 11352, + 11353, + 11354, + 11355, + 11356, + 11357, + 11358, + 11359, + 11360, + 11361, + 11362, + 11363, + 11364, + 11365, + 11366, + 11367, + 11368, + 11369, + 11370, + 11371, + 11372, + 11373, + 11374, + 11375, + 11376, + 11377, + 11378, + 11379, + 11380, + 11381, + 11382, + 11383, + 11384, + 11385, + 11386, + 11387, + 11388, + 11389, + 11390, + 11391, + 11392, + 11393, + 11394, + 11395, + 11396, + 11397, + 11398, + 11399, + 11400, + 11401, + 11402, + 11403, + 11404, + 11405, + 11406, + 11407, + 11408, + 11409, + 11410, + 11411, + 11412, + 11413, + 11414, + 11415, + 11416, + 11417, + 11418, + 11419, + 11420, + 11421, + 11422, + 11423, + 11424, + 11425, + 11426, + 11427, + 11428, + 11429, + 11430, + 11431, + 11432, + 11433, + 11434, + 11435, + 11436, + 11437, + 11438, + 11439, + 11440, + 11441, + 11442, + 11443, + 11444, + 11445, + 11446, + 11447, + 11448, + 11449, + 11450, + 11451, + 11452, + 11453, + 11454, + 11455, + 11456, + 11457, + 11458, + 11459, + 11460, + 11461, + 11462, + 11463, + 11464, + 11465, + 11466, + 11467, + 11468, + 11469, + 11470, + 11471, + 11472, + 11473, + 11474, + 11475, + 11476, + 11477, + 11478, + 11479, + 11480, + 11481, + 11482, + 11483, + 11484, + 11485, + 11486, + 11487, + 11488, + 11489, + 11490, + 11491, + 11492, + 11493, + 11494, + 11495, + 11496, + 11497, + 11498, + 11499, + 11500, + 11501, + 11502, + 11503, + 11504, + 11505, + 11506, + 11507, + 11508, + 11509, + 11510, + 11511, + 11512, + 11513, + 11514, + 11515, + 11516, + 11517, + 11518, + 11519, + 11520, + 11521, + 11522, + 11523, + 11524, + 11525, + 11526, + 11527, + 11528, + 11529, + 11530, + 11531, + 11532, + 11533, + 11534, + 11535, + 11536, + 11537, + 11538, + 11539, + 11540, + 11541, + 11542, + 11543, + 11544, + 11545, + 11546, + 11547, + 11548, + 11549, + 11550, + 11551, + 11552, + 11553, + 11554, + 11555, + 11556, + 11557, + 11558, + 11559, + 11560, + 11561, + 11562, + 11563, + 11564, + 11565, + 11566, + 11567, + 11568, + 11569, + 11570, + 11571, + 11572, + 11573, + 11574, + 11575, + 11576, + 11577, + 11578, + 11579, + 11580, + 11581, + 11582, + 11583, + 11584, + 11585, + 11586, + 11587, + 11588, + 11589, + 11590, + 11591, + 11592, + 11593, + 11594, + 11595, + 11596, + 11597, + 11598, + 11599, + 11600, + 11601, + 11602, + 11603, + 11604, + 11605, + 11606, + 11607, + 11608, + 11609, + 11610, + 11611, + 11612, + 11613, + 11614, + 11615, + 11616, + 11617, + 11618, + 11619, + 11620, + 11621, + 11622, + 11623, + 11624, + 11625, + 11626, + 11627, + 11628, + 11629, + 11630, + 11631, + 11632, + 11633, + 11634, + 11635, + 11636, + 11637, + 11638, + 11639, + 11640, + 11641, + 11642, + 11643, + 11644, + 11645, + 11646, + 11647, + 11648, + 11649, + 11650, + 11651, + 11652, + 11653, + 11654, + 11655, + 11656, + 11657, + 11658, + 11659, + 11660, + 11661, + 11662, + 11663, + 11664, + 11665, + 11666, + 11667, + 11668, + 11669, + 11670, + 11671, + 11672, + 11673, + 11674, + 11675, + 11676, + 11677, + 11678, + 11679, + 11680, + 11681, + 11682, + 11683, + 11684, + 11685, + 11686, + 11687, + 11688, + 11689, + 11690, + 11691, + 11692, + 11693, + 11694, + 11695, + 11696, + 11697, + 11698, + 11699, + 11700, + 11701, + 11702, + 11703, + 11704, + 11705, + 11706, + 11707, + 11708, + 11709, + 11710, + 11711, + 11712, + 11713, + 11714, + 11715, + 11716, + 11717, + 11718, + 11719, + 11720, + 11721, + 11722, + 11723, + 11724, + 11725, + 11726, + 11727, + 11728, + 11729, + 11730, + 11731, + 11732, + 11733, + 11734, + 11735, + 11736, + 11737, + 11738, + 11739, + 11740, + 11741, + 11742, + 11743, + 11744, + 11745, + 11746, + 11747, + 11748, + 11749, + 11750, + 11751, + 11752, + 11753, + 11754, + 11755, + 11756, + 11757, + 11758, + 11759, + 11760, + 11761, + 11762, + 11763, + 11764, + 11765, + 11766, + 11767, + 11768, + 11769, + 11770, + 11771, + 11772, + 11773, + 11774, + 11775, + 11776, + 11777, + 11778, + 11779, + 11780, + 11781, + 11782, + 11783, + 11784, + 11785, + 11786, + 11787, + 11788, + 11789, + 11790, + 11791, + 11792, + 11793, + 11794, + 11795, + 11796, + 11797, + 11798, + 11799, + 11800, + 11801, + 11802, + 11803, + 11804, + 11805, + 11806, + 11807, + 11808, + 11809, + 11810, + 11811, + 11812, + 11813, + 11814, + 11815, + 11816, + 11817, + 11818, + 11819, + 11820, + 11821, + 11822, + 11823, + 11824, + 11825, + 11826, + 11827, + 11828, + 11829, + 11830, + 11831, + 11832, + 11833, + 11834, + 11835, + 11836, + 11837, + 11838, + 11839, + 11840, + 11841, + 11842, + 11843, + 11844, + 11845, + 11846, + 11847, + 11848, + 11849, + 11850, + 11851, + 11852, + 11853, + 11854, + 11855, + 11856, + 11857, + 11858, + 11859, + 11860, + 11861, + 11862, + 11863, + 11864, + 11865, + 11866, + 11867, + 11868, + 11869, + 11870, + 11871, + 11872, + 11873, + 11874, + 11875, + 11876, + 11877, + 11878, + 11879, + 11880, + 11881, + 11882, + 11883, + 11884, + 11885, + 11886, + 11887, + 11888, + 11889, + 11890, + 11891, + 11892, + 11893, + 11894, + 11895, + 11896, + 11897, + 11898, + 11899, + 11900, + 11901, + 11902, + 11903, + 11904, + 11905, + 11906, + 11907, + 11908, + 11909, + 11910, + 11911, + 11912, + 11913, + 11914, + 11915, + 11916, + 11917, + 11918, + 11919, + 11920, + 11921, + 11922, + 11923, + 11924, + 11925, + 11926, + 11927, + 11928, + 11929, + 11930, + 11931, + 11932, + 11933, + 11934, + 11935, + 11936, + 11937, + 11938, + 11939, + 11940, + 11941, + 11942, + 11943, + 11944, + 11945, + 11946, + 11947, + 11948, + 11949, + 11950, + 11951, + 11952, + 11953, + 11954, + 11955, + 11956, + 11957, + 11958, + 11959, + 11960, + 11961, + 11962, + 11963, + 11964, + 11965, + 11966, + 11967, + 11968, + 11969, + 11970, + 11971, + 11972, + 11973, + 11974, + 11975, + 11976, + 11977, + 11978, + 11979, + 11980, + 11981, + 11982, + 11983, + 11984, + 11985, + 11986, + 11987, + 11988, + 11989, + 11990, + 11991, + 11992, + 11993, + 11994, + 11995, + 11996, + 11997, + 11998, + 11999, + 12000, + 12001, + 12002, + 12003, + 12004, + 12005, + 12006, + 12007, + 12008, + 12009, + 12010, + 12011, + 12012, + 12013, + 12014, + 12015, + 12016, + 12017, + 12018, + 12019, + 12020, + 12021, + 12022, + 12023, + 12024, + 12025, + 12026, + 12027, + 12028, + 12029, + 12030, + 12031, + 12032, + 12033, + 12034, + 12035, + 12036, + 12037, + 12038, + 12039, + 12040, + 12041, + 12042, + 12043, + 12044, + 12045, + 12046, + 12047, + 12048, + 12049, + 12050, + 12051, + 12052, + 12053, + 12054, + 12055, + 12056, + 12057, + 12058, + 12059, + 12060, + 12061, + 12062, + 12063, + 12064, + 12065, + 12066, + 12067, + 12068, + 12069, + 12070, + 12071, + 12072, + 12073, + 12074, + 12075, + 12076, + 12077, + 12078, + 12079, + 12080, + 12081, + 12082, + 12083, + 12084, + 12085, + 12086, + 12087, + 12088, + 12089, + 12090, + 12091, + 12092, + 12093, + 12094, + 12095, + 12096, + 12097, + 12098, + 12099, + 12100, + 12101, + 12102, + 12103, + 12104, + 12105, + 12106, + 12107, + 12108, + 12109, + 12110, + 12111, + 12112, + 12113, + 12114, + 12115, + 12116, + 12117, + 12118, + 12119, + 12120, + 12121, + 12122, + 12123, + 12124, + 12125, + 12126, + 12127, + 12128, + 12129, + 12130, + 12131, + 12132, + 12133, + 12134, + 12135, + 12136, + 12137, + 12138, + 12139, + 12140, + 12141, + 12142, + 12143, + 12144, + 12145, + 12146, + 12147, + 12148, + 12149, + 12150, + 12151, + 12152, + 12153, + 12154, + 12155, + 12156, + 12157, + 12158, + 12159, + 12160, + 12161, + 12162, + 12163, + 12164, + 12165, + 12166, + 12167, + 12168, + 12169, + 12170, + 12171, + 12172, + 12173, + 12174, + 12175, + 12176, + 12177, + 12178, + 12179, + 12180, + 12181, + 12182, + 12183, + 12184, + 12185, + 12186, + 12187, + 12188, + 12189, + 12190, + 12191, + 12192, + 12193, + 12194, + 12195, + 12196, + 12197, + 12198, + 12199, + 12200, + 12201, + 12202, + 12203, + 12204, + 12205, + 12206, + 12207, + 12208, + 12209, + 12210, + 12211, + 12212, + 12213, + 12214, + 12215, + 12216, + 12217, + 12218, + 12219, + 12220, + 12221, + 12222, + 12223, + 12224, + 12225, + 12226, + 12227, + 12228, + 12229, + 12230, + 12231, + 12232, + 12233, + 12234, + 12235, + 12236, + 12237, + 12238, + 12239, + 12240, + 12241, + 12242, + 12243, + 12244, + 12245, + 12246, + 12247, + 12248, + 12249, + 12250, + 12251, + 12252, + 12253, + 12254, + 12255, + 12256, + 12257, + 12258, + 12259, + 12260, + 12261, + 12262, + 12263, + 12264, + 12265, + 12266, + 12267, + 12268, + 12269, + 12270, + 12271, + 12272, + 12273, + 12274, + 12275, + 12276, + 12277, + 12278, + 12279, + 12280, + 12281, + 12282, + 12283, + 12284, + 12285, + 12286, + 12287, + 12288, + 12289, + 12290, + 12291, + 12292, + 12293, + 12294, + 12295, + 12296, + 12297, + 12298, + 12299, + 12300, + 12301, + 12302, + 12303, + 12304, + 12305, + 12306, + 12307, + 12308, + 12309, + 12310, + 12311, + 12312, + 12313, + 12314, + 12315, + 12316, + 12317, + 12318, + 12319, + 12320, + 12321, + 12322, + 12323, + 12324, + 12325, + 12326, + 12327, + 12328, + 12329, + 12330, + 12331, + 12332, + 12333, + 12334, + 12335, + 12336, + 12337, + 12338, + 12339, + 12340, + 12341, + 12342, + 12343, + 12344, + 12345, + 12346, + 12347, + 12348, + 12349, + 12350, + 12351, + 12352, + 12353, + 12354, + 12355, + 12356, + 12357, + 12358, + 12359, + 12360, + 12361, + 12362, + 12363, + 12364, + 12365, + 12366, + 12367, + 12368, + 12369, + 12370, + 12371, + 12372, + 12373, + 12374, + 12375, + 12376, + 12377, + 12378, + 12379, + 12380, + 12381, + 12382, + 12383, + 12384, + 12385, + 12386, + 12387, + 12388, + 12389, + 12390, + 12391, + 12392, + 12393, + 12394, + 12395, + 12396, + 12397, + 12398, + 12399, + 12400, + 12401, + 12402, + 12403, + 12404, + 12405, + 12406, + 12407, + 12408, + 12409, + 12410, + 12411, + 12412, + 12413, + 12414, + 12415, + 12416, + 12417, + 12418, + 12419, + 12420, + 12421, + 12422, + 12423, + 12424, + 12425, + 12426, + 12427, + 12428, + 12429, + 12430, + 12431, + 12432, + 12433, + 12434, + 12435, + 12436, + 12437, + 12438, + 12439, + 12440, + 12441, + 12442, + 12443, + 12444, + 12445, + 12446, + 12447, + 12448, + 12449, + 12450, + 12451, + 12452, + 12453, + 12454, + 12455, + 12456, + 12457, + 12458, + 12459, + 12460, + 12461, + 12462, + 12463, + 12464, + 12465, + 12466, + 12467, + 12468, + 12469, + 12470, + 12471, + 12472, + 12473, + 12474, + 12475, + 12476, + 12477, + 12478, + 12479, + 12480, + 12481, + 12482, + 12483, + 12484, + 12485, + 12486, + 12487, + 12488, + 12489, + 12490, + 12491, + 12492, + 12493, + 12494, + 12495, + 12496, + 12497, + 12498, + 12499, + 12500, + 12501, + 12502, + 12503, + 12504, + 12505, + 12506, + 12507, + 12508, + 12509, + 12510, + 12511, + 12512, + 12513, + 12514, + 12515, + 12516, + 12517, + 12518, + 12519, + 12520, + 12521, + 12522, + 12523, + 12524, + 12525, + 12526, + 12527, + 12528, + 12529, + 12530, + 12531, + 12532, + 12533, + 12534, + 12535, + 12536, + 12537, + 12538, + 12539, + 12540, + 12541, + 12542, + 12543, + 12544, + 12545, + 12546, + 12547, + 12548, + 12549, + 12550, + 12551, + 12552, + 12553, + 12554, + 12555, + 12556, + 12557, + 12558, + 12559, + 12560, + 12561, + 12562, + 12563, + 12564, + 12565, + 12566, + 12567, + 12568, + 12569, + 12570, + 12571, + 12572, + 12573, + 12574, + 12575, + 12576, + 12577, + 12578, + 12579, + 12580, + 12581, + 12582, + 12583, + 12584, + 12585, + 12586, + 12587, + 12588, + 12589, + 12590, + 12591, + 12592, + 12593, + 12594, + 12595, + 12596, + 12597, + 12598, + 12599, + 12600, + 12601, + 12602, + 12603, + 12604, + 12605, + 12606, + 12607, + 12608, + 12609, + 12610, + 12611, + 12612, + 12613, + 12614, + 12615, + 12616, + 12617, + 12618, + 12619, + 12620, + 12621, + 12622, + 12623, + 12624, + 12625, + 12626, + 12627, + 12628, + 12629, + 12630, + 12631, + 12632, + 12633, + 12634, + 12635, + 12636, + 12637, + 12638, + 12639, + 12640, + 12641, + 12642, + 12643, + 12644, + 12645, + 12646, + 12647, + 12648, + 12649, + 12650, + 12651, + 12652, + 12653, + 12654, + 12655, + 12656, + 12657, + 12658, + 12659, + 12660, + 12661, + 12662, + 12663, + 12664, + 12665, + 12666, + 12667, + 12668, + 12669, + 12670, + 12671, + 12672, + 12673, + 12674, + 12675, + 12676, + 12677, + 12678, + 12679, + 12680, + 12681, + 12682, + 12683, + 12684, + 12685, + 12686, + 12687, + 12688, + 12689, + 12690, + 12691, + 12692, + 12693, + 12694, + 12695, + 12696, + 12697, + 12698, + 12699, + 12700, + 12701, + 12702, + 12703, + 12704, + 12705, + 12706, + 12707, + 12708, + 12709, + 12710, + 12711, + 12712, + 12713, + 12714, + 12715, + 12716, + 12717, + 12718, + 12719, + 12720, + 12721, + 12722, + 12723, + 12724, + 12725, + 12726, + 12727, + 12728, + 12729, + 12730, + 12731, + 12732, + 12733, + 12734, + 12735, + 12736, + 12737, + 12738, + 12739, + 12740, + 12741, + 12742, + 12743, + 12744, + 12745, + 12746, + 12747, + 12748, + 12749, + 12750, + 12751, + 12752, + 12753, + 12754, + 12755, + 12756, + 12757, + 12758, + 12759, + 12760, + 12761, + 12762, + 12763, + 12764, + 12765, + 12766, + 12767, + 12768, + 12769, + 12770, + 12771, + 12772, + 12773, + 12774, + 12775, + 12776, + 12777, + 12778, + 12779, + 12780, + 12781, + 12782, + 12783, + 12784, + 12785, + 12786, + 12787, + 12788, + 12789, + 12790, + 12791, + 12792, + 12793, + 12794, + 12795, + 12796, + 12797, + 12798, + 12799, + 12800, + 12801, + 12802, + 12803, + 12804, + 12805, + 12806, + 12807, + 12808, + 12809, + 12810, + 12811, + 12812, + 12813, + 12814, + 12815, + 12816, + 12817, + 12818, + 12819, + 12820, + 12821, + 12822, + 12823, + 12824, + 12825, + 12826, + 12827, + 12828, + 12829, + 12830, + 12831, + 12832, + 12833, + 12834, + 12835, + 12836, + 12837, + 12838, + 12839, + 12840, + 12841, + 12842, + 12843, + 12844, + 12845, + 12846, + 12847, + 12848, + 12849, + 12850, + 12851, + 12852, + 12853, + 12854, + 12855, + 12856, + 12857, + 12858, + 12859, + 12860, + 12861, + 12862, + 12863, + 12864, + 12865, + 12866, + 12867, + 12868, + 12869, + 12870, + 12871, + 12872, + 12873, + 12874, + 12875, + 12876, + 12877, + 12878, + 12879, + 12880, + 12881, + 12882, + 12883, + 12884, + 12885, + 12886, + 12887, + 12888, + 12889, + 12890, + 12891, + 12892, + 12893, + 12894, + 12895, + 12896, + 12897, + 12898, + 12899, + 12900, + 12901, + 12902, + 12903, + 12904, + 12905, + 12906, + 12907, + 12908, + 12909, + 12910, + 12911, + 12912, + 12913, + 12914, + 12915, + 12916, + 12917, + 12918, + 12919, + 12920, + 12921, + 12922, + 12923, + 12924, + 12925, + 12926, + 12927, + 12928, + 12929, + 12930, + 12931, + 12932, + 12933, + 12934, + 12935, + 12936, + 12937, + 12938, + 12939, + 12940, + 12941, + 12942, + 12943, + 12944, + 12945, + 12946, + 12947, + 12948, + 12949, + 12950, + 12951, + 12952, + 12953, + 12954, + 12955, + 12956, + 12957, + 12958, + 12959, + 12960, + 12961, + 12962, + 12963, + 12964, + 12965, + 12966, + 12967, + 12968, + 12969, + 12970, + 12971, + 12972, + 12973, + 12974, + 12975, + 12976, + 12977, + 12978, + 12979, + 12980, + 12981, + 12982, + 12983, + 12984, + 12985, + 12986, + 12987, + 12988, + 12989, + 12990, + 12991, + 12992, + 12993, + 12994, + 12995, + 12996, + 12997, + 12998, + 12999, + 13000, + 13001, + 13002, + 13003, + 13004, + 13005, + 13006, + 13007, + 13008, + 13009, + 13010, + 13011, + 13012, + 13013, + 13014, + 13015, + 13016, + 13017, + 13018, + 13019, + 13020, + 13021, + 13022, + 13023, + 13024, + 13025, + 13026, + 13027, + 13028, + 13029, + 13030, + 13031, + 13032, + 13033, + 13034, + 13035, + 13036, + 13037, + 13038, + 13039, + 13040, + 13041, + 13042, + 13043, + 13044, + 13045, + 13046, + 13047, + 13048, + 13049, + 13050, + 13051, + 13052, + 13053, + 13054, + 13055, + 13056, + 13057, + 13058, + 13059, + 13060, + 13061, + 13062, + 13063, + 13064, + 13065, + 13066, + 13067, + 13068, + 13069, + 13070, + 13071, + 13072, + 13073, + 13074, + 13075, + 13076, + 13077, + 13078, + 13079, + 13080, + 13081, + 13082, + 13083, + 13084, + 13085, + 13086, + 13087, + 13088, + 13089, + 13090, + 13091, + 13092, + 13093, + 13094, + 13095, + 13096, + 13097, + 13098, + 13099, + 13100, + 13101, + 13102, + 13103, + 13104, + 13105, + 13106, + 13107, + 13108, + 13109, + 13110, + 13111, + 13112, + 13113, + 13114, + 13115, + 13116, + 13117, + 13118, + 13119, + 13120, + 13121, + 13122, + 13123, + 13124, + 13125, + 13126, + 13127, + 13128, + 13129, + 13130, + 13131, + 13132, + 13133, + 13134, + 13135, + 13136, + 13137, + 13138, + 13139, + 13140, + 13141, + 13142, + 13143, + 13144, + 13145, + 13146, + 13147, + 13148, + 13149, + 13150, + 13151, + 13152, + 13153, + 13154, + 13155, + 13156, + 13157, + 13158, + 13159, + 13160, + 13161, + 13162, + 13163, + 13164, + 13165, + 13166, + 13167, + 13168, + 13169, + 13170, + 13171, + 13172, + 13173, + 13174, + 13175, + 13176, + 13177, + 13178, + 13179, + 13180, + 13181, + 13182, + 13183, + 13184, + 13185, + 13186, + 13187, + 13188, + 13189, + 13190, + 13191, + 13192, + 13193, + 13194, + 13195, + 13196, + 13197, + 13198, + 13199, + 13200, + 13201, + 13202, + 13203, + 13204, + 13205, + 13206, + 13207, + 13208, + 13209, + 13210, + 13211, + 13212, + 13213, + 13214, + 13215, + 13216, + 13217, + 13218, + 13219, + 13220, + 13221, + 13222, + 13223, + 13224, + 13225, + 13226, + 13227, + 13228, + 13229, + 13230, + 13231, + 13232, + 13233, + 13234, + 13235, + 13236, + 13237, + 13238, + 13239, + 13240, + 13241, + 13242, + 13243, + 13244, + 13245, + 13246, + 13247, + 13248, + 13249, + 13250, + 13251, + 13252, + 13253, + 13254, + 13255, + 13256, + 13257, + 13258, + 13259, + 13260, + 13261, + 13262, + 13263, + 13264, + 13265, + 13266, + 13267, + 13268, + 13269, + 13270, + 13271, + 13272, + 13273, + 13274, + 13275, + 13276, + 13277, + 13278, + 13279, + 13280, + 13281, + 13282, + 13283, + 13284, + 13285, + 13286, + 13287, + 13288, + 13289, + 13290, + 13291, + 13292, + 13293, + 13294, + 13295, + 13296, + 13297, + 13298, + 13299, + 13300, + 13301, + 13302, + 13303, + 13304, + 13305, + 13306, + 13307, + 13308, + 13309, + 13310, + 13311, + 13312, + 13313, + 13314, + 13315, + 13316, + 13317, + 13318, + 13319, + 13320, + 13321, + 13322, + 13323, + 13324, + 13325, + 13326, + 13327, + 13328, + 13329, + 13330, + 13331, + 13332, + 13333, + 13334, + 13335, + 13336, + 13337, + 13338, + 13339, + 13340, + 13341, + 13342, + 13343, + 13344, + 13345, + 13346, + 13347, + 13348, + 13349, + 13350, + 13351, + 13352, + 13353, + 13354, + 13355, + 13356, + 13357, + 13358, + 13359, + 13360, + 13361, + 13362, + 13363, + 13364, + 13365, + 13366, + 13367, + 13368, + 13369, + 13370, + 13371, + 13372, + 13373, + 13374, + 13375, + 13376, + 13377, + 13378, + 13379, + 13380, + 13381, + 13382, + 13383, + 13384, + 13385, + 13386, + 13387, + 13388, + 13389, + 13390, + 13391, + 13392, + 13393, + 13394, + 13395, + 13396, + 13397, + 13398, + 13399, + 13400, + 13401, + 13402, + 13403, + 13404, + 13405, + 13406, + 13407, + 13408, + 13409, + 13410, + 13411, + 13412, + 13413, + 13414, + 13415, + 13416, + 13417, + 13418, + 13419, + 13420, + 13421, + 13422, + 13423, + 13424, + 13425, + 13426, + 13427, + 13428, + 13429, + 13430, + 13431, + 13432, + 13433, + 13434, + 13435, + 13436, + 13437, + 13438, + 13439, + 13440, + 13441, + 13442, + 13443, + 13444, + 13445, + 13446, + 13447, + 13448, + 13449, + 13450, + 13451, + 13452, + 13453, + 13454, + 13455, + 13456, + 13457, + 13458, + 13459, + 13460, + 13461, + 13462, + 13463, + 13464, + 13465, + 13466, + 13467, + 13468, + 13469, + 13470, + 13471, + 13472, + 13473, + 13474, + 13475, + 13476, + 13477, + 13478, + 13479, + 13480, + 13481, + 13482, + 13483, + 13484, + 13485, + 13486, + 13487, + 13488, + 13489, + 13490, + 13491, + 13492, + 13493, + 13494, + 13495, + 13496, + 13497, + 13498, + 13499, + 13500, + 13501, + 13502, + 13503, + 13504, + 13505, + 13506, + 13507, + 13508, + 13509, + 13510, + 13511, + 13512, + 13513, + 13514, + 13515, + 13516, + 13517, + 13518, + 13519, + 13520, + 13521, + 13522, + 13523, + 13524, + 13525, + 13526, + 13527, + 13528, + 13529, + 13530, + 13531, + 13532, + 13533, + 13534, + 13535, + 13536, + 13537, + 13538, + 13539, + 13540, + 13541, + 13542, + 13543, + 13544, + 13545, + 13546, + 13547, + 13548, + 13549, + 13550, + 13551, + 13552, + 13553, + 13554, + 13555, + 13556, + 13557, + 13558, + 13559, + 13560, + 13561, + 13562, + 13563, + 13564, + 13565, + 13566, + 13567, + 13568, + 13569, + 13570, + 13571, + 13572, + 13573, + 13574, + 13575, + 13576, + 13577, + 13578, + 13579, + 13580, + 13581, + 13582, + 13583, + 13584, + 13585, + 13586, + 13587, + 13588, + 13589, + 13590, + 13591, + 13592, + 13593, + 13594, + 13595, + 13596, + 13597, + 13598, + 13599, + 13600, + 13601, + 13602, + 13603, + 13604, + 13605, + 13606, + 13607, + 13608, + 13609, + 13610, + 13611, + 13612, + 13613, + 13614, + 13615, + 13616, + 13617, + 13618, + 13619, + 13620, + 13621, + 13622, + 13623, + 13624, + 13625, + 13626, + 13627, + 13628, + 13629, + 13630, + 13631, + 13632, + 13633, + 13634, + 13635, + 13636, + 13637, + 13638, + 13639, + 13640, + 13641, + 13642, + 13643, + 13644, + 13645, + 13646, + 13647, + 13648, + 13649, + 13650, + 13651, + 13652, + 13653, + 13654, + 13655, + 13656, + 13657, + 13658, + 13659, + 13660, + 13661, + 13662, + 13663, + 13664, + 13665, + 13666, + 13667, + 13668, + 13669, + 13670, + 13671, + 13672, + 13673, + 13674, + 13675, + 13676, + 13677, + 13678, + 13679, + 13680, + 13681, + 13682, + 13683, + 13684, + 13685, + 13686, + 13687, + 13688, + 13689, + 13690, + 13691, + 13692, + 13693, + 13694, + 13695, + 13696, + 13697, + 13698, + 13699, + 13700, + 13701, + 13702, + 13703, + 13704, + 13705, + 13706, + 13707, + 13708, + 13709, + 13710, + 13711, + 13712, + 13713, + 13714, + 13715, + 13716, + 13717, + 13718, + 13719, + 13720, + 13721, + 13722, + 13723, + 13724, + 13725, + 13726, + 13727, + 13728, + 13729, + 13730, + 13731, + 13732, + 13733, + 13734, + 13735, + 13736, + 13737, + 13738, + 13739, + 13740, + 13741, + 13742, + 13743, + 13744, + 13745, + 13746, + 13747, + 13748, + 13749, + 13750, + 13751, + 13752, + 13753, + 13754, + 13755, + 13756, + 13757, + 13758, + 13759, + 13760, + 13761, + 13762, + 13763, + 13764, + 13765, + 13766, + 13767, + 13768, + 13769, + 13770, + 13771, + 13772, + 13773, + 13774, + 13775, + 13776, + 13777, + 13778, + 13779, + 13780, + 13781, + 13782, + 13783, + 13784, + 13785, + 13786, + 13787, + 13788, + 13789, + 13790, + 13791, + 13792, + 13793, + 13794, + 13795, + 13796, + 13797, + 13798, + 13799, + 13800, + 13801, + 13802, + 13803, + 13804, + 13805, + 13806, + 13807, + 13808, + 13809, + 13810, + 13811, + 13812, + 13813, + 13814, + 13815, + 13816, + 13817, + 13818, + 13819, + 13820, + 13821, + 13822, + 13823, + 13824, + 13825, + 13826, + 13827, + 13828, + 13829, + 13830, + 13831, + 13832, + 13833, + 13834, + 13835, + 13836, + 13837, + 13838, + 13839, + 13840, + 13841, + 13842, + 13843, + 13844, + 13845, + 13846, + 13847, + 13848, + 13849, + 13850, + 13851, + 13852, + 13853, + 13854, + 13855, + 13856, + 13857, + 13858, + 13859, + 13860, + 13861, + 13862, + 13863, + 13864, + 13865, + 13866, + 13867, + 13868, + 13869, + 13870, + 13871, + 13872, + 13873, + 13874, + 13875, + 13876, + 13877, + 13878, + 13879, + 13880, + 13881, + 13882, + 13883, + 13884, + 13885, + 13886, + 13887, + 13888, + 13889, + 13890, + 13891, + 13892, + 13893, + 13894, + 13895, + 13896, + 13897, + 13898, + 13899, + 13900, + 13901, + 13902, + 13903, + 13904, + 13905, + 13906, + 13907, + 13908, + 13909, + 13910, + 13911, + 13912, + 13913, + 13914, + 13915, + 13916, + 13917, + 13918, + 13919, + 13920, + 13921, + 13922, + 13923, + 13924, + 13925, + 13926, + 13927, + 13928, + 13929, + 13930, + 13931, + 13932, + 13933, + 13934, + 13935, + 13936, + 13937, + 13938, + 13939, + 13940, + 13941, + 13942, + 13943, + 13944, + 13945, + 13946, + 13947, + 13948, + 13949, + 13950, + 13951, + 13952, + 13953, + 13954, + 13955, + 13956, + 13957, + 13958, + 13959, + 13960, + 13961, + 13962, + 13963, + 13964, + 13965, + 13966, + 13967, + 13968, + 13969, + 13970, + 13971, + 13972, + 13973, + 13974, + 13975, + 13976, + 13977, + 13978, + 13979, + 13980, + 13981, + 13982, + 13983, + 13984, + 13985, + 13986, + 13987, + 13988, + 13989, + 13990, + 13991, + 13992, + 13993, + 13994, + 13995, + 13996, + 13997, + 13998, + 13999, + 14000, + 14001, + 14002, + 14003, + 14004, + 14005, + 14006, + 14007, + 14008, + 14009, + 14010, + 14011, + 14012, + 14013, + 14014, + 14015, + 14016, + 14017, + 14018, + 14019, + 14020, + 14021, + 14022, + 14023, + 14024, + 14025, + 14026, + 14027, + 14028, + 14029, + 14030, + 14031, + 14032, + 14033, + 14034, + 14035, + 14036, + 14037, + 14038, + 14039, + 14040, + 14041, + 14042, + 14043, + 14044, + 14045, + 14046, + 14047, + 14048, + 14049, + 14050, + 14051, + 14052, + 14053, + 14054, + 14055, + 14056, + 14057, + 14058, + 14059, + 14060, + 14061, + 14062, + 14063, + 14064, + 14065, + 14066, + 14067, + 14068, + 14069, + 14070, + 14071, + 14072, + 14073, + 14074, + 14075, + 14076, + 14077, + 14078, + 14079, + 14080, + 14081, + 14082, + 14083, + 14084, + 14085, + 14086, + 14087, + 14088, + 14089, + 14090, + 14091, + 14092, + 14093, + 14094, + 14095, + 14096, + 14097, + 14098, + 14099, + 14100, + 14101, + 14102, + 14103, + 14104, + 14105, + 14106, + 14107, + 14108, + 14109, + 14110, + 14111, + 14112, + 14113, + 14114, + 14115, + 14116, + 14117, + 14118, + 14119, + 14120, + 14121, + 14122, + 14123, + 14124, + 14125, + 14126, + 14127, + 14128, + 14129, + 14130, + 14131, + 14132, + 14133, + 14134, + 14135, + 14136, + 14137, + 14138, + 14139, + 14140, + 14141, + 14142, + 14143, + 14144, + 14145, + 14146, + 14147, + 14148, + 14149, + 14150, + 14151, + 14152, + 14153, + 14154, + 14155, + 14156, + 14157, + 14158, + 14159, + 14160, + 14161, + 14162, + 14163, + 14164, + 14165, + 14166, + 14167, + 14168, + 14169, + 14170, + 14171, + 14172, + 14173, + 14174, + 14175, + 14176, + 14177, + 14178, + 14179, + 14180, + 14181, + 14182, + 14183, + 14184, + 14185, + 14186, + 14187, + 14188, + 14189, + 14190, + 14191, + 14192, + 14193, + 14194, + 14195, + 14196, + 14197, + 14198, + 14199, + 14200, + 14201, + 14202, + 14203, + 14204, + 14205, + 14206, + 14207, + 14208, + 14209, + 14210, + 14211, + 14212, + 14213, + 14214, + 14215, + 14216, + 14217, + 14218, + 14219, + 14220, + 14221, + 14222, + 14223, + 14224, + 14225, + 14226, + 14227, + 14228, + 14229, + 14230, + 14231, + 14232, + 14233, + 14234, + 14235, + 14236, + 14237, + 14238, + 14239, + 14240, + 14241, + 14242, + 14243, + 14244, + 14245, + 14246, + 14247, + 14248, + 14249, + 14250, + 14251, + 14252, + 14253, + 14254, + 14255, + 14256, + 14257, + 14258, + 14259, + 14260, + 14261, + 14262, + 14263, + 14264, + 14265, + 14266, + 14267, + 14268, + 14269, + 14270, + 14271, + 14272, + 14273, + 14274, + 14275, + 14276, + 14277, + 14278, + 14279, + 14280, + 14281, + 14282, + 14283, + 14284, + 14285, + 14286, + 14287, + 14288, + 14289, + 14290, + 14291, + 14292, + 14293, + 14294, + 14295, + 14296, + 14297, + 14298, + 14299, + 14300, + 14301, + 14302, + 14303, + 14304, + 14305, + 14306, + 14307, + 14308, + 14309, + 14310, + 14311, + 14312, + 14313, + 14314, + 14315, + 14316, + 14317, + 14318, + 14319, + 14320, + 14321, + 14322, + 14323, + 14324, + 14325, + 14326, + 14327, + 14328, + 14329, + 14330, + 14331, + 14332, + 14333, + 14334, + 14335, + 14336, + 14337, + 14338, + 14339, + 14340, + 14341, + 14342, + 14343, + 14344, + 14345, + 14346, + 14347, + 14348, + 14349, + 14350, + 14351, + 14352, + 14353, + 14354, + 14355, + 14356, + 14357, + 14358, + 14359, + 14360, + 14361, + 14362, + 14363, + 14364, + 14365, + 14366, + 14367, + 14368, + 14369, + 14370, + 14371, + 14372, + 14373, + 14374, + 14375, + 14376, + 14377, + 14378, + 14379, + 14380, + 14381, + 14382, + 14383, + 14384, + 14385, + 14386, + 14387, + 14388, + 14389, + 14390, + 14391, + 14392, + 14393, + 14394, + 14395, + 14396, + 14397, + 14398, + 14399, + 14400, + 14401, + 14402, + 14403, + 14404, + 14405, + 14406, + 14407, + 14408, + 14409, + 14410, + 14411, + 14412, + 14413, + 14414, + 14415, + 14416, + 14417, + 14418, + 14419, + 14420, + 14421, + 14422, + 14423, + 14424, + 14425, + 14426, + 14427, + 14428, + 14429, + 14430, + 14431, + 14432, + 14433, + 14434, + 14435, + 14436, + 14437, + 14438, + 14439, + 14440, + 14441, + 14442, + 14443, + 14444, + 14445, + 14446, + 14447, + 14448, + 14449, + 14450, + 14451, + 14452, + 14453, + 14454, + 14455, + 14456, + 14457, + 14458, + 14459, + 14460, + 14461, + 14462, + 14463, + 14464, + 14465, + 14466, + 14467, + 14468, + 14469, + 14470, + 14471, + 14472, + 14473, + 14474, + 14475, + 14476, + 14477, + 14478, + 14479, + 14480, + 14481, + 14482, + 14483, + 14484, + 14485, + 14486, + 14487, + 14488, + 14489, + 14490, + 14491, + 14492, + 14493, + 14494, + 14495, + 14496, + 14497, + 14498, + 14499, + 14500, + 14501, + 14502, + 14503, + 14504, + 14505, + 14506, + 14507, + 14508, + 14509, + 14510, + 14511, + 14512, + 14513, + 14514, + 14515, + 14516, + 14517, + 14518, + 14519, + 14520, + 14521, + 14522, + 14523, + 14524, + 14525, + 14526, + 14527, + 14528, + 14529, + 14530, + 14531, + 14532, + 14533, + 14534, + 14535, + 14536, + 14537, + 14538, + 14539, + 14540, + 14541, + 14542, + 14543, + 14544, + 14545, + 14546, + 14547, + 14548, + 14549, + 14550, + 14551, + 14552, + 14553, + 14554, + 14555, + 14556, + 14557, + 14558, + 14559, + 14560, + 14561, + 14562, + 14563, + 14564, + 14565, + 14566, + 14567, + 14568, + 14569, + 14570, + 14571, + 14572, + 14573, + 14574, + 14575, + 14576, + 14577, + 14578, + 14579, + 14580, + 14581, + 14582, + 14583, + 14584, + 14585, + 14586, + 14587, + 14588, + 14589, + 14590, + 14591, + 14592, + 14593, + 14594, + 14595, + 14596, + 14597, + 14598, + 14599, + 14600, + 14601, + 14602, + 14603, + 14604, + 14605, + 14606, + 14607, + 14608, + 14609, + 14610, + 14611, + 14612, + 14613, + 14614, + 14615, + 14616, + 14617, + 14618, + 14619, + 14620, + 14621, + 14622, + 14623, + 14624, + 14625, + 14626, + 14627, + 14628, + 14629, + 14630, + 14631, + 14632, + 14633, + 14634, + 14635, + 14636, + 14637, + 14638, + 14639, + 14640, + 14641, + 14642, + 14643, + 14644, + 14645, + 14646, + 14647, + 14648, + 14649, + 14650, + 14651, + 14652, + 14653, + 14654, + 14655, + 14656, + 14657, + 14658, + 14659, + 14660, + 14661, + 14662, + 14663, + 14664, + 14665, + 14666, + 14667, + 14668, + 14669, + 14670, + 14671, + 14672, + 14673, + 14674, + 14675, + 14676, + 14677, + 14678, + 14679, + 14680, + 14681, + 14682, + 14683, + 14684, + 14685, + 14686, + 14687, + 14688, + 14689, + 14690, + 14691, + 14692, + 14693, + 14694, + 14695, + 14696, + 14697, + 14698, + 14699, + 14700, + 14701, + 14702, + 14703, + 14704, + 14705, + 14706, + 14707, + 14708, + 14709, + 14710, + 14711, + 14712, + 14713, + 14714, + 14715, + 14716, + 14717, + 14718, + 14719, + 14720, + 14721, + 14722, + 14723, + 14724, + 14725, + 14726, + 14727, + 14728, + 14729, + 14730, + 14731, + 14732, + 14733, + 14734, + 14735, + 14736, + 14737, + 14738, + 14739, + 14740, + 14741, + 14742, + 14743, + 14744, + 14745, + 14746, + 14747, + 14748, + 14749, + 14750, + 14751, + 14752, + 14753, + 14754, + 14755, + 14756, + 14757, + 14758, + 14759, + 14760, + 14761, + 14762, + 14763, + 14764, + 14765, + 14766, + 14767, + 14768, + 14769, + 14770, + 14771, + 14772, + 14773, + 14774, + 14775, + 14776, + 14777, + 14778, + 14779, + 14780, + 14781, + 14782, + 14783, + 14784, + 14785, + 14786, + 14787, + 14788, + 14789, + 14790, + 14791, + 14792, + 14793, + 14794, + 14795, + 14796, + 14797, + 14798, + 14799, + 14800, + 14801, + 14802, + 14803, + 14804, + 14805, + 14806, + 14807, + 14808, + 14809, + 14810, + 14811, + 14812, + 14813, + 14814, + 14815, + 14816, + 14817, + 14818, + 14819, + 14820, + 14821, + 14822, + 14823, + 14824, + 14825, + 14826, + 14827, + 14828, + 14829, + 14830, + 14831, + 14832, + 14833, + 14834, + 14835, + 14836, + 14837, + 14838, + 14839, + 14840, + 14841, + 14842, + 14843, + 14844, + 14845, + 14846, + 14847, + 14848, + 14849, + 14850, + 14851, + 14852, + 14853, + 14854, + 14855, + 14856, + 14857, + 14858, + 14859, + 14860, + 14861, + 14862, + 14863, + 14864, + 14865, + 14866, + 14867, + 14868, + 14869, + 14870, + 14871, + 14872, + 14873, + 14874, + 14875, + 14876, + 14877, + 14878, + 14879, + 14880, + 14881, + 14882, + 14883, + 14884, + 14885, + 14886, + 14887, + 14888, + 14889, + 14890, + 14891, + 14892, + 14893, + 14894, + 14895, + 14896, + 14897, + 14898, + 14899, + 14900, + 14901, + 14902, + 14903, + 14904, + 14905, + 14906, + 14907, + 14908, + 14909, + 14910, + 14911, + 14912, + 14913, + 14914, + 14915, + 14916, + 14917, + 14918, + 14919, + 14920, + 14921, + 14922, + 14923, + 14924, + 14925, + 14926, + 14927, + 14928, + 14929, + 14930, + 14931, + 14932, + 14933, + 14934, + 14935, + 14936, + 14937, + 14938, + 14939, + 14940, + 14941, + 14942, + 14943, + 14944, + 14945, + 14946, + 14947, + 14948, + 14949, + 14950, + 14951, + 14952, + 14953, + 14954, + 14955, + 14956, + 14957, + 14958, + 14959, + 14960, + 14961, + 14962, + 14963, + 14964, + 14965, + 14966, + 14967, + 14968, + 14969, + 14970, + 14971, + 14972, + 14973, + 14974, + 14975, + 14976, + 14977, + 14978, + 14979, + 14980, + 14981, + 14982, + 14983, + 14984, + 14985, + 14986, + 14987, + 14988, + 14989, + 14990, + 14991, + 14992, + 14993, + 14994, + 14995, + 14996, + 14997, + 14998, + 14999, + 15000, + 15001, + 15002, + 15003, + 15004, + 15005, + 15006, + 15007, + 15008, + 15009, + 15010, + 15011, + 15012, + 15013, + 15014, + 15015, + 15016, + 15017, + 15018, + 15019, + 15020, + 15021, + 15022, + 15023, + 15024, + 15025, + 15026, + 15027, + 15028, + 15029, + 15030, + 15031, + 15032, + 15033, + 15034, + 15035, + 15036, + 15037, + 15038, + 15039, + 15040, + 15041, + 15042, + 15043, + 15044, + 15045, + 15046, + 15047, + 15048, + 15049, + 15050, + 15051, + 15052, + 15053, + 15054, + 15055, + 15056, + 15057, + 15058, + 15059, + 15060, + 15061, + 15062, + 15063, + 15064, + 15065, + 15066, + 15067, + 15068, + 15069, + 15070, + 15071, + 15072, + 15073, + 15074, + 15075, + 15076, + 15077, + 15078, + 15079, + 15080, + 15081, + 15082, + 15083, + 15084, + 15085, + 15086, + 15087, + 15088, + 15089, + 15090, + 15091, + 15092, + 15093, + 15094, + 15095, + 15096, + 15097, + 15098, + 15099, + 15100, + 15101, + 15102, + 15103, + 15104, + 15105, + 15106, + 15107, + 15108, + 15109, + 15110, + 15111, + 15112, + 15113, + 15114, + 15115, + 15116, + 15117, + 15118, + 15119, + 15120, + 15121, + 15122, + 15123, + 15124, + 15125, + 15126, + 15127, + 15128, + 15129, + 15130, + 15131, + 15132, + 15133, + 15134, + 15135, + 15136, + 15137, + 15138, + 15139, + 15140, + 15141, + 15142, + 15143, + 15144, + 15145, + 15146, + 15147, + 15148, + 15149, + 15150, + 15151, + 15152, + 15153, + 15154, + 15155, + 15156, + 15157, + 15158, + 15159, + 15160, + 15161, + 15162, + 15163, + 15164, + 15165, + 15166, + 15167, + 15168, + 15169, + 15170, + 15171, + 15172, + 15173, + 15174, + 15175, + 15176, + 15177, + 15178, + 15179, + 15180, + 15181, + 15182, + 15183, + 15184, + 15185, + 15186, + 15187, + 15188, + 15189, + 15190, + 15191, + 15192, + 15193, + 15194, + 15195, + 15196, + 15197, + 15198, + 15199, + 15200, + 15201, + 15202, + 15203, + 15204, + 15205, + 15206, + 15207, + 15208, + 15209, + 15210, + 15211, + 15212, + 15213, + 15214, + 15215, + 15216, + 15217, + 15218, + 15219, + 15220, + 15221, + 15222, + 15223, + 15224, + 15225, + 15226, + 15227, + 15228, + 15229, + 15230, + 15231, + 15232, + 15233, + 15234, + 15235, + 15236, + 15237, + 15238, + 15239, + 15240, + 15241, + 15242, + 15243, + 15244, + 15245, + 15246, + 15247, + 15248, + 15249, + 15250, + 15251, + 15252, + 15253, + 15254, + 15255, + 15256, + 15257, + 15258, + 15259, + 15260, + 15261, + 15262, + 15263, + 15264, + 15265, + 15266, + 15267, + 15268, + 15269, + 15270, + 15271, + 15272, + 15273, + 15274, + 15275, + 15276, + 15277, + 15278, + 15279, + 15280, + 15281, + 15282, + 15283, + 15284, + 15285, + 15286, + 15287, + 15288, + 15289, + 15290, + 15291, + 15292, + 15293, + 15294, + 15295, + 15296, + 15297, + 15298, + 15299, + 15300, + 15301, + 15302, + 15303, + 15304, + 15305, + 15306, + 15307, + 15308, + 15309, + 15310, + 15311, + 15312, + 15313, + 15314, + 15315, + 15316, + 15317, + 15318, + 15319, + 15320, + 15321, + 15322, + 15323, + 15324, + 15325, + 15326, + 15327, + 15328, + 15329, + 15330, + 15331, + 15332, + 15333, + 15334, + 15335, + 15336, + 15337, + 15338, + 15339, + 15340, + 15341, + 15342, + 15343, + 15344, + 15345, + 15346, + 15347, + 15348, + 15349, + 15350, + 15351, + 15352, + 15353, + 15354, + 15355, + 15356, + 15357, + 15358, + 15359, + 15360, + 15361, + 15362, + 15363, + 15364, + 15365, + 15366, + 15367, + 15368, + 15369, + 15370, + 15371, + 15372, + 15373, + 15374, + 15375, + 15376, + 15377, + 15378, + 15379, + 15380, + 15381, + 15382, + 15383, + 15384, + 15385, + 15386, + 15387, + 15388, + 15389, + 15390, + 15391, + 15392, + 15393, + 15394, + 15395, + 15396, + 15397, + 15398, + 15399, + 15400, + 15401, + 15402, + 15403, + 15404, + 15405, + 15406, + 15407, + 15408, + 15409, + 15410, + 15411, + 15412, + 15413, + 15414, + 15415, + 15416, + 15417, + 15418, + 15419, + 15420, + 15421, + 15422, + 15423, + 15424, + 15425, + 15426, + 15427, + 15428, + 15429, + 15430, + 15431, + 15432, + 15433, + 15434, + 15435, + 15436, + 15437, + 15438, + 15439, + 15440, + 15441, + 15442, + 15443, + 15444, + 15445, + 15446, + 15447, + 15448, + 15449, + 15450, + 15451, + 15452, + 15453, + 15454, + 15455, + 15456, + 15457, + 15458, + 15459, + 15460, + 15461, + 15462, + 15463, + 15464, + 15465, + 15466, + 15467, + 15468, + 15469, + 15470, + 15471, + 15472, + 15473, + 15474, + 15475, + 15476, + 15477, + 15478, + 15479, + 15480, + 15481, + 15482, + 15483, + 15484, + 15485, + 15486, + 15487, + 15488, + 15489, + 15490, + 15491, + 15492, + 15493, + 15494, + 15495, + 15496, + 15497, + 15498, + 15499, + 15500, + 15501, + 15502, + 15503, + 15504, + 15505, + 15506, + 15507, + 15508, + 15509, + 15510, + 15511, + 15512, + 15513, + 15514, + 15515, + 15516, + 15517, + 15518, + 15519, + 15520, + 15521, + 15522, + 15523, + 15524, + 15525, + 15526, + 15527, + 15528, + 15529, + 15530, + 15531, + 15532, + 15533, + 15534, + 15535, + 15536, + 15537, + 15538, + 15539, + 15540, + 15541, + 15542, + 15543, + 15544, + 15545, + 15546, + 15547, + 15548, + 15549, + 15550, + 15551, + 15552, + 15553, + 15554, + 15555, + 15556, + 15557, + 15558, + 15559, + 15560, + 15561, + 15562, + 15563, + 15564, + 15565, + 15566, + 15567, + 15568, + 15569, + 15570, + 15571, + 15572, + 15573, + 15574, + 15575, + 15576, + 15577, + 15578, + 15579, + 15580, + 15581, + 15582, + 15583, + 15584, + 15585, + 15586, + 15587, + 15588, + 15589, + 15590, + 15591, + 15592, + 15593, + 15594, + 15595, + 15596, + 15597, + 15598, + 15599, + 15600, + 15601, + 15602, + 15603, + 15604, + 15605, + 15606, + 15607, + 15608, + 15609, + 15610, + 15611, + 15612, + 15613, + 15614, + 15615, + 15616, + 15617, + 15618, + 15619, + 15620, + 15621, + 15622, + 15623, + 15624, + 15625, + 15626, + 15627, + 15628, + 15629, + 15630, + 15631, + 15632, + 15633, + 15634, + 15635, + 15636, + 15637, + 15638, + 15639, + 15640, + 15641, + 15642, + 15643, + 15644, + 15645, + 15646, + 15647, + 15648, + 15649, + 15650, + 15651, + 15652, + 15653, + 15654, + 15655, + 15656, + 15657, + 15658, + 15659, + 15660, + 15661, + 15662, + 15663, + 15664, + 15665, + 15666, + 15667, + 15668, + 15669, + 15670, + 15671, + 15672, + 15673, + 15674, + 15675, + 15676, + 15677, + 15678, + 15679, + 15680, + 15681, + 15682, + 15683, + 15684, + 15685, + 15686, + 15687, + 15688, + 15689, + 15690, + 15691, + 15692, + 15693, + 15694, + 15695, + 15696, + 15697, + 15698, + 15699, + 15700, + 15701, + 15702, + 15703, + 15704, + 15705, + 15706, + 15707, + 15708, + 15709, + 15710, + 15711, + 15712, + 15713, + 15714, + 15715, + 15716, + 15717, + 15718, + 15719, + 15720, + 15721, + 15722, + 15723, + 15724, + 15725, + 15726, + 15727, + 15728, + 15729, + 15730, + 15731, + 15732, + 15733, + 15734, + 15735, + 15736, + 15737, + 15738, + 15739, + 15740, + 15741, + 15742, + 15743, + 15744, + 15745, + 15746, + 15747, + 15748, + 15749, + 15750, + 15751, + 15752, + 15753, + 15754, + 15755, + 15756, + 15757, + 15758, + 15759, + 15760, + 15761, + 15762, + 15763, + 15764, + 15765, + 15766, + 15767, + 15768, + 15769, + 15770, + 15771, + 15772, + 15773, + 15774, + 15775, + 15776, + 15777, + 15778, + 15779, + 15780, + 15781, + 15782, + 15783, + 15784, + 15785, + 15786, + 15787, + 15788, + 15789, + 15790, + 15791, + 15792, + 15793, + 15794, + 15795, + 15796, + 15797, + 15798, + 15799, + 15800, + 15801, + 15802, + 15803, + 15804, + 15805, + 15806, + 15807, + 15808, + 15809, + 15810, + 15811, + 15812, + 15813, + 15814, + 15815, + 15816, + 15817, + 15818, + 15819, + 15820, + 15821, + 15822, + 15823, + 15824, + 15825, + 15826, + 15827, + 15828, + 15829, + 15830, + 15831, + 15832, + 15833, + 15834, + 15835, + 15836, + 15837, + 15838, + 15839, + 15840, + 15841, + 15842, + 15843, + 15844, + 15845, + 15846, + 15847, + 15848, + 15849, + 15850, + 15851, + 15852, + 15853, + 15854, + 15855, + 15856, + 15857, + 15858, + 15859, + 15860, + 15861, + 15862, + 15863, + 15864, + 15865, + 15866, + 15867, + 15868, + 15869, + 15870, + 15871, + 15872, + 15873, + 15874, + 15875, + 15876, + 15877, + 15878, + 15879, + 15880, + 15881, + 15882, + 15883, + 15884, + 15885, + 15886, + 15887, + 15888, + 15889, + 15890, + 15891, + 15892, + 15893, + 15894, + 15895, + 15896, + 15897, + 15898, + 15899, + 15900, + 15901, + 15902, + 15903, + 15904, + 15905, + 15906, + 15907, + 15908, + 15909, + 15910, + 15911, + 15912, + 15913, + 15914, + 15915, + 15916, + 15917, + 15918, + 15919, + 15920, + 15921, + 15922, + 15923, + 15924, + 15925, + 15926, + 15927, + 15928, + 15929, + 15930, + 15931, + 15932, + 15933, + 15934, + 15935, + 15936, + 15937, + 15938, + 15939, + 15940, + 15941, + 15942, + 15943, + 15944, + 15945, + 15946, + 15947, + 15948, + 15949, + 15950, + 15951, + 15952, + 15953, + 15954, + 15955, + 15956, + 15957, + 15958, + 15959, + 15960, + 15961, + 15962, + 15963, + 15964, + 15965, + 15966, + 15967, + 15968, + 15969, + 15970, + 15971, + 15972, + 15973, + 15974, + 15975, + 15976, + 15977, + 15978, + 15979, + 15980, + 15981, + 15982, + 15983, + 15984, + 15985, + 15986, + 15987, + 15988, + 15989, + 15990, + 15991, + 15992, + 15993, + 15994, + 15995, + 15996, + 15997, + 15998, + 15999, + 16000, + 16001, + 16002, + 16003, + 16004, + 16005, + 16006, + 16007, + 16008, + 16009, + 16010, + 16011, + 16012, + 16013, + 16014, + 16015, + 16016, + 16017, + 16018, + 16019, + 16020, + 16021, + 16022, + 16023, + 16024, + 16025, + 16026, + 16027, + 16028, + 16029, + 16030, + 16031, + 16032, + 16033, + 16034, + 16035, + 16036, + 16037, + 16038, + 16039, + 16040, + 16041, + 16042, + 16043, + 16044, + 16045, + 16046, + 16047, + 16048, + 16049, + 16050, + 16051, + 16052, + 16053, + 16054, + 16055, + 16056, + 16057, + 16058, + 16059, + 16060, + 16061, + 16062, + 16063, + 16064, + 16065, + 16066, + 16067, + 16068, + 16069, + 16070, + 16071, + 16072, + 16073, + 16074, + 16075, + 16076, + 16077, + 16078, + 16079, + 16080, + 16081, + 16082, + 16083, + 16084, + 16085, + 16086, + 16087, + 16088, + 16089, + 16090, + 16091, + 16092, + 16093, + 16094, + 16095, + 16096, + 16097, + 16098, + 16099, + 16100, + 16101, + 16102, + 16103, + 16104, + 16105, + 16106, + 16107, + 16108, + 16109, + 16110, + 16111, + 16112, + 16113, + 16114, + 16115, + 16116, + 16117, + 16118, + 16119, + 16120, + 16121, + 16122, + 16123, + 16124, + 16125, + 16126, + 16127, + 16128, + 16129, + 16130, + 16131, + 16132, + 16133, + 16134, + 16135, + 16136, + 16137, + 16138, + 16139, + 16140, + 16141, + 16142, + 16143, + 16144, + 16145, + 16146, + 16147, + 16148, + 16149, + 16150, + 16151, + 16152, + 16153, + 16154, + 16155, + 16156, + 16157, + 16158, + 16159, + 16160, + 16161, + 16162, + 16163, + 16164, + 16165, + 16166, + 16167, + 16168, + 16169, + 16170, + 16171, + 16172, + 16173, + 16174, + 16175, + 16176, + 16177, + 16178, + 16179, + 16180, + 16181, + 16182, + 16183, + 16184, + 16185, + 16186, + 16187, + 16188, + 16189, + 16190, + 16191, + 16192, + 16193, + 16194, + 16195, + 16196, + 16197, + 16198, + 16199, + 16200, + 16201, + 16202, + 16203, + 16204, + 16205, + 16206, + 16207, + 16208, + 16209, + 16210, + 16211, + 16212, + 16213, + 16214, + 16215, + 16216, + 16217, + 16218, + 16219, + 16220, + 16221, + 16222, + 16223, + 16224, + 16225, + 16226, + 16227, + 16228, + 16229, + 16230, + 16231, + 16232, + 16233, + 16234, + 16235, + 16236, + 16237, + 16238, + 16239, + 16240, + 16241, + 16242, + 16243, + 16244, + 16245, + 16246, + 16247, + 16248, + 16249, + 16250, + 16251, + 16252, + 16253, + 16254, + 16255, + 16256, + 16257, + 16258, + 16259, + 16260, + 16261, + 16262, + 16263, + 16264, + 16265, + 16266, + 16267, + 16268, + 16269, + 16270, + 16271, + 16272, + 16273, + 16274, + 16275, + 16276, + 16277, + 16278, + 16279, + 16280, + 16281, + 16282, + 16283, + 16284, + 16285, + 16286, + 16287, + 16288, + 16289, + 16290, + 16291, + 16292, + 16293, + 16294, + 16295, + 16296, + 16297, + 16298, + 16299, + 16300, + 16301, + 16302, + 16303, + 16304, + 16305, + 16306, + 16307, + 16308, + 16309, + 16310, + 16311, + 16312, + 16313, + 16314, + 16315, + 16316, + 16317, + 16318, + 16319, + 16320, + 16321, + 16322, + 16323, + 16324, + 16325, + 16326, + 16327, + 16328, + 16329, + 16330, + 16331, + 16332, + 16333, + 16334, + 16335, + 16336, + 16337, + 16338, + 16339, + 16340, + 16341, + 16342, + 16343, + 16344, + 16345, + 16346, + 16347, + 16348, + 16349, + 16350, + 16351, + 16352, + 16353, + 16354, + 16355, + 16356, + 16357, + 16358, + 16359, + 16360, + 16361, + 16362, + 16363, + 16364, + 16365, + 16366, + 16367, + 16368, + 16369, + 16370, + 16371, + 16372, + 16373, + 16374, + 16375, + 16376, + 16377, + 16378, + 16379, + 16380, + 16381, + 16382, + 16383, + 16384, + 16385, + 16386, + 16387, + 16388, + 16389, + 16390, + 16391, + 16392, + 16393, + 16394, + 16395, + 16396, + 16397, + 16398, + 16399, + 16400, + 16401, + 16402, + 16403, + 16404, + 16405, + 16406, + 16407, + 16408, + 16409, + 16410, + 16411, + 16412, + 16413, + 16414, + 16415, + 16416, + 16417, + 16418, + 16419, + 16420, + 16421, + 16422, + 16423, + 16424, + 16425, + 16426, + 16427, + 16428, + 16429, + 16430, + 16431, + 16432, + 16433, + 16434, + 16435, + 16436, + 16437, + 16438, + 16439, + 16440, + 16441, + 16442, + 16443, + 16444, + 16445, + 16446, + 16447, + 16448, + 16449, + 16450, + 16451, + 16452, + 16453, + 16454, + 16455, + 16456, + 16457, + 16458, + 16459, + 16460, + 16461, + 16462, + 16463, + 16464, + 16465, + 16466, + 16467, + 16468, + 16469, + 16470, + 16471, + 16472, + 16473, + 16474, + 16475, + 16476, + 16477, + 16478, + 16479, + 16480, + 16481, + 16482, + 16483, + 16484, + 16485, + 16486, + 16487, + 16488, + 16489, + 16490, + 16491, + 16492, + 16493, + 16494, + 16495, + 16496, + 16497, + 16498, + 16499, + 16500, + 16501, + 16502, + 16503, + 16504, + 16505, + 16506, + 16507, + 16508, + 16509, + 16510, + 16511, + 16512, + 16513, + 16514, + 16515, + 16516, + 16517, + 16518, + 16519, + 16520, + 16521, + 16522, + 16523, + 16524, + 16525, + 16526, + 16527, + 16528, + 16529, + 16530, + 16531, + 16532, + 16533, + 16534, + 16535, + 16536, + 16537, + 16538, + 16539, + 16540, + 16541, + 16542, + 16543, + 16544, + 16545, + 16546, + 16547, + 16548, + 16549, + 16550, + 16551, + 16552, + 16553, + 16554, + 16555, + 16556, + 16557, + 16558, + 16559, + 16560, + 16561, + 16562, + 16563, + 16564, + 16565, + 16566, + 16567, + 16568, + 16569, + 16570, + 16571, + 16572, + 16573, + 16574, + 16575, + 16576, + 16577, + 16578, + 16579, + 16580, + 16581, + 16582, + 16583, + 16584, + 16585, + 16586, + 16587, + 16588, + 16589, + 16590, + 16591, + 16592, + 16593, + 16594, + 16595, + 16596, + 16597, + 16598, + 16599, + 16600, + 16601, + 16602, + 16603, + 16604, + 16605, + 16606, + 16607, + 16608, + 16609, + 16610, + 16611, + 16612, + 16613, + 16614, + 16615, + 16616, + 16617, + 16618, + 16619, + 16620, + 16621, + 16622, + 16623, + 16624, + 16625, + 16626, + 16627, + 16628, + 16629, + 16630, + 16631, + 16632, + 16633, + 16634, + 16635, + 16636, + 16637, + 16638, + 16639, + 16640, + 16641, + 16642, + 16643, + 16644, + 16645, + 16646, + 16647, + 16648, + 16649, + 16650, + 16651, + 16652, + 16653, + 16654, + 16655, + 16656, + 16657, + 16658, + 16659, + 16660, + 16661, + 16662, + 16663, + 16664, + 16665, + 16666, + 16667, + 16668, + 16669, + 16670, + 16671, + 16672, + 16673, + 16674, + 16675, + 16676, + 16677, + 16678, + 16679, + 16680, + 16681, + 16682, + 16683, + 16684, + 16685, + 16686, + 16687, + 16688, + 16689, + 16690, + 16691, + 16692, + 16693, + 16694, + 16695, + 16696, + 16697, + 16698, + 16699, + 16700, + 16701, + 16702, + 16703, + 16704, + 16705, + 16706, + 16707, + 16708, + 16709, + 16710, + 16711, + 16712, + 16713, + 16714, + 16715, + 16716, + 16717, + 16718, + 16719, + 16720, + 16721, + 16722, + 16723, + 16724, + 16725, + 16726, + 16727, + 16728, + 16729, + 16730, + 16731, + 16732, + 16733, + 16734, + 16735, + 16736, + 16737, + 16738, + 16739, + 16740, + 16741, + 16742, + 16743, + 16744, + 16745, + 16746, + 16747, + 16748, + 16749, + 16750, + 16751, + 16752, + 16753, + 16754, + 16755, + 16756, + 16757, + 16758, + 16759, + 16760, + 16761, + 16762, + 16763, + 16764, + 16765, + 16766, + 16767, + 16768, + 16769, + 16770, + 16771, + 16772, + 16773, + 16774, + 16775, + 16776, + 16777, + 16778, + 16779, + 16780, + 16781, + 16782, + 16783, + 16784, + 16785, + 16786, + 16787, + 16788, + 16789, + 16790, + 16791, + 16792, + 16793, + 16794, + 16795, + 16796, + 16797, + 16798, + 16799, + 16800, + 16801, + 16802, + 16803, + 16804, + 16805, + 16806, + 16807, + 16808, + 16809, + 16810, + 16811, + 16812, + 16813, + 16814, + 16815, + 16816, + 16817, + 16818, + 16819, + 16820, + 16821, + 16822, + 16823, + 16824, + 16825, + 16826, + 16827, + 16828, + 16829, + 16830, + 16831, + 16832, + 16833, + 16834, + 16835, + 16836, + 16837, + 16838, + 16839, + 16840, + 16841, + 16842, + 16843, + 16844, + 16845, + 16846, + 16847, + 16848, + 16849, + 16850, + 16851, + 16852, + 16853, + 16854, + 16855, + 16856, + 16857, + 16858, + 16859, + 16860, + 16861, + 16862, + 16863, + 16864, + 16865, + 16866, + 16867, + 16868, + 16869, + 16870, + 16871, + 16872, + 16873, + 16874, + 16875, + 16876, + 16877, + 16878, + 16879, + 16880, + 16881, + 16882, + 16883, + 16884, + 16885, + 16886, + 16887, + 16888, + 16889, + 16890, + 16891, + 16892, + 16893, + 16894, + 16895, + 16896, + 16897, + 16898, + 16899, + 16900, + 16901, + 16902, + 16903, + 16904, + 16905, + 16906, + 16907, + 16908, + 16909, + 16910, + 16911, + 16912, + 16913, + 16914, + 16915, + 16916, + 16917, + 16918, + 16919, + 16920, + 16921, + 16922, + 16923, + 16924, + 16925, + 16926, + 16927, + 16928, + 16929, + 16930, + 16931, + 16932, + 16933, + 16934, + 16935, + 16936, + 16937, + 16938, + 16939, + 16940, + 16941, + 16942, + 16943, + 16944, + 16945, + 16946, + 16947, + 16948, + 16949, + 16950, + 16951, + 16952, + 16953, + 16954, + 16955, + 16956, + 16957, + 16958, + 16959, + 16960, + 16961, + 16962, + 16963, + 16964, + 16965, + 16966, + 16967, + 16968, + 16969, + 16970, + 16971, + 16972, + 16973, + 16974, + 16975, + 16976, + 16977, + 16978, + 16979, + 16980, + 16981, + 16982, + 16983, + 16984, + 16985, + 16986, + 16987, + 16988, + 16989, + 16990, + 16991, + 16992, + 16993, + 16994, + 16995, + 16996, + 16997, + 16998, + 16999, + 17000, + 17001, + 17002, + 17003, + 17004, + 17005, + 17006, + 17007, + 17008, + 17009, + 17010, + 17011, + 17012, + 17013, + 17014, + 17015, + 17016, + 17017, + 17018, + 17019, + 17020, + 17021, + 17022, + 17023, + 17024, + 17025, + 17026, + 17027, + 17028, + 17029, + 17030, + 17031, + 17032, + 17033, + 17034, + 17035, + 17036, + 17037, + 17038, + 17039, + 17040, + 17041, + 17042, + 17043, + 17044, + 17045, + 17046, + 17047, + 17048, + 17049, + 17050, + 17051, + 17052, + 17053, + 17054, + 17055, + 17056, + 17057, + 17058, + 17059, + 17060, + 17061, + 17062, + 17063, + 17064, + 17065, + 17066, + 17067, + 17068, + 17069, + 17070, + 17071, + 17072, + 17073, + 17074, + 17075, + 17076, + 17077, + 17078, + 17079, + 17080, + 17081, + 17082, + 17083, + 17084, + 17085, + 17086, + 17087, + 17088, + 17089, + 17090, + 17091, + 17092, + 17093, + 17094, + 17095, + 17096, + 17097, + 17098, + 17099, + 17100, + 17101, + 17102, + 17103, + 17104, + 17105, + 17106, + 17107, + 17108, + 17109, + 17110, + 17111, + 17112, + 17113, + 17114, + 17115, + 17116, + 17117, + 17118, + 17119, + 17120, + 17121, + 17122, + 17123, + 17124, + 17125, + 17126, + 17127, + 17128, + 17129, + 17130, + 17131, + 17132, + 17133, + 17134, + 17135, + 17136, + 17137, + 17138, + 17139, + 17140, + 17141, + 17142, + 17143, + 17144, + 17145, + 17146, + 17147, + 17148, + 17149, + 17150, + 17151, + 17152, + 17153, + 17154, + 17155, + 17156, + 17157, + 17158, + 17159, + 17160, + 17161, + 17162, + 17163, + 17164, + 17165, + 17166, + 17167, + 17168, + 17169, + 17170, + 17171, + 17172, + 17173, + 17174, + 17175, + 17176, + 17177, + 17178, + 17179, + 17180, + 17181, + 17182, + 17183, + 17184, + 17185, + 17186, + 17187, + 17188, + 17189, + 17190, + 17191, + 17192, + 17193, + 17194, + 17195, + 17196, + 17197, + 17198, + 17199, + 17200, + 17201, + 17202, + 17203, + 17204, + 17205, + 17206, + 17207, + 17208, + 17209, + 17210, + 17211, + 17212, + 17213, + 17214, + 17215, + 17216, + 17217, + 17218, + 17219, + 17220, + 17221, + 17222, + 17223, + 17224, + 17225, + 17226, + 17227, + 17228, + 17229, + 17230, + 17231, + 17232, + 17233, + 17234, + 17235, + 17236, + 17237, + 17238, + 17239, + 17240, + 17241, + 17242, + 17243, + 17244, + 17245, + 17246, + 17247, + 17248, + 17249, + 17250, + 17251, + 17252, + 17253, + 17254, + 17255, + 17256, + 17257, + 17258, + 17259, + 17260, + 17261, + 17262, + 17263, + 17264, + 17265, + 17266, + 17267, + 17268, + 17269, + 17270, + 17271, + 17272, + 17273, + 17274, + 17275, + 17276, + 17277, + 17278, + 17279, + 17280, + 17281, + 17282, + 17283, + 17284, + 17285, + 17286, + 17287, + 17288, + 17289, + 17290, + 17291, + 17292, + 17293, + 17294, + 17295, + 17296, + 17297, + 17298, + 17299, + 17300, + 17301, + 17302, + 17303, + 17304, + 17305, + 17306, + 17307, + 17308, + 17309, + 17310, + 17311, + 17312, + 17313, + 17314, + 17315, + 17316, + 17317, + 17318, + 17319, + 17320, + 17321, + 17322, + 17323, + 17324, + 17325, + 17326, + 17327, + 17328, + 17329, + 17330, + 17331, + 17332, + 17333, + 17334, + 17335, + 17336, + 17337, + 17338, + 17339, + 17340, + 17341, + 17342, + 17343, + 17344, + 17345, + 17346, + 17347, + 17348, + 17349, + 17350, + 17351, + 17352, + 17353, + 17354, + 17355, + 17356, + 17357, + 17358, + 17359, + 17360, + 17361, + 17362, + 17363, + 17364, + 17365, + 17366, + 17367, + 17368, + 17369, + 17370, + 17371, + 17372, + 17373, + 17374, + 17375, + 17376, + 17377, + 17378, + 17379, + 17380, + 17381, + 17382, + 17383, + 17384, + 17385, + 17386, + 17387, + 17388, + 17389, + 17390, + 17391, + 17392, + 17393, + 17394, + 17395, + 17396, + 17397, + 17398, + 17399, + 17400, + 17401, + 17402, + 17403, + 17404, + 17405, + 17406, + 17407, + 17408, + 17409, + 17410, + 17411, + 17412, + 17413, + 17414, + 17415, + 17416, + 17417, + 17418, + 17419, + 17420, + 17421, + 17422, + 17423, + 17424, + 17425, + 17426, + 17427, + 17428, + 17429, + 17430, + 17431, + 17432, + 17433, + 17434, + 17435, + 17436, + 17437, + 17438, + 17439, + 17440, + 17441, + 17442, + 17443, + 17444, + 17445, + 17446, + 17447, + 17448, + 17449, + 17450, + 17451, + 17452, + 17453, + 17454, + 17455, + 17456, + 17457, + 17458, + 17459, + 17460, + 17461, + 17462, + 17463, + 17464, + 17465, + 17466, + 17467, + 17468, + 17469, + 17470, + 17471, + 17472, + 17473, + 17474, + 17475, + 17476, + 17477, + 17478, + 17479, + 17480, + 17481, + 17482, + 17483, + 17484, + 17485, + 17486, + 17487, + 17488, + 17489, + 17490, + 17491, + 17492, + 17493, + 17494, + 17495, + 17496, + 17497, + 17498, + 17499, + 17500, + 17501, + 17502, + 17503, + 17504, + 17505, + 17506, + 17507, + 17508, + 17509, + 17510, + 17511, + 17512, + 17513, + 17514, + 17515, + 17516, + 17517, + 17518, + 17519, + 17520, + 17521, + 17522, + 17523, + 17524, + 17525, + 17526, + 17527, + 17528, + 17529, + 17530, + 17531, + 17532, + 17533, + 17534, + 17535, + 17536, + 17537, + 17538, + 17539, + 17540, + 17541, + 17542, + 17543, + 17544, + 17545, + 17546, + 17547, + 17548, + 17549, + 17550, + 17551, + 17552, + 17553, + 17554, + 17555, + 17556, + 17557, + 17558, + 17559, + 17560, + 17561, + 17562, + 17563, + 17564, + 17565, + 17566, + 17567, + 17568, + 17569, + 17570, + 17571, + 17572, + 17573, + 17574, + 17575, + 17576, + 17577, + 17578, + 17579, + 17580, + 17581, + 17582, + 17583, + 17584, + 17585, + 17586, + 17587, + 17588, + 17589, + 17590, + 17591, + 17592, + 17593, + 17594, + 17595, + 17596, + 17597, + 17598, + 17599, + 17600, + 17601, + 17602, + 17603, + 17604, + 17605, + 17606, + 17607, + 17608, + 17609, + 17610, + 17611, + 17612, + 17613, + 17614, + 17615, + 17616, + 17617, + 17618, + 17619, + 17620, + 17621, + 17622, + 17623, + 17624, + 17625, + 17626, + 17627, + 17628, + 17629, + 17630, + 17631, + 17632, + 17633, + 17634, + 17635, + 17636, + 17637, + 17638, + 17639, + 17640, + 17641, + 17642, + 17643, + 17644, + 17645, + 17646, + 17647, + 17648, + 17649, + 17650, + 17651, + 17652, + 17653, + 17654, + 17655, + 17656, + 17657, + 17658, + 17659, + 17660, + 17661, + 17662, + 17663, + 17664, + 17665, + 17666, + 17667, + 17668, + 17669, + 17670, + 17671, + 17672, + 17673, + 17674, + 17675, + 17676, + 17677, + 17678, + 17679, + 17680, + 17681, + 17682, + 17683, + 17684, + 17685, + 17686, + 17687, + 17688, + 17689, + 17690, + 17691, + 17692, + 17693, + 17694, + 17695, + 17696, + 17697, + 17698, + 17699, + 17700, + 17701, + 17702, + 17703, + 17704, + 17705, + 17706, + 17707, + 17708, + 17709, + 17710, + 17711, + 17712, + 17713, + 17714, + 17715, + 17716, + 17717, + 17718, + 17719, + 17720, + 17721, + 17722, + 17723, + 17724, + 17725, + 17726, + 17727, + 17728, + 17729, + 17730, + 17731, + 17732, + 17733, + 17734, + 17735, + 17736, + 17737, + 17738, + 17739, + 17740, + 17741, + 17742, + 17743, + 17744, + 17745, + 17746, + 17747, + 17748, + 17749, + 17750, + 17751, + 17752, + 17753, + 17754, + 17755, + 17756, + 17757, + 17758, + 17759, + 17760, + 17761, + 17762, + 17763, + 17764, + 17765, + 17766, + 17767, + 17768, + 17769, + 17770, + 17771, + 17772, + 17773, + 17774, + 17775, + 17776, + 17777, + 17778, + 17779, + 17780, + 17781, + 17782, + 17783, + 17784, + 17785, + 17786, + 17787, + 17788, + 17789, + 17790, + 17791, + 17792, + 17793, + 17794, + 17795, + 17796, + 17797, + 17798, + 17799, + 17800, + 17801, + 17802, + 17803, + 17804, + 17805, + 17806, + 17807, + 17808, + 17809, + 17810, + 17811, + 17812, + 17813, + 17814, + 17815, + 17816, + 17817, + 17818, + 17819, + 17820, + 17821, + 17822, + 17823, + 17824, + 17825, + 17826, + 17827, + 17828, + 17829, + 17830, + 17831, + 17832, + 17833, + 17834, + 17835, + 17836, + 17837, + 17838, + 17839, + 17840, + 17841, + 17842, + 17843, + 17844, + 17845, + 17846, + 17847, + 17848, + 17849, + 17850, + 17851, + 17852, + 17853, + 17854, + 17855, + 17856, + 17857, + 17858, + 17859, + 17860, + 17861, + 17862, + 17863, + 17864, + 17865, + 17866, + 17867, + 17868, + 17869, + 17870, + 17871, + 17872, + 17873, + 17874, + 17875, + 17876, + 17877, + 17878, + 17879, + 17880, + 17881, + 17882, + 17883, + 17884, + 17885, + 17886, + 17887, + 17888, + 17889, + 17890, + 17891, + 17892, + 17893, + 17894, + 17895, + 17896, + 17897, + 17898, + 17899, + 17900, + 17901, + 17902, + 17903, + 17904, + 17905, + 17906, + 17907, + 17908, + 17909, + 17910, + 17911, + 17912, + 17913, + 17914, + 17915, + 17916, + 17917, + 17918, + 17919, + 17920, + 17921, + 17922, + 17923, + 17924, + 17925, + 17926, + 17927, + 17928, + 17929, + 17930, + 17931, + 17932, + 17933, + 17934, + 17935, + 17936, + 17937, + 17938, + 17939, + 17940, + 17941, + 17942, + 17943, + 17944, + 17945, + 17946, + 17947, + 17948, + 17949, + 17950, + 17951, + 17952, + 17953, + 17954, + 17955, + 17956, + 17957, + 17958, + 17959, + 17960, + 17961, + 17962, + 17963, + 17964, + 17965, + 17966, + 17967, + 17968, + 17969, + 17970, + 17971, + 17972, + 17973, + 17974, + 17975, + 17976, + 17977, + 17978, + 17979, + 17980, + 17981, + 17982, + 17983, + 17984, + 17985, + 17986, + 17987, + 17988, + 17989, + 17990, + 17991, + 17992, + 17993, + 17994, + 17995, + 17996, + 17997, + 17998, + 17999, + 18000, + 18001, + 18002, + 18003, + 18004, + 18005, + 18006, + 18007, + 18008, + 18009, + 18010, + 18011, + 18012, + 18013, + 18014, + 18015, + 18016, + 18017, + 18018, + 18019, + 18020, + 18021, + 18022, + 18023, + 18024, + 18025, + 18026, + 18027, + 18028, + 18029, + 18030, + 18031, + 18032, + 18033, + 18034, + 18035, + 18036, + 18037, + 18038, + 18039, + 18040, + 18041, + 18042, + 18043, + 18044, + 18045, + 18046, + 18047, + 18048, + 18049, + 18050, + 18051, + 18052, + 18053, + 18054, + 18055, + 18056, + 18057, + 18058, + 18059, + 18060, + 18061, + 18062, + 18063, + 18064, + 18065, + 18066, + 18067, + 18068, + 18069, + 18070, + 18071, + 18072, + 18073, + 18074, + 18075, + 18076, + 18077, + 18078, + 18079, + 18080, + 18081, + 18082, + 18083, + 18084, + 18085, + 18086, + 18087, + 18088, + 18089, + 18090, + 18091, + 18092, + 18093, + 18094, + 18095, + 18096, + 18097, + 18098, + 18099, + 18100, + 18101, + 18102, + 18103, + 18104, + 18105, + 18106, + 18107, + 18108, + 18109, + 18110, + 18111, + 18112, + 18113, + 18114, + 18115, + 18116, + 18117, + 18118, + 18119, + 18120, + 18121, + 18122, + 18123, + 18124, + 18125, + 18126, + 18127, + 18128, + 18129, + 18130, + 18131, + 18132, + 18133, + 18134, + 18135, + 18136, + 18137, + 18138, + 18139, + 18140, + 18141, + 18142, + 18143, + 18144, + 18145, + 18146, + 18147, + 18148, + 18149, + 18150, + 18151, + 18152, + 18153, + 18154, + 18155, + 18156, + 18157, + 18158, + 18159, + 18160, + 18161, + 18162, + 18163, + 18164, + 18165, + 18166, + 18167, + 18168, + 18169, + 18170, + 18171, + 18172, + 18173, + 18174, + 18175, + 18176, + 18177, + 18178, + 18179, + 18180, + 18181, + 18182, + 18183, + 18184, + 18185, + 18186, + 18187, + 18188, + 18189, + 18190, + 18191, + 18192, + 18193, + 18194, + 18195, + 18196, + 18197, + 18198, + 18199, + 18200, + 18201, + 18202, + 18203, + 18204, + 18205, + 18206, + 18207, + 18208, + 18209, + 18210, + 18211, + 18212, + 18213, + 18214, + 18215, + 18216, + 18217, + 18218, + 18219, + 18220, + 18221, + 18222, + 18223, + 18224, + 18225, + 18226, + 18227, + 18228, + 18229, + 18230, + 18231, + 18232, + 18233, + 18234, + 18235, + 18236, + 18237, + 18238, + 18239, + 18240, + 18241, + 18242, + 18243, + 18244, + 18245, + 18246, + 18247, + 18248, + 18249, + 18250, + 18251, + 18252, + 18253, + 18254, + 18255, + 18256, + 18257, + 18258, + 18259, + 18260, + 18261, + 18262, + 18263, + 18264, + 18265, + 18266, + 18267, + 18268, + 18269, + 18270, + 18271, + 18272, + 18273, + 18274, + 18275, + 18276, + 18277, + 18278, + 18279, + 18280, + 18281, + 18282, + 18283, + 18284, + 18285, + 18286, + 18287, + 18288, + 18289, + 18290, + 18291, + 18292, + 18293, + 18294, + 18295, + 18296, + 18297, + 18298, + 18299, + 18300, + 18301, + 18302, + 18303, + 18304, + 18305, + 18306, + 18307, + 18308, + 18309, + 18310, + 18311, + 18312, + 18313, + 18314, + 18315, + 18316, + 18317, + 18318, + 18319, + 18320, + 18321, + 18322, + 18323, + 18324, + 18325, + 18326, + 18327, + 18328, + 18329, + 18330, + 18331, + 18332, + 18333, + 18334, + 18335, + 18336, + 18337, + 18338, + 18339, + 18340, + 18341, + 18342, + 18343, + 18344, + 18345, + 18346, + 18347, + 18348, + 18349, + 18350, + 18351, + 18352, + 18353, + 18354, + 18355, + 18356, + 18357, + 18358, + 18359, + 18360, + 18361, + 18362, + 18363, + 18364, + 18365, + 18366, + 18367, + 18368, + 18369, + 18370, + 18371, + 18372, + 18373, + 18374, + 18375, + 18376, + 18377, + 18378, + 18379, + 18380, + 18381, + 18382, + 18383, + 18384, + 18385, + 18386, + 18387, + 18388, + 18389, + 18390, + 18391, + 18392, + 18393, + 18394, + 18395, + 18396, + 18397, + 18398, + 18399, + 18400, + 18401, + 18402, + 18403, + 18404, + 18405, + 18406, + 18407, + 18408, + 18409, + 18410, + 18411, + 18412, + 18413, + 18414, + 18415, + 18416, + 18417, + 18418, + 18419, + 18420, + 18421, + 18422, + 18423, + 18424, + 18425, + 18426, + 18427, + 18428, + 18429, + 18430, + 18431, + 18432, + 18433, + 18434, + 18435, + 18436, + 18437, + 18438, + 18439, + 18440, + 18441, + 18442, + 18443, + 18444, + 18445, + 18446, + 18447, + 18448, + 18449, + 18450, + 18451, + 18452, + 18453, + 18454, + 18455, + 18456, + 18457, + 18458, + 18459, + 18460, + 18461, + 18462, + 18463, + 18464, + 18465, + 18466, + 18467, + 18468, + 18469, + 18470, + 18471, + 18472, + 18473, + 18474, + 18475, + 18476, + 18477, + 18478, + 18479, + 18480, + 18481, + 18482, + 18483, + 18484, + 18485, + 18486, + 18487, + 18488, + 18489, + 18490, + 18491, + 18492, + 18493, + 18494, + 18495, + 18496, + 18497, + 18498, + 18499, + 18500, + 18501, + 18502, + 18503, + 18504, + 18505, + 18506, + 18507, + 18508, + 18509, + 18510, + 18511, + 18512, + 18513, + 18514, + 18515, + 18516, + 18517, + 18518, + 18519, + 18520, + 18521, + 18522, + 18523, + 18524, + 18525, + 18526, + 18527, + 18528, + 18529, + 18530, + 18531, + 18532, + 18533, + 18534, + 18535, + 18536, + 18537, + 18538, + 18539, + 18540, + 18541, + 18542, + 18543, + 18544, + 18545, + 18546, + 18547, + 18548, + 18549, + 18550, + 18551, + 18552, + 18553, + 18554, + 18555, + 18556, + 18557, + 18558, + 18559, + 18560, + 18561, + 18562, + 18563, + 18564, + 18565, + 18566, + 18567, + 18568, + 18569, + 18570, + 18571, + 18572, + 18573, + 18574, + 18575, + 18576, + 18577, + 18578, + 18579, + 18580, + 18581, + 18582, + 18583, + 18584, + 18585, + 18586, + 18587, + 18588, + 18589, + 18590, + 18591, + 18592, + 18593, + 18594, + 18595, + 18596, + 18597, + 18598, + 18599, + 18600, + 18601, + 18602, + 18603, + 18604, + 18605, + 18606, + 18607, + 18608, + 18609, + 18610, + 18611, + 18612, + 18613, + 18614, + 18615, + 18616, + 18617, + 18618, + 18619, + 18620, + 18621, + 18622, + 18623, + 18624, + 18625, + 18626, + 18627, + 18628, + 18629, + 18630, + 18631, + 18632, + 18633, + 18634, + 18635, + 18636, + 18637, + 18638, + 18639 + ], + "rate_pass_wall_s": 462.32700855000076 + }, + "routes": { + "b_s3_pdip": { + "label": "S3 PDIP (source-only)", + "status": "ok", + "solver": "library", + "ms": 51.093198700255016, + "log_likelihood": 29155.000172771943 + }, + "d_s3_certified_fallback": { + "label": "S3 certified active set, budget 7, PDIP fallback", + "status": "ok", + "solver": "harness-injected certified active set", + "pass_budget": 7, + "fallback": true, + "injected_solver_calls_jax": 1, + "injected_solver_calls_numpy": 0, + "ms": 32.257679799658945, + "log_likelihood": 29155.000174348042 + } + }, + "equivalence_pins": [ + { + "pin": "route d (certified, fallback) == route b (library PDIP)", + "route": "d_s3_certified_fallback", + "reference": "b_s3_pdip", + "expectation": "the certified active set returns the library's own positive solution", + "rtol": 1e-09, + "got": 29155.000174348042, + "reference_value": 29155.000172771943, + "rel_diff": 5.4059329073930475e-11, + "status": "PASS" + } + ], + "reference": { + "log_evidence_s3_library": 29155.000174339304 + }, + "library_revisions": { + "PyAutoNerves": { + "head": "1fa613aa8d89a79613009fb66f5b4e2d21deb57a", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoNerves", + "module_file": "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/__init__.py" + }, + "PyAutoFit": { + "head": "dd9fbe0aab60c4a57702b1444ca031b317c91331", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoFit", + "module_file": "/mnt/ral/jnightin/PyAuto/PyAutoFit/autofit/__init__.py" + }, + "PyAutoArray": { + "head": "3de624b5b91a4efa130dc3cb0a3a0f06f85025a3", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoArray", + "module_file": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/__init__.py" + }, + "PyAutoGalaxy": { + "head": "70a61e26cd715cefe7012a38285698091246a8a4", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy", + "module_file": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/__init__.py" + }, + "PyAutoLens": { + "head": "86054bbc19baa2f710a12e04a94fa27ab37cc354", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoLens", + "module_file": "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/__init__.py" + } + }, + "timer": { + "dataset_load": 0.08223211599761271, + "mask_and_oversample": 0.015269248000549851, + "adapt_image_build": 0.0022622950018558186, + "image_mesh_hilbert": 0.36894183900221833, + "model_build": 0.6015521819972491, + "instance_from_vector": 0.012271265000890708, + "register_pytrees": 0.000763020998419961, + "fit_imaging_eager": 4.436135009000282, + "s3_system_build": 3.04290988700086, + "b_s3_pdip_library_likelihood_jit_lower": 1.5145720850014186, + "b_s3_pdip_library_likelihood_jit_compile": 4.607514628001809, + "b_s3_pdip_library_likelihood_jit_first_call": 0.11996164800075348, + "b_s3_pdip_library_likelihood_jit_steady_x10": 0.5109319870025502, + "d_s3_certified_fallback_library_likelihood_jit_lower": 0.4959455039970635, + "d_s3_certified_fallback_library_likelihood_jit_compile": 4.317585242999485, + "d_s3_certified_fallback_library_likelihood_jit_first_call": 0.050906137003039476, + "d_s3_certified_fallback_library_likelihood_jit_steady_x10": 0.32257679799658945, + "captured_rate_pass": 445.0608614369994, + "captured_rate_uncertified_pdip_recheck": 17.256552230002853 + }, + "note": "Phase C1 (#304) rate pass: untimed. No millisecond here is a result. The rate is the fraction of captured lanes whose certificate failed under the named certified_fallback; the phase-C2 verdict takes it together with the timed pass." +} \ No newline at end of file diff --git a/results/breakdown/imaging/fixed_light_trace_delaunay_captured_rate_libcertified_fboff_b16_pix2_hpc_a100_fp64_fixed_light_trace.json b/results/breakdown/imaging/fixed_light_trace_delaunay_captured_rate_libcertified_fboff_b16_pix2_hpc_a100_fp64_fixed_light_trace.json new file mode 100644 index 000000000..4697cd97a --- /dev/null +++ b/results/breakdown/imaging/fixed_light_trace_delaunay_captured_rate_libcertified_fboff_b16_pix2_hpc_a100_fp64_fixed_light_trace.json @@ -0,0 +1,6406 @@ +{ + "device": { + "backend": "gpu", + "device": "cuda:0", + "hostname": "euclid-ral-gpu-1", + "xla_flags": "--xla_disable_hlo_passes=constant_folding --xla_gpu_autotune_level=0 --xla_gpu_enable_triton_gemm=false", + "omp_num_threads": null, + "cpu_count": 124, + "jax_compilation_cache_dir": "/mnt/ral/jnightin/autolens_profiling_wt/certified-solver-phase-c1-lane-rate/output/jax_cache/fixed_light_lanerate_delaunay_pix2_rate_20_certified_off_350768_6", + "autotune_cache_entries_at_start": 0, + "cache_fresh": true, + "nvidia_smi": "NVIDIA A100 80GB PCIe, 4723 MiB, 81920 MiB" + }, + "machine": { + "cpu_model": "AMD EPYC 7702 64-Core Processor", + "cpu_count_os": 124, + "nproc": 4, + "nproc_all": 124, + "nproc_note": "GNU nproc honours OMP_NUM_THREADS, so `nproc` can print 1 on a multi-core host; `nproc_all` is the core count.", + "ram_total": "928298200 kB", + "kernel": "5.14.0-687.50.1.el9_8.x86_64", + "platform": "Linux-5.14.0-687.50.1.el9_8.x86_64-x86_64-with-glibc2.34", + "python": "3.12.4", + "jax_thread_env": { + "NPROC": null + }, + "blas_thread_env": { + "OMP_NUM_THREADS": null, + "OPENBLAS_NUM_THREADS": null, + "MKL_NUM_THREADS": null, + "VECLIB_MAXIMUM_THREADS": null, + "NUMEXPR_NUM_THREADS": null + }, + "thread_env_note": "NPROC sizes XLA's CPU intra-op pool (the JAX rows); the BLAS knobs pin OpenBLAS/MKL/OpenMP (the numpy/scipy rows) and do not touch JAX. Two disjoint families; both are recorded on every CPU timing.", + "gpu": "NVIDIA A100 80GB PCIe, 81920 MiB, 610.57.04" + }, + "precision": "fp64", + "configuration": { + "mesh": "delaunay", + "source_pixels": 1500, + "dataset": "hst", + "dataset_sha256": { + "data.fits": "e4e833a28e9c6f6fb023cd85c0d3dde74068720256bc77a240633500e5b04fac", + "noise_map.fits": "315c6266a0acd3ac9c8da82fcd2b45a08697362481fd7a35072bab1658530ba3", + "psf.fits": "8389ba0e8bf4a09b4a561cfc246181a2fb944ed396754cd0ff76fdd22910d303" + }, + "cell_source_sha256": "06a162fcdae6b329384ec33322f443df07215d86e56f0505ac15b3d3473eb432", + "border_relocator_mode": "cell", + "border_relocator": true, + "regularization": { + "scheme": "adapt_split", + "inner_coefficient": 0.1, + "outer_coefficient": 10.0, + "signal_scale": 0.1 + }, + "vmap_batch": 20, + "lanes": "captured", + "captured_pass": "rate", + "batch_sample": null, + "solver_source": "library", + "solver": "certified", + "certified_fallback": "none", + "certified_pass_budget": 16, + "certified_tau_rel": 1e-09, + "use_mixed_precision": false, + "thread_env": { + "n_threads": null, + "vars": [ + "OPENBLAS_NUM_THREADS", + "MKL_NUM_THREADS", + "OMP_NUM_THREADS", + "VECLIB_MAXIMUM_THREADS", + "NUMEXPR_NUM_THREADS" + ], + "set_to": null, + "preexisting": {}, + "overridden": {}, + "note": "Not pinned (legacy variant): recorded as found." + } + }, + "captured": { + "batches_path": "/mnt/ral/jnightin/autolens_profiling_wt/certified-solver-phase-c1-lane-rate/results/breakdown/imaging/nautilus_batches_delaunay_pix2.npz", + "batches_sha256": "90f4640a92f9b1c60ca3fceca7b484aa8215970489f8e7daf5430b8460d171d5", + "schema_version": 2, + "n_calls": 84, + "n_lanes": 1680, + "call_sizes_seen": [ + 20 + ], + "calls_by_phase": { + "prior": 8, + "exploration": 72, + "sampling": 4 + }, + "parameter_paths": [ + "galaxies.source.pixelization.regularization.inner_coefficient", + "galaxies.source.pixelization.regularization.outer_coefficient", + "galaxies.source.pixelization.regularization.signal_scale" + ], + "stage": "pix2", + "regularization": { + "class": "AdaptSplit", + "free": true, + "priors": { + "inner_coefficient": [ + "LogUniform", + 1e-06, + 1000000.0 + ], + "outer_coefficient": [ + "LogUniform", + 1e-06, + 1000000.0 + ], + "signal_scale": [ + "Uniform", + 0.0, + 1.0 + ] + }, + "priors_source": "PyAutoGalaxy packaged config/priors/regularization (adapt_split.yaml / constant.yaml); adapt_split.yaml is identical to euclid_strong_lens_modeling_pipeline/config/priors/regularization/adapt_split.yaml" + }, + "nautilus": { + "departures_from_production": [ + "mass/shear fixed at the S3 fiducial, not at a source_pix_1 result", + "no positions likelihood", + "the cell's mesh (Hilbert 1500, weight_power 1) in both stages; source_pix_2 redraws a 500-vertex Hilbert grid at weight_power 3.5", + "seeded (production passes no seed)", + "quick updates disabled (iterations_per_quick_update=1e12; render-only)", + "NullPaths: no output directory, so no checkpoint and one Sampler.run call", + "post-fit perform_update skipped (samples / latent variables never built)" + ], + "n_batch": 20, + "n_like_max": 40000, + "n_live": 75, + "number_of_cores": 1, + "production_reference": "euclid_strong_lens_modeling_pipeline/scripts/full_model.py source_pix_1 (n_live=150) / source_pix_2 (n_live=75): af.Nautilus(n_batch=20, **SettingsSearch.search_dict) with use_jax_vmap=True and number_of_cores=1 (SettingsSearch defaults)", + "production_stage": "source_pix_2", + "seed": 1, + "stage": "pix2", + "use_jax_vmap": true, + "version": "1.0.5" + }, + "capture_fit_status": "sampling complete (n_like_max or convergence); post-fit result skipped", + "capture_library_revisions": { + "PyAutoArray": { + "head": "7fa8d2714f7da43fec2b23c31bff580764831670", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoArray" + }, + "PyAutoFit": { + "head": "a736840127be7a3c21e15a5c945e94d8f1082983", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoFit" + }, + "PyAutoGalaxy": { + "head": "70a61e26cd715cefe7012a38285698091246a8a4", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy" + }, + "PyAutoLens": { + "head": "86054bbc19baa2f710a12e04a94fa27ab37cc354", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoLens" + }, + "PyAutoNerves": { + "head": "1fa613aa8d89a79613009fb66f5b4e2d21deb57a", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoNerves" + } + }, + "fingerprint_check": { + "fields": [ + "mesh", + "source_pixels", + "dataset_sha256", + "regularization_class", + "regularization_s0_fiducial", + "border_relocator", + "use_mixed_precision", + "log_evidence_s3_library" + ], + "not_identity": "the regularization coefficients: free per lane since the capture frees them", + "log_evidence_s3_library_rel_diff": 0.0, + "passed": true + } + }, + "rate": { + "pass": "rate", + "solver": "certified", + "certified_fallback": "none", + "certified_pass_budget": 16, + "certified_pass_budget_basis": "config default (Settings().certified_pass_budget)", + "composition": "jax.jit(jax.vmap(fn)) \u2014 the current Fitness._vmap composition", + "chunk_size": 20, + "chunk_rule": "the replayed lanes in capture order, split into chunks of --vmap-batch; the last chunk is padded by repeating its final lane and the padded rows are dropped. At --vmap-batch == n_batch every chunk is exactly one captured Nautilus batch.", + "batch_sample": null, + "stage": "pix2", + "regularization_range": { + "galaxies.source.pixelization.regularization.inner_coefficient": { + "min": 1.002685583167557e-06, + "max": 973443.1376694659 + }, + "galaxies.source.pixelization.regularization.outer_coefficient": { + "min": 1.1397104977616871e-06, + "max": 722149.0007485969 + }, + "galaxies.source.pixelization.regularization.signal_scale": { + "min": 2.074268335094942e-05, + "max": 0.9997572431485441 + } + }, + "calls_replayed": 84, + "calls_rule": "all captured calls", + "report_source": "library solve observed through its stats= out-dict (PyAutoArray #566) and jax.debug.callback(..., ordered=True); untimed; one row per lane checked per chunk", + "traced_solver_kwargs_jax": [ + "certified" + ], + "overall": { + "n_lanes": 1680, + "n_uncertified": 82, + "uncertified_rate": 0.04880952380952381, + "max_passes": 16, + "mean_passes": 2.979761904761905, + "n_at_budget": 82, + "budget": 16, + "passes_histogram": { + "0": 94, + "1": 34, + "2": 1089, + "3": 278, + "4": 35, + "5": 19, + "6": 11, + "7": 9, + "8": 13, + "9": 3, + "10": 3, + "11": 3, + "12": 3, + "13": 2, + "14": 2, + "16": 82 + } + }, + "by_nautilus_phase": { + "prior": { + "n_lanes": 160, + "n_uncertified": 33, + "uncertified_rate": 0.20625, + "max_passes": 16, + "mean_passes": 4.28125, + "n_at_budget": 33, + "budget": 16, + "passes_histogram": { + "0": 89, + "1": 9, + "2": 7, + "3": 6, + "4": 4, + "5": 3, + "6": 1, + "8": 4, + "9": 1, + "12": 2, + "14": 1, + "16": 33 + } + }, + "exploration": { + "n_lanes": 1440, + "n_uncertified": 49, + "uncertified_rate": 0.034027777777777775, + "max_passes": 16, + "mean_passes": 2.861111111111111, + "n_at_budget": 49, + "budget": 16, + "passes_histogram": { + "0": 5, + "1": 25, + "2": 1043, + "3": 231, + "4": 31, + "5": 16, + "6": 10, + "7": 9, + "8": 9, + "9": 2, + "10": 3, + "11": 3, + "12": 1, + "13": 2, + "14": 1, + "16": 49 + } + }, + "sampling": { + "n_lanes": 80, + "n_uncertified": 0, + "uncertified_rate": 0.0, + "max_passes": 3, + "mean_passes": 2.5125, + "n_at_budget": 0, + "budget": 16, + "passes_histogram": { + "2": 39, + "3": 41 + } + } + }, + "by_call_half": { + "early": { + "n_lanes": 840, + "n_uncertified": 82, + "uncertified_rate": 0.09761904761904762, + "max_passes": 16, + "mean_passes": 3.7607142857142857, + "n_at_budget": 82, + "budget": 16, + "passes_histogram": { + "0": 94, + "1": 34, + "2": 416, + "3": 111, + "4": 35, + "5": 19, + "6": 11, + "7": 9, + "8": 13, + "9": 3, + "10": 3, + "11": 3, + "12": 3, + "13": 2, + "14": 2, + "16": 82 + } + }, + "late": { + "n_lanes": 840, + "n_uncertified": 0, + "uncertified_rate": 0.0, + "max_passes": 3, + "mean_passes": 2.198809523809524, + "n_at_budget": 0, + "budget": 16, + "passes_histogram": { + "2": 673, + "3": 167 + } + } + }, + "phase_rule": "by_nautilus_phase: the sampler state when the batch was requested (nautilus_batches.phase_of) \u2014 prior = only the unit-cube bound (prior draws), exploration = more bounds and Sampler.explored False, sampling = explored True. by_call_half: early = call index below the median replayed call index, late = the rest.", + "vs_capture_pdip": { + "reference": "the capture's own figure of merit for the lane: library PDIP through Fitness.call_wrap's jax.jit(jax.vmap(call)) over parameter vectors", + "n_compared": 1635, + "n_excluded_resampled_or_nonfinite": 45, + "max_rel_diff": 0.9999999905122139, + "median_rel_diff": 3.4485168042594903e-13, + "max_abs_diff_nats": 141599935363399.28, + "n_above_lane_rtol": 147, + "n_above_lane_rtol_uncertified": 75, + "lane_rtol": 1e-09, + "gated": false, + "note": "RECORDED, NOT GATED: a cross-composition comparison (Fitness over vectors vs this cell over trees) and, for certified lanes, certified vs PDIP. The gated 1e-9 pin is the timed pass's (same composition, same lanes). It still shows whether a certified_fallback=none lane that FAILED its certificate returned a wrong answer." + }, + "uncertified_pdip_recheck": { + "n_uncertified": 82, + "n_rechecked": 82, + "cap": 256, + "max_rel_diff": 0.0001416739213986454, + "rows": [ + { + "lane_row": 6, + "call_index": 0, + "lane_in_call": 6, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 19663.86131784399, + "log_likelihood_scalar_library_pdip": 19662.106322955842, + "rel_diff": 8.925772546032077e-05, + "abs_diff_nats": 1.7549948881460296 + }, + { + "lane_row": 9, + "call_index": 0, + "lane_in_call": 9, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 19661.650172117123, + "log_likelihood_scalar_library_pdip": 19661.81403446555, + "rel_diff": 8.3340401929053e-06, + "abs_diff_nats": 0.16386234842866543 + }, + { + "lane_row": 18, + "call_index": 0, + "lane_in_call": 18, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 19661.611557072392, + "log_likelihood_scalar_library_pdip": 19661.775418583118, + "rel_diff": 8.334013955370757e-06, + "abs_diff_nats": 0.16386151072583743 + }, + { + "lane_row": 20, + "call_index": 1, + "lane_in_call": 0, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 19661.672821556225, + "log_likelihood_scalar_library_pdip": 19661.836683866422, + "rel_diff": 8.334028648076599e-06, + "abs_diff_nats": 0.16386231019714614 + }, + { + "lane_row": 24, + "call_index": 1, + "lane_in_call": 4, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": NaN, + "log_likelihood_scalar_library_pdip": NaN, + "rel_diff": NaN, + "abs_diff_nats": NaN + }, + { + "lane_row": 29, + "call_index": 1, + "lane_in_call": 9, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 21307.31217053325, + "log_likelihood_scalar_library_pdip": 21308.766706705574, + "rel_diff": 6.825998859273054e-05, + "abs_diff_nats": 1.4545361723248789 + }, + { + "lane_row": 31, + "call_index": 1, + "lane_in_call": 11, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 19661.825830852053, + "log_likelihood_scalar_library_pdip": 19661.90726698532, + "rel_diff": 4.141822670661001e-06, + "abs_diff_nats": 0.08143613326683408 + }, + { + "lane_row": 37, + "call_index": 1, + "lane_in_call": 17, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 19661.87142132885, + "log_likelihood_scalar_library_pdip": 19661.95285748109, + "rel_diff": 4.141814031860435e-06, + "abs_diff_nats": 0.08143615223889356 + }, + { + "lane_row": 42, + "call_index": 2, + "lane_in_call": 2, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 19661.611672182786, + "log_likelihood_scalar_library_pdip": 19661.77553344853, + "rel_diff": 8.334001446898042e-06, + "abs_diff_nats": 0.16386126574434456 + }, + { + "lane_row": 43, + "call_index": 2, + "lane_in_call": 3, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 19815.482255685187, + "log_likelihood_scalar_library_pdip": 19815.451624743066, + "rel_diff": 1.545810951033698e-06, + "abs_diff_nats": 0.030630942121206317 + }, + { + "lane_row": 52, + "call_index": 2, + "lane_in_call": 12, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 21962.679410805336, + "log_likelihood_scalar_library_pdip": 21962.11491702494, + "rel_diff": 2.570307015185638e-05, + "abs_diff_nats": 0.5644937803954235 + }, + { + "lane_row": 55, + "call_index": 2, + "lane_in_call": 15, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 23621.419838005702, + "log_likelihood_scalar_library_pdip": 23621.41983681297, + "rel_diff": 5.049371240246267e-11, + "abs_diff_nats": 1.1927331797778606e-06 + }, + { + "lane_row": 66, + "call_index": 3, + "lane_in_call": 6, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 19661.614176467978, + "log_likelihood_scalar_library_pdip": 19661.77803879745, + "rel_diff": 8.334054486212681e-06, + "abs_diff_nats": 0.16386232947115786 + }, + { + "lane_row": 72, + "call_index": 3, + "lane_in_call": 12, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 19661.611613152847, + "log_likelihood_scalar_library_pdip": 19661.775474867656, + "rel_diff": 8.33402431121371e-06, + "abs_diff_nats": 0.16386171480917255 + }, + { + "lane_row": 76, + "call_index": 3, + "lane_in_call": 16, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 19661.6115560198, + "log_likelihood_scalar_library_pdip": 19661.775416641434, + "rel_diff": 8.333968736832972e-06, + "abs_diff_nats": 0.1638606216329208 + }, + { + "lane_row": 80, + "call_index": 4, + "lane_in_call": 0, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 19936.500475900717, + "log_likelihood_scalar_library_pdip": 19937.05649490407, + "rel_diff": 2.7888720859871484e-05, + "abs_diff_nats": 0.5560190033538674 + }, + { + "lane_row": 82, + "call_index": 4, + "lane_in_call": 2, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 19661.831615044663, + "log_likelihood_scalar_library_pdip": 19661.995476313066, + "rel_diff": 8.333908356408271e-06, + "abs_diff_nats": 0.16386126840370707 + }, + { + "lane_row": 85, + "call_index": 4, + "lane_in_call": 5, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 22939.457976801576, + "log_likelihood_scalar_library_pdip": 22939.4579768015, + "rel_diff": 3.3303993070013357e-15, + "abs_diff_nats": 7.639755494892597e-11 + }, + { + "lane_row": 90, + "call_index": 4, + "lane_in_call": 10, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 22066.97677147836, + "log_likelihood_scalar_library_pdip": 22066.998138209125, + "rel_diff": 9.68266305705507e-07, + "abs_diff_nats": 0.02136673076529405 + }, + { + "lane_row": 97, + "call_index": 4, + "lane_in_call": 17, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 19661.611552867154, + "log_likelihood_scalar_library_pdip": 19661.77541432955, + "rel_diff": 8.334011499076851e-06, + "abs_diff_nats": 0.16386146239528898 + }, + { + "lane_row": 103, + "call_index": 5, + "lane_in_call": 3, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 22535.847228178307, + "log_likelihood_scalar_library_pdip": 22535.25396132729, + "rel_diff": 2.63261666380948e-05, + "abs_diff_nats": 0.5932668510176882 + }, + { + "lane_row": 106, + "call_index": 5, + "lane_in_call": 6, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 19661.611552867143, + "log_likelihood_scalar_library_pdip": 19661.775414306077, + "rel_diff": 8.334010305841286e-06, + "abs_diff_nats": 0.16386143893396365 + }, + { + "lane_row": 108, + "call_index": 5, + "lane_in_call": 8, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 20092.040762976438, + "log_likelihood_scalar_library_pdip": 20092.040762466524, + "rel_diff": 2.5378888463622906e-11, + "abs_diff_nats": 5.099136615172029e-07 + }, + { + "lane_row": 109, + "call_index": 5, + "lane_in_call": 9, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 19661.611552855113, + "log_likelihood_scalar_library_pdip": 19661.775414681426, + "rel_diff": 8.334030007832738e-06, + "abs_diff_nats": 0.163861826313223 + }, + { + "lane_row": 111, + "call_index": 5, + "lane_in_call": 11, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 19667.236508042675, + "log_likelihood_scalar_library_pdip": 19666.734728835458, + "rel_diff": 2.5514108678239937e-05, + "abs_diff_nats": 0.5017792072176235 + }, + { + "lane_row": 114, + "call_index": 5, + "lane_in_call": 14, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 19661.640882882974, + "log_likelihood_scalar_library_pdip": 19661.8047440368, + "rel_diff": 8.333983373284274e-06, + "abs_diff_nats": 0.16386115382556454 + }, + { + "lane_row": 124, + "call_index": 6, + "lane_in_call": 4, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 20668.467316778384, + "log_likelihood_scalar_library_pdip": 20668.5112219617, + "rel_diff": 2.1242547585977454e-06, + "abs_diff_nats": 0.043905183316383045 + }, + { + "lane_row": 135, + "call_index": 6, + "lane_in_call": 15, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 19780.670564633394, + "log_likelihood_scalar_library_pdip": 19780.671741123628, + "rel_diff": 5.947675838169993e-08, + "abs_diff_nats": 0.0011764902337745298 + }, + { + "lane_row": 136, + "call_index": 6, + "lane_in_call": 16, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 22111.25584344645, + "log_likelihood_scalar_library_pdip": 22112.598039254648, + "rel_diff": 6.0698241148035955e-05, + "abs_diff_nats": 1.3421958081962657 + }, + { + "lane_row": 138, + "call_index": 6, + "lane_in_call": 18, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 19661.612743598533, + "log_likelihood_scalar_library_pdip": 19661.776604909744, + "rel_diff": 8.33400330521942e-06, + "abs_diff_nats": 0.1638613112118037 + }, + { + "lane_row": 143, + "call_index": 7, + "lane_in_call": 3, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 19664.159989657688, + "log_likelihood_scalar_library_pdip": 19662.405115112306, + "rel_diff": 8.925024863990615e-05, + "abs_diff_nats": 1.7548745453823358 + }, + { + "lane_row": 146, + "call_index": 7, + "lane_in_call": 6, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 21374.8780556626, + "log_likelihood_scalar_library_pdip": 21375.430702552734, + "rel_diff": 2.58543043096425e-05, + "abs_diff_nats": 0.5526468901334738 + }, + { + "lane_row": 159, + "call_index": 7, + "lane_in_call": 19, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 21767.29693907161, + "log_likelihood_scalar_library_pdip": 21766.15701341164, + "rel_diff": 5.2371470961386504e-05, + "abs_diff_nats": 1.139925659968867 + }, + { + "lane_row": 160, + "call_index": 8, + "lane_in_call": 0, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19852.251355902958, + "log_likelihood_scalar_library_pdip": 19851.594184582875, + "rel_diff": 3.310420885962017e-05, + "abs_diff_nats": 0.6571713200828526 + }, + { + "lane_row": 164, + "call_index": 8, + "lane_in_call": 4, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19664.90800009171, + "log_likelihood_scalar_library_pdip": 19664.888362180216, + "rel_diff": 9.986281707532801e-07, + "abs_diff_nats": 0.019637911493191496 + }, + { + "lane_row": 165, + "call_index": 8, + "lane_in_call": 5, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19661.61183973046, + "log_likelihood_scalar_library_pdip": 19661.775700753395, + "rel_diff": 8.333989026659798e-06, + "abs_diff_nats": 0.16386102293472504 + }, + { + "lane_row": 166, + "call_index": 8, + "lane_in_call": 6, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19673.735940325118, + "log_likelihood_scalar_library_pdip": 19673.099041959198, + "rel_diff": 3.2374074087721925e-05, + "abs_diff_nats": 0.6368983659194782 + }, + { + "lane_row": 169, + "call_index": 8, + "lane_in_call": 9, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19678.02975001747, + "log_likelihood_scalar_library_pdip": 19677.044939261974, + "rel_diff": 5.004871201631265e-05, + "abs_diff_nats": 0.9848107554971648 + }, + { + "lane_row": 171, + "call_index": 8, + "lane_in_call": 11, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19840.56831757003, + "log_likelihood_scalar_library_pdip": 19843.37960697275, + "rel_diff": 0.0001416739213986454, + "abs_diff_nats": 2.8112894027217408 + }, + { + "lane_row": 173, + "call_index": 8, + "lane_in_call": 13, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19663.530670551172, + "log_likelihood_scalar_library_pdip": 19663.704925197264, + "rel_diff": 8.861740285198028e-06, + "abs_diff_nats": 0.17425464609186747 + }, + { + "lane_row": 178, + "call_index": 8, + "lane_in_call": 18, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 21885.39202787072, + "log_likelihood_scalar_library_pdip": 21885.392028032624, + "rel_diff": 7.397839098492216e-12, + "abs_diff_nats": 1.619046088308096e-07 + }, + { + "lane_row": 180, + "call_index": 9, + "lane_in_call": 0, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19762.372543698988, + "log_likelihood_scalar_library_pdip": 19761.17302001366, + "rel_diff": 6.070103652825624e-05, + "abs_diff_nats": 1.1995236853290407 + }, + { + "lane_row": 195, + "call_index": 9, + "lane_in_call": 15, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 21134.29601127171, + "log_likelihood_scalar_library_pdip": 21134.74588130819, + "rel_diff": 2.1285802962026402e-05, + "abs_diff_nats": 0.44987003648202517 + }, + { + "lane_row": 197, + "call_index": 9, + "lane_in_call": 17, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 22526.881173162023, + "log_likelihood_scalar_library_pdip": 22526.931435570714, + "rel_diff": 2.2312141729090803e-06, + "abs_diff_nats": 0.05026240869119647 + }, + { + "lane_row": 200, + "call_index": 10, + "lane_in_call": 0, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19661.75856190954, + "log_likelihood_scalar_library_pdip": 19661.839997917774, + "rel_diff": 4.14183048187579e-06, + "abs_diff_nats": 0.08143600823314046 + }, + { + "lane_row": 201, + "call_index": 10, + "lane_in_call": 1, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19661.827696018598, + "log_likelihood_scalar_library_pdip": 19661.991557580186, + "rel_diff": 8.333924928639614e-06, + "abs_diff_nats": 0.16386156158841914 + }, + { + "lane_row": 204, + "call_index": 10, + "lane_in_call": 4, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19661.611868013664, + "log_likelihood_scalar_library_pdip": 19661.775729108405, + "rel_diff": 8.333992666723458e-06, + "abs_diff_nats": 0.16386109474115074 + }, + { + "lane_row": 205, + "call_index": 10, + "lane_in_call": 5, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19685.42614822039, + "log_likelihood_scalar_library_pdip": 19685.142761718125, + "rel_diff": 1.4395958703275902e-05, + "abs_diff_nats": 0.28338650226578466 + }, + { + "lane_row": 206, + "call_index": 10, + "lane_in_call": 6, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19661.611552845556, + "log_likelihood_scalar_library_pdip": 19661.775413694464, + "rel_diff": 8.333980297335785e-06, + "abs_diff_nats": 0.16386084890837083 + }, + { + "lane_row": 209, + "call_index": 10, + "lane_in_call": 9, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19661.611552996765, + "log_likelihood_scalar_library_pdip": 19661.775415061857, + "rel_diff": 8.334042151983684e-06, + "abs_diff_nats": 0.163862065091962 + }, + { + "lane_row": 212, + "call_index": 10, + "lane_in_call": 12, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 20398.718243445765, + "log_likelihood_scalar_library_pdip": 20397.9669589847, + "rel_diff": 3.68313402299009e-05, + "abs_diff_nats": 0.7512844610646425 + }, + { + "lane_row": 213, + "call_index": 10, + "lane_in_call": 13, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19661.611552855098, + "log_likelihood_scalar_library_pdip": 19661.77541471316, + "rel_diff": 8.334031622558566e-06, + "abs_diff_nats": 0.16386185806186404 + }, + { + "lane_row": 222, + "call_index": 11, + "lane_in_call": 2, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19661.9727557309, + "log_likelihood_scalar_library_pdip": 19662.136617664048, + "rel_diff": 8.33388234109301e-06, + "abs_diff_nats": 0.16386193314610864 + }, + { + "lane_row": 228, + "call_index": 11, + "lane_in_call": 8, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19661.611582371715, + "log_likelihood_scalar_library_pdip": 19661.775443428865, + "rel_diff": 8.333990875919576e-06, + "abs_diff_nats": 0.16386105714991572 + }, + { + "lane_row": 230, + "call_index": 11, + "lane_in_call": 10, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19661.75970491638, + "log_likelihood_scalar_library_pdip": 19661.923566940262, + "rel_diff": 8.333977259298128e-06, + "abs_diff_nats": 0.16386202388093807 + }, + { + "lane_row": 239, + "call_index": 11, + "lane_in_call": 19, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19661.61156043895, + "log_likelihood_scalar_library_pdip": 19661.77542208161, + "rel_diff": 8.33402066411298e-06, + "abs_diff_nats": 0.16386164266077685 + }, + { + "lane_row": 245, + "call_index": 12, + "lane_in_call": 5, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 21117.676163358436, + "log_likelihood_scalar_library_pdip": 21117.677863830024, + "rel_diff": 8.052360677295182e-08, + "abs_diff_nats": 0.001700471588264918 + }, + { + "lane_row": 246, + "call_index": 12, + "lane_in_call": 6, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 21121.09036966407, + "log_likelihood_scalar_library_pdip": 21122.65969515253, + "rel_diff": 7.429582785074349e-05, + "abs_diff_nats": 1.5693254884608905 + }, + { + "lane_row": 249, + "call_index": 12, + "lane_in_call": 9, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 21607.56148569296, + "log_likelihood_scalar_library_pdip": 21607.346719745965, + "rel_diff": 9.939487239279948e-06, + "abs_diff_nats": 0.21476594699561247 + }, + { + "lane_row": 253, + "call_index": 12, + "lane_in_call": 13, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 20272.747036659515, + "log_likelihood_scalar_library_pdip": 20272.564954719513, + "rel_diff": 8.98169227270962e-06, + "abs_diff_nats": 0.1820819400018081 + }, + { + "lane_row": 256, + "call_index": 12, + "lane_in_call": 16, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 21279.31407852511, + "log_likelihood_scalar_library_pdip": 21279.30427540181, + "rel_diff": 4.6068814902652466e-07, + "abs_diff_nats": 0.009803123299207073 + }, + { + "lane_row": 270, + "call_index": 13, + "lane_in_call": 10, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 22182.38497510637, + "log_likelihood_scalar_library_pdip": 22182.39666301651, + "rel_diff": 5.26900240516259e-07, + "abs_diff_nats": 0.011687910136970459 + }, + { + "lane_row": 271, + "call_index": 13, + "lane_in_call": 11, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 21862.380145484593, + "log_likelihood_scalar_library_pdip": 21862.19773853122, + "rel_diff": 8.343486576867808e-06, + "abs_diff_nats": 0.18240695337226498 + }, + { + "lane_row": 272, + "call_index": 13, + "lane_in_call": 12, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 21159.267293050103, + "log_likelihood_scalar_library_pdip": 21159.267286939856, + "rel_diff": 2.8877405148882793e-10, + "abs_diff_nats": 6.1102473409846425e-06 + }, + { + "lane_row": 278, + "call_index": 13, + "lane_in_call": 18, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 21184.536807643468, + "log_likelihood_scalar_library_pdip": 21185.2040000847, + "rel_diff": 3.149332152904395e-05, + "abs_diff_nats": 0.6671924412330554 + }, + { + "lane_row": 279, + "call_index": 13, + "lane_in_call": 19, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 21346.431387387252, + "log_likelihood_scalar_library_pdip": 21346.409439750816, + "rel_diff": 1.0281652517874772e-06, + "abs_diff_nats": 0.02194763643637998 + }, + { + "lane_row": 285, + "call_index": 14, + "lane_in_call": 5, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 20391.045708311896, + "log_likelihood_scalar_library_pdip": 20392.507231606247, + "rel_diff": 7.166962246238262e-05, + "abs_diff_nats": 1.4615232943506271 + }, + { + "lane_row": 296, + "call_index": 14, + "lane_in_call": 16, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 23225.536226031385, + "log_likelihood_scalar_library_pdip": 23225.53622601705, + "rel_diff": 6.171498629979931e-13, + "abs_diff_nats": 1.4333636499941349e-08 + }, + { + "lane_row": 299, + "call_index": 14, + "lane_in_call": 19, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 20683.999892556727, + "log_likelihood_scalar_library_pdip": 20683.723057190877, + "rel_diff": 1.338421352310799e-05, + "abs_diff_nats": 0.2768353658502747 + }, + { + "lane_row": 300, + "call_index": 15, + "lane_in_call": 0, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 21280.451696097363, + "log_likelihood_scalar_library_pdip": 21280.444107767566, + "rel_diff": 3.5658700350888085e-07, + "abs_diff_nats": 0.007588329797727056 + }, + { + "lane_row": 302, + "call_index": 15, + "lane_in_call": 2, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19695.416756282284, + "log_likelihood_scalar_library_pdip": 19696.03137516066, + "rel_diff": 3.120521422148816e-05, + "abs_diff_nats": 0.6146188783750404 + }, + { + "lane_row": 305, + "call_index": 15, + "lane_in_call": 5, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 21450.50111511842, + "log_likelihood_scalar_library_pdip": 21450.320109506858, + "rel_diff": 8.438364119365962e-06, + "abs_diff_nats": 0.18100561156097683 + }, + { + "lane_row": 311, + "call_index": 15, + "lane_in_call": 11, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 21666.353798039952, + "log_likelihood_scalar_library_pdip": 21666.353177386918, + "rel_diff": 2.8645939129384165e-08, + "abs_diff_nats": 0.0006206530342751648 + }, + { + "lane_row": 314, + "call_index": 15, + "lane_in_call": 14, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 21511.49953086424, + "log_likelihood_scalar_library_pdip": 21511.441682553334, + "rel_diff": 2.6891880032662193e-06, + "abs_diff_nats": 0.05784831090568332 + }, + { + "lane_row": 320, + "call_index": 16, + "lane_in_call": 0, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 20922.95254710212, + "log_likelihood_scalar_library_pdip": 20924.00019991109, + "rel_diff": 5.006943218131067e-05, + "abs_diff_nats": 1.0476528089711792 + }, + { + "lane_row": 322, + "call_index": 16, + "lane_in_call": 2, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 20725.357419050408, + "log_likelihood_scalar_library_pdip": 20725.23483292655, + "rel_diff": 5.914824359990056e-06, + "abs_diff_nats": 0.1225861238563084 + }, + { + "lane_row": 324, + "call_index": 16, + "lane_in_call": 4, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 20900.27559618452, + "log_likelihood_scalar_library_pdip": 20900.274947457787, + "rel_diff": 3.103914835014123e-08, + "abs_diff_nats": 0.0006487267346528824 + }, + { + "lane_row": 325, + "call_index": 16, + "lane_in_call": 5, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 21993.17060511061, + "log_likelihood_scalar_library_pdip": 21992.532214258063, + "rel_diff": 2.902761929942638e-05, + "abs_diff_nats": 0.6383908525458537 + }, + { + "lane_row": 327, + "call_index": 16, + "lane_in_call": 7, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 22802.181286882853, + "log_likelihood_scalar_library_pdip": 22802.157427556584, + "rel_diff": 1.0463626674407924e-06, + "abs_diff_nats": 0.023859326269302983 + }, + { + "lane_row": 332, + "call_index": 16, + "lane_in_call": 12, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 20002.778821966825, + "log_likelihood_scalar_library_pdip": 20002.43128400599, + "rel_diff": 1.7374785889814183e-05, + "abs_diff_nats": 0.34753796083532507 + }, + { + "lane_row": 333, + "call_index": 16, + "lane_in_call": 13, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 21640.299553019824, + "log_likelihood_scalar_library_pdip": 21640.30020578231, + "rel_diff": 3.0164206606077674e-08, + "abs_diff_nats": 0.0006527624864247628 + }, + { + "lane_row": 467, + "call_index": 23, + "lane_in_call": 7, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 27581.051558411193, + "log_likelihood_scalar_library_pdip": 27582.991649276868, + "rel_diff": 7.033649178972087e-05, + "abs_diff_nats": 1.9400908656753018 + } + ], + "gated": false + }, + "lane_certified": [ + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 0, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 0, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 0, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 0, + 1, + 0, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 0, + 1, + 0, + 0, + 1, + 0, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 0, + 1, + 0, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 0, + 1, + 1, + 1, + 0, + 0, + 0, + 1, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 1, + 1, + 1, + 0, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 0, + 1, + 1, + 0, + 0, + 1, + 1, + 0, + 0, + 0, + 1, + 1, + 0, + 1, + 1, + 0, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 0, + 0, + 1, + 1, + 0, + 1, + 1, + 1, + 0, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 0, + 0, + 1, + 1, + 1, + 1, + 1, + 0, + 0, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 0, + 0, + 1, + 0, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 0, + 1, + 0, + 0, + 1, + 0, + 1, + 1, + 1, + 1, + 0, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1 + ], + "lane_passes": [ + 0, + 0, + 1, + 0, + 0, + 8, + 16, + 3, + 0, + 16, + 5, + 0, + 3, + 0, + 2, + 2, + 0, + 0, + 16, + 0, + 16, + 0, + 0, + 0, + 16, + 0, + 0, + 0, + 1, + 16, + 1, + 16, + 0, + 0, + 0, + 2, + 0, + 16, + 0, + 0, + 0, + 8, + 16, + 16, + 0, + 0, + 0, + 4, + 0, + 0, + 0, + 1, + 16, + 0, + 0, + 16, + 0, + 0, + 6, + 0, + 0, + 0, + 0, + 0, + 0, + 8, + 16, + 0, + 0, + 0, + 0, + 0, + 16, + 3, + 4, + 0, + 16, + 4, + 0, + 0, + 16, + 3, + 16, + 0, + 0, + 16, + 12, + 0, + 0, + 0, + 16, + 0, + 0, + 9, + 0, + 0, + 0, + 16, + 0, + 0, + 2, + 4, + 0, + 16, + 2, + 0, + 16, + 0, + 16, + 16, + 1, + 16, + 1, + 1, + 16, + 3, + 0, + 0, + 5, + 0, + 0, + 0, + 8, + 2, + 16, + 12, + 0, + 0, + 5, + 1, + 0, + 0, + 0, + 0, + 3, + 16, + 16, + 2, + 16, + 0, + 0, + 0, + 14, + 16, + 0, + 0, + 16, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 16, + 16, + 0, + 2, + 4, + 16, + 16, + 16, + 1, + 2, + 16, + 4, + 16, + 5, + 16, + 2, + 1, + 2, + 0, + 16, + 1, + 16, + 10, + 4, + 0, + 9, + 5, + 3, + 2, + 2, + 3, + 11, + 1, + 1, + 10, + 2, + 16, + 4, + 16, + 7, + 1, + 16, + 16, + 8, + 2, + 16, + 16, + 16, + 2, + 13, + 16, + 2, + 3, + 16, + 16, + 2, + 1, + 0, + 1, + 7, + 9, + 4, + 2, + 16, + 3, + 3, + 2, + 2, + 2, + 16, + 2, + 16, + 2, + 3, + 2, + 8, + 1, + 8, + 1, + 1, + 16, + 1, + 1, + 8, + 5, + 2, + 16, + 16, + 11, + 2, + 16, + 4, + 3, + 3, + 16, + 6, + 2, + 16, + 4, + 13, + 2, + 4, + 2, + 1, + 2, + 4, + 4, + 2, + 2, + 6, + 4, + 16, + 16, + 16, + 8, + 2, + 14, + 2, + 2, + 16, + 16, + 11, + 6, + 2, + 6, + 4, + 16, + 8, + 6, + 10, + 3, + 12, + 8, + 2, + 4, + 7, + 2, + 16, + 5, + 6, + 16, + 16, + 2, + 16, + 2, + 7, + 16, + 2, + 6, + 8, + 4, + 2, + 16, + 2, + 7, + 16, + 1, + 3, + 2, + 4, + 3, + 16, + 3, + 16, + 7, + 16, + 16, + 3, + 16, + 7, + 3, + 6, + 1, + 16, + 16, + 3, + 6, + 5, + 4, + 5, + 5, + 2, + 1, + 3, + 4, + 1, + 2, + 2, + 5, + 1, + 5, + 7, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 2, + 3, + 2, + 2, + 3, + 2, + 2, + 3, + 3, + 1, + 2, + 4, + 4, + 3, + 3, + 3, + 3, + 2, + 1, + 2, + 2, + 3, + 1, + 2, + 3, + 2, + 2, + 3, + 2, + 5, + 2, + 3, + 3, + 2, + 0, + 1, + 3, + 2, + 2, + 4, + 2, + 2, + 5, + 3, + 2, + 8, + 7, + 1, + 2, + 2, + 2, + 3, + 3, + 4, + 4, + 2, + 5, + 3, + 4, + 2, + 5, + 5, + 3, + 4, + 5, + 3, + 6, + 2, + 1, + 3, + 2, + 3, + 4, + 2, + 2, + 2, + 4, + 2, + 2, + 2, + 2, + 5, + 3, + 3, + 2, + 2, + 4, + 2, + 4, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 3, + 2, + 2, + 3, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 16, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 3, + 2, + 3, + 2, + 2, + 2, + 3, + 2, + 2, + 3, + 2, + 2, + 4, + 2, + 2, + 2, + 2, + 2, + 3, + 2, + 2, + 3, + 2, + 2, + 3, + 2, + 3, + 2, + 2, + 4, + 3, + 3, + 2, + 2, + 3, + 3, + 2, + 3, + 3, + 2, + 3, + 3, + 2, + 2, + 2, + 2, + 2, + 3, + 2, + 2, + 3, + 2, + 3, + 2, + 3, + 2, + 3, + 3, + 2, + 3, + 3, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 3, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 2, + 2, + 3, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 3, + 2, + 3, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 2, + 2, + 2, + 4, + 2, + 2, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 3, + 2, + 2, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 2, + 3, + 2, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 2, + 3, + 2, + 3, + 2, + 2, + 3, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 3, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 2, + 3, + 2, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 2, + 3, + 2, + 3, + 3, + 3, + 2, + 2, + 2, + 3, + 2, + 3, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 3, + 2, + 2, + 3, + 2, + 2, + 2, + 3, + 2, + 3, + 2, + 2, + 2, + 2, + 2, + 3, + 3, + 3, + 2, + 3, + 3, + 3, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 3, + 2, + 2, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 2, + 3, + 3, + 2, + 2, + 2, + 2, + 3, + 3, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 3, + 2, + 2, + 3, + 3, + 2, + 2, + 3, + 2, + 2, + 3, + 2, + 2, + 3, + 3, + 2, + 2, + 2, + 2, + 3, + 2, + 2, + 3, + 2, + 2, + 2, + 2, + 2, + 3, + 2, + 3, + 3, + 3, + 3, + 2, + 2, + 3, + 2, + 2, + 2, + 2, + 2, + 3, + 2, + 2, + 3, + 2, + 3, + 3, + 3, + 2, + 3, + 2, + 3, + 3, + 2, + 2, + 3, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 2, + 2, + 3, + 2, + 2, + 3, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 2, + 3, + 2, + 3, + 2, + 2, + 3, + 2, + 2, + 2, + 3, + 2, + 3, + 2, + 2, + 3, + 2, + 3, + 2, + 2, + 3, + 3, + 2, + 3, + 2, + 3, + 3, + 2, + 3, + 2, + 3, + 3, + 3, + 2, + 2, + 3, + 2, + 2, + 2, + 2, + 3, + 2, + 3, + 2, + 2, + 2, + 3, + 3, + 2, + 2, + 3, + 2, + 3, + 2, + 2, + 2, + 3, + 3, + 3, + 3, + 2, + 3, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 3, + 3, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 2, + 3, + 2, + 2, + 3, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 2, + 3, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 3, + 2, + 2, + 2, + 2, + 2, + 3, + 3, + 2, + 2, + 3, + 3, + 2, + 3, + 3, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 2, + 3, + 2, + 2, + 3, + 2, + 2, + 2, + 3, + 3, + 2, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 2, + 3, + 3, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 3, + 3, + 2, + 2, + 3, + 3, + 3, + 2, + 3, + 2, + 2, + 3, + 2, + 3, + 2, + 3, + 3, + 2, + 2, + 2, + 3, + 2, + 3, + 3, + 2, + 3, + 3, + 3, + 2, + 2, + 3, + 3, + 2, + 2, + 2, + 3, + 2, + 2, + 3, + 3, + 2, + 3, + 3, + 3, + 3, + 3, + 2, + 3, + 3, + 2, + 3, + 3, + 3, + 3, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 2, + 3, + 3, + 2, + 3, + 2, + 2, + 2, + 3, + 3, + 2, + 2, + 3, + 3, + 2 + ], + "lane_rows": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621, + 622, + 623, + 624, + 625, + 626, + 627, + 628, + 629, + 630, + 631, + 632, + 633, + 634, + 635, + 636, + 637, + 638, + 639, + 640, + 641, + 642, + 643, + 644, + 645, + 646, + 647, + 648, + 649, + 650, + 651, + 652, + 653, + 654, + 655, + 656, + 657, + 658, + 659, + 660, + 661, + 662, + 663, + 664, + 665, + 666, + 667, + 668, + 669, + 670, + 671, + 672, + 673, + 674, + 675, + 676, + 677, + 678, + 679, + 680, + 681, + 682, + 683, + 684, + 685, + 686, + 687, + 688, + 689, + 690, + 691, + 692, + 693, + 694, + 695, + 696, + 697, + 698, + 699, + 700, + 701, + 702, + 703, + 704, + 705, + 706, + 707, + 708, + 709, + 710, + 711, + 712, + 713, + 714, + 715, + 716, + 717, + 718, + 719, + 720, + 721, + 722, + 723, + 724, + 725, + 726, + 727, + 728, + 729, + 730, + 731, + 732, + 733, + 734, + 735, + 736, + 737, + 738, + 739, + 740, + 741, + 742, + 743, + 744, + 745, + 746, + 747, + 748, + 749, + 750, + 751, + 752, + 753, + 754, + 755, + 756, + 757, + 758, + 759, + 760, + 761, + 762, + 763, + 764, + 765, + 766, + 767, + 768, + 769, + 770, + 771, + 772, + 773, + 774, + 775, + 776, + 777, + 778, + 779, + 780, + 781, + 782, + 783, + 784, + 785, + 786, + 787, + 788, + 789, + 790, + 791, + 792, + 793, + 794, + 795, + 796, + 797, + 798, + 799, + 800, + 801, + 802, + 803, + 804, + 805, + 806, + 807, + 808, + 809, + 810, + 811, + 812, + 813, + 814, + 815, + 816, + 817, + 818, + 819, + 820, + 821, + 822, + 823, + 824, + 825, + 826, + 827, + 828, + 829, + 830, + 831, + 832, + 833, + 834, + 835, + 836, + 837, + 838, + 839, + 840, + 841, + 842, + 843, + 844, + 845, + 846, + 847, + 848, + 849, + 850, + 851, + 852, + 853, + 854, + 855, + 856, + 857, + 858, + 859, + 860, + 861, + 862, + 863, + 864, + 865, + 866, + 867, + 868, + 869, + 870, + 871, + 872, + 873, + 874, + 875, + 876, + 877, + 878, + 879, + 880, + 881, + 882, + 883, + 884, + 885, + 886, + 887, + 888, + 889, + 890, + 891, + 892, + 893, + 894, + 895, + 896, + 897, + 898, + 899, + 900, + 901, + 902, + 903, + 904, + 905, + 906, + 907, + 908, + 909, + 910, + 911, + 912, + 913, + 914, + 915, + 916, + 917, + 918, + 919, + 920, + 921, + 922, + 923, + 924, + 925, + 926, + 927, + 928, + 929, + 930, + 931, + 932, + 933, + 934, + 935, + 936, + 937, + 938, + 939, + 940, + 941, + 942, + 943, + 944, + 945, + 946, + 947, + 948, + 949, + 950, + 951, + 952, + 953, + 954, + 955, + 956, + 957, + 958, + 959, + 960, + 961, + 962, + 963, + 964, + 965, + 966, + 967, + 968, + 969, + 970, + 971, + 972, + 973, + 974, + 975, + 976, + 977, + 978, + 979, + 980, + 981, + 982, + 983, + 984, + 985, + 986, + 987, + 988, + 989, + 990, + 991, + 992, + 993, + 994, + 995, + 996, + 997, + 998, + 999, + 1000, + 1001, + 1002, + 1003, + 1004, + 1005, + 1006, + 1007, + 1008, + 1009, + 1010, + 1011, + 1012, + 1013, + 1014, + 1015, + 1016, + 1017, + 1018, + 1019, + 1020, + 1021, + 1022, + 1023, + 1024, + 1025, + 1026, + 1027, + 1028, + 1029, + 1030, + 1031, + 1032, + 1033, + 1034, + 1035, + 1036, + 1037, + 1038, + 1039, + 1040, + 1041, + 1042, + 1043, + 1044, + 1045, + 1046, + 1047, + 1048, + 1049, + 1050, + 1051, + 1052, + 1053, + 1054, + 1055, + 1056, + 1057, + 1058, + 1059, + 1060, + 1061, + 1062, + 1063, + 1064, + 1065, + 1066, + 1067, + 1068, + 1069, + 1070, + 1071, + 1072, + 1073, + 1074, + 1075, + 1076, + 1077, + 1078, + 1079, + 1080, + 1081, + 1082, + 1083, + 1084, + 1085, + 1086, + 1087, + 1088, + 1089, + 1090, + 1091, + 1092, + 1093, + 1094, + 1095, + 1096, + 1097, + 1098, + 1099, + 1100, + 1101, + 1102, + 1103, + 1104, + 1105, + 1106, + 1107, + 1108, + 1109, + 1110, + 1111, + 1112, + 1113, + 1114, + 1115, + 1116, + 1117, + 1118, + 1119, + 1120, + 1121, + 1122, + 1123, + 1124, + 1125, + 1126, + 1127, + 1128, + 1129, + 1130, + 1131, + 1132, + 1133, + 1134, + 1135, + 1136, + 1137, + 1138, + 1139, + 1140, + 1141, + 1142, + 1143, + 1144, + 1145, + 1146, + 1147, + 1148, + 1149, + 1150, + 1151, + 1152, + 1153, + 1154, + 1155, + 1156, + 1157, + 1158, + 1159, + 1160, + 1161, + 1162, + 1163, + 1164, + 1165, + 1166, + 1167, + 1168, + 1169, + 1170, + 1171, + 1172, + 1173, + 1174, + 1175, + 1176, + 1177, + 1178, + 1179, + 1180, + 1181, + 1182, + 1183, + 1184, + 1185, + 1186, + 1187, + 1188, + 1189, + 1190, + 1191, + 1192, + 1193, + 1194, + 1195, + 1196, + 1197, + 1198, + 1199, + 1200, + 1201, + 1202, + 1203, + 1204, + 1205, + 1206, + 1207, + 1208, + 1209, + 1210, + 1211, + 1212, + 1213, + 1214, + 1215, + 1216, + 1217, + 1218, + 1219, + 1220, + 1221, + 1222, + 1223, + 1224, + 1225, + 1226, + 1227, + 1228, + 1229, + 1230, + 1231, + 1232, + 1233, + 1234, + 1235, + 1236, + 1237, + 1238, + 1239, + 1240, + 1241, + 1242, + 1243, + 1244, + 1245, + 1246, + 1247, + 1248, + 1249, + 1250, + 1251, + 1252, + 1253, + 1254, + 1255, + 1256, + 1257, + 1258, + 1259, + 1260, + 1261, + 1262, + 1263, + 1264, + 1265, + 1266, + 1267, + 1268, + 1269, + 1270, + 1271, + 1272, + 1273, + 1274, + 1275, + 1276, + 1277, + 1278, + 1279, + 1280, + 1281, + 1282, + 1283, + 1284, + 1285, + 1286, + 1287, + 1288, + 1289, + 1290, + 1291, + 1292, + 1293, + 1294, + 1295, + 1296, + 1297, + 1298, + 1299, + 1300, + 1301, + 1302, + 1303, + 1304, + 1305, + 1306, + 1307, + 1308, + 1309, + 1310, + 1311, + 1312, + 1313, + 1314, + 1315, + 1316, + 1317, + 1318, + 1319, + 1320, + 1321, + 1322, + 1323, + 1324, + 1325, + 1326, + 1327, + 1328, + 1329, + 1330, + 1331, + 1332, + 1333, + 1334, + 1335, + 1336, + 1337, + 1338, + 1339, + 1340, + 1341, + 1342, + 1343, + 1344, + 1345, + 1346, + 1347, + 1348, + 1349, + 1350, + 1351, + 1352, + 1353, + 1354, + 1355, + 1356, + 1357, + 1358, + 1359, + 1360, + 1361, + 1362, + 1363, + 1364, + 1365, + 1366, + 1367, + 1368, + 1369, + 1370, + 1371, + 1372, + 1373, + 1374, + 1375, + 1376, + 1377, + 1378, + 1379, + 1380, + 1381, + 1382, + 1383, + 1384, + 1385, + 1386, + 1387, + 1388, + 1389, + 1390, + 1391, + 1392, + 1393, + 1394, + 1395, + 1396, + 1397, + 1398, + 1399, + 1400, + 1401, + 1402, + 1403, + 1404, + 1405, + 1406, + 1407, + 1408, + 1409, + 1410, + 1411, + 1412, + 1413, + 1414, + 1415, + 1416, + 1417, + 1418, + 1419, + 1420, + 1421, + 1422, + 1423, + 1424, + 1425, + 1426, + 1427, + 1428, + 1429, + 1430, + 1431, + 1432, + 1433, + 1434, + 1435, + 1436, + 1437, + 1438, + 1439, + 1440, + 1441, + 1442, + 1443, + 1444, + 1445, + 1446, + 1447, + 1448, + 1449, + 1450, + 1451, + 1452, + 1453, + 1454, + 1455, + 1456, + 1457, + 1458, + 1459, + 1460, + 1461, + 1462, + 1463, + 1464, + 1465, + 1466, + 1467, + 1468, + 1469, + 1470, + 1471, + 1472, + 1473, + 1474, + 1475, + 1476, + 1477, + 1478, + 1479, + 1480, + 1481, + 1482, + 1483, + 1484, + 1485, + 1486, + 1487, + 1488, + 1489, + 1490, + 1491, + 1492, + 1493, + 1494, + 1495, + 1496, + 1497, + 1498, + 1499, + 1500, + 1501, + 1502, + 1503, + 1504, + 1505, + 1506, + 1507, + 1508, + 1509, + 1510, + 1511, + 1512, + 1513, + 1514, + 1515, + 1516, + 1517, + 1518, + 1519, + 1520, + 1521, + 1522, + 1523, + 1524, + 1525, + 1526, + 1527, + 1528, + 1529, + 1530, + 1531, + 1532, + 1533, + 1534, + 1535, + 1536, + 1537, + 1538, + 1539, + 1540, + 1541, + 1542, + 1543, + 1544, + 1545, + 1546, + 1547, + 1548, + 1549, + 1550, + 1551, + 1552, + 1553, + 1554, + 1555, + 1556, + 1557, + 1558, + 1559, + 1560, + 1561, + 1562, + 1563, + 1564, + 1565, + 1566, + 1567, + 1568, + 1569, + 1570, + 1571, + 1572, + 1573, + 1574, + 1575, + 1576, + 1577, + 1578, + 1579, + 1580, + 1581, + 1582, + 1583, + 1584, + 1585, + 1586, + 1587, + 1588, + 1589, + 1590, + 1591, + 1592, + 1593, + 1594, + 1595, + 1596, + 1597, + 1598, + 1599, + 1600, + 1601, + 1602, + 1603, + 1604, + 1605, + 1606, + 1607, + 1608, + 1609, + 1610, + 1611, + 1612, + 1613, + 1614, + 1615, + 1616, + 1617, + 1618, + 1619, + 1620, + 1621, + 1622, + 1623, + 1624, + 1625, + 1626, + 1627, + 1628, + 1629, + 1630, + 1631, + 1632, + 1633, + 1634, + 1635, + 1636, + 1637, + 1638, + 1639, + 1640, + 1641, + 1642, + 1643, + 1644, + 1645, + 1646, + 1647, + 1648, + 1649, + 1650, + 1651, + 1652, + 1653, + 1654, + 1655, + 1656, + 1657, + 1658, + 1659, + 1660, + 1661, + 1662, + 1663, + 1664, + 1665, + 1666, + 1667, + 1668, + 1669, + 1670, + 1671, + 1672, + 1673, + 1674, + 1675, + 1676, + 1677, + 1678, + 1679 + ], + "rate_pass_wall_s": 25.16404759699799 + }, + "routes": { + "b_s3_pdip": { + "label": "S3 PDIP (source-only)", + "status": "ok", + "solver": "library", + "ms": 50.77375740002026, + "log_likelihood": 29155.00017684672 + }, + "d_s3_certified_fallback": { + "label": "S3 certified active set, budget 7, PDIP fallback", + "status": "ok", + "solver": "harness-injected certified active set", + "pass_budget": 7, + "fallback": true, + "injected_solver_calls_jax": 1, + "injected_solver_calls_numpy": 0, + "ms": 31.704955299937865, + "log_likelihood": 29155.00017745562 + } + }, + "equivalence_pins": [ + { + "pin": "route d (certified, fallback) == route b (library PDIP)", + "route": "d_s3_certified_fallback", + "reference": "b_s3_pdip", + "expectation": "the certified active set returns the library's own positive solution", + "rtol": 1e-09, + "got": 29155.00017745562, + "reference_value": 29155.00017684672, + "rel_diff": 2.088490561433491e-11, + "status": "PASS" + } + ], + "reference": { + "log_evidence_s3_library": 29155.000174339304 + }, + "library_revisions": { + "PyAutoNerves": { + "head": "1fa613aa8d89a79613009fb66f5b4e2d21deb57a", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoNerves", + "module_file": "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/__init__.py" + }, + "PyAutoFit": { + "head": "dd9fbe0aab60c4a57702b1444ca031b317c91331", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoFit", + "module_file": "/mnt/ral/jnightin/PyAuto/PyAutoFit/autofit/__init__.py" + }, + "PyAutoArray": { + "head": "3de624b5b91a4efa130dc3cb0a3a0f06f85025a3", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoArray", + "module_file": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/__init__.py" + }, + "PyAutoGalaxy": { + "head": "70a61e26cd715cefe7012a38285698091246a8a4", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy", + "module_file": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/__init__.py" + }, + "PyAutoLens": { + "head": "86054bbc19baa2f710a12e04a94fa27ab37cc354", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoLens", + "module_file": "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/__init__.py" + } + }, + "timer": { + "dataset_load": 0.08223076600188506, + "mask_and_oversample": 0.015158120000705821, + "adapt_image_build": 0.00234464299865067, + "image_mesh_hilbert": 0.36998408699946594, + "model_build": 0.6079522469990479, + "instance_from_vector": 0.012293834002775839, + "register_pytrees": 0.0006979509998927824, + "fit_imaging_eager": 4.40731809999852, + "s3_system_build": 3.039376558997901, + "b_s3_pdip_library_likelihood_jit_lower": 1.533057615000871, + "b_s3_pdip_library_likelihood_jit_compile": 4.593687763001071, + "b_s3_pdip_library_likelihood_jit_first_call": 0.11929759600025136, + "b_s3_pdip_library_likelihood_jit_steady_x10": 0.5077375740002026, + "d_s3_certified_fallback_library_likelihood_jit_lower": 0.4799996319998172, + "d_s3_certified_fallback_library_likelihood_jit_compile": 4.254465371999686, + "d_s3_certified_fallback_library_likelihood_jit_first_call": 0.041063683998800116, + "d_s3_certified_fallback_library_likelihood_jit_steady_x10": 0.31704955299937865, + "captured_rate_pass": 17.03252149200125, + "captured_rate_uncertified_pdip_recheck": 8.128984453996964 + }, + "note": "Phase C1 (#304) rate pass: untimed. No millisecond here is a result. The rate is the fraction of captured lanes whose certificate failed under the named certified_fallback; the phase-C2 verdict takes it together with the timed pass." +} \ No newline at end of file diff --git a/results/breakdown/imaging/fixed_light_trace_delaunay_jitvmap16_captured_pix1_libcertified_fboff_b16_hpc_a100_fp64_fixed_light_trace.json b/results/breakdown/imaging/fixed_light_trace_delaunay_jitvmap16_captured_pix1_libcertified_fboff_b16_hpc_a100_fp64_fixed_light_trace.json new file mode 100644 index 000000000..734543645 --- /dev/null +++ b/results/breakdown/imaging/fixed_light_trace_delaunay_jitvmap16_captured_pix1_libcertified_fboff_b16_hpc_a100_fp64_fixed_light_trace.json @@ -0,0 +1,5795 @@ +{ + "device": { + "backend": "gpu", + "device": "cuda:0", + "hostname": "euclid-ral-gpu-2", + "xla_flags": "--xla_disable_hlo_passes=constant_folding --xla_gpu_autotune_level=0 --xla_gpu_enable_triton_gemm=false", + "omp_num_threads": null, + "cpu_count": 124, + "jax_compilation_cache_dir": "/mnt/ral/jnightin/autolens_profiling_wt/certified-solver-phase-c1-lane-rate/output/jax_cache/fixed_light_lanerate_delaunay_pix1_time_16_certified_off_350768_10", + "autotune_cache_entries_at_start": 0, + "cache_fresh": true, + "nvidia_smi": "NVIDIA A100 80GB PCIe, 35457 MiB, 81920 MiB" + }, + "machine": { + "cpu_model": "AMD EPYC 7702 64-Core Processor", + "cpu_count_os": 124, + "nproc": 4, + "nproc_all": 124, + "nproc_note": "GNU nproc honours OMP_NUM_THREADS, so `nproc` can print 1 on a multi-core host; `nproc_all` is the core count.", + "ram_total": "928298204 kB", + "kernel": "5.14.0-687.50.1.el9_8.x86_64", + "platform": "Linux-5.14.0-687.50.1.el9_8.x86_64-x86_64-with-glibc2.34", + "python": "3.12.4", + "jax_thread_env": { + "NPROC": null + }, + "blas_thread_env": { + "OMP_NUM_THREADS": null, + "OPENBLAS_NUM_THREADS": null, + "MKL_NUM_THREADS": null, + "VECLIB_MAXIMUM_THREADS": null, + "NUMEXPR_NUM_THREADS": null + }, + "thread_env_note": "NPROC sizes XLA's CPU intra-op pool (the JAX rows); the BLAS knobs pin OpenBLAS/MKL/OpenMP (the numpy/scipy rows) and do not touch JAX. Two disjoint families; both are recorded on every CPU timing.", + "gpu": "NVIDIA A100 80GB PCIe, 81920 MiB, 610.57.04" + }, + "precision": "fp64", + "configuration": { + "pixel_scale_arcsec": 0.05, + "mask_radius_arcsec": 3.5, + "image_pixels_masked": 15361, + "over_sampled_pixels": 62752, + "mesh": "delaunay", + "mesh_shape": null, + "source_pixels": 1500, + "source_pixels_requested": null, + "dataset": "hst", + "dataset_sha256": { + "data.fits": "e4e833a28e9c6f6fb023cd85c0d3dde74068720256bc77a240633500e5b04fac", + "noise_map.fits": "315c6266a0acd3ac9c8da82fcd2b45a08697362481fd7a35072bab1658530ba3", + "psf.fits": "8389ba0e8bf4a09b4a561cfc246181a2fb944ed396754cd0ff76fdd22910d303" + }, + "cell_source_sha256": "06a162fcdae6b329384ec33322f443df07215d86e56f0505ac15b3d3473eb432", + "inversion_path": "dense", + "pass_budget": 7, + "pass_budget_basis": "phase 3 (autolens_profiling#255): the smallest ZERO-fallback budget per mesh, the budget a production run fixes. NOT phase 0's certifying budget (2 for Delaunay), which falls back on 67.5 % of a graded draw set and is not a production cost.", + "border_relocator_mode": "cell", + "border_relocator": true, + "border_relocator_note": "'cell' is use_border_relocator=True, which every profiling cell in this family forces; 'library' passes None and takes the shipped config default, which is what production runs. The resolved boolean is what this leg actually ran.", + "routes_selected": [ + "b", + "d" + ], + "trace_calls": 10, + "command_buffers_traced": "off", + "use_mixed_precision": false, + "tau_rel": 1e-09, + "regularization": { + "scheme": "adapt_split", + "inner_coefficient": 0.1, + "outer_coefficient": 10.0, + "signal_scale": 0.1 + }, + "thread_env": { + "n_threads": null, + "vars": [ + "OPENBLAS_NUM_THREADS", + "MKL_NUM_THREADS", + "OMP_NUM_THREADS", + "VECLIB_MAXIMUM_THREADS", + "NUMEXPR_NUM_THREADS" + ], + "set_to": null, + "preexisting": {}, + "overridden": {}, + "note": "Not pinned (legacy variant): recorded as found." + }, + "over_sample_size_lp_rule": { + "sub_size_list": [ + 4, + 2, + 2 + ], + "radial_list": [ + 0.3, + 0.6 + ], + "centre": [ + 0.0, + 0.0 + ] + }, + "vmap_batch": 16, + "lanes": "captured", + "arms": [ + "vmap", + "scalar" + ], + "fallback": "off", + "draw_seed": 0, + "vmap_composition": "jax.jit(jax.vmap(fn))", + "lane_rtol": 1e-09, + "vmap_flags_note": "Strict ProfileCLI.parse_cell_args rejects unknown flags. These keys record the exact batching program and prevent historical vmap(jit) artifacts from being mistaken for current jit(vmap) measurements.", + "solver_source": "library", + "solver": "certified", + "certified_fallback": "none", + "certified_pass_budget": 16, + "captured_pass": "time", + "batches": "/mnt/ral/jnightin/autolens_profiling_wt/certified-solver-phase-c1-lane-rate/results/breakdown/imaging/nautilus_batches_delaunay_pix1.npz" + }, + "solver_injection": { + "patched": null, + "part_v": "none \u2014 library mode selects the solver through al.Settings", + "part_b_route_d": { + "patched": "autoarray.inversion.inversion.inversion_util.reconstruction_positive_only_from", + "pass_budget": 7, + "fallback": true + }, + "note": "Library mode (phase B, #300): PART V's arms and references run the library's own positive-only solve, selected by Settings(positive_only_solver, certified_fallback, certified_pass_budget); nothing is injected. PART B's single-call route d (the fiducial d == b pin) still uses the phase-1 harness injection at the phase-3 budget and is not a phase-B row. The untimed certification report observes the library solve (library_solver_observed) without changing it." + }, + "routes": { + "b_s3_pdip": { + "label": "S3 PDIP (source-only)", + "status": "ok", + "solver": "library", + "ms": 50.846076300149434, + "log_likelihood": 29155.000173450033 + }, + "d_s3_certified_fallback": { + "label": "S3 certified active set, budget 7, PDIP fallback", + "status": "ok", + "solver": "harness-injected certified active set", + "pass_budget": 7, + "fallback": true, + "injected_solver_calls_jax": 1, + "injected_solver_calls_numpy": 0, + "ms": 31.670782400033204, + "log_likelihood": 29155.00017281842 + } + }, + "equivalence_pins": [ + { + "pin": "route d (certified, fallback) == route b (library PDIP)", + "route": "d_s3_certified_fallback", + "reference": "b_s3_pdip", + "expectation": "the certified active set returns the library's own positive solution", + "rtol": 1e-09, + "got": 29155.00017281842, + "reference_value": 29155.000173450033, + "rel_diff": 2.1663910986603628e-11, + "status": "PASS" + } + ], + "equivalence_rtol": 1e-09, + "reference": { + "log_evidence_s0_library": 29155.00017433923, + "log_evidence_s3_library": 29155.000174339304, + "s3": { + "n_params": 1500, + "n_mapper": 1500, + "n_funcs": 0, + "edge_zeroed_pixels": 0, + "subtracted_light_flux": 5105.448603818575 + } + }, + "command_buffers": { + "wall_on_ms": 512.7541152000049, + "wall_off_ms": 517.150563299947, + "command_buffer_delta_ms": 4.396448099942063, + "command_buffer_delta_pct": 0.8574183940439336, + "traced": "off", + "compiler_option": "xla_gpu_enable_command_buffer", + "probe": { + "note": "Not taken in --vmap-batch mode: the CUPTI-inside-a-CUDA-graph probe is a phase-1 diagnostic about the JOIN, and this mode already compiles and times both the command-buffers ON and OFF executable of every arm." + }, + "note": "ONE lowering, TWO compilations, one process. wall_on_ms is the PRODUCTION program (CUDA graphs as XLA ships them) and is the number comparable to phase 5's row; wall_off_ms is the graph-less program the stage rows attribute. The delta is the launch overhead the graphs remove \u2014 it lands in device_idle and host_outside_span, not in any stage. Reconciliation is computed against wall_off_ms." + }, + "trace": { + "parser": "ProfileData.from_file(xplane) + as_text() + stack_frame_index(proto field 17)", + "stage_audit": { + "mixed_fusion": [ + { + "instruction": "loop_divide_gather_fusion", + "ms": 1.0222060687499999, + "opcode": "fusion", + "shape": "(f64[15361,1,1,1500]{3,2,1,0}, f64[15361,1,1,1500]{3,2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_broadcast_fusion.4", + "ms": 0.227287425, + "opcode": "fusion", + "shape": "f64[1500,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_reduce_fusion.5", + "ms": 0.12172564999999999, + "opcode": "fusion", + "shape": "f64[92,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123 (data_vector_via_blurred_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:67 (InversionImagingMapping.data_vector)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:699 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_reduce_fusion.9", + "ms": 0.11514451250000009, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163 (mapped_reconstructed_data_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:120 (InversionImagingMapping._mapped_reconstructed_data_dict_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:196 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "loop_broadcast_fusion.2", + "ms": 0.11111129375, + "opcode": "fusion", + "shape": "f64[15361,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:342", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:342 (mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:283 (Mapper.mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:91 (AbstractInversionImaging._mapping_matrix_for_convolution_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:137 (AbstractInversionImaging.operated_mapping_matrix_list)" + ] + }, + { + "instruction": "input_multiply_transpose_fusion", + "ms": 0.11002071875, + "opcode": "fusion", + "shape": "(f64[1500,1500]{1,0}, f64[1500,1500]{1,0}, f64[1500,1500]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:237 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:274 (_certified_positive_only_from)" + ] + } + ], + "border_relocator": [ + { + "instruction": "eigh.45", + "ms": 0.07492749374999988, + "opcode": "custom-call", + "shape": "(f64[2,2]{0,1}, f64[2]{0}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "custom-call.2", + "ms": 0.00796716875000001, + "opcode": "custom-call", + "shape": "(f64[2,2]{1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_reduce_fusion.10", + "ms": 0.005843174999999995, + "opcode": "fusion", + "shape": "(f64[], f64[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:269", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:269 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_add_fusion.3", + "ms": 0.0035635437499999985, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:423 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:208 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_add_fusion.5", + "ms": 0.003449968749999998, + "opcode": "fusion", + "shape": "f64[1500]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:458 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_concatenate_fusion.12", + "ms": 0.0024208062499999987, + "opcode": "fusion", + "shape": "f64[392,2]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:238", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:238 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + } + ], + "mesh_construction": [ + { + "instruction": "input_concatenate_fusion.7", + "ms": 0.002060987500000002, + "opcode": "fusion", + "shape": "f64[1500,2]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:820", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:820 (InterpolatorDelaunay.mesh_grid_xy)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:847 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + } + ], + "mesh_qhull_callback": [ + { + "instruction": "pure_callback.4", + "ms": 0.010662925000000023, + "opcode": "custom-call", + "shape": "(s32[3000,3]{1,0}, s32[3000,3]{1,0}, s32[1500]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:161", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:161 (_jax_delaunay_tables)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:405 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + } + ], + "other": [ + { + "instruction": "copy.80", + "ms": 0.0421512312500022, + "opcode": "copy", + "shape": "f64[1,1024,2]{2,1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.48", + "ms": 0.016989462500000115, + "opcode": "copy", + "shape": "s32[21361]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.53", + "ms": 0.0019827937500000005, + "opcode": "copy", + "shape": "s64[1500]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.79", + "ms": 0.0017985875000000005, + "opcode": "copy", + "shape": "s32[]", + "source": "", + "stack": [] + }, + { + "instruction": "copy.78", + "ms": 0.0017723812499999992, + "opcode": "copy", + "shape": "s64[]", + "source": "", + "stack": [] + }, + { + "instruction": "copy.39", + "ms": 0.0016623937499999995, + "opcode": "copy", + "shape": "s32[]", + "source": "", + "stack": [] + } + ], + "mesh_seed_argmin": [ + { + "instruction": "input_reduce_fusion", + "ms": 0.15278476250000322, + "opcode": "fusion", + "shape": "(f64[1024]{0}, s64[1024]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:191", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:191 (_nearest_vertex_seed_from..argmin_chunk)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)" + ] + }, + { + "instruction": "loop_dynamic_update_slice_fusion", + "ms": 0.04134503124999953, + "opcode": "fusion", + "shape": "s32[21,1024]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_add_fusion", + "ms": 0.03183429999999872, + "opcode": "fusion", + "shape": "s64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_broadcast_fusion", + "ms": 0.0019629874999999995, + "opcode": "fusion", + "shape": "s32[21,1024]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "pdip_solve": [ + { + "instruction": "cholesky.50", + "ms": 5.925674424999978, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "triangular-solve.1", + "ms": 1.0751257125000189, + "opcode": "custom-call", + "shape": "(f64[1500,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "triangular-solve", + "ms": 0.9163587937499991, + "opcode": "custom-call", + "shape": "(f64[1500,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "cholesky.70", + "ms": 0.8940089249999981, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:297 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:274 (_certified_positive_only_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:496 (reconstruction_positive_only_from)" + ] + }, + { + "instruction": "cholesky.60", + "ms": 0.8650892000000021, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:237 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:274 (_certified_positive_only_from)" + ] + }, + { + "instruction": "input_transpose_fusion", + "ms": 0.23345516249999987, + "opcode": "fusion", + "shape": "f64[1500,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + } + ], + "regularization_H": [ + { + "instruction": "input_scatter_fusion.10", + "ms": 0.0020828, + "opcode": "fusion", + "shape": "f64[1500,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:615", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:615 (pixel_splitted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:137 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_concatenate_fusion.8", + "ms": 0.0018649875000000028, + "opcode": "fusion", + "shape": "pred[3]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:93", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:93 (split_points_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:410 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + }, + { + "instruction": "input_concatenate_fusion.9", + "ms": 0.0018535937500000009, + "opcode": "fusion", + "shape": "pred[3]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:91", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:91 (split_points_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:410 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + }, + { + "instruction": "input_concatenate_fusion.10", + "ms": 0.0018515874999999982, + "opcode": "fusion", + "shape": "pred[3]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:90", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:90 (split_points_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:410 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + }, + { + "instruction": "input_concatenate_fusion", + "ms": 0.0017653812499999993, + "opcode": "fusion", + "shape": "s32[1500,2]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:615", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:615 (pixel_splitted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:137 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_concatenate_fusion.11", + "ms": 0.0015515937499999998, + "opcode": "fusion", + "shape": "pred[3]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:88", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:88 (split_points_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:410 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + } + ], + "mesh_locate_walk": [ + { + "instruction": "loop_reduce_fusion", + "ms": 0.025831068749999925, + "opcode": "fusion", + "shape": "(f64[21361]{0}, s64[21361]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:264", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:264 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:264 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)" + ] + }, + { + "instruction": "input_reduce_fusion.1", + "ms": 0.025124125, + "opcode": "fusion", + "shape": "pred[196]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:288", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:288 (_walk_from_seed..cond)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)" + ] + }, + { + "instruction": "loop_or_select_fusion", + "ms": 0.02352166874999974, + "opcode": "fusion", + "shape": "(s32[21361]{0}, pred[21361]{0}, pred[21361]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:270", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:270 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)" + ] + }, + { + "instruction": "loop_select_fusion", + "ms": 0.02023009999999994, + "opcode": "fusion", + "shape": "s32[21361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:242", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:242 (_walk_from_seed..weights_of)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:262 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)" + ] + }, + { + "instruction": "input_reduce_fusion.2", + "ms": 0.016249318750000123, + "opcode": "fusion", + "shape": "pred[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:288", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:288 (_walk_from_seed..cond)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)" + ] + }, + { + "instruction": "while.20", + "ms": 0.014592549999999722, + "opcode": "while", + "shape": "(s32[], s32[21361]{0}, pred[21361]{0}, pred[21361]{0}, s32[3000,3]{1,0}, /*index=5*/f64[1500,2]{1,0}, f64[21361,2]{1,0}, s32[3000,3]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "psf_convolution_mapping_matrix": [ + { + "instruction": "input_scatter_fusion", + "ms": 1.9917171125000004, + "opcode": "fusion", + "shape": "f64[1500,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.19.0", + "ms": 1.7617358500000007, + "opcode": "fft", + "shape": "f64[1500,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.15.0", + "ms": 1.3688939375000002, + "opcode": "fft", + "shape": "c128[1500,180,91]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.17.0", + "ms": 0.9794694999999998, + "opcode": "fft", + "shape": "c128[1500,91,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_transpose_fusion.2", + "ms": 0.5134825312500002, + "opcode": "fusion", + "shape": "c128[1500,91,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "wrapped_transpose", + "ms": 0.49957474375000005, + "opcode": "fusion", + "shape": "c128[1500,180,91]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + } + ], + "inversion_other": [ + { + "instruction": "cholesky.80", + "ms": 0.8981578250000019, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1078 (AbstractInversion.log_det_curvature_reg_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:347 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "cholesky.90", + "ms": 0.8934438625000016, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1157 (AbstractInversion.log_det_regularization_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:348 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "loop_reduce_window_fusion", + "ms": 0.002880768749999993, + "opcode": "fusion", + "shape": "s64[6,16]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "loop_reduce_window_fusion.1", + "ms": 0.0027893749999999998, + "opcode": "fusion", + "shape": "s64[94,16]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "loop_broadcast_convert_fusion", + "ms": 0.0021827874999999926, + "opcode": "fusion", + "shape": "(s32[1500]{0}, s64[1500]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527 (AbstractInversion.zeroed_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:567 (AbstractInversion.solve_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:684 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_scatter_fusion.5", + "ms": 0.0019523937499999978, + "opcode": "fusion", + "shape": "s64[1500]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527 (AbstractInversion.zeroed_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:567 (AbstractInversion.solve_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:684 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "mapping_matrix": [ + { + "instruction": "input_reduce_fusion.23", + "ms": 0.0029050062499999902, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:120 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + } + ], + "curvature_matrix_F": [ + { + "instruction": "cublas-lt-matmul.2", + "ms": 4.24611018125, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "chi_squared_evidence": [ + { + "instruction": "loop_multiply_fusion", + "ms": 0.003007562499999996, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:300", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:300 (AbstractNDArray.__pow__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:60 (unwrap_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:35 (to_new_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:78 (chi_squared_map_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:78 (AbstractFit.chi_squared_map)" + ] + } + ] + }, + "stage_audit_note": "The HLO instructions that contributed most of each stage's milliseconds, with their full source stack. A stage row is only as good as the rules that built it; this is how a reader checks a row against the HLO instead of trusting it.", + "untraced_wall_ms": 32.3350219937538, + "reconciliation_vs_untraced_pct": -7.586444739322157, + "wall_basis": "wall_ms is the TRACED run's wall, the run these kernel durations came from. untraced_wall_ms is the same executable without the profiler; the difference is the profiler's overhead and belongs in neither the stages nor the idle row.", + "calls": 160, + "call_split": "per-call (first-instruction recurrence)", + "call_blocks": 160, + "events": 73390, + "streams": [ + "Stream #14(MemcpyH2D,Compute,MemcpyD2H,Memset,MemcpyD2D)" + ], + "per_stage_ms": { + "border_relocator": { + "median_ms": 0.101663, + "min_ms": 0.10115000000000002, + "max_ms": 0.10242900000000002 + }, + "chi_squared_evidence": { + "median_ms": 0.003008, + "min_ms": 0.002847, + "max_ms": 0.003327 + }, + "curvature_matrix_F": { + "median_ms": 4.243834, + "min_ms": 4.229319, + "max_ms": 4.339802 + }, + "inversion_other": { + "median_ms": 1.8035354999999997, + "min_ms": 1.7878880000000001, + "max_ms": 1.817648 + }, + "mapping_matrix": { + "median_ms": 0.002912, + "min_ms": 0.002879, + "max_ms": 0.002944 + }, + "memset": { + "median_ms": 0.021216, + "min_ms": 0.010048, + "max_ms": 0.053536000000000014 + }, + "mesh_construction": { + "median_ms": 0.002048, + "min_ms": 0.002048, + "max_ms": 0.00208 + }, + "mesh_locate_walk": { + "median_ms": 0.15049600000000002, + "min_ms": 0.13251100000000002, + "max_ms": 0.18655800000000006 + }, + "mesh_qhull_callback": { + "median_ms": 0.010624, + "min_ms": 0.010527, + "max_ms": 0.011200000000000002 + }, + "mesh_seed_argmin": { + "median_ms": 0.22793350000000012, + "min_ms": 0.22752100000000008, + "max_ms": 0.2283820000000001 + }, + "mixed_fusion": { + "median_ms": 1.994142, + "min_ms": 1.9845259999999998, + "max_ms": 2.0064840000000004 + }, + "other": { + "median_ms": 0.06620799999999999, + "min_ms": 0.06383799999999999, + "max_ms": 0.07071899999999999 + }, + "pdip_solve": { + "median_ms": 7.627229, + "min_ms": 2.4333360000000006, + "max_ms": 23.172370000000008 + }, + "psf_convolution_mapping_matrix": { + "median_ms": 7.1153775, + "min_ms": 7.102593000000001, + "max_ms": 7.125762 + }, + "regularization_H": { + "median_ms": 0.010944, + "min_ms": 0.01088, + "max_ms": 0.01136 + } + }, + "stage_order": [ + "border_relocator", + "mesh_qhull_callback", + "mesh_seed_argmin", + "mesh_locate_walk", + "mesh_construction", + "mapping_matrix", + "psf_convolution_mapping_matrix", + "curvature_matrix_F", + "regularization_H", + "pdip_solve", + "chi_squared_evidence", + "inversion_other", + "mixed_fusion", + "other", + "memset" + ], + "mixed_fusion": { + "ms": 1.994142, + "constituent_stage_sets": { + "curvature_matrix_F + psf_convolution_mapping_matrix": 1.0222060687499999, + "pdip_solve + psf_convolution_mapping_matrix": 0.227287425, + "data_vector_D + pdip_solve": 0.1254148375, + "mapped_reconstruction + pdip_solve": 0.11514451250000009, + "mapping_matrix + pdip_solve": 0.11348248124999995, + "curvature_reg_reduce_gather + inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": 0.11002071875, + "pdip_solve + regularization_H": 0.045843649999999965, + "inversion_other + pdip_solve + regularization_H": 0.024280893750000008, + "inversion_other + pdip_solve": 0.023086343750000037, + "inversion_other + mapping_matrix + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin + pdip_solve": 0.021611925000000008, + "inversion_other + mesh_construction + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin + pdip_solve + regularization_H": 0.019178118750000007, + "inversion_other + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + pdip_solve + regularization_H": 0.014693356249999994, + "pdip_solve + ray_trace_data_grid": 0.013694924999999908, + "border_relocator + pdip_solve": 0.013572524999999964, + "inversion_other + mapping_matrix + mesh_construction + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin": 0.011665712499999996, + "grids_and_structures + mass_profile_deflections + pdip_solve": 0.010259375000000001, + "grids_and_structures + mass_profile_deflections + pdip_solve + ray_trace_data_grid": 0.0090448, + "chi_squared_evidence + pdip_solve": 0.0077099625000000005, + "inversion_other + mesh_construction + mesh_seed_argmin + pdip_solve + regularization_H": 0.0071267625000000015, + "inversion_other + mesh_dual_areas + mesh_locate_walk": 0.006757962499999999, + "inversion_other + mesh_construction + pdip_solve + regularization_H": 0.0065437687499999946, + "grids_and_structures + mass_profile_deflections + ray_trace_data_grid": 0.005568593749999997, + "inversion_other + pdip_solve + ray_trace_data_grid": 0.005387374999999999, + "inversion_other + regularization_H": 0.005236981249999982, + "inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": 0.004933956250000004, + "inversion_other + mapped_reconstruction + pdip_solve": 0.0038193812499999987, + "mapping_matrix + pdip_solve + regularization_H": 0.003507181250000001, + "inversion_other + mesh_construction + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin": 0.0031795812499999985, + "inversion_other + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin": 0.00298280625, + "inversion_other + mesh_construction + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin + regularization_H": 0.002733193750000008, + "inversion_other + mesh_dual_areas + mesh_locate_walk + pdip_solve": 0.0026055750000000054, + "inversion_other + mesh_locate_walk + mesh_seed_argmin": 0.0025223999999999963, + "inversion_other + mesh_interpolation_weights": 0.0021609937500000013, + "chi_squared_evidence + inversion_other": 0.0019507687500000025 + }, + "example_kernels": { + "curvature_matrix_F + psf_convolution_mapping_matrix": [ + "loop_divide_gather_fusion" + ], + "pdip_solve + psf_convolution_mapping_matrix": [ + "loop_broadcast_fusion.4" + ], + "data_vector_D + pdip_solve": [ + "input_reduce_fusion.5", + "input_reduce_fusion.21" + ], + "mapped_reconstruction + pdip_solve": [ + "input_reduce_fusion.9" + ], + "mapping_matrix + pdip_solve": [ + "loop_broadcast_fusion.2", + "loop_divide_fusion" + ], + "curvature_reg_reduce_gather + inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": [ + "input_multiply_transpose_fusion" + ], + "pdip_solve + regularization_H": [ + "loop_select_fusion.2", + "input_transpose_fusion.3" + ], + "inversion_other + pdip_solve + regularization_H": [ + "input_transpose_fusion.4" + ], + "inversion_other + pdip_solve": [ + "input_reduce_fusion.7", + "loop_log_fusion", + "input_reduce_fusion.8", + "input_reduce_fusion.12" + ], + "inversion_other + mapping_matrix + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin + pdip_solve": [ + "input_scatter_fusion.6", + "input_scatter_fusion.3" + ] + }, + "prorated_estimate_ms": { + "psf_convolution_mapping_matrix": 0.6247467468749999, + "curvature_matrix_F": 0.5111030343749999, + "pdip_solve": 0.39547136916666653, + "mapped_reconstruction": 0.08208301614583338, + "inversion_other": 0.06884685208333335, + "data_vector_D": 0.06270741875, + "mapping_matrix": 0.06255607708333331, + "regularization_H": 0.043508458229166644, + "reconstruction_scatter": 0.023237632812500002, + "curvature_reg_reduce_gather": 0.02200414375, + "mesh_construction": 0.014484277604166668, + "ray_trace_data_grid": 0.012760652083333286, + "mesh_locate_walk": 0.012718938125000002, + "mesh_interpolation_weights": 0.012503479791666671, + "mesh_seed_argmin": 0.011240242708333337, + "mesh_dual_areas": 0.008551565625, + "grids_and_structures": 0.007537189583333333, + "mass_profile_deflections": 0.007537189583333333, + "border_relocator": 0.006786262499999982, + "chi_squared_evidence": 0.004830365625000001 + }, + "prorated_note": "ESTIMATE ONLY \u2014 a mixed fusion's time split equally across the stages its constituents span. Never summed into the measured table, never reconciled." + }, + "other_sources_ms": { + "copy.80": 0.0421512312500022, + "copy.48": 0.016989462500000115, + "copy.53": 0.0019827937500000005, + "copy.79": 0.0017985875000000005, + "copy.78": 0.0017723812499999992, + "copy.39": 0.0016623937499999995 + }, + "device_span_ms": 33.28327708125, + "device_busy_ms": 26.782504162499997, + "device_idle_ms": 6.500772918750002, + "largest_idle_gaps": [ + { + "gap_ms": 5.438192, + "after": "pure_callback.4", + "before": "pure_callback.4" + }, + { + "gap_ms": 0.037408, + "after": "while.26", + "before": "input_reduce_select_fusion" + }, + { + "gap_ms": 0.033759, + "after": "pure_callback.4", + "before": "copy.79" + }, + { + "gap_ms": 0.031871, + "after": "copy.48", + "before": "input_reduce_fusion.1" + }, + { + "gap_ms": 0.02832, + "after": "pure_callback.4", + "before": "pure_callback.4" + }, + { + "gap_ms": 0.027456, + "after": "input_concatenate_fusion.7", + "before": "pure_callback.4" + }, + { + "gap_ms": 0.022272, + "after": "input_reduce_fusion.20", + "before": "loop_broadcast_fusion.4" + }, + { + "gap_ms": 0.021504, + "after": "loop_select_fusion", + "before": "loop_reduce_fusion" + } + ], + "kernel_ms": 23.3811705, + "sum_ms": 29.88194341875, + "wall_ms": 33.28910491250099, + "host_outside_span_ms": 0.0058278312509898456, + "reconciliation_pct": -10.23506490398756, + "unjoined_ms": 0.0, + "unjoined_pct": 0.0, + "other_ms": 0.06620799999999999, + "other_pct": 0.19888789492545664, + "note": "Stage rows attribute the command-buffers-OFF program (see the module docstring): kernel times are the same, the launch overhead the CUDA graphs remove is not. sum_ms = kernel rows + device_idle_ms; the residual against wall_ms is host_outside_span_ms (dispatch before the first kernel, teardown after the last).", + "per_stage_ms_per_lane": { + "border_relocator": 0.101663, + "chi_squared_evidence": 0.003008, + "curvature_matrix_F": 4.243834, + "inversion_other": 1.8035354999999997, + "mapping_matrix": 0.002912, + "memset": 0.021216, + "mesh_construction": 0.002048, + "mesh_locate_walk": 0.15049600000000002, + "mesh_qhull_callback": 0.010624, + "mesh_seed_argmin": 0.22793350000000012, + "mixed_fusion": 1.994142, + "other": 0.06620799999999999, + "pdip_solve": 7.627229, + "psf_convolution_mapping_matrix": 7.1153775, + "regularization_H": 0.010944 + }, + "per_lane_divisor": 1, + "host_callback": { + "pure_callback_span_ms": 79.30217320000008, + "qhull_ms": 73.9355556, + "callback_body_ms_note": "the OUTERMOST matching body event, not a sum: under the probe the body appears twice (the wrapper and the timed re-implementation it calls) and summing them would count the same work twice", + "events_by_name": { + "pure_callback.4": { + "count": 160, + "ms": 79.30217320000008 + }, + "$callback.py:815 _wrapped_callback": { + "count": 160, + "ms": 77.91111580000002 + }, + "$callback.py:224 _callback": { + "count": 160, + "ms": 77.5358856 + }, + "$callback.py:74 pure_callback_impl": { + "count": 160, + "ms": 77.40016880000003 + }, + "$callback.py:69 __call__": { + "count": 160, + "ms": 74.17798120000002 + }, + "$delaunay.py:162 ": { + "count": 160, + "ms": 74.07748219999998 + }, + "$host_callback_probe.py:225 wrapped": { + "count": 160, + "ms": 73.9355556 + }, + "$host_callback_probe.py:160 _timed_tri_only": { + "count": 160, + "ms": 73.80817850000001 + }, + "ThenExecuteCallback:GetEventForComputeStreamSyncPoint": { + "count": 160, + "ms": 0.28706550000000003 + }, + "$callback.py:822 ": { + "count": 640, + "ms": 0.23090409999999956 + }, + "$__init__.py:132 _xla_gc_callback": { + "count": 2, + "ms": 0.00037200000000000004 + } + }, + "note": "HOST milliseconds per traced BATCH (the whole invocation), aggregated by name because the events nest. Not a row of the device table: the device pays for them as the idle gaps largest_idle_gaps names." + }, + "host_callback_ms": 79.30217320000008 + }, + "hlo_census": { + "status": "excluded", + "reason": "The legacy census anchors PyAutoArray source line numbers that moved after the phase-1 run. No batched attribution is published from unsupported anchors; the device-event table and wall reconciliation remain valid." + }, + "stage_map_provenance": [ + { + "label": "log_det_curvature_reg", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 850, + 882 + ], + "requires": { + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 884, + 896 + ] + }, + "function": null + }, + { + "label": "log_det_regularization", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 850, + 882 + ], + "requires": { + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 897, + 943 + ] + }, + "function": null + }, + { + "label": "curvature_reg_add", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 359, + 372 + ], + "requires": null, + "function": null + }, + { + "label": "curvature_reg_reduce_gather", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 374, + 398 + ], + "requires": null, + "function": null + }, + { + "label": "edge_subset_gather", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 606, + 614 + ], + "requires": null, + "function": null + }, + { + "label": "regularization_term", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 786, + 849 + ], + "requires": null, + "function": null + }, + { + "label": "mapped_reconstruction", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 722, + 785 + ], + "requires": null, + "function": null + }, + { + "label": "reconstruction_scatter", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 583, + 605 + ], + "requires": null, + "function": null + }, + { + "label": "reconstruction_scatter", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 615, + 721 + ], + "requires": null, + "function": null + }, + { + "label": "certified_active_set_solve", + "path": "likelihood_breakdown/active_set_steps.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "certified_active_set_solve", + "path": "likelihood_breakdown/library_solver_injection.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "pdip_solve", + "path": "PyAutoArray/autoarray/util/jax_nnls.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "pdip_solve", + "path": "PyAutoArray/autoarray/inversion/inversion/inversion_util.py", + "lines": [ + 256, + 488 + ], + "requires": null, + "function": null + }, + { + "label": "mapped_reconstruction", + "path": "PyAutoArray/autoarray/inversion/inversion/inversion_util.py", + "lines": [ + 156, + 200 + ], + "requires": null, + "function": null + }, + { + "label": "curvature_matrix_F", + "path": "PyAutoArray/autoarray/inversion/inversion/inversion_util.py", + "lines": [ + 12, + 155 + ], + "requires": null, + "function": null + }, + { + "label": "reconstruction_scatter", + "path": "PyAutoArray/autoarray/inversion/inversion/inversion_util.py", + "lines": [ + 201, + 255 + ], + "requires": null, + "function": null + }, + { + "label": "data_vector_D", + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py", + "lines": [ + 54, + 73 + ], + "requires": null, + "function": null + }, + { + "label": "curvature_matrix_F", + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py", + "lines": [ + 74, + 110 + ], + "requires": null, + "function": null + }, + { + "label": "data_vector_D", + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py", + "lines": null, + "requires": null, + "function": "data_vector_via_blurred_mapping_matrix_from" + }, + { + "label": "curvature_matrix_F", + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "likelihood_breakdown/psf_cube_injection.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": [ + 1086, + 1300 + ], + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": [ + 632, + 642 + ], + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": [ + 670, + 691 + ], + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": null, + "requires": { + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": [ + 1086, + 1300 + ] + }, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": null, + "requires": { + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py", + "lines": [ + 119, + 150 + ] + }, + "function": null + }, + { + "label": "psf_convolution_image", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py", + "lines": [ + 119, + 150 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_qhull_callback", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 139, + 172 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_seed_argmin", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 173, + 207 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_locate_walk", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 208, + 372 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_dual_areas", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 373, + 396 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_dual_areas", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 437, + 494 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_dual_areas", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 605, + 615 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_interpolation_weights", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 616, + 695 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_interpolation_weights", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 896, + 1000 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_construction", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "border_relocator", + "path": "PyAutoArray/autoarray/inversion/mesh/border_relocator.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "mesh_construction", + "path": "PyAutoArray/autoarray/inversion/mesh/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "mapping_matrix", + "path": "PyAutoArray/autoarray/inversion/mappers/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "mapping_matrix", + "path": "PyAutoArray/autoarray/inversion/mappings/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "mapping_matrix", + "path": "PyAutoArray/autoarray/inversion/linear_obj/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "regularization_H", + "path": "PyAutoArray/autoarray/inversion/regularization/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "chi_squared_evidence", + "path": "PyAutoArray/autoarray/fit/fit_util.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "chi_squared_evidence", + "path": "PyAutoArray/autoarray/fit/fit_dataset.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "ray_trace_mesh_grid", + "path": "PyAutoLens/autolens/lens/to_inversion.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "ray_trace_mesh_grid", + "path": "PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "mass_profile_deflections", + "path": "PyAutoGalaxy/autogalaxy/profiles/mass/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "light_profile_image", + "path": "PyAutoGalaxy/autogalaxy/profiles/light/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "light_profile_image", + "path": "PyAutoGalaxy/autogalaxy/operate/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "ray_trace_data_grid", + "path": "PyAutoLens/autolens/lens/tracer.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "ray_trace_data_grid", + "path": "PyAutoLens/autolens/lens/tracer_util.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "grids_and_structures", + "path": "PyAutoArray/autoarray/structures/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "grids_and_structures", + "path": "PyAutoArray/autoarray/operators/over_sampling/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "grids_and_structures", + "path": "PyAutoArray/autoarray/geometry/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "inversion_other", + "path": "PyAutoArray/autoarray/inversion/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "fit_imaging_other", + "path": "PyAutoLens/autolens/imaging/fit_imaging.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "fit_imaging_other", + "path": "PyAutoGalaxy/autogalaxy/imaging/fit_imaging.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "fit_imaging_other", + "path": "PyAutoArray/autoarray/fit/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "analysis_other", + "path": "PyAutoLens/autolens/analysis/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "analysis_other", + "path": "PyAutoGalaxy/autogalaxy/analysis/", + "lines": null, + "requires": null, + "function": null + } + ], + "trace_timing": { + "traced_wall_ms": 33.28910491250099, + "untraced_wall_ms": 32.3350219937538, + "profiler_overhead_ms": 0.95408291874719, + "profiler_overhead_pct": 2.9506178128825504 + }, + "jit_phases": { + "b_s3_pdip_library_likelihood_jit": { + "lower_s": 1.6830586639989633, + "compile_s": 4.533538052000949, + "first_call_s": 1.9401397229994473, + "steady_per_call_s": 0.05084607630014944 + }, + "d_s3_certified_fallback_library_likelihood_jit": { + "lower_s": 0.46720191499844077, + "compile_s": 4.444933192997269, + "first_call_s": 0.04616038799940725, + "steady_per_call_s": 0.0316707824000332 + } + }, + "peak_bytes": { + "after_setup": 85108992, + "after_routes": 1181653248, + "after_all": 18893188096, + "note": "jax.devices()[0].memory_stats()['peak_bytes_in_use']; None on a backend that does not report it (CPU). Process-wide high-water marks." + }, + "note": "Every stage row is a MEASURED sum of GPU kernel durations joined to library source through the optimized HLO of ONE program \u2014 not arithmetic across compilations. The rows attribute the command-buffers-OFF program: kernel time is the same as production, the launch overhead the CUDA graphs remove is not, and command_buffers.* carries both walls and their delta. sum_ms = kernel rows + measured device_idle_ms; the residual against the wall is host_outside_span_ms and is reported, not absorbed. mixed_fusion.prorated_estimate_ms is an ESTIMATE and is never part of the table. No row may be quoted if reconciliation_pct is outside 5 % or unjoined_ms is non-zero.", + "vmap": { + "batch": 16, + "lanes_mode": "captured", + "arms": [ + "vmap", + "scalar" + ], + "draw_seed": 0, + "fallback": false, + "composition": "jax.jit(jax.vmap(fn))", + "composition_provenance": "Current Fitness._vmap after PyAutoFit#1638. Array 343376 used the retired jax.vmap(jax.jit(fn)) composition and is historical evidence only.", + "headline_arm": "scalar", + "lane_rtol": 1e-09, + "lanes": [ + { + "lane": 0, + "draw_name": "call00015_lane00", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.0033655095107821688, + "centre_1": 0.004631951955766499, + "ell_comps_0": 0.000564301988937442, + "ell_comps_1": -0.00879076787683888, + "einstein_radius": 0.018337010967920175 + }, + "log_likelihood_vmap": 24758.506194309342, + "log_likelihood_scalar": 24758.506194309342, + "log_likelihood_library_pdip": 24758.50619430915, + "log_likelihood_library_pdip_scalar": 24758.50619430915, + "rel_diff_vmap_vs_library_pdip": 7.787742736279448e-15, + "rel_diff_scalar_vs_library_pdip_scalar": 7.787742736279448e-15, + "abs_diff_nats": 0.0, + "rel_diff": 0.0, + "rel_diff_scalar_vs_library_pdip": 7.787742736279448e-15, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 0.0, + "rel_diff_library_pdip_vmap_vs_scalar": 0.0, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 10, + "pdip_iter": null + }, + { + "lane": 1, + "draw_name": "call00015_lane01", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.004311760382151672, + "centre_1": 0.0027192789928108052, + "ell_comps_0": 0.0061667694809026535, + "ell_comps_1": 0.003465536775180321, + "einstein_radius": -0.05732579988501185 + }, + "log_likelihood_vmap": 20552.706459416033, + "log_likelihood_scalar": 20552.706459416, + "log_likelihood_library_pdip": 20551.004887772695, + "log_likelihood_library_pdip_scalar": 20551.004887771654, + "rel_diff_vmap_vs_library_pdip": 8.279749105360521e-05, + "rel_diff_scalar_vs_library_pdip_scalar": 8.279749110264447e-05, + "abs_diff_nats": 3.2741809263825417e-11, + "rel_diff": 1.5930655813373479e-15, + "rel_diff_scalar_vs_library_pdip": 8.279749105201201e-05, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 1.04046193882823e-09, + "rel_diff_library_pdip_vmap_vs_scalar": 5.0628275576311595e-14, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 2, + "draw_name": "call00015_lane02", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.0002796502552123051, + "centre_1": 0.0016003321376979894, + "ell_comps_0": -0.002094430657472772, + "ell_comps_1": 0.006146479068253558, + "einstein_radius": -0.025968910196758177 + }, + "log_likelihood_vmap": -189709.69679849414, + "log_likelihood_scalar": -189709.06724982796, + "log_likelihood_library_pdip": -189709.91637924482, + "log_likelihood_library_pdip_scalar": -189709.0207892346, + "rel_diff_vmap_vs_library_pdip": 1.1574553131984852e-06, + "rel_diff_scalar_vs_library_pdip_scalar": 2.449045024786232e-07, + "abs_diff_nats": 0.6295486661838368, + "rel_diff": 3.318495395661736e-06, + "rel_diff_scalar_vs_library_pdip": 4.4759358554876936e-06, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 0.8955900102155283, + "rel_diff_library_pdip_vmap_vs_scalar": 4.720861488239521e-06, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": true, + "passes": 0, + "pdip_iter": null + }, + { + "lane": 3, + "draw_name": "call00015_lane03", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.004594602299816973, + "centre_1": 0.004924922434755804, + "ell_comps_0": 0.028601845732661953, + "ell_comps_1": 0.003760187047606014, + "einstein_radius": -0.03088526730480501 + }, + "log_likelihood_vmap": -141741.97933878313, + "log_likelihood_scalar": -141741.96673248586, + "log_likelihood_library_pdip": -141741.97793200478, + "log_likelihood_library_pdip_scalar": -141741.9662947005, + "rel_diff_vmap_vs_library_pdip": 9.924923929625508e-09, + "rel_diff_scalar_vs_library_pdip_scalar": 3.0886078336726387e-09, + "abs_diff_nats": 0.012606297270394862, + "rel_diff": 8.893835439850449e-08, + "rel_diff_scalar_vs_library_pdip": 7.901342344155513e-08, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 0.011637304269243032, + "rel_diff_library_pdip_vmap_vs_scalar": 8.210203776239084e-08, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": true, + "passes": 0, + "pdip_iter": null + }, + { + "lane": 4, + "draw_name": "call00015_lane04", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.0060950290987001, + "centre_1": -0.0006121094560707545, + "ell_comps_0": 0.009637314264800585, + "ell_comps_1": 0.006641580028105454, + "einstein_radius": -0.03125810931551931 + }, + "log_likelihood_vmap": 24880.545932988694, + "log_likelihood_scalar": 24880.545932988716, + "log_likelihood_library_pdip": 24880.54593298869, + "log_likelihood_library_pdip_scalar": 24880.54593298872, + "rel_diff_vmap_vs_library_pdip": 1.4621780474150203e-16, + "rel_diff_scalar_vs_library_pdip_scalar": 1.4621780474150186e-16, + "abs_diff_nats": 2.1827872842550278e-11, + "rel_diff": 8.773068284490113e-16, + "rel_diff_scalar_vs_library_pdip": 1.0235246331905143e-15, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 2.9103830456733704e-11, + "rel_diff_library_pdip_vmap_vs_scalar": 1.1697424379320148e-15, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 10, + "pdip_iter": null + }, + { + "lane": 5, + "draw_name": "call00015_lane05", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.008435952123169364, + "centre_1": -0.007849511137408794, + "ell_comps_0": -0.01598149485178925, + "ell_comps_1": 0.01654417876136871, + "einstein_radius": 0.014294380855379263 + }, + "log_likelihood_vmap": 25472.519186595913, + "log_likelihood_scalar": 25472.519186791294, + "log_likelihood_library_pdip": 25472.51918661041, + "log_likelihood_library_pdip_scalar": 25472.519186758924, + "rel_diff_vmap_vs_library_pdip": 5.691367014017594e-13, + "rel_diff_scalar_vs_library_pdip_scalar": 1.270810130249267e-12, + "abs_diff_nats": 1.9538128981366754e-07, + "rel_diff": 7.670277461798203e-12, + "rel_diff_scalar_vs_library_pdip": 7.10114076045091e-12, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 1.48513208841905e-07, + "rel_diff_library_pdip_vmap_vs_scalar": 5.830330630160241e-12, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 4, + "pdip_iter": null + }, + { + "lane": 6, + "draw_name": "call00015_lane06", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.0031698313356290646, + "centre_1": -0.0038584140676992847, + "ell_comps_0": 0.01810147576636289, + "ell_comps_1": -0.011577480306416508, + "einstein_radius": 0.016136835525067283 + }, + "log_likelihood_vmap": -83383.91629657254, + "log_likelihood_scalar": -83383.9155206514, + "log_likelihood_library_pdip": -83383.91628258814, + "log_likelihood_library_pdip_scalar": -83383.91548171044, + "rel_diff_vmap_vs_library_pdip": 1.6771106119533433e-10, + "rel_diff_scalar_vs_library_pdip_scalar": 4.670079838536909e-10, + "abs_diff_nats": 0.0007759211439406499, + "rel_diff": 9.305405474134641e-09, + "rel_diff_scalar_vs_library_pdip": 9.137694327909356e-09, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 0.0008008776931092143, + "rel_diff_library_pdip_vmap_vs_scalar": 9.60470239952788e-09, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 0, + "pdip_iter": null + }, + { + "lane": 7, + "draw_name": "call00015_lane07", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.006158729760195174, + "centre_1": 0.004883559265258847, + "ell_comps_0": 0.007613883677130215, + "ell_comps_1": -0.005800175617006949, + "einstein_radius": 0.0662922007765554 + }, + "log_likelihood_vmap": -11960.284433550274, + "log_likelihood_scalar": -11960.284430311229, + "log_likelihood_library_pdip": -11960.284432913264, + "log_likelihood_library_pdip_scalar": -11960.284430044325, + "rel_diff_vmap_vs_library_pdip": 5.326044649647159e-11, + "rel_diff_scalar_vs_library_pdip_scalar": 2.2315853332937958e-11, + "abs_diff_nats": 3.23904532706365e-06, + "rel_diff": 2.708167473722332e-10, + "rel_diff_scalar_vs_library_pdip": 2.175563008168437e-10, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 2.8689391911029816e-06, + "rel_diff_library_pdip_vmap_vs_scalar": 2.398721542019674e-10, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 1, + "pdip_iter": null + }, + { + "lane": 8, + "draw_name": "call00015_lane08", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.0030335293924908615, + "centre_1": 0.0012117081273721316, + "ell_comps_0": 0.0008852687687036301, + "ell_comps_1": -0.0027113633212058814, + "einstein_radius": -0.03873713959923952 + }, + "log_likelihood_vmap": 23223.5503914129, + "log_likelihood_scalar": 23223.550391490582, + "log_likelihood_library_pdip": 23223.550391423054, + "log_likelihood_library_pdip_scalar": 23223.55039148498, + "rel_diff_vmap_vs_library_pdip": 4.372113083253157e-13, + "rel_diff_scalar_vs_library_pdip_scalar": 2.412416391326373e-13, + "abs_diff_nats": 7.768176146782935e-08, + "rel_diff": 3.3449563119467287e-12, + "rel_diff_scalar_vs_library_pdip": 2.9077450036311395e-12, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6.192567525431514e-08, + "rel_diff_library_pdip_vmap_vs_scalar": 2.6665033644907486e-12, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 4, + "pdip_iter": null + }, + { + "lane": 9, + "draw_name": "call00015_lane09", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.0008035510098975272, + "centre_1": 0.005559773241319952, + "ell_comps_0": -0.003701655436278317, + "ell_comps_1": -0.012378591445614512, + "einstein_radius": 0.032284336889985665 + }, + "log_likelihood_vmap": -177119.01437774638, + "log_likelihood_scalar": -177117.76756649266, + "log_likelihood_library_pdip": -177119.3219600775, + "log_likelihood_library_pdip_scalar": -177117.7818270842, + "rel_diff_vmap_vs_library_pdip": 1.7365825914360673e-06, + "rel_diff_scalar_vs_library_pdip_scalar": 8.051473649077384e-08, + "abs_diff_nats": 1.2468112537171692, + "rel_diff": 7.039447655916832e-06, + "rel_diff_scalar_vs_library_pdip": 8.77596846938223e-06, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 1.5401329933083616, + "rel_diff_library_pdip_vmap_vs_scalar": 8.695530044588951e-06, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": true, + "passes": 0, + "pdip_iter": null + }, + { + "lane": 10, + "draw_name": "call00015_lane10", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.008473569241265282, + "centre_1": -0.0051993251621340235, + "ell_comps_0": -0.0031466996514049606, + "ell_comps_1": -0.0076036423480284636, + "einstein_radius": 0.08283321334626792 + }, + "log_likelihood_vmap": -101745.38550684515, + "log_likelihood_scalar": -101745.38354083074, + "log_likelihood_library_pdip": -101745.38534975679, + "log_likelihood_library_pdip_scalar": -101745.38330068295, + "rel_diff_vmap_vs_library_pdip": 1.5439359820366783e-09, + "rel_diff_scalar_vs_library_pdip_scalar": 2.3602818663373926e-09, + "abs_diff_nats": 0.001966014417121187, + "rel_diff": 1.9322885704511786e-08, + "rel_diff_scalar_vs_library_pdip": 1.77789493789345e-08, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 0.002049073838861659, + "rel_diff_library_pdip_vmap_vs_scalar": 2.0139231603326272e-08, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": true, + "passes": 2, + "pdip_iter": null + }, + { + "lane": 11, + "draw_name": "call00015_lane11", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.001017060353322001, + "centre_1": 0.003035861051809724, + "ell_comps_0": 0.0014054844842678396, + "ell_comps_1": -0.00019678252877009805, + "einstein_radius": -0.04179610309843307 + }, + "log_likelihood_vmap": 18959.672781158773, + "log_likelihood_scalar": 18959.672780967318, + "log_likelihood_library_pdip": 18957.528349914453, + "log_likelihood_library_pdip_scalar": 18957.528349734202, + "rel_diff_vmap_vs_library_pdip": 0.00011311765989418553, + "rel_diff_scalar_vs_library_pdip_scalar": 0.00011311765930420434, + "abs_diff_nats": 1.9145591068081558e-07, + "rel_diff": 1.00980598606643e-11, + "rel_diff_scalar_vs_library_pdip": 0.0001131176497949834, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 1.802509359549731e-07, + "rel_diff_library_pdip_vmap_vs_scalar": 9.508145399001887e-12, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 12, + "draw_name": "call00015_lane12", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.0012508260776529923, + "centre_1": -0.0075763258203543175, + "ell_comps_0": -0.0003476568325791879, + "ell_comps_1": 0.0070528223693464365, + "einstein_radius": -0.005182936058341969 + }, + "log_likelihood_vmap": 24810.049660195124, + "log_likelihood_scalar": 24810.049660195124, + "log_likelihood_library_pdip": 24810.049660194894, + "log_likelihood_library_pdip_scalar": 24810.049660194898, + "rel_diff_vmap_vs_library_pdip": 9.237896255181357e-15, + "rel_diff_scalar_vs_library_pdip_scalar": 9.091262981289588e-15, + "abs_diff_nats": 0.0, + "rel_diff": 0.0, + "rel_diff_scalar_vs_library_pdip": 9.237896255181357e-15, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 3.637978807091713e-12, + "rel_diff_library_pdip_vmap_vs_scalar": 1.4663327389176755e-16, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 9, + "pdip_iter": null + }, + { + "lane": 13, + "draw_name": "call00015_lane13", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.0039046265841316857, + "centre_1": 0.008586063066835778, + "ell_comps_0": 0.01612319103606081, + "ell_comps_1": -0.006478405394829051, + "einstein_radius": -0.06420305523683667 + }, + "log_likelihood_vmap": -3605.706216745806, + "log_likelihood_scalar": -3605.7062159467096, + "log_likelihood_library_pdip": -3605.70621669307, + "log_likelihood_library_pdip_scalar": -3605.7062161423455, + "rel_diff_vmap_vs_library_pdip": 1.4625745309879346e-11, + "rel_diff_scalar_vs_library_pdip_scalar": 5.4257317874186085e-11, + "abs_diff_nats": 7.990965968929231e-07, + "rel_diff": 2.2161999592723706e-10, + "rel_diff_scalar_vs_library_pdip": 2.0699425057148364e-10, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 5.507245077751577e-07, + "rel_diff_library_pdip_vmap_vs_scalar": 1.5273693272891323e-10, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 2, + "pdip_iter": null + }, + { + "lane": 14, + "draw_name": "call00015_lane14", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.007195835212073937, + "centre_1": -0.0022675171274400335, + "ell_comps_0": 0.004220685262914858, + "ell_comps_1": 0.006581974817750368, + "einstein_radius": 0.08589577997501685 + }, + "log_likelihood_vmap": 11129.438563023064, + "log_likelihood_scalar": 11129.43856306804, + "log_likelihood_library_pdip": 11126.921475740783, + "log_likelihood_library_pdip_scalar": 11126.921475785763, + "rel_diff_vmap_vs_library_pdip": 0.00022621596528470933, + "rel_diff_scalar_vs_library_pdip_scalar": 0.00022621596528346792, + "abs_diff_nats": 4.497633199207485e-08, + "rel_diff": 4.041204031740148e-12, + "rel_diff_scalar_vs_library_pdip": 0.00022621596932682756, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 4.497996997088194e-08, + "rel_diff_library_pdip_vmap_vs_scalar": 4.0424451694717775e-12, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 15, + "draw_name": "call00015_lane15", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.0024446743118905125, + "centre_1": 0.0028324231769206983, + "ell_comps_0": -0.017159158004659933, + "ell_comps_1": 0.008265799441903459, + "einstein_radius": -0.03860302877433641 + }, + "log_likelihood_vmap": 20407.78065499728, + "log_likelihood_scalar": 20407.780654983006, + "log_likelihood_library_pdip": 20410.34397373395, + "log_likelihood_library_pdip_scalar": 20410.343973721327, + "rel_diff_vmap_vs_library_pdip": 0.00012558919829906093, + "rel_diff_scalar_vs_library_pdip_scalar": 0.00012558919838006043, + "abs_diff_nats": 1.4275428839027882e-08, + "rel_diff": 6.995091274436167e-13, + "rel_diff_scalar_vs_library_pdip": 0.00012558919899848222, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 1.2623786460608244e-08, + "rel_diff_library_pdip_vmap_vs_scalar": 6.184994469893104e-13, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": false, + "passes": 16, + "pdip_iter": null + } + ], + "lane_pins": [ + { + "pin": "lane 0: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 24758.506194309342, + "reference_value": 24758.50619430915, + "rel_diff": 7.787742736279448e-15, + "abs_diff_nats": 1.9281287677586079e-10, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 0: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 24758.506194309342, + "reference_value": 24758.50619430915, + "rel_diff": 7.787742736279448e-15, + "abs_diff_nats": 1.9281287677586079e-10, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 0: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 24758.506194309342, + "reference_value": 24758.506194309342, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 0: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 24758.50619430915, + "reference_value": 24758.50619430915, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 1: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 20552.706459416033, + "reference_value": 20551.004887772695, + "rel_diff": 8.279749105360521e-05, + "abs_diff_nats": 1.7015716433379566, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 1: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 20552.706459416, + "reference_value": 20551.004887771654, + "rel_diff": 8.279749110264447e-05, + "abs_diff_nats": 1.7015716443456768, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 1: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 20552.706459416033, + "reference_value": 20552.706459416, + "rel_diff": 1.5930655813373479e-15, + "abs_diff_nats": 3.2741809263825417e-11, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 1: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 20551.004887772695, + "reference_value": 20551.004887771654, + "rel_diff": 5.0628275576311595e-14, + "abs_diff_nats": 1.04046193882823e-09, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 2: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -189709.69679849414, + "reference_value": -189709.91637924482, + "rel_diff": 1.1574553131984852e-06, + "abs_diff_nats": 0.21958075067959726, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 2: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -189709.06724982796, + "reference_value": -189709.0207892346, + "rel_diff": 2.449045024786232e-07, + "abs_diff_nats": 0.04646059335209429, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 2: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -189709.69679849414, + "reference_value": -189709.06724982796, + "rel_diff": 3.318495395661736e-06, + "abs_diff_nats": 0.6295486661838368, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 2: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -189709.91637924482, + "reference_value": -189709.0207892346, + "rel_diff": 4.720861488239521e-06, + "abs_diff_nats": 0.8955900102155283, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 3: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -141741.97933878313, + "reference_value": -141741.97793200478, + "rel_diff": 9.924923929625508e-09, + "abs_diff_nats": 0.001406778348609805, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 3: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -141741.96673248586, + "reference_value": -141741.9662947005, + "rel_diff": 3.0886078336726387e-09, + "abs_diff_nats": 0.00043778534745797515, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 3: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -141741.97933878313, + "reference_value": -141741.96673248586, + "rel_diff": 8.893835439850449e-08, + "abs_diff_nats": 0.012606297270394862, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 3: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -141741.97793200478, + "reference_value": -141741.9662947005, + "rel_diff": 8.210203776239084e-08, + "abs_diff_nats": 0.011637304269243032, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 4: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 24880.545932988694, + "reference_value": 24880.54593298869, + "rel_diff": 1.4621780474150203e-16, + "abs_diff_nats": 3.637978807091713e-12, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 4: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 24880.545932988716, + "reference_value": 24880.54593298872, + "rel_diff": 1.4621780474150186e-16, + "abs_diff_nats": 3.637978807091713e-12, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 4: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 24880.545932988694, + "reference_value": 24880.545932988716, + "rel_diff": 8.773068284490113e-16, + "abs_diff_nats": 2.1827872842550278e-11, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 4: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 24880.54593298869, + "reference_value": 24880.54593298872, + "rel_diff": 1.1697424379320148e-15, + "abs_diff_nats": 2.9103830456733704e-11, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 5: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 25472.519186595913, + "reference_value": 25472.51918661041, + "rel_diff": 5.691367014017594e-13, + "abs_diff_nats": 1.4497345546260476e-08, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 5: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 25472.519186791294, + "reference_value": 25472.519186758924, + "rel_diff": 1.270810130249267e-12, + "abs_diff_nats": 3.237073542550206e-08, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 5: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 25472.519186595913, + "reference_value": 25472.519186791294, + "rel_diff": 7.670277461798203e-12, + "abs_diff_nats": 1.9538128981366754e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 5: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 25472.51918661041, + "reference_value": 25472.519186758924, + "rel_diff": 5.830330630160241e-12, + "abs_diff_nats": 1.48513208841905e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 6: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -83383.91629657254, + "reference_value": -83383.91628258814, + "rel_diff": 1.6771106119533433e-10, + "abs_diff_nats": 1.3984405086375773e-05, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 6: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -83383.9155206514, + "reference_value": -83383.91548171044, + "rel_diff": 4.670079838536909e-10, + "abs_diff_nats": 3.894095425494015e-05, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 6: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -83383.91629657254, + "reference_value": -83383.9155206514, + "rel_diff": 9.305405474134641e-09, + "abs_diff_nats": 0.0007759211439406499, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 6: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -83383.91628258814, + "reference_value": -83383.91548171044, + "rel_diff": 9.60470239952788e-09, + "abs_diff_nats": 0.0008008776931092143, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 7: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -11960.284433550274, + "reference_value": -11960.284432913264, + "rel_diff": 5.326044649647159e-11, + "abs_diff_nats": 6.370100891217589e-07, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 7: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -11960.284430311229, + "reference_value": -11960.284430044325, + "rel_diff": 2.2315853332937958e-11, + "abs_diff_nats": 2.669039531610906e-07, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 7: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -11960.284433550274, + "reference_value": -11960.284430311229, + "rel_diff": 2.708167473722332e-10, + "abs_diff_nats": 3.23904532706365e-06, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 7: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -11960.284432913264, + "reference_value": -11960.284430044325, + "rel_diff": 2.398721542019674e-10, + "abs_diff_nats": 2.8689391911029816e-06, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 8: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 23223.5503914129, + "reference_value": 23223.550391423054, + "rel_diff": 4.372113083253157e-13, + "abs_diff_nats": 1.0153598850592971e-08, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 8: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 23223.550391490582, + "reference_value": 23223.55039148498, + "rel_diff": 2.412416391326373e-13, + "abs_diff_nats": 5.602487362921238e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 8: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 23223.5503914129, + "reference_value": 23223.550391490582, + "rel_diff": 3.3449563119467287e-12, + "abs_diff_nats": 7.768176146782935e-08, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 8: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 23223.550391423054, + "reference_value": 23223.55039148498, + "rel_diff": 2.6665033644907486e-12, + "abs_diff_nats": 6.192567525431514e-08, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 9: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -177119.01437774638, + "reference_value": -177119.3219600775, + "rel_diff": 1.7365825914360673e-06, + "abs_diff_nats": 0.3075823311228305, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 9: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -177117.76756649266, + "reference_value": -177117.7818270842, + "rel_diff": 8.051473649077384e-08, + "abs_diff_nats": 0.014260591531638056, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 9: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -177119.01437774638, + "reference_value": -177117.76756649266, + "rel_diff": 7.039447655916832e-06, + "abs_diff_nats": 1.2468112537171692, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 9: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -177119.3219600775, + "reference_value": -177117.7818270842, + "rel_diff": 8.695530044588951e-06, + "abs_diff_nats": 1.5401329933083616, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 10: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -101745.38550684515, + "reference_value": -101745.38534975679, + "rel_diff": 1.5439359820366783e-09, + "abs_diff_nats": 0.00015708836144767702, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 10: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -101745.38354083074, + "reference_value": -101745.38330068295, + "rel_diff": 2.3602818663373926e-09, + "abs_diff_nats": 0.00024014778318814933, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 10: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -101745.38550684515, + "reference_value": -101745.38354083074, + "rel_diff": 1.9322885704511786e-08, + "abs_diff_nats": 0.001966014417121187, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 10: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -101745.38534975679, + "reference_value": -101745.38330068295, + "rel_diff": 2.0139231603326272e-08, + "abs_diff_nats": 0.002049073838861659, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 11: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 18959.672781158773, + "reference_value": 18957.528349914453, + "rel_diff": 0.00011311765989418553, + "abs_diff_nats": 2.1444312443200033, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 11: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 18959.672780967318, + "reference_value": 18957.528349734202, + "rel_diff": 0.00011311765930420434, + "abs_diff_nats": 2.1444312331150286, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 11: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 18959.672781158773, + "reference_value": 18959.672780967318, + "rel_diff": 1.00980598606643e-11, + "abs_diff_nats": 1.9145591068081558e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 11: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 18957.528349914453, + "reference_value": 18957.528349734202, + "rel_diff": 9.508145399001887e-12, + "abs_diff_nats": 1.802509359549731e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 12: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 24810.049660195124, + "reference_value": 24810.049660194894, + "rel_diff": 9.237896255181357e-15, + "abs_diff_nats": 2.2919266484677792e-10, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 12: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 24810.049660195124, + "reference_value": 24810.049660194898, + "rel_diff": 9.091262981289588e-15, + "abs_diff_nats": 2.255546860396862e-10, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 12: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 24810.049660195124, + "reference_value": 24810.049660195124, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 12: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 24810.049660194894, + "reference_value": 24810.049660194898, + "rel_diff": 1.4663327389176755e-16, + "abs_diff_nats": 3.637978807091713e-12, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 13: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -3605.706216745806, + "reference_value": -3605.70621669307, + "rel_diff": 1.4625745309879346e-11, + "abs_diff_nats": 5.273614078760147e-08, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 13: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -3605.7062159467096, + "reference_value": -3605.7062161423455, + "rel_diff": 5.4257317874186085e-11, + "abs_diff_nats": 1.9563594833016396e-07, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 13: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -3605.706216745806, + "reference_value": -3605.7062159467096, + "rel_diff": 2.2161999592723706e-10, + "abs_diff_nats": 7.990965968929231e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 13: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -3605.70621669307, + "reference_value": -3605.7062161423455, + "rel_diff": 1.5273693272891323e-10, + "abs_diff_nats": 5.507245077751577e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 14: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 11129.438563023064, + "reference_value": 11126.921475740783, + "rel_diff": 0.00022621596528470933, + "abs_diff_nats": 2.5170872822818637, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 14: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 11129.43856306804, + "reference_value": 11126.921475785763, + "rel_diff": 0.00022621596528346792, + "abs_diff_nats": 2.5170872822782258, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 14: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 11129.438563023064, + "reference_value": 11129.43856306804, + "rel_diff": 4.041204031740148e-12, + "abs_diff_nats": 4.497633199207485e-08, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 14: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 11126.921475740783, + "reference_value": 11126.921475785763, + "rel_diff": 4.0424451694717775e-12, + "abs_diff_nats": 4.497996997088194e-08, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 15: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 20407.78065499728, + "reference_value": 20410.34397373395, + "rel_diff": 0.00012558919829906093, + "abs_diff_nats": 2.5633187366693164, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 15: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 20407.780654983006, + "reference_value": 20410.343973721327, + "rel_diff": 0.00012558919838006043, + "abs_diff_nats": 2.563318738320959, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 15: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 20407.78065499728, + "reference_value": 20407.780654983006, + "rel_diff": 6.995091274436167e-13, + "abs_diff_nats": 1.4275428839027882e-08, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 15: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 20410.34397373395, + "reference_value": 20410.343973721327, + "rel_diff": 6.184994469893104e-13, + "abs_diff_nats": 1.2623786460608244e-08, + "within_rtol": true, + "status": "RECORDED" + } + ], + "lanes_failed": 8, + "arm_rows": { + "vmap": { + "arm": "vmap", + "program": "jax.jit(jax.vmap(fn))", + "stands_for": "Nautilus(use_jax_vmap=True) \u2014 Fitness._vmap", + "hlo_source": "jax.jit(jax.vmap(fn)).lower(batched_tree) \u2014 the exact current Fitness._vmap composition (PyAutoFit#1638)", + "batch_wall_ms": 517.4162076000357, + "wall_production_nesting_ms": 517.4162076000357, + "wall_aot_command_buffers_on_ms": 517.7147279002384, + "wall_aot_command_buffers_off_ms": 518.2538695000403, + "command_buffer_delta_ms": 0.5391415998019511, + "production_nesting_vs_aot_on_delta_ms": -0.29852030020265374, + "production_nesting_vs_aot_on_delta_pct": -0.05766115663995123, + "wall_per_lane_ms": 32.33851297500223, + "wall_per_lane_command_buffers_off_ms": 32.39086684375252, + "traced_batch_wall_ms": 526.2971833999472, + "untraced_batch_wall_ms": 518.9798889998201, + "traced_wall_per_lane_ms": 32.8935739624967, + "callback_count_per_call": 16.0, + "callback_count_per_lane": 1.0, + "callback_expectation": "B per batched call \u2014 the qhull pure_callback is vmap_method='sequential'", + "host_qhull_ms": 71.46214839922322, + "host_tables_ms": 1.8509429031837499, + "host_qhull_ms_per_lane": 4.4663842749514515, + "host_tables_ms_per_lane": 0.11568393144898437, + "host_callback_probe": { + "calls": 160, + "qhull_ms_total": 714.6214839922322, + "tables_ms_total": 18.5094290318375, + "total_ms_total": 733.1309130240697, + "qhull_ms_mean": 4.4663842749514515, + "tables_ms_mean": 0.11568393144898437, + "total_ms_mean": 4.582068206400436, + "non_finite_calls": 0, + "n_points": [ + 1500 + ] + }, + "host_callback_records_first": [ + { + "n_points": 1500, + "qhull_ms": 4.855630002566613, + "tables_ms": 0.173308995726984, + "total_ms": 5.028938998293597, + "finite": true + }, + { + "n_points": 1500, + "qhull_ms": 4.505192999204155, + "tables_ms": 0.12541899923235178, + "total_ms": 4.630611998436507, + "finite": true + }, + { + "n_points": 1500, + "qhull_ms": 4.533261999313254, + "tables_ms": 0.1090990008378867, + "total_ms": 4.642361000151141, + "finite": true + }, + { + "n_points": 1500, + "qhull_ms": 4.491764000704279, + "tables_ms": 0.1084079995052889, + "total_ms": 4.600172000209568, + "finite": true + } + ], + "device_idle_ms": 92.4584172999999, + "device_idle_ms_per_lane": 5.778651081249993, + "trace": { + "parser": "ProfileData.from_file(xplane) + as_text() + stack_frame_index(proto field 17)", + "stage_audit": { + "mixed_fusion": [ + { + "instruction": "loop_divide_gather_fusion", + "ms": 17.121934, + "opcode": "fusion", + "shape": "(f64[15361,16,1,1,1500]{4,3,2,1,0}, f64[15361,16,1,1,1500]{4,3,2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_multiply_transpose_fusion", + "ms": 6.5314165, + "opcode": "fusion", + "shape": "(f64[16,1500,1500]{2,1,0}, f64[16,1500,1500]{2,1,0}, f64[16,1500,1500]{2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:237 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:274 (_certified_positive_only_from)" + ] + }, + { + "instruction": "loop_broadcast_fusion.6", + "ms": 3.9842109, + "opcode": "fusion", + "shape": "f64[16,1500,180,180]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_reduce_fusion.9", + "ms": 1.9171259, + "opcode": "fusion", + "shape": "f64[92,16,1500]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123 (data_vector_via_blurred_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:67 (InversionImagingMapping.data_vector)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:699 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_reduce_fusion.13", + "ms": 1.7497338000000002, + "opcode": "fusion", + "shape": "f64[15361,16]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163 (mapped_reconstructed_data_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:120 (InversionImagingMapping._mapped_reconstructed_data_dict_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:196 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "loop_broadcast_fusion.8", + "ms": 1.704139, + "opcode": "fusion", + "shape": "f64[15361,16,1500]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:353", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:353 (mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:283 (Mapper.mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:91 (AbstractInversionImaging._mapping_matrix_for_convolution_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:137 (AbstractInversionImaging.operated_mapping_matrix_list)" + ] + } + ], + "other": [ + { + "instruction": "copy.113", + "ms": 0.04783049999999985, + "opcode": "copy", + "shape": "f64[1,16,1024,2]{3,2,1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.99", + "ms": 0.03276490000000004, + "opcode": "copy", + "shape": "pred[16,1500]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.115", + "ms": 0.03256010000000004, + "opcode": "copy", + "shape": "s32[1,3000,3]{2,1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.116", + "ms": 0.03247050000000004, + "opcode": "copy", + "shape": "s32[1,3000,3]{2,1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.117", + "ms": 0.03226570000000003, + "opcode": "copy", + "shape": "f64[1,1500,2]{2,1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.114", + "ms": 0.029606399999999998, + "opcode": "copy", + "shape": "s32[1,1500]{1,0}", + "source": "", + "stack": [] + } + ], + "mesh_qhull_callback": [ + { + "instruction": "pure_callback.0", + "ms": 0.17269500000000038, + "opcode": "custom-call", + "shape": "(s32[3000,3]{1,0}, s32[3000,3]{1,0}, s32[1500]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:161", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:161 (_jax_delaunay_tables)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:405 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + }, + { + "instruction": "loop_add_fusion.1", + "ms": 0.024345599999999936, + "opcode": "fusion", + "shape": "s64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:161", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:161 (_jax_delaunay_tables)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:405 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + }, + { + "instruction": "loop_broadcast_fusion.2", + "ms": 0.0019872, + "opcode": "fusion", + "shape": "s32[16,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:161", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:161 (_jax_delaunay_tables)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:405 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + } + ], + "border_relocator": [ + { + "instruction": "custom-call.2", + "ms": 0.0422018, + "opcode": "custom-call", + "shape": "(f64[16,2,2]{2,1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "eigh.34", + "ms": 0.014806399999999999, + "opcode": "custom-call", + "shape": "(f64[16,2,2]{1,2,0}, f64[16,2]{1,0}, s32[16]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_add_rsqrt_fusion", + "ms": 0.012992000000000002, + "opcode": "fusion", + "shape": "(f64[16,15361]{1,0}, f64[16,15361]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:311", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:311 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:423 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:208 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_add_fusion.3", + "ms": 0.003855999999999999, + "opcode": "fusion", + "shape": "f64[16,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:458 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_abs_fusion.1", + "ms": 0.0032608000000000008, + "opcode": "fusion", + "shape": "(f64[16,392,1]{2,1,0}, f64[16,392,1]{2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:269", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:269 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_reduce_fusion.15", + "ms": 0.0031328000000000003, + "opcode": "fusion", + "shape": "f64[16]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:269", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:269 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + } + ], + "mesh_construction": [ + { + "instruction": "loop_compare_fusion.4", + "ms": 0.0046816, + "opcode": "fusion", + "shape": "pred[16,6000,3]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:736", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:736 (DelaunayInterface.splitted_sizes)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:997 (InterpolatorDelaunay._mappings_sizes_weights_split)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:124 (AdaptSplit.regularization_matrix_from)" + ] + }, + { + "instruction": "input_concatenate_fusion.12", + "ms": 0.002368, + "opcode": "fusion", + "shape": "f64[16,1500,2]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:820", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:820 (InterpolatorDelaunay.mesh_grid_xy)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:847 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + }, + { + "instruction": "loop_multiply_fusion.2", + "ms": 0.002352, + "opcode": "fusion", + "shape": "f64[16,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:412", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:412 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "mesh_seed_argmin": [ + { + "instruction": "input_reduce_fusion", + "ms": 1.3163613, + "opcode": "fusion", + "shape": "(f64[16,1024]{1,0}, s64[16,1024]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:191", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:191 (_nearest_vertex_seed_from..argmin_chunk)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)" + ] + }, + { + "instruction": "loop_dynamic_update_slice_fusion", + "ms": 0.04786569999999984, + "opcode": "fusion", + "shape": "s32[21,16,1024]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_add_fusion", + "ms": 0.03175369999999992, + "opcode": "fusion", + "shape": "s64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_broadcast_fusion.3", + "ms": 0.0024544, + "opcode": "fusion", + "shape": "s32[21,16,1024]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "pdip_solve": [ + { + "instruction": "cholesky.50", + "ms": 102.4557180000043, + "opcode": "custom-call", + "shape": "(f64[16,1500,1500]{1,2,0}, s32[16]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "triangular-solve", + "ms": 29.055670900000038, + "opcode": "custom-call", + "shape": "(f64[16,1500,1]{1,2,0}, s8[256]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "triangular-solve.1", + "ms": 27.039248900000448, + "opcode": "custom-call", + "shape": "(f64[16,1500,1]{1,2,0}, s8[256]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "input_transpose_fusion", + "ms": 11.383020100000005, + "opcode": "fusion", + "shape": "f64[16,1500,1500]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "input_transpose_fusion.1", + "ms": 7.330376499999998, + "opcode": "fusion", + "shape": "f64[16,1500,1500]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "cholesky.60", + "ms": 6.784435399999944, + "opcode": "custom-call", + "shape": "(f64[16,1500,1500]{1,2,0}, s32[16]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:237 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:274 (_certified_positive_only_from)" + ] + } + ], + "mesh_dual_areas": [ + { + "instruction": "input_scatter_fusion.9", + "ms": 0.0033888, + "opcode": "fusion", + "shape": "f64[16,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:393", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:393 (_dual_areas_padded_jnp)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:408 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + }, + { + "instruction": "input_scatter_fusion.7", + "ms": 0.0033279999999999994, + "opcode": "fusion", + "shape": "f64[16,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:393", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:393 (_dual_areas_padded_jnp)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:408 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + } + ], + "mesh_locate_walk": [ + { + "instruction": "loop_slice_subtract_fusion", + "ms": 0.3015302000000001, + "opcode": "fusion", + "shape": "(f64[16,21361,1]{2,1,0}, f64[16,21361,1]{2,1,0}, f64[16,21361,1]{2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:236", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:236 (_walk_from_seed..cross)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:250 (_walk_from_seed..weights_of)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:262 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)" + ] + }, + { + "instruction": "loop_reduce_fusion", + "ms": 0.10584970000000009, + "opcode": "fusion", + "shape": "(f64[16,21361]{1,0}, s64[16,21361]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:264", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:264 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:264 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)" + ] + }, + { + "instruction": "loop_select_fusion", + "ms": 0.10036230000000003, + "opcode": "fusion", + "shape": "(pred[16,21361]{1,0}, pred[16,21361]{1,0}, s32[16,21361]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_gather_fusion.1", + "ms": 0.07133170000000001, + "opcode": "fusion", + "shape": "s32[341776,1,1,3]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:239", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:239 (_walk_from_seed..weights_of)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:262 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)" + ] + }, + { + "instruction": "loop_gather_fusion", + "ms": 0.05414459999999998, + "opcode": "fusion", + "shape": "s32[341776,1,1,1]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:267", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:267 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)" + ] + }, + { + "instruction": "input_concatenate_fusion.1", + "ms": 0.04143370000000002, + "opcode": "fusion", + "shape": "s32[16,21361,2]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:244", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:244 (_walk_from_seed..weights_of)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:262 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)" + ] + } + ], + "psf_convolution_mapping_matrix": [ + { + "instruction": "input_scatter_fusion", + "ms": 32.36828379999999, + "opcode": "fusion", + "shape": "f64[16,1500,180,180]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.29.0", + "ms": 28.291890399999993, + "opcode": "fft", + "shape": "f64[16,1500,180,180]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.25.0", + "ms": 21.586997999999994, + "opcode": "fft", + "shape": "c128[16,1500,180,91]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.27.0", + "ms": 15.519218699999998, + "opcode": "fft", + "shape": "c128[16,1500,91,180]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_transpose_fusion.3", + "ms": 8.4352558, + "opcode": "fusion", + "shape": "c128[16,1500,91,180]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "wrapped_transpose", + "ms": 7.9144405, + "opcode": "fusion", + "shape": "c128[16,1500,180,91]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + } + ], + "mapping_matrix": [ + { + "instruction": "input_scatter_fusion.3", + "ms": 0.05075540000000001, + "opcode": "fusion", + "shape": "f64[16,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:71", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:71 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:120 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + }, + { + "instruction": "input_reduce_fusion.36", + "ms": 0.0037663999999999996, + "opcode": "fusion", + "shape": "f64[16]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:120 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + } + ], + "regularization_H": [ + { + "instruction": "input_scatter_fusion.10", + "ms": 0.002784, + "opcode": "fusion", + "shape": "f64[16,1500,1500]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:615", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:615 (pixel_splitted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:137 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "curvature_matrix_F": [ + { + "instruction": "cublas-lt-matmul.2", + "ms": 65.8913192, + "opcode": "custom-call", + "shape": "(f64[16,1500,1500]{2,1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "inversion_other": [ + { + "instruction": "cholesky.80", + "ms": 7.005860600000064, + "opcode": "custom-call", + "shape": "(f64[16,1500,1500]{1,2,0}, s32[16]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1078 (AbstractInversion.log_det_curvature_reg_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:347 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "cholesky.90", + "ms": 6.891396200000048, + "opcode": "custom-call", + "shape": "(f64[16,1500,1500]{1,2,0}, s32[16]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1157 (AbstractInversion.log_det_regularization_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:348 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "loop_reduce_window_fusion", + "ms": 0.0031135999999999994, + "opcode": "fusion", + "shape": "s64[94,16]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "loop_broadcast_convert_fusion", + "ms": 0.0026239999999999996, + "opcode": "fusion", + "shape": "(s32[1500]{0}, s64[1500]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527 (AbstractInversion.zeroed_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:567 (AbstractInversion.solve_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:684 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_scatter_fusion.5", + "ms": 0.0021888000000000003, + "opcode": "fusion", + "shape": "s64[1500]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527 (AbstractInversion.zeroed_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:567 (AbstractInversion.solve_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:684 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_reduce_window_fusion.1", + "ms": 0.0021152, + "opcode": "fusion", + "shape": "s64[6,16]{1,0}", + "source": "", + "stack": [] + } + ] + }, + "stage_audit_note": "The HLO instructions that contributed most of each stage's milliseconds, with their full source stack. A stage row is only as good as the rules that built it; this is how a reader checks a row against the HLO instead of trusting it.", + "untraced_wall_ms": 518.9798889998201, + "reconciliation_vs_untraced_pct": 1.3380213660232894, + "wall_basis": "wall_ms is the TRACED run's wall, the run these kernel durations came from. untraced_wall_ms is the same executable without the profiler; the difference is the profiler's overhead and belongs in neither the stages nor the idle row.", + "calls": 10, + "call_split": "per-call (first-instruction recurrence)", + "call_blocks": 10, + "events": 98230, + "streams": [ + "Stream #14(MemcpyD2H,Compute,MemcpyD2D,MemcpyH2D)" + ], + "per_stage_ms": { + "border_relocator": { + "median_ms": 0.089008, + "min_ms": 0.08854399999999998, + "max_ms": 0.089408 + }, + "curvature_matrix_F": { + "median_ms": 65.883822, + "min_ms": 65.410044, + "max_ms": 66.294655 + }, + "inversion_other": { + "median_ms": 13.86766849999999, + "min_ms": 13.665590000000007, + "max_ms": 14.308857000000021 + }, + "mapping_matrix": { + "median_ms": 0.054816, + "min_ms": 0.052001, + "max_ms": 0.056223999999999996 + }, + "mesh_construction": { + "median_ms": 0.009392, + "min_ms": 0.009216, + "max_ms": 0.009632 + }, + "mesh_dual_areas": { + "median_ms": 0.00672, + "min_ms": 0.0066879999999999995, + "max_ms": 0.006751999999999999 + }, + "mesh_locate_walk": { + "median_ms": 0.8697974999999997, + "min_ms": 0.8663129999999999, + "max_ms": 0.8747560000000002 + }, + "mesh_qhull_callback": { + "median_ms": 0.19901000000000008, + "min_ms": 0.19804800000000003, + "max_ms": 0.1998079999999999 + }, + "mesh_seed_argmin": { + "median_ms": 1.399573, + "min_ms": 1.3929960000000003, + "max_ms": 1.406666 + }, + "mixed_fusion": { + "median_ms": 34.89768500000001, + "min_ms": 34.76708100000001, + "max_ms": 35.313154 + }, + "other": { + "median_ms": 0.2646409999999998, + "min_ms": 0.2624009999999997, + "max_ms": 0.2663999999999998 + }, + "pdip_solve": { + "median_ms": 201.83499350000176, + "min_ms": 201.14833200000075, + "max_ms": 203.0447600000009 + }, + "psf_convolution_mapping_matrix": { + "median_ms": 114.085639, + "min_ms": 113.86171800000002, + "max_ms": 114.512041 + }, + "regularization_H": { + "median_ms": 0.002768, + "min_ms": 0.00272, + "max_ms": 0.002912 + } + }, + "stage_order": [ + "border_relocator", + "mesh_qhull_callback", + "mesh_seed_argmin", + "mesh_locate_walk", + "mesh_dual_areas", + "mesh_construction", + "mapping_matrix", + "psf_convolution_mapping_matrix", + "curvature_matrix_F", + "regularization_H", + "pdip_solve", + "inversion_other", + "mixed_fusion", + "other" + ], + "mixed_fusion": { + "ms": 34.89768500000001, + "constituent_stage_sets": { + "curvature_matrix_F + psf_convolution_mapping_matrix": 17.121934, + "curvature_reg_reduce_gather + inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": 6.5314165, + "pdip_solve + psf_convolution_mapping_matrix": 3.9842109, + "data_vector_D + pdip_solve": 1.9326139000000002, + "mapped_reconstruction + pdip_solve": 1.7497338000000002, + "mapping_matrix + pdip_solve": 1.7073294000000003, + "pdip_solve + regularization_H": 0.7604388000000001, + "inversion_other + pdip_solve + regularization_H": 0.4422260000000001, + "inversion_other + pdip_solve": 0.19286520000000004, + "inversion_other + regularization_H": 0.16288059999999988, + "inversion_other + mapping_matrix + mesh_construction + mesh_interpolation_weights + pdip_solve": 0.06121619999999999, + "mapping_matrix + mesh_interpolation_weights + pdip_solve": 0.0606661, + "grids_and_structures + mass_profile_deflections + ray_trace_data_grid": 0.03154590000000001, + "inversion_other + mesh_construction + mesh_dual_areas + mesh_interpolation_weights": 0.0231234, + "inversion_other + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + pdip_solve + regularization_H": 0.022569699999999998, + "grids_and_structures + mass_profile_deflections + pdip_solve + ray_trace_data_grid": 0.022076899999999997, + "chi_squared_evidence + pdip_solve": 0.0216448, + "inversion_other + mesh_construction + mesh_interpolation_weights": 0.0209506, + "border_relocator + pdip_solve": 0.018896100000000002, + "inversion_other + mapping_matrix + mesh_construction + mesh_interpolation_weights": 0.014601700000000002, + "pdip_solve + ray_trace_data_grid": 0.013193599999999993, + "mesh_construction + pdip_solve + regularization_H": 0.010969700000000002, + "mesh_locate_walk + mesh_seed_argmin": 0.0098208, + "mesh_construction + mesh_seed_argmin + pdip_solve + regularization_H": 0.0097088, + "mesh_dual_areas + mesh_interpolation_weights": 0.008876799999999999, + "inversion_other + mapped_reconstruction + reconstruction_scatter": 0.0087617, + "inversion_other + mapped_reconstruction": 0.0087008, + "inversion_other + mapped_reconstruction + reconstruction_scatter + regularization_H": 0.008444900000000002, + "inversion_other + mesh_dual_areas + mesh_locate_walk": 0.008243199999999997, + "mesh_construction + mesh_dual_areas + mesh_interpolation_weights + pdip_solve + regularization_H": 0.0063648, + "inversion_other + pdip_solve + ray_trace_data_grid": 0.004764799999999999, + "grids_and_structures + mass_profile_deflections + pdip_solve": 0.0044128, + "mapping_matrix + pdip_solve + regularization_H": 0.0040032, + "inversion_other + mesh_locate_walk + mesh_seed_argmin": 0.0038016000000000005, + "inversion_other + mesh_dual_areas + mesh_locate_walk + pdip_solve": 0.0035873000000000003, + "inversion_other + mesh_interpolation_weights": 0.0034399999999999995, + "inversion_other + mesh_construction + mesh_interpolation_weights + pdip_solve + regularization_H": 0.0032768, + "inversion_other + mesh_construction + regularization_H": 0.0026720000000000003, + "chi_squared_evidence + inversion_other": 0.0023648000000000002, + "inversion_other + mapping_matrix": 0.0021536 + }, + "example_kernels": { + "curvature_matrix_F + psf_convolution_mapping_matrix": [ + "loop_divide_gather_fusion" + ], + "curvature_reg_reduce_gather + inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": [ + "input_multiply_transpose_fusion" + ], + "pdip_solve + psf_convolution_mapping_matrix": [ + "loop_broadcast_fusion.6" + ], + "data_vector_D + pdip_solve": [ + "input_reduce_fusion.9", + "input_reduce_fusion.34" + ], + "mapped_reconstruction + pdip_solve": [ + "input_reduce_fusion.13" + ], + "mapping_matrix + pdip_solve": [ + "loop_broadcast_fusion.8", + "loop_divide_fusion" + ], + "pdip_solve + regularization_H": [ + "loop_broadcast_fusion", + "input_transpose_fusion.4" + ], + "inversion_other + pdip_solve + regularization_H": [ + "input_transpose_fusion.5", + "loop_log_fusion" + ], + "inversion_other + pdip_solve": [ + "input_reduce_fusion.11", + "input_reduce_fusion.12", + "input_transpose_fusion.2", + "input_reduce_fusion.17" + ], + "inversion_other + regularization_H": [ + "input_reduce_fusion.31", + "input_reduce_fusion.24", + "input_reduce_fusion.25", + "input_reduce_fusion.26" + ] + }, + "prorated_estimate_ms": { + "psf_convolution_mapping_matrix": 10.55307245, + "curvature_matrix_F": 8.560967, + "pdip_solve": 6.699203843333333, + "mapped_reconstruction": 2.190532391666667, + "inversion_other": 1.6853919750000002, + "reconstruction_scatter": 1.3113150916666667, + "curvature_reg_reduce_gather": 1.3062833, + "data_vector_D": 0.9663069500000001, + "mapping_matrix": 0.8921915983333335, + "regularization_H": 0.6251783616666667, + "mesh_interpolation_weights": 0.06072841833333334, + "mesh_construction": 0.04132241833333333, + "ray_trace_data_grid": 0.024219591666666665, + "mesh_dual_areas": 0.018898384999999997, + "grids_and_structures": 0.017505458333333335, + "mass_profile_deflections": 0.017505458333333335, + "chi_squared_evidence": 0.0120048, + "mesh_locate_walk": 0.009822158333333332, + "border_relocator": 0.009448050000000001, + "mesh_seed_argmin": 0.0086048 + }, + "prorated_note": "ESTIMATE ONLY \u2014 a mixed fusion's time split equally across the stages its constituents span. Never summed into the measured table, never reconciled." + }, + "other_sources_ms": { + "copy.113": 0.04783049999999985, + "copy.99": 0.03276490000000004, + "copy.115": 0.03256010000000004, + "copy.116": 0.03247050000000004, + "copy.117": 0.03226570000000003, + "copy.114": 0.029606399999999998, + "copy.98": 0.023222500000000004, + "copy.97": 0.022992, + "loop_broadcast_fusion.1": 0.0026497, + "copy.112": 0.002304, + "copy.89": 0.0022624000000000003, + "copy.50": 0.0022176, + "loop_broadcast_fusion.4": 0.0014111999999999998 + }, + "device_span_ms": 526.1935725999999, + "device_busy_ms": 433.73515530000003, + "device_idle_ms": 92.4584172999999, + "largest_idle_gaps": [ + { + "gap_ms": 5.571638, + "after": "pure_callback.0", + "before": "pure_callback.0" + }, + { + "gap_ms": 5.103795, + "after": "pure_callback.0", + "before": "pure_callback.0" + }, + { + "gap_ms": 4.969235, + "after": "pure_callback.0", + "before": "pure_callback.0" + }, + { + "gap_ms": 4.963571, + "after": "pure_callback.0", + "before": "pure_callback.0" + }, + { + "gap_ms": 4.926515, + "after": "pure_callback.0", + "before": "pure_callback.0" + }, + { + "gap_ms": 4.917843, + "after": "pure_callback.0", + "before": "pure_callback.0" + }, + { + "gap_ms": 4.917523, + "after": "pure_callback.0", + "before": "pure_callback.0" + }, + { + "gap_ms": 4.882675, + "after": "pure_callback.0", + "before": "pure_callback.0" + } + ], + "kernel_ms": 433.46553350000175, + "sum_ms": 525.9239508000016, + "wall_ms": 526.2971833999472, + "host_outside_span_ms": 0.10361079994731881, + "reconciliation_pct": -0.07091670100426242, + "unjoined_ms": 0.0, + "unjoined_pct": 0.0, + "other_ms": 0.2646409999999998, + "other_pct": 0.05028356760155641, + "note": "Stage rows attribute the command-buffers-OFF program (see the module docstring): kernel times are the same, the launch overhead the CUDA graphs remove is not. sum_ms = kernel rows + device_idle_ms; the residual against wall_ms is host_outside_span_ms (dispatch before the first kernel, teardown after the last).", + "per_stage_ms_per_lane": { + "border_relocator": 0.005563, + "curvature_matrix_F": 4.117738875, + "inversion_other": 0.8667292812499994, + "mapping_matrix": 0.003426, + "mesh_construction": 0.000587, + "mesh_dual_areas": 0.00042, + "mesh_locate_walk": 0.05436234374999998, + "mesh_qhull_callback": 0.012438125000000005, + "mesh_seed_argmin": 0.0874733125, + "mixed_fusion": 2.1811053125000006, + "other": 0.016540062499999987, + "pdip_solve": 12.61468709375011, + "psf_convolution_mapping_matrix": 7.1303524375, + "regularization_H": 0.000173 + }, + "per_lane_divisor": 16, + "host_callback": { + "pure_callback_span_ms": 84.08972530000003, + "qhull_ms": 73.4500943, + "callback_body_ms_note": "the OUTERMOST matching body event, not a sum: under the probe the body appears twice (the wrapper and the timed re-implementation it calls) and summing them would count the same work twice", + "events_by_name": { + "pure_callback.0": { + "count": 160, + "ms": 84.08972530000003 + }, + "$callback.py:815 _wrapped_callback": { + "count": 160, + "ms": 77.31487520000003 + }, + "$callback.py:224 _callback": { + "count": 160, + "ms": 76.95211409999997 + }, + "$callback.py:74 pure_callback_impl": { + "count": 160, + "ms": 76.8157376 + }, + "$callback.py:69 __call__": { + "count": 160, + "ms": 73.69665320000001 + }, + "$delaunay.py:162 ": { + "count": 160, + "ms": 73.5889427 + }, + "$host_callback_probe.py:225 wrapped": { + "count": 160, + "ms": 73.4500943 + }, + "$host_callback_probe.py:160 _timed_tri_only": { + "count": 160, + "ms": 73.3321361 + }, + "$callback.py:822 ": { + "count": 640, + "ms": 0.2251277999999995 + }, + "ThenExecuteCallback:GetEventForComputeStreamSyncPoint": { + "count": 10, + "ms": 0.024644 + }, + "$__init__.py:132 _xla_gc_callback": { + "count": 2, + "ms": 0.000492 + } + }, + "note": "HOST milliseconds per traced BATCH (the whole invocation), aggregated by name because the events nest. Not a row of the device table: the device pays for them as the idle gaps largest_idle_gaps names." + }, + "host_callback_ms": 84.08972530000003 + }, + "hlo_census": { + "status": "excluded", + "reason": "The legacy census anchors PyAutoArray source line numbers that moved after the phase-1 run. No batched attribution is published from unsupported anchors; the device-event table and wall reconciliation remain valid." + }, + "trace_split": { + "expected_calls": 10, + "executions_per_invocation": 1, + "method": "per-call (first-instruction recurrence)", + "note": "DECIDED IN CODE: the scalar arm's trace is split by trace_calls * B, so every lane's execution is its own block and the per-stage median is taken over all of them. The vmap arm's is split by trace_calls, one block per batched execution, and per_stage_ms_per_lane divides those rows by B." + } + }, + "scalar": { + "arm": "scalar", + "program": "jax.jit(fn), called B times", + "stands_for": "Nautilus(use_jax_vmap=False, use_jax_jit=True). Plain use_jax_vmap=False is UNJITTED and is NOT this arm", + "hlo_source": "jax.jit(fn).lower(lane_trees[0]) \u2014 the same program phase 1 traced", + "batch_wall_ms": 512.9914576002193, + "wall_production_nesting_ms": 512.9914576002193, + "wall_aot_command_buffers_on_ms": 512.7541152000049, + "wall_aot_command_buffers_off_ms": 517.150563299947, + "command_buffer_delta_ms": 4.396448099942063, + "production_nesting_vs_aot_on_delta_ms": 0.237342400214402, + "production_nesting_vs_aot_on_delta_pct": 0.04628776116634856, + "wall_per_lane_ms": 32.061966100013706, + "wall_per_lane_command_buffers_off_ms": 32.321910206246685, + "traced_batch_wall_ms": 532.6256786000158, + "untraced_batch_wall_ms": 517.3603519000608, + "traced_wall_per_lane_ms": 33.28910491250099, + "callback_count_per_call": 16.0, + "callback_count_per_lane": 1.0, + "callback_expectation": "1 per likelihood evaluation, B per batch", + "host_qhull_ms": 71.96980369953963, + "host_tables_ms": 1.8175892008002847, + "host_qhull_ms_per_lane": 4.498112731221227, + "host_tables_ms_per_lane": 0.1135993250500178, + "host_callback_probe": { + "calls": 160, + "qhull_ms_total": 719.6980369953963, + "tables_ms_total": 18.175892008002847, + "total_ms_total": 737.8739290033991, + "qhull_ms_mean": 4.498112731221227, + "tables_ms_mean": 0.1135993250500178, + "total_ms_mean": 4.611712056271244, + "non_finite_calls": 0, + "n_points": [ + 1500 + ] + }, + "host_callback_records_first": [ + { + "n_points": 1500, + "qhull_ms": 4.742121000163024, + "tables_ms": 0.1932380000653211, + "total_ms": 4.935359000228345, + "finite": true + }, + { + "n_points": 1500, + "qhull_ms": 4.4789819985453505, + "tables_ms": 0.11332000212860294, + "total_ms": 4.592302000673953, + "finite": true + }, + { + "n_points": 1500, + "qhull_ms": 4.471012001886265, + "tables_ms": 0.11719000031007454, + "total_ms": 4.58820200219634, + "finite": true + }, + { + "n_points": 1500, + "qhull_ms": 4.563852999126539, + "tables_ms": 0.11627899948507547, + "total_ms": 4.680131998611614, + "finite": true + } + ], + "device_idle_ms": 6.500772918750002, + "device_idle_ms_per_lane": 6.500772918750002, + "trace": { + "parser": "ProfileData.from_file(xplane) + as_text() + stack_frame_index(proto field 17)", + "stage_audit": { + "mixed_fusion": [ + { + "instruction": "loop_divide_gather_fusion", + "ms": 1.0222060687499999, + "opcode": "fusion", + "shape": "(f64[15361,1,1,1500]{3,2,1,0}, f64[15361,1,1,1500]{3,2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_broadcast_fusion.4", + "ms": 0.227287425, + "opcode": "fusion", + "shape": "f64[1500,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_reduce_fusion.5", + "ms": 0.12172564999999999, + "opcode": "fusion", + "shape": "f64[92,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123 (data_vector_via_blurred_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:67 (InversionImagingMapping.data_vector)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:699 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_reduce_fusion.9", + "ms": 0.11514451250000009, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163 (mapped_reconstructed_data_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:120 (InversionImagingMapping._mapped_reconstructed_data_dict_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:196 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "loop_broadcast_fusion.2", + "ms": 0.11111129375, + "opcode": "fusion", + "shape": "f64[15361,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:342", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:342 (mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:283 (Mapper.mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:91 (AbstractInversionImaging._mapping_matrix_for_convolution_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:137 (AbstractInversionImaging.operated_mapping_matrix_list)" + ] + }, + { + "instruction": "input_multiply_transpose_fusion", + "ms": 0.11002071875, + "opcode": "fusion", + "shape": "(f64[1500,1500]{1,0}, f64[1500,1500]{1,0}, f64[1500,1500]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:237 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:274 (_certified_positive_only_from)" + ] + } + ], + "border_relocator": [ + { + "instruction": "eigh.45", + "ms": 0.07492749374999988, + "opcode": "custom-call", + "shape": "(f64[2,2]{0,1}, f64[2]{0}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "custom-call.2", + "ms": 0.00796716875000001, + "opcode": "custom-call", + "shape": "(f64[2,2]{1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_reduce_fusion.10", + "ms": 0.005843174999999995, + "opcode": "fusion", + "shape": "(f64[], f64[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:269", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:269 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_add_fusion.3", + "ms": 0.0035635437499999985, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:423 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:208 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_add_fusion.5", + "ms": 0.003449968749999998, + "opcode": "fusion", + "shape": "f64[1500]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:458 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_concatenate_fusion.12", + "ms": 0.0024208062499999987, + "opcode": "fusion", + "shape": "f64[392,2]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:238", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:238 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + } + ], + "mesh_construction": [ + { + "instruction": "input_concatenate_fusion.7", + "ms": 0.002060987500000002, + "opcode": "fusion", + "shape": "f64[1500,2]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:820", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:820 (InterpolatorDelaunay.mesh_grid_xy)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:847 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + } + ], + "mesh_qhull_callback": [ + { + "instruction": "pure_callback.4", + "ms": 0.010662925000000023, + "opcode": "custom-call", + "shape": "(s32[3000,3]{1,0}, s32[3000,3]{1,0}, s32[1500]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:161", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:161 (_jax_delaunay_tables)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:405 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + } + ], + "other": [ + { + "instruction": "copy.80", + "ms": 0.0421512312500022, + "opcode": "copy", + "shape": "f64[1,1024,2]{2,1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.48", + "ms": 0.016989462500000115, + "opcode": "copy", + "shape": "s32[21361]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.53", + "ms": 0.0019827937500000005, + "opcode": "copy", + "shape": "s64[1500]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.79", + "ms": 0.0017985875000000005, + "opcode": "copy", + "shape": "s32[]", + "source": "", + "stack": [] + }, + { + "instruction": "copy.78", + "ms": 0.0017723812499999992, + "opcode": "copy", + "shape": "s64[]", + "source": "", + "stack": [] + }, + { + "instruction": "copy.39", + "ms": 0.0016623937499999995, + "opcode": "copy", + "shape": "s32[]", + "source": "", + "stack": [] + } + ], + "mesh_seed_argmin": [ + { + "instruction": "input_reduce_fusion", + "ms": 0.15278476250000322, + "opcode": "fusion", + "shape": "(f64[1024]{0}, s64[1024]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:191", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:191 (_nearest_vertex_seed_from..argmin_chunk)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)" + ] + }, + { + "instruction": "loop_dynamic_update_slice_fusion", + "ms": 0.04134503124999953, + "opcode": "fusion", + "shape": "s32[21,1024]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_add_fusion", + "ms": 0.03183429999999872, + "opcode": "fusion", + "shape": "s64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_broadcast_fusion", + "ms": 0.0019629874999999995, + "opcode": "fusion", + "shape": "s32[21,1024]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "pdip_solve": [ + { + "instruction": "cholesky.50", + "ms": 5.925674424999978, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "triangular-solve.1", + "ms": 1.0751257125000189, + "opcode": "custom-call", + "shape": "(f64[1500,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "triangular-solve", + "ms": 0.9163587937499991, + "opcode": "custom-call", + "shape": "(f64[1500,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "cholesky.70", + "ms": 0.8940089249999981, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:297 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:274 (_certified_positive_only_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:496 (reconstruction_positive_only_from)" + ] + }, + { + "instruction": "cholesky.60", + "ms": 0.8650892000000021, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:237 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:274 (_certified_positive_only_from)" + ] + }, + { + "instruction": "input_transpose_fusion", + "ms": 0.23345516249999987, + "opcode": "fusion", + "shape": "f64[1500,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + } + ], + "regularization_H": [ + { + "instruction": "input_scatter_fusion.10", + "ms": 0.0020828, + "opcode": "fusion", + "shape": "f64[1500,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:615", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:615 (pixel_splitted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:137 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_concatenate_fusion.8", + "ms": 0.0018649875000000028, + "opcode": "fusion", + "shape": "pred[3]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:93", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:93 (split_points_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:410 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + }, + { + "instruction": "input_concatenate_fusion.9", + "ms": 0.0018535937500000009, + "opcode": "fusion", + "shape": "pred[3]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:91", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:91 (split_points_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:410 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + }, + { + "instruction": "input_concatenate_fusion.10", + "ms": 0.0018515874999999982, + "opcode": "fusion", + "shape": "pred[3]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:90", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:90 (split_points_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:410 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + }, + { + "instruction": "input_concatenate_fusion", + "ms": 0.0017653812499999993, + "opcode": "fusion", + "shape": "s32[1500,2]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:615", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:615 (pixel_splitted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:137 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_concatenate_fusion.11", + "ms": 0.0015515937499999998, + "opcode": "fusion", + "shape": "pred[3]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:88", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:88 (split_points_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:410 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + } + ], + "mesh_locate_walk": [ + { + "instruction": "loop_reduce_fusion", + "ms": 0.025831068749999925, + "opcode": "fusion", + "shape": "(f64[21361]{0}, s64[21361]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:264", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:264 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:264 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)" + ] + }, + { + "instruction": "input_reduce_fusion.1", + "ms": 0.025124125, + "opcode": "fusion", + "shape": "pred[196]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:288", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:288 (_walk_from_seed..cond)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)" + ] + }, + { + "instruction": "loop_or_select_fusion", + "ms": 0.02352166874999974, + "opcode": "fusion", + "shape": "(s32[21361]{0}, pred[21361]{0}, pred[21361]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:270", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:270 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)" + ] + }, + { + "instruction": "loop_select_fusion", + "ms": 0.02023009999999994, + "opcode": "fusion", + "shape": "s32[21361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:242", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:242 (_walk_from_seed..weights_of)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:262 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)" + ] + }, + { + "instruction": "input_reduce_fusion.2", + "ms": 0.016249318750000123, + "opcode": "fusion", + "shape": "pred[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:288", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:288 (_walk_from_seed..cond)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)" + ] + }, + { + "instruction": "while.20", + "ms": 0.014592549999999722, + "opcode": "while", + "shape": "(s32[], s32[21361]{0}, pred[21361]{0}, pred[21361]{0}, s32[3000,3]{1,0}, /*index=5*/f64[1500,2]{1,0}, f64[21361,2]{1,0}, s32[3000,3]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "psf_convolution_mapping_matrix": [ + { + "instruction": "input_scatter_fusion", + "ms": 1.9917171125000004, + "opcode": "fusion", + "shape": "f64[1500,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.19.0", + "ms": 1.7617358500000007, + "opcode": "fft", + "shape": "f64[1500,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.15.0", + "ms": 1.3688939375000002, + "opcode": "fft", + "shape": "c128[1500,180,91]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.17.0", + "ms": 0.9794694999999998, + "opcode": "fft", + "shape": "c128[1500,91,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_transpose_fusion.2", + "ms": 0.5134825312500002, + "opcode": "fusion", + "shape": "c128[1500,91,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "wrapped_transpose", + "ms": 0.49957474375000005, + "opcode": "fusion", + "shape": "c128[1500,180,91]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + } + ], + "inversion_other": [ + { + "instruction": "cholesky.80", + "ms": 0.8981578250000019, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1078 (AbstractInversion.log_det_curvature_reg_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:347 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "cholesky.90", + "ms": 0.8934438625000016, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1157 (AbstractInversion.log_det_regularization_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:348 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "loop_reduce_window_fusion", + "ms": 0.002880768749999993, + "opcode": "fusion", + "shape": "s64[6,16]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "loop_reduce_window_fusion.1", + "ms": 0.0027893749999999998, + "opcode": "fusion", + "shape": "s64[94,16]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "loop_broadcast_convert_fusion", + "ms": 0.0021827874999999926, + "opcode": "fusion", + "shape": "(s32[1500]{0}, s64[1500]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527 (AbstractInversion.zeroed_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:567 (AbstractInversion.solve_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:684 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_scatter_fusion.5", + "ms": 0.0019523937499999978, + "opcode": "fusion", + "shape": "s64[1500]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527 (AbstractInversion.zeroed_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:567 (AbstractInversion.solve_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:684 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "mapping_matrix": [ + { + "instruction": "input_reduce_fusion.23", + "ms": 0.0029050062499999902, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:120 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + } + ], + "curvature_matrix_F": [ + { + "instruction": "cublas-lt-matmul.2", + "ms": 4.24611018125, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "chi_squared_evidence": [ + { + "instruction": "loop_multiply_fusion", + "ms": 0.003007562499999996, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:300", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:300 (AbstractNDArray.__pow__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:60 (unwrap_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:35 (to_new_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:78 (chi_squared_map_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:78 (AbstractFit.chi_squared_map)" + ] + } + ] + }, + "stage_audit_note": "The HLO instructions that contributed most of each stage's milliseconds, with their full source stack. A stage row is only as good as the rules that built it; this is how a reader checks a row against the HLO instead of trusting it.", + "untraced_wall_ms": 32.3350219937538, + "reconciliation_vs_untraced_pct": -7.586444739322157, + "wall_basis": "wall_ms is the TRACED run's wall, the run these kernel durations came from. untraced_wall_ms is the same executable without the profiler; the difference is the profiler's overhead and belongs in neither the stages nor the idle row.", + "calls": 160, + "call_split": "per-call (first-instruction recurrence)", + "call_blocks": 160, + "events": 73390, + "streams": [ + "Stream #14(MemcpyH2D,Compute,MemcpyD2H,Memset,MemcpyD2D)" + ], + "per_stage_ms": { + "border_relocator": { + "median_ms": 0.101663, + "min_ms": 0.10115000000000002, + "max_ms": 0.10242900000000002 + }, + "chi_squared_evidence": { + "median_ms": 0.003008, + "min_ms": 0.002847, + "max_ms": 0.003327 + }, + "curvature_matrix_F": { + "median_ms": 4.243834, + "min_ms": 4.229319, + "max_ms": 4.339802 + }, + "inversion_other": { + "median_ms": 1.8035354999999997, + "min_ms": 1.7878880000000001, + "max_ms": 1.817648 + }, + "mapping_matrix": { + "median_ms": 0.002912, + "min_ms": 0.002879, + "max_ms": 0.002944 + }, + "memset": { + "median_ms": 0.021216, + "min_ms": 0.010048, + "max_ms": 0.053536000000000014 + }, + "mesh_construction": { + "median_ms": 0.002048, + "min_ms": 0.002048, + "max_ms": 0.00208 + }, + "mesh_locate_walk": { + "median_ms": 0.15049600000000002, + "min_ms": 0.13251100000000002, + "max_ms": 0.18655800000000006 + }, + "mesh_qhull_callback": { + "median_ms": 0.010624, + "min_ms": 0.010527, + "max_ms": 0.011200000000000002 + }, + "mesh_seed_argmin": { + "median_ms": 0.22793350000000012, + "min_ms": 0.22752100000000008, + "max_ms": 0.2283820000000001 + }, + "mixed_fusion": { + "median_ms": 1.994142, + "min_ms": 1.9845259999999998, + "max_ms": 2.0064840000000004 + }, + "other": { + "median_ms": 0.06620799999999999, + "min_ms": 0.06383799999999999, + "max_ms": 0.07071899999999999 + }, + "pdip_solve": { + "median_ms": 7.627229, + "min_ms": 2.4333360000000006, + "max_ms": 23.172370000000008 + }, + "psf_convolution_mapping_matrix": { + "median_ms": 7.1153775, + "min_ms": 7.102593000000001, + "max_ms": 7.125762 + }, + "regularization_H": { + "median_ms": 0.010944, + "min_ms": 0.01088, + "max_ms": 0.01136 + } + }, + "stage_order": [ + "border_relocator", + "mesh_qhull_callback", + "mesh_seed_argmin", + "mesh_locate_walk", + "mesh_construction", + "mapping_matrix", + "psf_convolution_mapping_matrix", + "curvature_matrix_F", + "regularization_H", + "pdip_solve", + "chi_squared_evidence", + "inversion_other", + "mixed_fusion", + "other", + "memset" + ], + "mixed_fusion": { + "ms": 1.994142, + "constituent_stage_sets": { + "curvature_matrix_F + psf_convolution_mapping_matrix": 1.0222060687499999, + "pdip_solve + psf_convolution_mapping_matrix": 0.227287425, + "data_vector_D + pdip_solve": 0.1254148375, + "mapped_reconstruction + pdip_solve": 0.11514451250000009, + "mapping_matrix + pdip_solve": 0.11348248124999995, + "curvature_reg_reduce_gather + inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": 0.11002071875, + "pdip_solve + regularization_H": 0.045843649999999965, + "inversion_other + pdip_solve + regularization_H": 0.024280893750000008, + "inversion_other + pdip_solve": 0.023086343750000037, + "inversion_other + mapping_matrix + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin + pdip_solve": 0.021611925000000008, + "inversion_other + mesh_construction + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin + pdip_solve + regularization_H": 0.019178118750000007, + "inversion_other + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + pdip_solve + regularization_H": 0.014693356249999994, + "pdip_solve + ray_trace_data_grid": 0.013694924999999908, + "border_relocator + pdip_solve": 0.013572524999999964, + "inversion_other + mapping_matrix + mesh_construction + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin": 0.011665712499999996, + "grids_and_structures + mass_profile_deflections + pdip_solve": 0.010259375000000001, + "grids_and_structures + mass_profile_deflections + pdip_solve + ray_trace_data_grid": 0.0090448, + "chi_squared_evidence + pdip_solve": 0.0077099625000000005, + "inversion_other + mesh_construction + mesh_seed_argmin + pdip_solve + regularization_H": 0.0071267625000000015, + "inversion_other + mesh_dual_areas + mesh_locate_walk": 0.006757962499999999, + "inversion_other + mesh_construction + pdip_solve + regularization_H": 0.0065437687499999946, + "grids_and_structures + mass_profile_deflections + ray_trace_data_grid": 0.005568593749999997, + "inversion_other + pdip_solve + ray_trace_data_grid": 0.005387374999999999, + "inversion_other + regularization_H": 0.005236981249999982, + "inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": 0.004933956250000004, + "inversion_other + mapped_reconstruction + pdip_solve": 0.0038193812499999987, + "mapping_matrix + pdip_solve + regularization_H": 0.003507181250000001, + "inversion_other + mesh_construction + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin": 0.0031795812499999985, + "inversion_other + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin": 0.00298280625, + "inversion_other + mesh_construction + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin + regularization_H": 0.002733193750000008, + "inversion_other + mesh_dual_areas + mesh_locate_walk + pdip_solve": 0.0026055750000000054, + "inversion_other + mesh_locate_walk + mesh_seed_argmin": 0.0025223999999999963, + "inversion_other + mesh_interpolation_weights": 0.0021609937500000013, + "chi_squared_evidence + inversion_other": 0.0019507687500000025 + }, + "example_kernels": { + "curvature_matrix_F + psf_convolution_mapping_matrix": [ + "loop_divide_gather_fusion" + ], + "pdip_solve + psf_convolution_mapping_matrix": [ + "loop_broadcast_fusion.4" + ], + "data_vector_D + pdip_solve": [ + "input_reduce_fusion.5", + "input_reduce_fusion.21" + ], + "mapped_reconstruction + pdip_solve": [ + "input_reduce_fusion.9" + ], + "mapping_matrix + pdip_solve": [ + "loop_broadcast_fusion.2", + "loop_divide_fusion" + ], + "curvature_reg_reduce_gather + inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": [ + "input_multiply_transpose_fusion" + ], + "pdip_solve + regularization_H": [ + "loop_select_fusion.2", + "input_transpose_fusion.3" + ], + "inversion_other + pdip_solve + regularization_H": [ + "input_transpose_fusion.4" + ], + "inversion_other + pdip_solve": [ + "input_reduce_fusion.7", + "loop_log_fusion", + "input_reduce_fusion.8", + "input_reduce_fusion.12" + ], + "inversion_other + mapping_matrix + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin + pdip_solve": [ + "input_scatter_fusion.6", + "input_scatter_fusion.3" + ] + }, + "prorated_estimate_ms": { + "psf_convolution_mapping_matrix": 0.6247467468749999, + "curvature_matrix_F": 0.5111030343749999, + "pdip_solve": 0.39547136916666653, + "mapped_reconstruction": 0.08208301614583338, + "inversion_other": 0.06884685208333335, + "data_vector_D": 0.06270741875, + "mapping_matrix": 0.06255607708333331, + "regularization_H": 0.043508458229166644, + "reconstruction_scatter": 0.023237632812500002, + "curvature_reg_reduce_gather": 0.02200414375, + "mesh_construction": 0.014484277604166668, + "ray_trace_data_grid": 0.012760652083333286, + "mesh_locate_walk": 0.012718938125000002, + "mesh_interpolation_weights": 0.012503479791666671, + "mesh_seed_argmin": 0.011240242708333337, + "mesh_dual_areas": 0.008551565625, + "grids_and_structures": 0.007537189583333333, + "mass_profile_deflections": 0.007537189583333333, + "border_relocator": 0.006786262499999982, + "chi_squared_evidence": 0.004830365625000001 + }, + "prorated_note": "ESTIMATE ONLY \u2014 a mixed fusion's time split equally across the stages its constituents span. Never summed into the measured table, never reconciled." + }, + "other_sources_ms": { + "copy.80": 0.0421512312500022, + "copy.48": 0.016989462500000115, + "copy.53": 0.0019827937500000005, + "copy.79": 0.0017985875000000005, + "copy.78": 0.0017723812499999992, + "copy.39": 0.0016623937499999995 + }, + "device_span_ms": 33.28327708125, + "device_busy_ms": 26.782504162499997, + "device_idle_ms": 6.500772918750002, + "largest_idle_gaps": [ + { + "gap_ms": 5.438192, + "after": "pure_callback.4", + "before": "pure_callback.4" + }, + { + "gap_ms": 0.037408, + "after": "while.26", + "before": "input_reduce_select_fusion" + }, + { + "gap_ms": 0.033759, + "after": "pure_callback.4", + "before": "copy.79" + }, + { + "gap_ms": 0.031871, + "after": "copy.48", + "before": "input_reduce_fusion.1" + }, + { + "gap_ms": 0.02832, + "after": "pure_callback.4", + "before": "pure_callback.4" + }, + { + "gap_ms": 0.027456, + "after": "input_concatenate_fusion.7", + "before": "pure_callback.4" + }, + { + "gap_ms": 0.022272, + "after": "input_reduce_fusion.20", + "before": "loop_broadcast_fusion.4" + }, + { + "gap_ms": 0.021504, + "after": "loop_select_fusion", + "before": "loop_reduce_fusion" + } + ], + "kernel_ms": 23.3811705, + "sum_ms": 29.88194341875, + "wall_ms": 33.28910491250099, + "host_outside_span_ms": 0.0058278312509898456, + "reconciliation_pct": -10.23506490398756, + "unjoined_ms": 0.0, + "unjoined_pct": 0.0, + "other_ms": 0.06620799999999999, + "other_pct": 0.19888789492545664, + "note": "Stage rows attribute the command-buffers-OFF program (see the module docstring): kernel times are the same, the launch overhead the CUDA graphs remove is not. sum_ms = kernel rows + device_idle_ms; the residual against wall_ms is host_outside_span_ms (dispatch before the first kernel, teardown after the last).", + "per_stage_ms_per_lane": { + "border_relocator": 0.101663, + "chi_squared_evidence": 0.003008, + "curvature_matrix_F": 4.243834, + "inversion_other": 1.8035354999999997, + "mapping_matrix": 0.002912, + "memset": 0.021216, + "mesh_construction": 0.002048, + "mesh_locate_walk": 0.15049600000000002, + "mesh_qhull_callback": 0.010624, + "mesh_seed_argmin": 0.22793350000000012, + "mixed_fusion": 1.994142, + "other": 0.06620799999999999, + "pdip_solve": 7.627229, + "psf_convolution_mapping_matrix": 7.1153775, + "regularization_H": 0.010944 + }, + "per_lane_divisor": 1, + "host_callback": { + "pure_callback_span_ms": 79.30217320000008, + "qhull_ms": 73.9355556, + "callback_body_ms_note": "the OUTERMOST matching body event, not a sum: under the probe the body appears twice (the wrapper and the timed re-implementation it calls) and summing them would count the same work twice", + "events_by_name": { + "pure_callback.4": { + "count": 160, + "ms": 79.30217320000008 + }, + "$callback.py:815 _wrapped_callback": { + "count": 160, + "ms": 77.91111580000002 + }, + "$callback.py:224 _callback": { + "count": 160, + "ms": 77.5358856 + }, + "$callback.py:74 pure_callback_impl": { + "count": 160, + "ms": 77.40016880000003 + }, + "$callback.py:69 __call__": { + "count": 160, + "ms": 74.17798120000002 + }, + "$delaunay.py:162 ": { + "count": 160, + "ms": 74.07748219999998 + }, + "$host_callback_probe.py:225 wrapped": { + "count": 160, + "ms": 73.9355556 + }, + "$host_callback_probe.py:160 _timed_tri_only": { + "count": 160, + "ms": 73.80817850000001 + }, + "ThenExecuteCallback:GetEventForComputeStreamSyncPoint": { + "count": 160, + "ms": 0.28706550000000003 + }, + "$callback.py:822 ": { + "count": 640, + "ms": 0.23090409999999956 + }, + "$__init__.py:132 _xla_gc_callback": { + "count": 2, + "ms": 0.00037200000000000004 + } + }, + "note": "HOST milliseconds per traced BATCH (the whole invocation), aggregated by name because the events nest. Not a row of the device table: the device pays for them as the idle gaps largest_idle_gaps names." + }, + "host_callback_ms": 79.30217320000008 + }, + "hlo_census": { + "status": "excluded", + "reason": "The legacy census anchors PyAutoArray source line numbers that moved after the phase-1 run. No batched attribution is published from unsupported anchors; the device-event table and wall reconciliation remain valid." + }, + "trace_split": { + "expected_calls": 160, + "executions_per_invocation": 16, + "method": "per-call (first-instruction recurrence)", + "note": "DECIDED IN CODE: the scalar arm's trace is split by trace_calls * B, so every lane's execution is its own block and the per-stage median is taken over all of them. The vmap arm's is split by trace_calls, one block per batched execution, and per_stage_ms_per_lane divides those rows by B." + } + } + }, + "certification_report": { + "source": "vmap arm, library solve observed through its stats= out-dict (PyAutoArray #566) and jax.debug.callback(..., ordered=True); ordered because the unordered batching rule returns the lanes permuted. Untimed, separately compiled; max rel diff of its log likelihoods vs the timed arm's: 1.719e-06", + "rows": 16, + "pdip_iter": "NOT AVAILABLE per lane without changing library numerics. The fallback branch calls the library's own reconstruction_positive_only_from, which returns the solution alone \u2014 jax_nnls.solve_nnls' iteration count is discarded inside the library's custom_vjp primal. The PDIP while_loop's cost is in the pdip_solve stage row of each arm's device table instead, which is a max-over-lanes quantity under vmap because every lane runs the same fixed kernel sequence.", + "passes_semantics": "library `passes`: restricted active-set passes run (jax_active_set.solve_certified)" + }, + "lane_construction": { + "draws_sha256": "0d36cfdd54138e3d4343da6cff62621f6145bc8ee8d317d15fbcea328cacd342", + "lane_rows": [ + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315 + ], + "calls": [ + 15 + ], + "stage": "pix1", + "regularization_range": { + "galaxies.source.pixelization.regularization.inner_coefficient": { + "min": 8.610204122811597e-06, + "max": 609.7498208301598 + }, + "galaxies.source.pixelization.regularization.outer_coefficient": { + "min": 3.4330906156470037e-06, + "max": 159.11676392313697 + }, + "galaxies.source.pixelization.regularization.signal_scale": { + "min": 0.12452271846719754, + "max": 0.9404155018121758 + } + }, + "phases": [ + "exploration" + ], + "window_rule": "nautilus_batches.timed_window: consecutive captured calls, in call order, from the FIRST call that is not a prior batch, concatenated and truncated to B; at B == n_batch exactly one real Nautilus batch. Falls back to the latest B lanes if the post-prior lanes run out; never repeats a lane.", + "note": "Lane k is captured lane lane_rows[k]: the mass AND shear of a real Nautilus proposal (nautilus_batch_capture.py), lens light fixed at S3, the S3 light-subtracted dataset shared by every lane. `offsets` in the lane table are the mass offsets from the fiducial; the shear is in the capture file." + }, + "captured": { + "batches_path": "/mnt/ral/jnightin/autolens_profiling_wt/certified-solver-phase-c1-lane-rate/results/breakdown/imaging/nautilus_batches_delaunay_pix1.npz", + "batches_sha256": "e71a5e23026b342d1ff4359b8fb914a87980d8aea0060659d2334dcfa3215c00", + "schema_version": 2, + "n_calls": 932, + "n_lanes": 18640, + "call_sizes_seen": [ + 20 + ], + "calls_by_phase": { + "prior": 15, + "exploration": 917 + }, + "parameter_paths": [ + "galaxies.source.pixelization.regularization.inner_coefficient", + "galaxies.source.pixelization.regularization.outer_coefficient", + "galaxies.source.pixelization.regularization.signal_scale", + "galaxies.lens.mass.centre.centre_0", + "galaxies.lens.mass.centre.centre_1", + "galaxies.lens.mass.einstein_radius", + "galaxies.lens.mass.ell_comps.ell_comps_0", + "galaxies.lens.mass.ell_comps.ell_comps_1", + "galaxies.lens.shear.gamma_1", + "galaxies.lens.shear.gamma_2" + ], + "stage": "pix1", + "regularization": { + "class": "AdaptSplit", + "free": true, + "priors": { + "inner_coefficient": [ + "LogUniform", + 1e-06, + 1000000.0 + ], + "outer_coefficient": [ + "LogUniform", + 1e-06, + 1000000.0 + ], + "signal_scale": [ + "Uniform", + 0.0, + 1.0 + ] + }, + "priors_source": "PyAutoGalaxy packaged config/priors/regularization (adapt_split.yaml / constant.yaml); adapt_split.yaml is identical to euclid_strong_lens_modeling_pipeline/config/priors/regularization/adapt_split.yaml" + }, + "nautilus": { + "departures_from_production": [ + "mass/shear priors are the phase-B cell's Gaussians, not chained from source_lp", + "no positions likelihood", + "the cell's mesh (Hilbert 1500, weight_power 1) in both stages; source_pix_2 redraws a 500-vertex Hilbert grid at weight_power 3.5", + "seeded (production passes no seed)", + "quick updates disabled (iterations_per_quick_update=1e12; render-only)", + "NullPaths: no output directory, so no checkpoint and one Sampler.run call", + "post-fit perform_update skipped (samples / latent variables never built)" + ], + "n_batch": 20, + "n_like_max": 40000, + "n_live": 150, + "number_of_cores": 1, + "production_reference": "euclid_strong_lens_modeling_pipeline/scripts/full_model.py source_pix_1 (n_live=150) / source_pix_2 (n_live=75): af.Nautilus(n_batch=20, **SettingsSearch.search_dict) with use_jax_vmap=True and number_of_cores=1 (SettingsSearch defaults)", + "production_stage": "source_pix_1", + "seed": 1, + "stage": "pix1", + "use_jax_vmap": true, + "version": "1.0.5" + }, + "capture_fit_status": "sampling complete (n_like_max or convergence); post-fit result skipped", + "capture_library_revisions": { + "PyAutoArray": { + "head": "7fa8d2714f7da43fec2b23c31bff580764831670", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoArray" + }, + "PyAutoFit": { + "head": "a736840127be7a3c21e15a5c945e94d8f1082983", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoFit" + }, + "PyAutoGalaxy": { + "head": "70a61e26cd715cefe7012a38285698091246a8a4", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy" + }, + "PyAutoLens": { + "head": "86054bbc19baa2f710a12e04a94fa27ab37cc354", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoLens" + }, + "PyAutoNerves": { + "head": "1fa613aa8d89a79613009fb66f5b4e2d21deb57a", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoNerves" + } + }, + "fingerprint_check": { + "fields": [ + "mesh", + "source_pixels", + "dataset_sha256", + "regularization_class", + "regularization_s0_fiducial", + "border_relocator", + "use_mixed_precision", + "log_evidence_s3_library" + ], + "not_identity": "the regularization coefficients: free per lane since the capture frees them", + "log_evidence_s3_library_rel_diff": 0.0, + "passed": true + }, + "timed_window_vs_capture_pdip": { + "reference": "the capture's own figure of merit (library PDIP, Fitness.call_wrap jax.jit(jax.vmap(call)) over parameter vectors) for the same lanes", + "compared_against": "this cell's jit(vmap) library-PDIP reference", + "n_compared": 16, + "max_rel_diff": 1.309592033202303e-06, + "max_abs_diff_nats": 0.23195374920032918, + "gated": false, + "note": "RECORDED, NOT GATED: proves the lane trees rebuilt here are the models the sampler evaluated (a wrong parameter mapping shows up as nats, not 1e-10)." + } + }, + "matched": { + "vmap_wall_per_lane_ms": 32.33851297500223, + "scalar_wall_per_lane_ms": 32.061966100013706, + "speedup_vmap_over_scalar": 0.9914483737949764, + "note": "Both walls are the PRODUCTION nesting of their arm, measured in one process on the same B lanes with the SAME library Settings (no injection). A speedup below 1 means the batch is slower per lane than B sequential jitted calls." + }, + "solver_source": "library", + "solver": "certified", + "certified_fallback": "none", + "certified_pass_budget": 16, + "certified_pass_budget_basis": "config default (Settings().certified_pass_budget)", + "certified_tau_rel": 1e-09, + "solver_used": "certified", + "solver_check": { + "solver_used": "certified", + "solver_used_source": "AbstractInversion.positive_only_solver_used on the fiducial S3 inversion, built eagerly on the JAX backend (AnalysisImaging(use_jax=True).fit_from) with the arms' Settings", + "reference_solver_used": "pdip", + "traced_solver_kwargs_jax": [ + "certified" + ], + "observed_calls_jax": 1, + "report_rows": 16, + "report_vs_timed_arm_max_rel_diff": 1.7194866419029146e-06 + }, + "lanes_certified": [ + true, + false, + true, + true, + true, + true, + true, + true, + true, + true, + true, + false, + true, + true, + false, + false + ], + "lanes_passes": [ + 10, + 16, + 0, + 0, + 10, + 4, + 0, + 1, + 4, + 0, + 2, + 16, + 9, + 2, + 16, + 16 + ], + "uncertified_lanes": 4, + "per_lane_certification_note": "certified / passes come from the library's own solve through its stats= out-dict (PyAutoArray #566): passes is the number of restricted active-set passes the library ran (0 when the unconstrained solve was already non-negative), certified is its KKT certificate. With certified_fallback=pdip a False lane returned the PDIP solution; with none it returned the last uncertified iterate. null for a library-PDIP row (no certificate).", + "gate": { + "pre_registered": true, + "gated": [ + "per lane: jit(vmap) arm vs jit(vmap) library PDIP <= lane_rtol relative", + "per lane: scalar jit arm vs scalar jit library PDIP <= lane_rtol relative" + ], + "recorded_not_gated": [ + "per lane: jit(vmap) arm vs scalar jit arm (rel_diff, abs_diff_nats)", + "per lane: jit(vmap) library PDIP vs scalar jit library PDIP", + "uncertified_lanes (certified_fallback=none rows)" + ], + "lanes_failed": 8, + "passed": false, + "policy_eligible": false, + "note": "Pre-registered before submission (module docstring; submit header). Phase 3 (results/notes/hst_gpu_residue_phase3_psf_2026_09.md) placed phase 2's ~2.5e-9 certified-vs-PDIP residual BETWEEN the jit(vmap) and scalar-jit compositions, not in the solver \u2014 so each arm is gated against the library-PDIP reference of its OWN composition, and the cross-composition difference is recorded with its nats. A certified_fallback=none row is policy-eligible only if every lane certifies AND passes the gate. Timing is never gated." + }, + "library_revisions": { + "PyAutoArray": { + "head": "3de624b5b91a4efa130dc3cb0a3a0f06f85025a3", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoArray", + "module_file": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/__init__.py" + }, + "PyAutoFit": { + "head": "dd9fbe0aab60c4a57702b1444ca031b317c91331", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoFit", + "module_file": "/mnt/ral/jnightin/PyAuto/PyAutoFit/autofit/__init__.py" + }, + "PyAutoGalaxy": { + "head": "70a61e26cd715cefe7012a38285698091246a8a4", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy", + "module_file": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/__init__.py" + }, + "PyAutoLens": { + "head": "86054bbc19baa2f710a12e04a94fa27ab37cc354", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoLens", + "module_file": "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/__init__.py" + }, + "autoarray_file": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/__init__.py" + } + }, + "headline_arm_note": "`trace`, `hlo_census`, `command_buffers` and `trace_timing` above describe the scalar arm \u2014 the program phase 1 traced. Both arms' full blocks, the lane table and the matched comparison are under `vmap`." +} \ No newline at end of file diff --git a/results/breakdown/imaging/fixed_light_trace_delaunay_jitvmap16_captured_pix1_libcertified_fboff_b16_hpc_a100_fp64_fixed_light_trace.png b/results/breakdown/imaging/fixed_light_trace_delaunay_jitvmap16_captured_pix1_libcertified_fboff_b16_hpc_a100_fp64_fixed_light_trace.png new file mode 100644 index 000000000..688cc6f22 Binary files /dev/null and b/results/breakdown/imaging/fixed_light_trace_delaunay_jitvmap16_captured_pix1_libcertified_fboff_b16_hpc_a100_fp64_fixed_light_trace.png differ diff --git a/results/breakdown/imaging/fixed_light_trace_delaunay_jitvmap16_captured_pix1_libcertified_fbon_b16_hpc_a100_fp64_fixed_light_trace.json b/results/breakdown/imaging/fixed_light_trace_delaunay_jitvmap16_captured_pix1_libcertified_fbon_b16_hpc_a100_fp64_fixed_light_trace.json new file mode 100644 index 000000000..4ba7d77d6 --- /dev/null +++ b/results/breakdown/imaging/fixed_light_trace_delaunay_jitvmap16_captured_pix1_libcertified_fbon_b16_hpc_a100_fp64_fixed_light_trace.json @@ -0,0 +1,5799 @@ +{ + "device": { + "backend": "gpu", + "device": "cuda:0", + "hostname": "euclid-ral-gpu-2", + "xla_flags": "--xla_disable_hlo_passes=constant_folding --xla_gpu_autotune_level=0 --xla_gpu_enable_triton_gemm=false", + "omp_num_threads": null, + "cpu_count": 124, + "jax_compilation_cache_dir": "/mnt/ral/jnightin/autolens_profiling_wt/certified-solver-phase-c1-lane-rate/output/jax_cache/fixed_light_lanerate_delaunay_pix1_time_16_certified_on_350768_9", + "autotune_cache_entries_at_start": 0, + "cache_fresh": true, + "nvidia_smi": "NVIDIA A100 80GB PCIe, 35457 MiB, 81920 MiB" + }, + "machine": { + "cpu_model": "AMD EPYC 7702 64-Core Processor", + "cpu_count_os": 124, + "nproc": 4, + "nproc_all": 124, + "nproc_note": "GNU nproc honours OMP_NUM_THREADS, so `nproc` can print 1 on a multi-core host; `nproc_all` is the core count.", + "ram_total": "928298204 kB", + "kernel": "5.14.0-687.50.1.el9_8.x86_64", + "platform": "Linux-5.14.0-687.50.1.el9_8.x86_64-x86_64-with-glibc2.34", + "python": "3.12.4", + "jax_thread_env": { + "NPROC": null + }, + "blas_thread_env": { + "OMP_NUM_THREADS": null, + "OPENBLAS_NUM_THREADS": null, + "MKL_NUM_THREADS": null, + "VECLIB_MAXIMUM_THREADS": null, + "NUMEXPR_NUM_THREADS": null + }, + "thread_env_note": "NPROC sizes XLA's CPU intra-op pool (the JAX rows); the BLAS knobs pin OpenBLAS/MKL/OpenMP (the numpy/scipy rows) and do not touch JAX. Two disjoint families; both are recorded on every CPU timing.", + "gpu": "NVIDIA A100 80GB PCIe, 81920 MiB, 610.57.04" + }, + "precision": "fp64", + "configuration": { + "pixel_scale_arcsec": 0.05, + "mask_radius_arcsec": 3.5, + "image_pixels_masked": 15361, + "over_sampled_pixels": 62752, + "mesh": "delaunay", + "mesh_shape": null, + "source_pixels": 1500, + "source_pixels_requested": null, + "dataset": "hst", + "dataset_sha256": { + "data.fits": "e4e833a28e9c6f6fb023cd85c0d3dde74068720256bc77a240633500e5b04fac", + "noise_map.fits": "315c6266a0acd3ac9c8da82fcd2b45a08697362481fd7a35072bab1658530ba3", + "psf.fits": "8389ba0e8bf4a09b4a561cfc246181a2fb944ed396754cd0ff76fdd22910d303" + }, + "cell_source_sha256": "06a162fcdae6b329384ec33322f443df07215d86e56f0505ac15b3d3473eb432", + "inversion_path": "dense", + "pass_budget": 7, + "pass_budget_basis": "phase 3 (autolens_profiling#255): the smallest ZERO-fallback budget per mesh, the budget a production run fixes. NOT phase 0's certifying budget (2 for Delaunay), which falls back on 67.5 % of a graded draw set and is not a production cost.", + "border_relocator_mode": "cell", + "border_relocator": true, + "border_relocator_note": "'cell' is use_border_relocator=True, which every profiling cell in this family forces; 'library' passes None and takes the shipped config default, which is what production runs. The resolved boolean is what this leg actually ran.", + "routes_selected": [ + "b", + "d" + ], + "trace_calls": 10, + "command_buffers_traced": "off", + "use_mixed_precision": false, + "tau_rel": 1e-09, + "regularization": { + "scheme": "adapt_split", + "inner_coefficient": 0.1, + "outer_coefficient": 10.0, + "signal_scale": 0.1 + }, + "thread_env": { + "n_threads": null, + "vars": [ + "OPENBLAS_NUM_THREADS", + "MKL_NUM_THREADS", + "OMP_NUM_THREADS", + "VECLIB_MAXIMUM_THREADS", + "NUMEXPR_NUM_THREADS" + ], + "set_to": null, + "preexisting": {}, + "overridden": {}, + "note": "Not pinned (legacy variant): recorded as found." + }, + "over_sample_size_lp_rule": { + "sub_size_list": [ + 4, + 2, + 2 + ], + "radial_list": [ + 0.3, + 0.6 + ], + "centre": [ + 0.0, + 0.0 + ] + }, + "vmap_batch": 16, + "lanes": "captured", + "arms": [ + "vmap", + "scalar" + ], + "fallback": "on", + "draw_seed": 0, + "vmap_composition": "jax.jit(jax.vmap(fn))", + "lane_rtol": 1e-09, + "vmap_flags_note": "Strict ProfileCLI.parse_cell_args rejects unknown flags. These keys record the exact batching program and prevent historical vmap(jit) artifacts from being mistaken for current jit(vmap) measurements.", + "solver_source": "library", + "solver": "certified", + "certified_fallback": "pdip", + "certified_pass_budget": 16, + "captured_pass": "time", + "batches": "/mnt/ral/jnightin/autolens_profiling_wt/certified-solver-phase-c1-lane-rate/results/breakdown/imaging/nautilus_batches_delaunay_pix1.npz" + }, + "solver_injection": { + "patched": null, + "part_v": "none \u2014 library mode selects the solver through al.Settings", + "part_b_route_d": { + "patched": "autoarray.inversion.inversion.inversion_util.reconstruction_positive_only_from", + "pass_budget": 7, + "fallback": true + }, + "note": "Library mode (phase B, #300): PART V's arms and references run the library's own positive-only solve, selected by Settings(positive_only_solver, certified_fallback, certified_pass_budget); nothing is injected. PART B's single-call route d (the fiducial d == b pin) still uses the phase-1 harness injection at the phase-3 budget and is not a phase-B row. The untimed certification report observes the library solve (library_solver_observed) without changing it." + }, + "routes": { + "b_s3_pdip": { + "label": "S3 PDIP (source-only)", + "status": "ok", + "solver": "library", + "ms": 50.7018980999419, + "log_likelihood": 29155.00017618628 + }, + "d_s3_certified_fallback": { + "label": "S3 certified active set, budget 7, PDIP fallback", + "status": "ok", + "solver": "harness-injected certified active set", + "pass_budget": 7, + "fallback": true, + "injected_solver_calls_jax": 1, + "injected_solver_calls_numpy": 0, + "ms": 31.61700480013678, + "log_likelihood": 29155.000173222637 + } + }, + "equivalence_pins": [ + { + "pin": "route d (certified, fallback) == route b (library PDIP)", + "route": "d_s3_certified_fallback", + "reference": "b_s3_pdip", + "expectation": "the certified active set returns the library's own positive solution", + "rtol": 1e-09, + "got": 29155.000173222637, + "reference_value": 29155.00017618628, + "rel_diff": 1.0165127894013487e-10, + "status": "PASS" + } + ], + "equivalence_rtol": 1e-09, + "reference": { + "log_evidence_s0_library": 29155.00017433923, + "log_evidence_s3_library": 29155.000174339304, + "s3": { + "n_params": 1500, + "n_mapper": 1500, + "n_funcs": 0, + "edge_zeroed_pixels": 0, + "subtracted_light_flux": 5105.448603818575 + } + }, + "command_buffers": { + "wall_on_ms": 624.67713799997, + "wall_off_ms": 629.2699801000708, + "command_buffer_delta_ms": 4.592842100100825, + "command_buffer_delta_pct": 0.7352345428881447, + "traced": "off", + "compiler_option": "xla_gpu_enable_command_buffer", + "probe": { + "note": "Not taken in --vmap-batch mode: the CUPTI-inside-a-CUDA-graph probe is a phase-1 diagnostic about the JOIN, and this mode already compiles and times both the command-buffers ON and OFF executable of every arm." + }, + "note": "ONE lowering, TWO compilations, one process. wall_on_ms is the PRODUCTION program (CUDA graphs as XLA ships them) and is the number comparable to phase 5's row; wall_off_ms is the graph-less program the stage rows attribute. The delta is the launch overhead the graphs remove \u2014 it lands in device_idle and host_outside_span, not in any stage. Reconciliation is computed against wall_off_ms." + }, + "trace": { + "parser": "ProfileData.from_file(xplane) + as_text() + stack_frame_index(proto field 17)", + "stage_audit": { + "mixed_fusion": [ + { + "instruction": "loop_divide_gather_fusion", + "ms": 1.01618255, + "opcode": "fusion", + "shape": "(f64[15361,1,1,1500]{3,2,1,0}, f64[15361,1,1,1500]{3,2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_broadcast_fusion.4", + "ms": 0.22685640624999995, + "opcode": "fusion", + "shape": "f64[1500,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_reduce_fusion.13", + "ms": 0.12212294375, + "opcode": "fusion", + "shape": "f64[92,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123 (data_vector_via_blurred_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:67 (InversionImagingMapping.data_vector)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:699 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_reduce_fusion.17", + "ms": 0.11467717499999995, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163 (mapped_reconstructed_data_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:120 (InversionImagingMapping._mapped_reconstructed_data_dict_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:196 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "loop_broadcast_fusion.2", + "ms": 0.11074701249999995, + "opcode": "fusion", + "shape": "f64[15361,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:342", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:342 (mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:283 (Mapper.mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:91 (AbstractInversionImaging._mapping_matrix_for_convolution_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:137 (AbstractInversionImaging.operated_mapping_matrix_list)" + ] + }, + { + "instruction": "input_multiply_transpose_fusion", + "ms": 0.1094647, + "opcode": "fusion", + "shape": "(f64[1500,1500]{1,0}, f64[1500,1500]{1,0}, f64[1500,1500]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:237 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:274 (_certified_positive_only_from)" + ] + } + ], + "border_relocator": [ + { + "instruction": "eigh.45", + "ms": 0.0747120687499999, + "opcode": "custom-call", + "shape": "(f64[2,2]{0,1}, f64[2]{0}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "custom-call.2", + "ms": 0.007940712500000002, + "opcode": "custom-call", + "shape": "(f64[2,2]{1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_reduce_fusion.18", + "ms": 0.005587918750000001, + "opcode": "fusion", + "shape": "(f64[], f64[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:269", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:269 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_add_fusion.7", + "ms": 0.0035423562500000007, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:423 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:208 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_add_fusion.9", + "ms": 0.003390181250000005, + "opcode": "fusion", + "shape": "f64[1500]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:458 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_concatenate_fusion.12", + "ms": 0.002420368749999997, + "opcode": "fusion", + "shape": "f64[392,2]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:238", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:238 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + } + ], + "mesh_construction": [ + { + "instruction": "input_concatenate_fusion.7", + "ms": 0.0020611750000000028, + "opcode": "fusion", + "shape": "f64[1500,2]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:820", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:820 (InterpolatorDelaunay.mesh_grid_xy)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:847 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + } + ], + "mesh_qhull_callback": [ + { + "instruction": "pure_callback.4", + "ms": 0.010633525000000033, + "opcode": "custom-call", + "shape": "(s32[3000,3]{1,0}, s32[3000,3]{1,0}, s32[1500]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:161", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:161 (_jax_delaunay_tables)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:405 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + } + ], + "other": [ + { + "instruction": "copy.106", + "ms": 0.04206421875000185, + "opcode": "copy", + "shape": "f64[1,1024,2]{2,1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.70", + "ms": 0.016997462500000067, + "opcode": "copy", + "shape": "s32[21361]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.75", + "ms": 0.0019839874999999997, + "opcode": "copy", + "shape": "s64[1500]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.105", + "ms": 0.001800175, + "opcode": "copy", + "shape": "s32[]", + "source": "", + "stack": [] + }, + { + "instruction": "copy.104", + "ms": 0.0017587874999999999, + "opcode": "copy", + "shape": "s64[]", + "source": "", + "stack": [] + }, + { + "instruction": "copy.61", + "ms": 0.0016451812499999976, + "opcode": "copy", + "shape": "s32[]", + "source": "", + "stack": [] + } + ], + "mesh_seed_argmin": [ + { + "instruction": "input_reduce_fusion", + "ms": 0.14923728124999885, + "opcode": "fusion", + "shape": "(f64[1024]{0}, s64[1024]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:191", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:191 (_nearest_vertex_seed_from..argmin_chunk)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)" + ] + }, + { + "instruction": "loop_dynamic_update_slice_fusion", + "ms": 0.04132142499999959, + "opcode": "fusion", + "shape": "s32[21,1024]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_add_fusion", + "ms": 0.0319596874999985, + "opcode": "fusion", + "shape": "s64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_broadcast_fusion", + "ms": 0.001969968750000002, + "opcode": "fusion", + "shape": "s32[21,1024]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "pdip_solve": [ + { + "instruction": "cholesky.60", + "ms": 5.895535906249981, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "cholesky.80", + "ms": 3.7716603000000033, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:106", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:106 (factorize_kkt)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:212 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve.1", + "ms": 1.0602555687500193, + "opcode": "custom-call", + "shape": "(f64[1500,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "triangular-solve", + "ms": 0.9150642125000006, + "opcode": "custom-call", + "shape": "(f64[1500,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "cholesky.110", + "ms": 0.8895390812499994, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:297 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:274 (_certified_positive_only_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:496 (reconstruction_positive_only_from)" + ] + }, + { + "instruction": "cholesky.100", + "ms": 0.8622849687500019, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:237 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:274 (_certified_positive_only_from)" + ] + } + ], + "regularization_H": [ + { + "instruction": "input_scatter_fusion.10", + "ms": 0.0020717625, + "opcode": "fusion", + "shape": "f64[1500,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:615", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:615 (pixel_splitted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:137 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_concatenate_fusion.9", + "ms": 0.0018711750000000018, + "opcode": "fusion", + "shape": "pred[3]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:91", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:91 (split_points_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:410 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + }, + { + "instruction": "input_concatenate_fusion.8", + "ms": 0.001868987500000002, + "opcode": "fusion", + "shape": "pred[3]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:93", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:93 (split_points_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:410 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + }, + { + "instruction": "input_concatenate_fusion.10", + "ms": 0.001855962500000001, + "opcode": "fusion", + "shape": "pred[3]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:90", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:90 (split_points_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:410 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + }, + { + "instruction": "input_concatenate_fusion", + "ms": 0.0017665874999999987, + "opcode": "fusion", + "shape": "s32[1500,2]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:615", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:615 (pixel_splitted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:137 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_concatenate_fusion.11", + "ms": 0.0015551812499999987, + "opcode": "fusion", + "shape": "pred[3]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:88", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:88 (split_points_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:410 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + } + ], + "mesh_locate_walk": [ + { + "instruction": "loop_reduce_fusion", + "ms": 0.02537100000000025, + "opcode": "fusion", + "shape": "(f64[21361]{0}, s64[21361]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:264", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:264 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:264 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)" + ] + }, + { + "instruction": "input_reduce_fusion.1", + "ms": 0.024173693749999777, + "opcode": "fusion", + "shape": "pred[196]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:288", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:288 (_walk_from_seed..cond)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)" + ] + }, + { + "instruction": "loop_or_select_fusion", + "ms": 0.02259331249999992, + "opcode": "fusion", + "shape": "(s32[21361]{0}, pred[21361]{0}, pred[21361]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:270", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:270 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)" + ] + }, + { + "instruction": "loop_select_fusion", + "ms": 0.02015188124999996, + "opcode": "fusion", + "shape": "s32[21361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:242", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:242 (_walk_from_seed..weights_of)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:262 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)" + ] + }, + { + "instruction": "input_reduce_fusion.2", + "ms": 0.016261350000000098, + "opcode": "fusion", + "shape": "pred[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:288", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:288 (_walk_from_seed..cond)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)" + ] + }, + { + "instruction": "while.34", + "ms": 0.014478906249999883, + "opcode": "while", + "shape": "(s32[], s32[21361]{0}, pred[21361]{0}, pred[21361]{0}, s32[3000,3]{1,0}, /*index=5*/f64[1500,2]{1,0}, f64[21361,2]{1,0}, s32[3000,3]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "psf_convolution_mapping_matrix": [ + { + "instruction": "input_scatter_fusion", + "ms": 1.9813170499999992, + "opcode": "fusion", + "shape": "f64[1500,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.19.0", + "ms": 1.7578670187499987, + "opcode": "fft", + "shape": "f64[1500,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.15.0", + "ms": 1.3664876625000009, + "opcode": "fft", + "shape": "c128[1500,180,91]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.17.0", + "ms": 0.9794295187499994, + "opcode": "fft", + "shape": "c128[1500,91,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_transpose_fusion.4", + "ms": 0.5138982312500002, + "opcode": "fusion", + "shape": "c128[1500,91,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "wrapped_transpose", + "ms": 0.49981874375000007, + "opcode": "fusion", + "shape": "c128[1500,180,91]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + } + ], + "inversion_other": [ + { + "instruction": "cholesky.120", + "ms": 0.893844968750001, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1078 (AbstractInversion.log_det_curvature_reg_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:347 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "cholesky.130", + "ms": 0.8885384437500004, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1157 (AbstractInversion.log_det_regularization_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:348 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "loop_reduce_window_fusion", + "ms": 0.002868962499999998, + "opcode": "fusion", + "shape": "s64[6,16]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "loop_reduce_window_fusion.1", + "ms": 0.0027941812499999996, + "opcode": "fusion", + "shape": "s64[94,16]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "loop_broadcast_convert_fusion", + "ms": 0.002191568749999996, + "opcode": "fusion", + "shape": "(s32[1500]{0}, s64[1500]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527 (AbstractInversion.zeroed_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:567 (AbstractInversion.solve_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:684 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_scatter_fusion.5", + "ms": 0.0019479874999999986, + "opcode": "fusion", + "shape": "s64[1500]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527 (AbstractInversion.zeroed_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:567 (AbstractInversion.solve_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:684 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "mapping_matrix": [ + { + "instruction": "input_reduce_fusion.31", + "ms": 0.00288934374999999, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:120 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + } + ], + "curvature_matrix_F": [ + { + "instruction": "cublas-lt-matmul.2", + "ms": 4.248923318749999, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "chi_squared_evidence": [ + { + "instruction": "loop_multiply_fusion.2", + "ms": 0.002985412499999996, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:300", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:300 (AbstractNDArray.__pow__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:60 (unwrap_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:35 (to_new_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:78 (chi_squared_map_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:78 (AbstractFit.chi_squared_map)" + ] + } + ] + }, + "stage_audit_note": "The HLO instructions that contributed most of each stage's milliseconds, with their full source stack. A stage row is only as good as the rules that built it; this is how a reader checks a row against the HLO instead of trusting it.", + "untraced_wall_ms": 39.41504491249361, + "reconciliation_vs_untraced_pct": -23.025230819582127, + "wall_basis": "wall_ms is the TRACED run's wall, the run these kernel durations came from. untraced_wall_ms is the same executable without the profiler; the difference is the profiler's overhead and belongs in neither the stages nor the idle row.", + "calls": 160, + "call_split": "per-call (first-instruction recurrence)", + "call_blocks": 160, + "events": 98790, + "streams": [ + "Stream #14(Memset,MemcpyD2H,Compute,MemcpyH2D,MemcpyD2D)" + ], + "per_stage_ms": { + "border_relocator": { + "median_ms": 0.101054, + "min_ms": 0.10041200000000002, + "max_ms": 0.10230200000000002 + }, + "chi_squared_evidence": { + "median_ms": 0.002944, + "min_ms": 0.002848, + "max_ms": 0.00336 + }, + "curvature_matrix_F": { + "median_ms": 4.2460915, + "min_ms": 4.231661, + "max_ms": 4.314042 + }, + "inversion_other": { + "median_ms": 1.794964, + "min_ms": 1.778482, + "max_ms": 1.80594 + }, + "mapping_matrix": { + "median_ms": 0.00288, + "min_ms": 0.002879, + "max_ms": 0.002912 + }, + "memset": { + "median_ms": 0.021343999999999995, + "min_ms": 0.009951, + "max_ms": 0.10031899999999999 + }, + "mesh_construction": { + "median_ms": 0.002048, + "min_ms": 0.002047, + "max_ms": 0.00208 + }, + "mesh_locate_walk": { + "median_ms": 0.14809450000000002, + "min_ms": 0.13039800000000001, + "max_ms": 0.18339200000000003 + }, + "mesh_qhull_callback": { + "median_ms": 0.010592, + "min_ms": 0.010495, + "max_ms": 0.011072000000000002 + }, + "mesh_seed_argmin": { + "median_ms": 0.22449350000000015, + "min_ms": 0.22418500000000013, + "max_ms": 0.2248270000000002 + }, + "mixed_fusion": { + "median_ms": 1.9843225000000002, + "min_ms": 1.9764949999999994, + "max_ms": 1.9972369999999995 + }, + "other": { + "median_ms": 0.06620649999999999, + "min_ms": 0.063579, + "max_ms": 0.07391900000000001 + }, + "pdip_solve": { + "median_ms": 7.5871984999999995, + "min_ms": 2.417604, + "max_ms": 50.35396399999999 + }, + "psf_convolution_mapping_matrix": { + "median_ms": 7.0983845, + "min_ms": 7.082967999999999, + "max_ms": 7.112631 + }, + "regularization_H": { + "median_ms": 0.010976, + "min_ms": 0.010879999999999999, + "max_ms": 0.011231999999999999 + } + }, + "stage_order": [ + "border_relocator", + "mesh_qhull_callback", + "mesh_seed_argmin", + "mesh_locate_walk", + "mesh_construction", + "mapping_matrix", + "psf_convolution_mapping_matrix", + "curvature_matrix_F", + "regularization_H", + "pdip_solve", + "chi_squared_evidence", + "inversion_other", + "mixed_fusion", + "other", + "memset" + ], + "mixed_fusion": { + "ms": 1.9843225000000002, + "constituent_stage_sets": { + "curvature_matrix_F + psf_convolution_mapping_matrix": 1.01618255, + "pdip_solve + psf_convolution_mapping_matrix": 0.22685640624999995, + "data_vector_D + pdip_solve": 0.12582651250000004, + "mapped_reconstruction + pdip_solve": 0.11467717499999995, + "mapping_matrix + pdip_solve": 0.11311618749999988, + "curvature_reg_reduce_gather + inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": 0.1094647, + "pdip_solve + regularization_H": 0.04574368125000003, + "inversion_other + pdip_solve + regularization_H": 0.024028306250000003, + "inversion_other + pdip_solve": 0.023009943750000022, + "inversion_other + mapping_matrix + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin + pdip_solve": 0.021254193749999994, + "inversion_other + mesh_construction + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin + pdip_solve + regularization_H": 0.018688974999999986, + "inversion_other + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + pdip_solve + regularization_H": 0.014765443749999992, + "pdip_solve + ray_trace_data_grid": 0.013713206249999926, + "border_relocator + pdip_solve": 0.013252043749999977, + "inversion_other + mapping_matrix + mesh_construction + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin": 0.011749874999999996, + "grids_and_structures + mass_profile_deflections + pdip_solve": 0.010185662500000007, + "grids_and_structures + mass_profile_deflections + pdip_solve + ray_trace_data_grid": 0.009021918750000005, + "chi_squared_evidence + pdip_solve": 0.007643331249999998, + "inversion_other + mesh_construction + mesh_seed_argmin + pdip_solve + regularization_H": 0.007074362499999999, + "inversion_other + mesh_dual_areas + mesh_locate_walk": 0.0067975187499999664, + "inversion_other + mesh_construction + pdip_solve + regularization_H": 0.006546906249999998, + "grids_and_structures + mass_profile_deflections + ray_trace_data_grid": 0.005509749999999998, + "inversion_other + pdip_solve + ray_trace_data_grid": 0.00529954999999999, + "inversion_other + regularization_H": 0.005251937499999984, + "inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": 0.0048135625, + "inversion_other + mapped_reconstruction": 0.0037877499999999973, + "mapping_matrix + pdip_solve + regularization_H": 0.0034847687500000027, + "inversion_other + mesh_construction + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin": 0.0031391749999999993, + "inversion_other + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin": 0.002967537499999995, + "inversion_other + mesh_construction + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin + regularization_H": 0.0027021937500000016, + "inversion_other + mesh_dual_areas + mesh_locate_walk + pdip_solve": 0.0026039500000000037, + "inversion_other + mesh_locate_walk + mesh_seed_argmin": 0.0025089750000000014, + "inversion_other + mesh_interpolation_weights": 0.0021447562500000027, + "chi_squared_evidence + inversion_other": 0.0018979937500000006 + }, + "example_kernels": { + "curvature_matrix_F + psf_convolution_mapping_matrix": [ + "loop_divide_gather_fusion" + ], + "pdip_solve + psf_convolution_mapping_matrix": [ + "loop_broadcast_fusion.4" + ], + "data_vector_D + pdip_solve": [ + "input_reduce_fusion.13", + "input_reduce_fusion.29" + ], + "mapped_reconstruction + pdip_solve": [ + "input_reduce_fusion.17" + ], + "mapping_matrix + pdip_solve": [ + "loop_broadcast_fusion.2", + "loop_divide_fusion" + ], + "curvature_reg_reduce_gather + inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": [ + "input_multiply_transpose_fusion" + ], + "pdip_solve + regularization_H": [ + "loop_select_fusion.5", + "input_transpose_fusion.5" + ], + "inversion_other + pdip_solve + regularization_H": [ + "input_transpose_fusion.6" + ], + "inversion_other + pdip_solve": [ + "input_reduce_fusion.15", + "loop_log_fusion", + "input_reduce_fusion.16", + "input_reduce_fusion.20" + ], + "inversion_other + mapping_matrix + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin + pdip_solve": [ + "input_scatter_fusion.6", + "input_scatter_fusion.3" + ] + }, + "prorated_estimate_ms": { + "psf_convolution_mapping_matrix": 0.621519478125, + "curvature_matrix_F": 0.508091275, + "pdip_solve": 0.39309393820684513, + "mapped_reconstruction": 0.08232879312499998, + "inversion_other": 0.06904186226934524, + "data_vector_D": 0.06291325625000002, + "mapping_matrix": 0.06233477005208327, + "regularization_H": 0.04330155992559524, + "reconstruction_scatter": 0.023096330625, + "curvature_reg_reduce_gather": 0.02189294, + "mesh_construction": 0.014370236852678566, + "ray_trace_data_grid": 0.01271518281249996, + "mesh_locate_walk": 0.012610882581845225, + "mesh_interpolation_weights": 0.012391015915178568, + "mesh_seed_argmin": 0.011108927998511903, + "mesh_dual_areas": 0.008529098177083319, + "grids_and_structures": 0.007487283854166669, + "mass_profile_deflections": 0.007487283854166669, + "border_relocator": 0.006626021874999988, + "chi_squared_evidence": 0.004770662499999999 + }, + "prorated_note": "ESTIMATE ONLY \u2014 a mixed fusion's time split equally across the stages its constituents span. Never summed into the measured table, never reconciled." + }, + "other_sources_ms": { + "copy.106": 0.04206421875000185, + "copy.70": 0.016997462500000067, + "copy.75": 0.0019839874999999997, + "copy.105": 0.001800175, + "copy.104": 0.0017587874999999999, + "copy.61": 0.0016451812499999976, + "copy.103": 0.0004564000000000001, + "copy.40": 0.00038679375000000017 + }, + "device_span_ms": 40.55124409375, + "device_busy_ms": 33.51319775, + "device_idle_ms": 7.038046343749997, + "largest_idle_gaps": [ + { + "gap_ms": 5.471902, + "after": "pure_callback.4", + "before": "pure_callback.4" + }, + { + "gap_ms": 0.034079, + "after": "pure_callback.4", + "before": "copy.105" + }, + { + "gap_ms": 0.034079, + "after": "copy.70", + "before": "input_reduce_fusion.1" + }, + { + "gap_ms": 0.031167, + "after": "loop_add_fusion", + "before": "copy.106" + }, + { + "gap_ms": 0.029344, + "after": "loop_add_fusion.8", + "before": "input_reduce_fusion.14" + }, + { + "gap_ms": 0.025887, + "after": "input_concatenate_fusion.7", + "before": "pure_callback.4" + }, + { + "gap_ms": 0.020896, + "after": "while.40", + "before": "input_reduce_select_fusion" + }, + { + "gap_ms": 0.020319, + "after": "eigh.45", + "before": "eigh.45" + } + ], + "kernel_ms": 23.3015935, + "sum_ms": 30.339639843749996, + "wall_ms": 40.55783274375244, + "host_outside_span_ms": 0.006588650002441909, + "reconciliation_pct": -25.19412949050258, + "unjoined_ms": 0.0, + "unjoined_pct": 0.0, + "other_ms": 0.06620649999999999, + "other_pct": 0.16323973822343474, + "note": "Stage rows attribute the command-buffers-OFF program (see the module docstring): kernel times are the same, the launch overhead the CUDA graphs remove is not. sum_ms = kernel rows + device_idle_ms; the residual against wall_ms is host_outside_span_ms (dispatch before the first kernel, teardown after the last).", + "per_stage_ms_per_lane": { + "border_relocator": 0.101054, + "chi_squared_evidence": 0.002944, + "curvature_matrix_F": 4.2460915, + "inversion_other": 1.794964, + "mapping_matrix": 0.00288, + "memset": 0.021343999999999995, + "mesh_construction": 0.002048, + "mesh_locate_walk": 0.14809450000000002, + "mesh_qhull_callback": 0.010592, + "mesh_seed_argmin": 0.22449350000000015, + "mixed_fusion": 1.9843225000000002, + "other": 0.06620649999999999, + "pdip_solve": 7.5871984999999995, + "psf_convolution_mapping_matrix": 7.0983845, + "regularization_H": 0.010976 + }, + "per_lane_divisor": 1, + "host_callback": { + "pure_callback_span_ms": 79.86106850000004, + "qhull_ms": 74.37435889999995, + "callback_body_ms_note": "the OUTERMOST matching body event, not a sum: under the probe the body appears twice (the wrapper and the timed re-implementation it calls) and summing them would count the same work twice", + "events_by_name": { + "pure_callback.4": { + "count": 160, + "ms": 79.86106850000004 + }, + "$callback.py:815 _wrapped_callback": { + "count": 160, + "ms": 78.47551830000002 + }, + "$callback.py:224 _callback": { + "count": 160, + "ms": 78.10033139999999 + }, + "$callback.py:74 pure_callback_impl": { + "count": 160, + "ms": 77.9551307 + }, + "$callback.py:69 __call__": { + "count": 160, + "ms": 74.62516729999999 + }, + "$delaunay.py:162 ": { + "count": 160, + "ms": 74.51630229999998 + }, + "$host_callback_probe.py:225 wrapped": { + "count": 160, + "ms": 74.37435889999995 + }, + "$host_callback_probe.py:160 _timed_tri_only": { + "count": 160, + "ms": 74.2428192 + }, + "ThenExecuteCallback:GetEventForComputeStreamSyncPoint": { + "count": 160, + "ms": 0.30488480000000007 + }, + "$callback.py:822 ": { + "count": 640, + "ms": 0.22714369999999948 + }, + "$__init__.py:132 _xla_gc_callback": { + "count": 2, + "ms": 0.00035299999999999996 + } + }, + "note": "HOST milliseconds per traced BATCH (the whole invocation), aggregated by name because the events nest. Not a row of the device table: the device pays for them as the idle gaps largest_idle_gaps names." + }, + "host_callback_ms": 79.86106850000004 + }, + "hlo_census": { + "status": "excluded", + "reason": "The legacy census anchors PyAutoArray source line numbers that moved after the phase-1 run. No batched attribution is published from unsupported anchors; the device-event table and wall reconciliation remain valid." + }, + "stage_map_provenance": [ + { + "label": "log_det_curvature_reg", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 850, + 882 + ], + "requires": { + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 884, + 896 + ] + }, + "function": null + }, + { + "label": "log_det_regularization", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 850, + 882 + ], + "requires": { + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 897, + 943 + ] + }, + "function": null + }, + { + "label": "curvature_reg_add", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 359, + 372 + ], + "requires": null, + "function": null + }, + { + "label": "curvature_reg_reduce_gather", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 374, + 398 + ], + "requires": null, + "function": null + }, + { + "label": "edge_subset_gather", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 606, + 614 + ], + "requires": null, + "function": null + }, + { + "label": "regularization_term", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 786, + 849 + ], + "requires": null, + "function": null + }, + { + "label": "mapped_reconstruction", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 722, + 785 + ], + "requires": null, + "function": null + }, + { + "label": "reconstruction_scatter", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 583, + 605 + ], + "requires": null, + "function": null + }, + { + "label": "reconstruction_scatter", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 615, + 721 + ], + "requires": null, + "function": null + }, + { + "label": "certified_active_set_solve", + "path": "likelihood_breakdown/active_set_steps.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "certified_active_set_solve", + "path": "likelihood_breakdown/library_solver_injection.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "pdip_solve", + "path": "PyAutoArray/autoarray/util/jax_nnls.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "pdip_solve", + "path": "PyAutoArray/autoarray/inversion/inversion/inversion_util.py", + "lines": [ + 256, + 488 + ], + "requires": null, + "function": null + }, + { + "label": "mapped_reconstruction", + "path": "PyAutoArray/autoarray/inversion/inversion/inversion_util.py", + "lines": [ + 156, + 200 + ], + "requires": null, + "function": null + }, + { + "label": "curvature_matrix_F", + "path": "PyAutoArray/autoarray/inversion/inversion/inversion_util.py", + "lines": [ + 12, + 155 + ], + "requires": null, + "function": null + }, + { + "label": "reconstruction_scatter", + "path": "PyAutoArray/autoarray/inversion/inversion/inversion_util.py", + "lines": [ + 201, + 255 + ], + "requires": null, + "function": null + }, + { + "label": "data_vector_D", + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py", + "lines": [ + 54, + 73 + ], + "requires": null, + "function": null + }, + { + "label": "curvature_matrix_F", + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py", + "lines": [ + 74, + 110 + ], + "requires": null, + "function": null + }, + { + "label": "data_vector_D", + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py", + "lines": null, + "requires": null, + "function": "data_vector_via_blurred_mapping_matrix_from" + }, + { + "label": "curvature_matrix_F", + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "likelihood_breakdown/psf_cube_injection.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": [ + 1086, + 1300 + ], + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": [ + 632, + 642 + ], + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": [ + 670, + 691 + ], + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": null, + "requires": { + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": [ + 1086, + 1300 + ] + }, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": null, + "requires": { + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py", + "lines": [ + 119, + 150 + ] + }, + "function": null + }, + { + "label": "psf_convolution_image", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py", + "lines": [ + 119, + 150 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_qhull_callback", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 139, + 172 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_seed_argmin", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 173, + 207 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_locate_walk", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 208, + 372 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_dual_areas", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 373, + 396 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_dual_areas", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 437, + 494 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_dual_areas", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 605, + 615 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_interpolation_weights", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 616, + 695 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_interpolation_weights", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 896, + 1000 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_construction", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "border_relocator", + "path": "PyAutoArray/autoarray/inversion/mesh/border_relocator.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "mesh_construction", + "path": "PyAutoArray/autoarray/inversion/mesh/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "mapping_matrix", + "path": "PyAutoArray/autoarray/inversion/mappers/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "mapping_matrix", + "path": "PyAutoArray/autoarray/inversion/mappings/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "mapping_matrix", + "path": "PyAutoArray/autoarray/inversion/linear_obj/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "regularization_H", + "path": "PyAutoArray/autoarray/inversion/regularization/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "chi_squared_evidence", + "path": "PyAutoArray/autoarray/fit/fit_util.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "chi_squared_evidence", + "path": "PyAutoArray/autoarray/fit/fit_dataset.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "ray_trace_mesh_grid", + "path": "PyAutoLens/autolens/lens/to_inversion.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "ray_trace_mesh_grid", + "path": "PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "mass_profile_deflections", + "path": "PyAutoGalaxy/autogalaxy/profiles/mass/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "light_profile_image", + "path": "PyAutoGalaxy/autogalaxy/profiles/light/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "light_profile_image", + "path": "PyAutoGalaxy/autogalaxy/operate/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "ray_trace_data_grid", + "path": "PyAutoLens/autolens/lens/tracer.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "ray_trace_data_grid", + "path": "PyAutoLens/autolens/lens/tracer_util.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "grids_and_structures", + "path": "PyAutoArray/autoarray/structures/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "grids_and_structures", + "path": "PyAutoArray/autoarray/operators/over_sampling/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "grids_and_structures", + "path": "PyAutoArray/autoarray/geometry/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "inversion_other", + "path": "PyAutoArray/autoarray/inversion/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "fit_imaging_other", + "path": "PyAutoLens/autolens/imaging/fit_imaging.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "fit_imaging_other", + "path": "PyAutoGalaxy/autogalaxy/imaging/fit_imaging.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "fit_imaging_other", + "path": "PyAutoArray/autoarray/fit/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "analysis_other", + "path": "PyAutoLens/autolens/analysis/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "analysis_other", + "path": "PyAutoGalaxy/autogalaxy/analysis/", + "lines": null, + "requires": null, + "function": null + } + ], + "trace_timing": { + "traced_wall_ms": 40.55783274375244, + "untraced_wall_ms": 39.41504491249361, + "profiler_overhead_ms": 1.142787831258829, + "profiler_overhead_pct": 2.8993696031451 + }, + "jit_phases": { + "b_s3_pdip_library_likelihood_jit": { + "lower_s": 1.6875748159982322, + "compile_s": 4.575258997003402, + "first_call_s": 1.8921440459998848, + "steady_per_call_s": 0.0507018980999419 + }, + "d_s3_certified_fallback_library_likelihood_jit": { + "lower_s": 0.47104399199815816, + "compile_s": 4.421622325997305, + "first_call_s": 0.04654441599996062, + "steady_per_call_s": 0.03161700480013678 + } + }, + "peak_bytes": { + "after_setup": 85108992, + "after_routes": 1181653248, + "after_all": 18893192192, + "note": "jax.devices()[0].memory_stats()['peak_bytes_in_use']; None on a backend that does not report it (CPU). Process-wide high-water marks." + }, + "note": "Every stage row is a MEASURED sum of GPU kernel durations joined to library source through the optimized HLO of ONE program \u2014 not arithmetic across compilations. The rows attribute the command-buffers-OFF program: kernel time is the same as production, the launch overhead the CUDA graphs remove is not, and command_buffers.* carries both walls and their delta. sum_ms = kernel rows + measured device_idle_ms; the residual against the wall is host_outside_span_ms and is reported, not absorbed. mixed_fusion.prorated_estimate_ms is an ESTIMATE and is never part of the table. No row may be quoted if reconciliation_pct is outside 5 % or unjoined_ms is non-zero.", + "vmap": { + "batch": 16, + "lanes_mode": "captured", + "arms": [ + "vmap", + "scalar" + ], + "draw_seed": 0, + "fallback": true, + "composition": "jax.jit(jax.vmap(fn))", + "composition_provenance": "Current Fitness._vmap after PyAutoFit#1638. Array 343376 used the retired jax.vmap(jax.jit(fn)) composition and is historical evidence only.", + "headline_arm": "scalar", + "lane_rtol": 1e-09, + "lanes": [ + { + "lane": 0, + "draw_name": "call00015_lane00", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.0033655095107821688, + "centre_1": 0.004631951955766499, + "ell_comps_0": 0.000564301988937442, + "ell_comps_1": -0.00879076787683888, + "einstein_radius": 0.018337010967920175 + }, + "log_likelihood_vmap": 24758.50619430934, + "log_likelihood_scalar": 24758.506194309357, + "log_likelihood_library_pdip": 24758.50619430915, + "log_likelihood_library_pdip_scalar": 24758.506194309142, + "rel_diff_vmap_vs_library_pdip": 7.640804194085496e-15, + "rel_diff_scalar_vs_library_pdip_scalar": 8.66937398944316e-15, + "abs_diff_nats": 1.8189894035458565e-11, + "rel_diff": 7.34692710969753e-16, + "rel_diff_scalar_vs_library_pdip": 8.375496905055255e-15, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 7.275957614183426e-12, + "rel_diff_library_pdip_vmap_vs_scalar": 2.938770843879038e-16, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 10, + "pdip_iter": null + }, + { + "lane": 1, + "draw_name": "call00015_lane01", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.004311760382151672, + "centre_1": 0.0027192789928108052, + "ell_comps_0": 0.0061667694809026535, + "ell_comps_1": 0.003465536775180321, + "einstein_radius": -0.05732579988501185 + }, + "log_likelihood_vmap": 20551.004887772728, + "log_likelihood_scalar": 20551.004887773106, + "log_likelihood_library_pdip": 20551.004887772702, + "log_likelihood_library_pdip_scalar": 20551.004887772997, + "rel_diff_vmap_vs_library_pdip": 1.2391535980215492e-15, + "rel_diff_scalar_vs_library_pdip_scalar": 5.310658277235135e-15, + "abs_diff_nats": 3.7834979593753815e-10, + "rel_diff": 1.8410282027748372e-14, + "rel_diff_scalar_vs_library_pdip": 1.9649435625770282e-14, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 2.9467628337442875e-10, + "rel_diff_library_pdip_vmap_vs_scalar": 1.4338777348534864e-14, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 2, + "draw_name": "call00015_lane02", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.0002796502552123051, + "centre_1": 0.0016003321376979894, + "ell_comps_0": -0.002094430657472772, + "ell_comps_1": 0.006146479068253558, + "einstein_radius": -0.025968910196758177 + }, + "log_likelihood_vmap": -189710.11837880412, + "log_likelihood_scalar": -189709.06217123155, + "log_likelihood_library_pdip": -189709.80717038375, + "log_likelihood_library_pdip_scalar": -189709.0186126798, + "rel_diff_vmap_vs_library_pdip": 1.640444555907388e-06, + "rel_diff_scalar_vs_library_pdip_scalar": 2.2960717457613137e-07, + "abs_diff_nats": 1.0562075725756586, + "rel_diff": 5.567512487212259e-06, + "rel_diff_scalar_vs_library_pdip": 3.927046067426853e-06, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 0.7885577039560303, + "rel_diff_library_pdip_vmap_vs_scalar": 4.156669565435855e-06, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": true, + "passes": 0, + "pdip_iter": null + }, + { + "lane": 3, + "draw_name": "call00015_lane03", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.004594602299816973, + "centre_1": 0.004924922434755804, + "ell_comps_0": 0.028601845732661953, + "ell_comps_1": 0.003760187047606014, + "einstein_radius": -0.03088526730480501 + }, + "log_likelihood_vmap": -141741.97984036076, + "log_likelihood_scalar": -141741.9662679517, + "log_likelihood_library_pdip": -141741.98368558992, + "log_likelihood_library_pdip_scalar": -141741.96647750167, + "rel_diff_vmap_vs_library_pdip": 2.712837130432729e-08, + "rel_diff_scalar_vs_library_pdip_scalar": 1.478390423176762e-09, + "abs_diff_nats": 0.013572409050539136, + "rel_diff": 9.575434437590343e-08, + "rel_diff_scalar_vs_library_pdip": 1.2288270391367799e-07, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 0.01720808824757114, + "rel_diff_library_pdip_vmap_vs_scalar": 1.2140432840899337e-07, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": true, + "passes": 0, + "pdip_iter": null + }, + { + "lane": 4, + "draw_name": "call00015_lane04", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.0060950290987001, + "centre_1": -0.0006121094560707545, + "ell_comps_0": 0.009637314264800585, + "ell_comps_1": 0.006641580028105454, + "einstein_radius": -0.03125810931551931 + }, + "log_likelihood_vmap": 24880.54593298869, + "log_likelihood_scalar": 24880.545932988738, + "log_likelihood_library_pdip": 24880.54593298869, + "log_likelihood_library_pdip_scalar": 24880.545932988724, + "rel_diff_vmap_vs_library_pdip": 0.0, + "rel_diff_scalar_vs_library_pdip_scalar": 5.848712189660073e-16, + "abs_diff_nats": 4.729372449219227e-11, + "rel_diff": 1.9008314616395227e-15, + "rel_diff_scalar_vs_library_pdip": 1.9008314616395266e-15, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 3.2741809263825417e-11, + "rel_diff_library_pdip_vmap_vs_scalar": 1.3159602426735166e-15, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 10, + "pdip_iter": null + }, + { + "lane": 5, + "draw_name": "call00015_lane05", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.008435952123169364, + "centre_1": -0.007849511137408794, + "ell_comps_0": -0.01598149485178925, + "ell_comps_1": 0.01654417876136871, + "einstein_radius": 0.014294380855379263 + }, + "log_likelihood_vmap": 25472.519186609876, + "log_likelihood_scalar": 25472.519186782676, + "log_likelihood_library_pdip": 25472.51918659315, + "log_likelihood_library_pdip_scalar": 25472.519186784746, + "rel_diff_vmap_vs_library_pdip": 6.566852077909819e-13, + "rel_diff_scalar_vs_library_pdip_scalar": 8.126443741414924e-14, + "abs_diff_nats": 1.7280035535804927e-07, + "rel_diff": 6.783795277214391e-12, + "rel_diff_scalar_vs_library_pdip": 7.440480485055848e-12, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 1.9159779185429215e-07, + "rel_diff_library_pdip_vmap_vs_scalar": 7.521744922414032e-12, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 4, + "pdip_iter": null + }, + { + "lane": 6, + "draw_name": "call00015_lane06", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.0031698313356290646, + "centre_1": -0.0038584140676992847, + "ell_comps_0": 0.01810147576636289, + "ell_comps_1": -0.011577480306416508, + "einstein_radius": 0.016136835525067283 + }, + "log_likelihood_vmap": -83383.91631621221, + "log_likelihood_scalar": -83383.91544755129, + "log_likelihood_library_pdip": -83383.91633831926, + "log_likelihood_library_pdip_scalar": -83383.91553842722, + "rel_diff_vmap_vs_library_pdip": 2.651236870011004e-10, + "rel_diff_scalar_vs_library_pdip_scalar": 1.0898495736368818e-09, + "abs_diff_nats": 0.0008686609216965735, + "rel_diff": 1.0417607724873073e-08, + "rel_diff_scalar_vs_library_pdip": 1.068273130058567e-08, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 0.0007998920482350513, + "rel_diff_library_pdip_vmap_vs_scalar": 9.592881829426966e-09, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": true, + "passes": 0, + "pdip_iter": null + }, + { + "lane": 7, + "draw_name": "call00015_lane07", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.006158729760195174, + "centre_1": 0.004883559265258847, + "ell_comps_0": 0.007613883677130215, + "ell_comps_1": -0.005800175617006949, + "einstein_radius": 0.0662922007765554 + }, + "log_likelihood_vmap": -11960.284432425826, + "log_likelihood_scalar": -11960.284430105821, + "log_likelihood_library_pdip": -11960.284433607245, + "log_likelihood_library_pdip_scalar": -11960.284429711799, + "rel_diff_vmap_vs_library_pdip": 9.877850917726772e-11, + "rel_diff_scalar_vs_library_pdip_scalar": 3.294421725119323e-11, + "abs_diff_nats": 2.320004568900913e-06, + "rel_diff": 1.9397570203774712e-10, + "rel_diff_scalar_vs_library_pdip": 2.9275421115822764e-10, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 3.895445843227208e-06, + "rel_diff_library_pdip_vmap_vs_scalar": 3.2569842850477045e-10, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 1, + "pdip_iter": null + }, + { + "lane": 8, + "draw_name": "call00015_lane08", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.0030335293924908615, + "centre_1": 0.0012117081273721316, + "ell_comps_0": 0.0008852687687036301, + "ell_comps_1": -0.0027113633212058814, + "einstein_radius": -0.03873713959923952 + }, + "log_likelihood_vmap": 23223.55039142083, + "log_likelihood_scalar": 23223.55039149491, + "log_likelihood_library_pdip": 23223.550391416982, + "log_likelihood_library_pdip_scalar": 23223.55039150207, + "rel_diff_vmap_vs_library_pdip": 1.6573613909290755e-13, + "rel_diff_scalar_vs_library_pdip_scalar": 3.082880167614811e-13, + "abs_diff_nats": 7.408016244880855e-08, + "rel_diff": 3.1898724010751904e-12, + "rel_diff_scalar_vs_library_pdip": 3.355608540178802e-12, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 8.508868631906807e-08, + "rel_diff_library_pdip_vmap_vs_scalar": 3.663896556927988e-12, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 4, + "pdip_iter": null + }, + { + "lane": 9, + "draw_name": "call00015_lane09", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.0008035510098975272, + "centre_1": 0.005559773241319952, + "ell_comps_0": -0.003701655436278317, + "ell_comps_1": -0.012378591445614512, + "einstein_radius": 0.032284336889985665 + }, + "log_likelihood_vmap": -177119.561977738, + "log_likelihood_scalar": -177117.75747171917, + "log_likelihood_library_pdip": -177119.6181614268, + "log_likelihood_library_pdip_scalar": -177117.8047572617, + "rel_diff_vmap_vs_library_pdip": 3.1720759897430864e-07, + "rel_diff_scalar_vs_library_pdip_scalar": 2.6697227078407144e-07, + "abs_diff_nats": 1.8045060188160278, + "rel_diff": 1.0188171104775633e-05, + "rel_diff_scalar_vs_library_pdip": 1.0505271674244623e-05, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 1.8134041650919244, + "rel_diff_library_pdip_vmap_vs_scalar": 1.0238406960707184e-05, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": true, + "passes": 0, + "pdip_iter": null + }, + { + "lane": 10, + "draw_name": "call00015_lane10", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.008473569241265282, + "centre_1": -0.0051993251621340235, + "ell_comps_0": -0.0031466996514049606, + "ell_comps_1": -0.0076036423480284636, + "einstein_radius": 0.08283321334626792 + }, + "log_likelihood_vmap": -101745.38570215808, + "log_likelihood_scalar": -101745.38349694449, + "log_likelihood_library_pdip": -101745.38544685252, + "log_likelihood_library_pdip_scalar": -101745.38338916081, + "rel_diff_vmap_vs_library_pdip": 2.5092592822157503e-09, + "rel_diff_scalar_vs_library_pdip_scalar": 1.0593471182273686e-09, + "abs_diff_nats": 0.0022052135900594294, + "rel_diff": 2.1673844200760757e-08, + "rel_diff_scalar_vs_library_pdip": 1.9164584503174787e-08, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 0.0020576917158905417, + "rel_diff_library_pdip_vmap_vs_scalar": 2.022393200898541e-08, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": true, + "passes": 2, + "pdip_iter": null + }, + { + "lane": 11, + "draw_name": "call00015_lane11", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.001017060353322001, + "centre_1": 0.003035861051809724, + "ell_comps_0": 0.0014054844842678396, + "ell_comps_1": -0.00019678252877009805, + "einstein_radius": -0.04179610309843307 + }, + "log_likelihood_vmap": 18957.52834991338, + "log_likelihood_scalar": 18957.5283497521, + "log_likelihood_library_pdip": 18957.52834991469, + "log_likelihood_library_pdip_scalar": 18957.528349723354, + "rel_diff_vmap_vs_library_pdip": 6.908455292163181e-14, + "rel_diff_scalar_vs_library_pdip_scalar": 1.516405936645123e-12, + "abs_diff_nats": 1.6127887647598982e-07, + "rel_diff": 8.507378889300133e-12, + "rel_diff_scalar_vs_library_pdip": 8.576463442148802e-12, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 1.9133585738018155e-07, + "rel_diff_library_pdip_vmap_vs_scalar": 1.0092869378880486e-11, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 12, + "draw_name": "call00015_lane12", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.0012508260776529923, + "centre_1": -0.0075763258203543175, + "ell_comps_0": -0.0003476568325791879, + "ell_comps_1": 0.0070528223693464365, + "einstein_radius": -0.005182936058341969 + }, + "log_likelihood_vmap": 24810.049660195124, + "log_likelihood_scalar": 24810.049660195124, + "log_likelihood_library_pdip": 24810.0496601949, + "log_likelihood_library_pdip_scalar": 24810.049660194898, + "rel_diff_vmap_vs_library_pdip": 8.94462970739782e-15, + "rel_diff_scalar_vs_library_pdip_scalar": 9.091262981289588e-15, + "abs_diff_nats": 0.0, + "rel_diff": 0.0, + "rel_diff_scalar_vs_library_pdip": 8.94462970739782e-15, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 3.637978807091713e-12, + "rel_diff_library_pdip_vmap_vs_scalar": 1.4663327389176755e-16, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 9, + "pdip_iter": null + }, + { + "lane": 13, + "draw_name": "call00015_lane13", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.0039046265841316857, + "centre_1": 0.008586063066835778, + "ell_comps_0": 0.01612319103606081, + "ell_comps_1": -0.006478405394829051, + "einstein_radius": -0.06420305523683667 + }, + "log_likelihood_vmap": -3605.706216813269, + "log_likelihood_scalar": -3605.7062159382913, + "log_likelihood_library_pdip": -3605.706216783161, + "log_likelihood_library_pdip_scalar": -3605.706215912789, + "rel_diff_vmap_vs_library_pdip": 8.350073688019946e-12, + "rel_diff_scalar_vs_library_pdip_scalar": 7.072742456156259e-12, + "abs_diff_nats": 8.749775588512421e-07, + "rel_diff": 2.4266468382354103e-10, + "rel_diff_scalar_vs_library_pdip": 2.343146100786612e-10, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 8.70371877681464e-07, + "rel_diff_library_pdip_vmap_vs_scalar": 2.4138735259137805e-10, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 2, + "pdip_iter": null + }, + { + "lane": 14, + "draw_name": "call00015_lane14", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.007195835212073937, + "centre_1": -0.0022675171274400335, + "ell_comps_0": 0.004220685262914858, + "ell_comps_1": 0.006581974817750368, + "einstein_radius": 0.08589577997501685 + }, + "log_likelihood_vmap": 11126.92147574079, + "log_likelihood_scalar": 11126.921475785763, + "log_likelihood_library_pdip": 11126.92147574079, + "log_likelihood_library_pdip_scalar": 11126.921475785763, + "rel_diff_vmap_vs_library_pdip": 0.0, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 4.4972694013267756e-08, + "rel_diff": 4.041791263750414e-12, + "rel_diff_scalar_vs_library_pdip": 4.04179126376675e-12, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 4.4972694013267756e-08, + "rel_diff_library_pdip_vmap_vs_scalar": 4.041791263750414e-12, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 15, + "draw_name": "call00015_lane15", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.0024446743118905125, + "centre_1": 0.0028324231769206983, + "ell_comps_0": -0.017159158004659933, + "ell_comps_1": 0.008265799441903459, + "einstein_radius": -0.03860302877433641 + }, + "log_likelihood_vmap": 20410.34397373332, + "log_likelihood_scalar": 20410.34397372084, + "log_likelihood_library_pdip": 20410.343973733514, + "log_likelihood_library_pdip_scalar": 20410.343973722825, + "rel_diff_vmap_vs_library_pdip": 9.44682152461495e-15, + "rel_diff_scalar_vs_library_pdip_scalar": 9.732008589514083e-14, + "abs_diff_nats": 1.2481905287131667e-08, + "rel_diff": 6.115480122825287e-13, + "rel_diff_scalar_vs_library_pdip": 6.209948338067639e-13, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 1.0688381735235453e-08, + "rel_diff_library_pdip_vmap_vs_scalar": 5.236747479119483e-13, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": false, + "passes": 16, + "pdip_iter": null + } + ], + "lane_pins": [ + { + "pin": "lane 0: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 24758.50619430934, + "reference_value": 24758.50619430915, + "rel_diff": 7.640804194085496e-15, + "abs_diff_nats": 1.8917489796876907e-10, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 0: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 24758.506194309357, + "reference_value": 24758.506194309142, + "rel_diff": 8.66937398944316e-15, + "abs_diff_nats": 2.1464074961841106e-10, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 0: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 24758.50619430934, + "reference_value": 24758.506194309357, + "rel_diff": 7.34692710969753e-16, + "abs_diff_nats": 1.8189894035458565e-11, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 0: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 24758.50619430915, + "reference_value": 24758.506194309142, + "rel_diff": 2.938770843879038e-16, + "abs_diff_nats": 7.275957614183426e-12, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 1: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 20551.004887772728, + "reference_value": 20551.004887772702, + "rel_diff": 1.2391535980215492e-15, + "abs_diff_nats": 2.546585164964199e-11, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 1: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 20551.004887773106, + "reference_value": 20551.004887772997, + "rel_diff": 5.310658277235135e-15, + "abs_diff_nats": 1.0913936421275139e-10, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 1: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 20551.004887772728, + "reference_value": 20551.004887773106, + "rel_diff": 1.8410282027748372e-14, + "abs_diff_nats": 3.7834979593753815e-10, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 1: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 20551.004887772702, + "reference_value": 20551.004887772997, + "rel_diff": 1.4338777348534864e-14, + "abs_diff_nats": 2.9467628337442875e-10, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 2: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -189710.11837880412, + "reference_value": -189709.80717038375, + "rel_diff": 1.640444555907388e-06, + "abs_diff_nats": 0.3112084203748964, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 2: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -189709.06217123155, + "reference_value": -189709.0186126798, + "rel_diff": 2.2960717457613137e-07, + "abs_diff_nats": 0.04355855175526813, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 2: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -189710.11837880412, + "reference_value": -189709.06217123155, + "rel_diff": 5.567512487212259e-06, + "abs_diff_nats": 1.0562075725756586, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 2: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -189709.80717038375, + "reference_value": -189709.0186126798, + "rel_diff": 4.156669565435855e-06, + "abs_diff_nats": 0.7885577039560303, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 3: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -141741.97984036076, + "reference_value": -141741.98368558992, + "rel_diff": 2.712837130432729e-08, + "abs_diff_nats": 0.0038452291628345847, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 3: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -141741.9662679517, + "reference_value": -141741.96647750167, + "rel_diff": 1.478390423176762e-09, + "abs_diff_nats": 0.00020954996580258012, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 3: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -141741.97984036076, + "reference_value": -141741.9662679517, + "rel_diff": 9.575434437590343e-08, + "abs_diff_nats": 0.013572409050539136, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 3: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -141741.98368558992, + "reference_value": -141741.96647750167, + "rel_diff": 1.2140432840899337e-07, + "abs_diff_nats": 0.01720808824757114, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 4: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 24880.54593298869, + "reference_value": 24880.54593298869, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 4: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 24880.545932988738, + "reference_value": 24880.545932988724, + "rel_diff": 5.848712189660073e-16, + "abs_diff_nats": 1.4551915228366852e-11, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 4: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 24880.54593298869, + "reference_value": 24880.545932988738, + "rel_diff": 1.9008314616395227e-15, + "abs_diff_nats": 4.729372449219227e-11, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 4: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 24880.54593298869, + "reference_value": 24880.545932988724, + "rel_diff": 1.3159602426735166e-15, + "abs_diff_nats": 3.2741809263825417e-11, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 5: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 25472.519186609876, + "reference_value": 25472.51918659315, + "rel_diff": 6.566852077909819e-13, + "abs_diff_nats": 1.6727426555007696e-08, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 5: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 25472.519186782676, + "reference_value": 25472.519186784746, + "rel_diff": 8.126443741414924e-14, + "abs_diff_nats": 2.0700099412351847e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 5: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 25472.519186609876, + "reference_value": 25472.519186782676, + "rel_diff": 6.783795277214391e-12, + "abs_diff_nats": 1.7280035535804927e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 5: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 25472.51918659315, + "reference_value": 25472.519186784746, + "rel_diff": 7.521744922414032e-12, + "abs_diff_nats": 1.9159779185429215e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 6: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -83383.91631621221, + "reference_value": -83383.91633831926, + "rel_diff": 2.651236870011004e-10, + "abs_diff_nats": 2.2107051336206496e-05, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 6: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -83383.91544755129, + "reference_value": -83383.91553842722, + "rel_diff": 1.0898495736368818e-09, + "abs_diff_nats": 9.087592479772866e-05, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 6: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -83383.91631621221, + "reference_value": -83383.91544755129, + "rel_diff": 1.0417607724873073e-08, + "abs_diff_nats": 0.0008686609216965735, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 6: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -83383.91633831926, + "reference_value": -83383.91553842722, + "rel_diff": 9.592881829426966e-09, + "abs_diff_nats": 0.0007998920482350513, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 7: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -11960.284432425826, + "reference_value": -11960.284433607245, + "rel_diff": 9.877850917726772e-11, + "abs_diff_nats": 1.1814190656878054e-06, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 7: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -11960.284430105821, + "reference_value": -11960.284429711799, + "rel_diff": 3.294421725119323e-11, + "abs_diff_nats": 3.9402220863848925e-07, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 7: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -11960.284432425826, + "reference_value": -11960.284430105821, + "rel_diff": 1.9397570203774712e-10, + "abs_diff_nats": 2.320004568900913e-06, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 7: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -11960.284433607245, + "reference_value": -11960.284429711799, + "rel_diff": 3.2569842850477045e-10, + "abs_diff_nats": 3.895445843227208e-06, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 8: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 23223.55039142083, + "reference_value": 23223.550391416982, + "rel_diff": 1.6573613909290755e-13, + "abs_diff_nats": 3.848981577903032e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 8: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 23223.55039149491, + "reference_value": 23223.55039150207, + "rel_diff": 3.082880167614811e-13, + "abs_diff_nats": 7.159542292356491e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 8: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 23223.55039142083, + "reference_value": 23223.55039149491, + "rel_diff": 3.1898724010751904e-12, + "abs_diff_nats": 7.408016244880855e-08, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 8: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 23223.550391416982, + "reference_value": 23223.55039150207, + "rel_diff": 3.663896556927988e-12, + "abs_diff_nats": 8.508868631906807e-08, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 9: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -177119.561977738, + "reference_value": -177119.6181614268, + "rel_diff": 3.1720759897430864e-07, + "abs_diff_nats": 0.056183688808232546, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 9: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -177117.75747171917, + "reference_value": -177117.8047572617, + "rel_diff": 2.6697227078407144e-07, + "abs_diff_nats": 0.04728554253233597, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 9: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -177119.561977738, + "reference_value": -177117.75747171917, + "rel_diff": 1.0188171104775633e-05, + "abs_diff_nats": 1.8045060188160278, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 9: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -177119.6181614268, + "reference_value": -177117.8047572617, + "rel_diff": 1.0238406960707184e-05, + "abs_diff_nats": 1.8134041650919244, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 10: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -101745.38570215808, + "reference_value": -101745.38544685252, + "rel_diff": 2.5092592822157503e-09, + "abs_diff_nats": 0.000255305552855134, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 10: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -101745.38349694449, + "reference_value": -101745.38338916081, + "rel_diff": 1.0593471182273686e-09, + "abs_diff_nats": 0.00010778367868624628, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 10: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -101745.38570215808, + "reference_value": -101745.38349694449, + "rel_diff": 2.1673844200760757e-08, + "abs_diff_nats": 0.0022052135900594294, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 10: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -101745.38544685252, + "reference_value": -101745.38338916081, + "rel_diff": 2.022393200898541e-08, + "abs_diff_nats": 0.0020576917158905417, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 11: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 18957.52834991338, + "reference_value": 18957.52834991469, + "rel_diff": 6.908455292163181e-14, + "abs_diff_nats": 1.3096723705530167e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 11: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 18957.5283497521, + "reference_value": 18957.528349723354, + "rel_diff": 1.516405936645123e-12, + "abs_diff_nats": 2.8747308533638716e-08, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 11: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 18957.52834991338, + "reference_value": 18957.5283497521, + "rel_diff": 8.507378889300133e-12, + "abs_diff_nats": 1.6127887647598982e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 11: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 18957.52834991469, + "reference_value": 18957.528349723354, + "rel_diff": 1.0092869378880486e-11, + "abs_diff_nats": 1.9133585738018155e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 12: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 24810.049660195124, + "reference_value": 24810.0496601949, + "rel_diff": 8.94462970739782e-15, + "abs_diff_nats": 2.219167072325945e-10, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 12: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 24810.049660195124, + "reference_value": 24810.049660194898, + "rel_diff": 9.091262981289588e-15, + "abs_diff_nats": 2.255546860396862e-10, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 12: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 24810.049660195124, + "reference_value": 24810.049660195124, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 12: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 24810.0496601949, + "reference_value": 24810.049660194898, + "rel_diff": 1.4663327389176755e-16, + "abs_diff_nats": 3.637978807091713e-12, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 13: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -3605.706216813269, + "reference_value": -3605.706216783161, + "rel_diff": 8.350073688019946e-12, + "abs_diff_nats": 3.0107912607491016e-08, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 13: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -3605.7062159382913, + "reference_value": -3605.706215912789, + "rel_diff": 7.072742456156259e-12, + "abs_diff_nats": 2.5502231437712908e-08, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 13: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -3605.706216813269, + "reference_value": -3605.7062159382913, + "rel_diff": 2.4266468382354103e-10, + "abs_diff_nats": 8.749775588512421e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 13: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -3605.706216783161, + "reference_value": -3605.706215912789, + "rel_diff": 2.4138735259137805e-10, + "abs_diff_nats": 8.70371877681464e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 14: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 11126.92147574079, + "reference_value": 11126.92147574079, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 14: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 11126.921475785763, + "reference_value": 11126.921475785763, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 14: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 11126.92147574079, + "reference_value": 11126.921475785763, + "rel_diff": 4.041791263750414e-12, + "abs_diff_nats": 4.4972694013267756e-08, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 14: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 11126.92147574079, + "reference_value": 11126.921475785763, + "rel_diff": 4.041791263750414e-12, + "abs_diff_nats": 4.4972694013267756e-08, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 15: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 20410.34397373332, + "reference_value": 20410.343973733514, + "rel_diff": 9.44682152461495e-15, + "abs_diff_nats": 1.9281287677586079e-10, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 15: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 20410.34397372084, + "reference_value": 20410.343973722825, + "rel_diff": 9.732008589514083e-14, + "abs_diff_nats": 1.9863364286720753e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 15: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 20410.34397373332, + "reference_value": 20410.34397372084, + "rel_diff": 6.115480122825287e-13, + "abs_diff_nats": 1.2481905287131667e-08, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 15: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 20410.343973733514, + "reference_value": 20410.343973722825, + "rel_diff": 5.236747479119483e-13, + "abs_diff_nats": 1.0688381735235453e-08, + "within_rtol": true, + "status": "RECORDED" + } + ], + "lanes_failed": 5, + "arm_rows": { + "vmap": { + "arm": "vmap", + "program": "jax.jit(jax.vmap(fn))", + "stands_for": "Nautilus(use_jax_vmap=True) \u2014 Fitness._vmap", + "hlo_source": "jax.jit(jax.vmap(fn)).lower(batched_tree) \u2014 the exact current Fitness._vmap composition (PyAutoFit#1638)", + "batch_wall_ms": 963.1363696000335, + "wall_production_nesting_ms": 963.1363696000335, + "wall_aot_command_buffers_on_ms": 964.3899668997619, + "wall_aot_command_buffers_off_ms": 966.9188494000991, + "command_buffer_delta_ms": 2.528882500337204, + "production_nesting_vs_aot_on_delta_ms": -1.2535972997284262, + "production_nesting_vs_aot_on_delta_pct": -0.12998862936726552, + "wall_per_lane_ms": 60.196023100002094, + "wall_per_lane_command_buffers_off_ms": 60.432428087506196, + "traced_batch_wall_ms": 983.1974248998449, + "untraced_batch_wall_ms": 966.1898319998727, + "traced_wall_per_lane_ms": 61.44983905624031, + "callback_count_per_call": 16.0, + "callback_count_per_lane": 1.0, + "callback_expectation": "B per batched call \u2014 the qhull pure_callback is vmap_method='sequential'", + "host_qhull_ms": 71.77601759976824, + "host_tables_ms": 1.8577926006400958, + "host_qhull_ms_per_lane": 4.486001099985515, + "host_tables_ms_per_lane": 0.11611203754000599, + "host_callback_probe": { + "calls": 160, + "qhull_ms_total": 717.7601759976824, + "tables_ms_total": 18.577926006400958, + "total_ms_total": 736.3381020040833, + "qhull_ms_mean": 4.486001099985515, + "tables_ms_mean": 0.11611203754000599, + "total_ms_mean": 4.602113137525521, + "non_finite_calls": 0, + "n_points": [ + 1500 + ] + }, + "host_callback_records_first": [ + { + "n_points": 1500, + "qhull_ms": 4.706781001004856, + "tables_ms": 0.19469799735816196, + "total_ms": 4.901478998363018, + "finite": true + }, + { + "n_points": 1500, + "qhull_ms": 4.4837440000264905, + "tables_ms": 0.1332280007773079, + "total_ms": 4.616972000803798, + "finite": true + }, + { + "n_points": 1500, + "qhull_ms": 4.455662998225307, + "tables_ms": 0.12346799849183299, + "total_ms": 4.57913099671714, + "finite": true + }, + { + "n_points": 1500, + "qhull_ms": 4.480153998883907, + "tables_ms": 0.12822799908462912, + "total_ms": 4.608381997968536, + "finite": true + } + ], + "device_idle_ms": 117.4971945000002, + "device_idle_ms_per_lane": 7.343574656250013, + "trace": { + "parser": "ProfileData.from_file(xplane) + as_text() + stack_frame_index(proto field 17)", + "stage_audit": { + "mixed_fusion": [ + { + "instruction": "loop_divide_gather_fusion", + "ms": 17.2570046, + "opcode": "fusion", + "shape": "(f64[15361,16,1,1,1500]{4,3,2,1,0}, f64[15361,16,1,1,1500]{4,3,2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_add_multiply_transpose_fusion", + "ms": 7.7020534000000005, + "opcode": "fusion", + "shape": "(f64[16,1500,1500]{2,1,0}, f64[16,1500,1500]{2,1,0}, f64[16,1500,1500]{2,1,0}, f64[16,1500,1500]{2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:237 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:274 (_certified_positive_only_from)" + ] + }, + { + "instruction": "loop_broadcast_fusion.7", + "ms": 3.9764483, + "opcode": "fusion", + "shape": "f64[16,1500,180,180]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_reduce_fusion.21", + "ms": 1.9422168, + "opcode": "fusion", + "shape": "f64[92,16,1500]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123 (data_vector_via_blurred_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:67 (InversionImagingMapping.data_vector)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:699 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_reduce_fusion.25", + "ms": 1.7463912, + "opcode": "fusion", + "shape": "f64[15361,16]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163 (mapped_reconstructed_data_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:120 (InversionImagingMapping._mapped_reconstructed_data_dict_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:196 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "loop_broadcast_fusion.8", + "ms": 1.7016860000000003, + "opcode": "fusion", + "shape": "f64[15361,16,1500]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:353", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:353 (mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:283 (Mapper.mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:91 (AbstractInversionImaging._mapping_matrix_for_convolution_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:137 (AbstractInversionImaging.operated_mapping_matrix_list)" + ] + } + ], + "other": [ + { + "instruction": "copy.138", + "ms": 0.04782109999999985, + "opcode": "copy", + "shape": "f64[1,16,1024,2]{3,2,1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.123", + "ms": 0.03263710000000005, + "opcode": "copy", + "shape": "pred[16,1500]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.141", + "ms": 0.03252490000000003, + "opcode": "copy", + "shape": "s32[1,3000,3]{2,1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.140", + "ms": 0.032499600000000024, + "opcode": "copy", + "shape": "s32[1,3000,3]{2,1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.142", + "ms": 0.032099300000000025, + "opcode": "copy", + "shape": "f64[1,1500,2]{2,1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.139", + "ms": 0.02960969999999999, + "opcode": "copy", + "shape": "s32[1,1500]{1,0}", + "source": "", + "stack": [] + } + ], + "mesh_qhull_callback": [ + { + "instruction": "pure_callback.0", + "ms": 0.17201450000000054, + "opcode": "custom-call", + "shape": "(s32[3000,3]{1,0}, s32[3000,3]{1,0}, s32[1500]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:161", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:161 (_jax_delaunay_tables)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:405 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + }, + { + "instruction": "loop_add_fusion.1", + "ms": 0.02440319999999997, + "opcode": "fusion", + "shape": "s64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:161", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:161 (_jax_delaunay_tables)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:405 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + }, + { + "instruction": "loop_broadcast_fusion.3", + "ms": 0.0019904, + "opcode": "fusion", + "shape": "s32[16,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:161", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:161 (_jax_delaunay_tables)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:405 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + } + ], + "border_relocator": [ + { + "instruction": "custom-call.2", + "ms": 0.0422181, + "opcode": "custom-call", + "shape": "(f64[16,2,2]{2,1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "eigh.34", + "ms": 0.0146272, + "opcode": "custom-call", + "shape": "(f64[16,2,2]{1,2,0}, f64[16,2]{1,0}, s32[16]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_add_rsqrt_fusion", + "ms": 0.012505700000000002, + "opcode": "fusion", + "shape": "(f64[16,15361]{1,0}, f64[16,15361]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:311", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:311 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:423 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:208 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_add_fusion.4", + "ms": 0.0037536000000000006, + "opcode": "fusion", + "shape": "f64[16,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:458 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_abs_fusion.1", + "ms": 0.003276900000000001, + "opcode": "fusion", + "shape": "(f64[16,392,1]{2,1,0}, f64[16,392,1]{2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:269", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:269 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_reduce_fusion.27", + "ms": 0.0031295999999999997, + "opcode": "fusion", + "shape": "f64[16]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:269", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:269 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + } + ], + "mesh_construction": [ + { + "instruction": "loop_compare_fusion.5", + "ms": 0.0046944000000000005, + "opcode": "fusion", + "shape": "pred[16,6000,3]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:736", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:736 (DelaunayInterface.splitted_sizes)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:997 (InterpolatorDelaunay._mappings_sizes_weights_split)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:124 (AdaptSplit.regularization_matrix_from)" + ] + }, + { + "instruction": "input_concatenate_fusion.13", + "ms": 0.002352, + "opcode": "fusion", + "shape": "f64[16,1500,2]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:820", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:820 (InterpolatorDelaunay.mesh_grid_xy)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:847 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + }, + { + "instruction": "loop_multiply_fusion.4", + "ms": 0.0023455999999999998, + "opcode": "fusion", + "shape": "f64[16,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:412", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:412 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "mesh_seed_argmin": [ + { + "instruction": "input_reduce_fusion", + "ms": 1.3077218000000002, + "opcode": "fusion", + "shape": "(f64[16,1024]{1,0}, s64[16,1024]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:191", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:191 (_nearest_vertex_seed_from..argmin_chunk)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)" + ] + }, + { + "instruction": "loop_dynamic_update_slice_fusion", + "ms": 0.04838119999999986, + "opcode": "fusion", + "shape": "s32[21,16,1024]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_add_fusion", + "ms": 0.031513699999999895, + "opcode": "fusion", + "shape": "s64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_broadcast_fusion.4", + "ms": 0.002432, + "opcode": "fusion", + "shape": "s32[21,16,1024]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "pdip_solve": [ + { + "instruction": "cholesky.80", + "ms": 191.69935839997527, + "opcode": "custom-call", + "shape": "(f64[16,1500,1500]{1,2,0}, s32[16]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:106", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:106 (factorize_kkt)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:212 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "cholesky.60", + "ms": 101.35508909998819, + "opcode": "custom-call", + "shape": "(f64[16,1500,1500]{1,2,0}, s32[16]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "triangular-solve", + "ms": 54.49890020000196, + "opcode": "custom-call", + "shape": "(f64[16,1500,1]{1,2,0}, s8[256]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:213 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve.2", + "ms": 50.11525630000035, + "opcode": "custom-call", + "shape": "(f64[16,1500,1]{1,2,0}, s8[256]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:217 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve.3", + "ms": 49.00282360000046, + "opcode": "custom-call", + "shape": "(f64[16,1500,1]{1,2,0}, s8[256]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:217 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve.1", + "ms": 48.29330050000044, + "opcode": "custom-call", + "shape": "(f64[16,1500,1]{1,2,0}, s8[256]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:213 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + } + ], + "mesh_dual_areas": [ + { + "instruction": "input_scatter_fusion.9", + "ms": 0.0031775999999999996, + "opcode": "fusion", + "shape": "f64[16,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:393", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:393 (_dual_areas_padded_jnp)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:408 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + }, + { + "instruction": "input_scatter_fusion.7", + "ms": 0.0031519999999999994, + "opcode": "fusion", + "shape": "f64[16,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:393", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:393 (_dual_areas_padded_jnp)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:408 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + } + ], + "mesh_locate_walk": [ + { + "instruction": "loop_slice_subtract_fusion", + "ms": 0.28669310000000015, + "opcode": "fusion", + "shape": "(f64[16,21361,1]{2,1,0}, f64[16,21361,1]{2,1,0}, f64[16,21361,1]{2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:236", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:236 (_walk_from_seed..cross)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:250 (_walk_from_seed..weights_of)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:262 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)" + ] + }, + { + "instruction": "loop_reduce_fusion", + "ms": 0.10496080000000002, + "opcode": "fusion", + "shape": "(f64[16,21361]{1,0}, s64[16,21361]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:264", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:264 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:264 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)" + ] + }, + { + "instruction": "loop_select_fusion", + "ms": 0.09967749999999999, + "opcode": "fusion", + "shape": "(pred[16,21361]{1,0}, pred[16,21361]{1,0}, s32[16,21361]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_gather_fusion.1", + "ms": 0.07103090000000001, + "opcode": "fusion", + "shape": "s32[341776,1,1,3]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:239", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:239 (_walk_from_seed..weights_of)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:262 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)" + ] + }, + { + "instruction": "loop_gather_fusion", + "ms": 0.05417649999999998, + "opcode": "fusion", + "shape": "s32[341776,1,1,1]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:267", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:267 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)" + ] + }, + { + "instruction": "input_concatenate_fusion.1", + "ms": 0.04070780000000003, + "opcode": "fusion", + "shape": "s32[16,21361,2]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:244", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:244 (_walk_from_seed..weights_of)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:262 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)" + ] + } + ], + "psf_convolution_mapping_matrix": [ + { + "instruction": "input_scatter_fusion", + "ms": 32.2914924, + "opcode": "fusion", + "shape": "f64[16,1500,180,180]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.29.0", + "ms": 28.261534899999997, + "opcode": "fft", + "shape": "f64[16,1500,180,180]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.25.0", + "ms": 21.587690900000002, + "opcode": "fft", + "shape": "c128[16,1500,180,91]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.27.0", + "ms": 15.515429199999998, + "opcode": "fft", + "shape": "c128[16,1500,91,180]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_transpose_fusion.4", + "ms": 8.436837, + "opcode": "fusion", + "shape": "c128[16,1500,91,180]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "wrapped_transpose", + "ms": 7.9106950000000005, + "opcode": "fusion", + "shape": "c128[16,1500,180,91]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + } + ], + "mapping_matrix": [ + { + "instruction": "input_scatter_fusion.3", + "ms": 0.050870599999999995, + "opcode": "fusion", + "shape": "f64[16,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:71", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:71 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:120 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + }, + { + "instruction": "input_reduce_fusion.49", + "ms": 0.0037889, + "opcode": "fusion", + "shape": "f64[16]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:120 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + } + ], + "regularization_H": [ + { + "instruction": "input_scatter_fusion.10", + "ms": 0.0027808, + "opcode": "fusion", + "shape": "f64[16,1500,1500]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:615", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:615 (pixel_splitted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:137 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "curvature_matrix_F": [ + { + "instruction": "cublas-lt-matmul.2", + "ms": 66.39081700000001, + "opcode": "custom-call", + "shape": "(f64[16,1500,1500]{2,1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "inversion_other": [ + { + "instruction": "cholesky.120", + "ms": 7.007805500000042, + "opcode": "custom-call", + "shape": "(f64[16,1500,1500]{1,2,0}, s32[16]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1078 (AbstractInversion.log_det_curvature_reg_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:347 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "cholesky.130", + "ms": 6.9099641000000105, + "opcode": "custom-call", + "shape": "(f64[16,1500,1500]{1,2,0}, s32[16]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1157 (AbstractInversion.log_det_regularization_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:348 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "loop_reduce_window_fusion", + "ms": 0.0031327999999999994, + "opcode": "fusion", + "shape": "s64[94,16]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "loop_broadcast_convert_fusion", + "ms": 0.0026305, + "opcode": "fusion", + "shape": "(s32[1500]{0}, s64[1500]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527 (AbstractInversion.zeroed_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:567 (AbstractInversion.solve_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:684 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_scatter_fusion.5", + "ms": 0.0022143999999999996, + "opcode": "fusion", + "shape": "s64[1500]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527 (AbstractInversion.zeroed_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:567 (AbstractInversion.solve_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:684 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_reduce_window_fusion.1", + "ms": 0.0021248, + "opcode": "fusion", + "shape": "s64[6,16]{1,0}", + "source": "", + "stack": [] + } + ] + }, + "stage_audit_note": "The HLO instructions that contributed most of each stage's milliseconds, with their full source stack. A stage row is only as good as the rules that built it; this is how a reader checks a row against the HLO instead of trusting it.", + "untraced_wall_ms": 966.1898319998727, + "reconciliation_vs_untraced_pct": 1.6368651352301196, + "wall_basis": "wall_ms is the TRACED run's wall, the run these kernel durations came from. untraced_wall_ms is the same executable without the profiler; the difference is the profiler's overhead and belongs in neither the stages nor the idle row.", + "calls": 10, + "call_split": "per-call (first-instruction recurrence)", + "call_blocks": 10, + "events": 310660, + "streams": [ + "Stream #14(MemcpyD2D,Compute,MemcpyD2H,MemcpyH2D)" + ], + "per_stage_ms": { + "border_relocator": { + "median_ms": 0.0882735, + "min_ms": 0.08780899999999998, + "max_ms": 0.088513 + }, + "curvature_matrix_F": { + "median_ms": 66.3122325, + "min_ms": 66.008172, + "max_ms": 67.084427 + }, + "inversion_other": { + "median_ms": 13.897173500000001, + "min_ms": 13.687939000000005, + "max_ms": 14.222793000000006 + }, + "mapping_matrix": { + "median_ms": 0.0546885, + "min_ms": 0.052352, + "max_ms": 0.056736 + }, + "mesh_construction": { + "median_ms": 0.009375999999999999, + "min_ms": 0.009216, + "max_ms": 0.009663999999999999 + }, + "mesh_dual_areas": { + "median_ms": 0.006336, + "min_ms": 0.006304, + "max_ms": 0.006368 + }, + "mesh_locate_walk": { + "median_ms": 0.8517189999999997, + "min_ms": 0.8457959999999999, + "max_ms": 0.8558780000000002 + }, + "mesh_qhull_callback": { + "median_ms": 0.19821000000000008, + "min_ms": 0.19731400000000004, + "max_ms": 0.2001319999999999 + }, + "mesh_seed_argmin": { + "median_ms": 1.3893509999999996, + "min_ms": 1.3848449999999999, + "max_ms": 1.3936389999999999 + }, + "mixed_fusion": { + "median_ms": 36.2498645, + "min_ms": 35.89858400000001, + "max_ms": 36.760322000000016 + }, + "other": { + "median_ms": 0.2628649999999998, + "min_ms": 0.2619529999999997, + "max_ms": 0.26524999999999965 + }, + "pdip_solve": { + "median_ms": 631.2192930000169, + "min_ms": 630.6065110000172, + "max_ms": 634.1925540000129 + }, + "psf_convolution_mapping_matrix": { + "median_ms": 113.96569549999998, + "min_ms": 113.743887, + "max_ms": 114.258175 + }, + "regularization_H": { + "median_ms": 0.002784, + "min_ms": 0.00272, + "max_ms": 0.002848 + } + }, + "stage_order": [ + "border_relocator", + "mesh_qhull_callback", + "mesh_seed_argmin", + "mesh_locate_walk", + "mesh_dual_areas", + "mesh_construction", + "mapping_matrix", + "psf_convolution_mapping_matrix", + "curvature_matrix_F", + "regularization_H", + "pdip_solve", + "inversion_other", + "mixed_fusion", + "other" + ], + "mixed_fusion": { + "ms": 36.2498645, + "constituent_stage_sets": { + "curvature_matrix_F + psf_convolution_mapping_matrix": 17.2570046, + "curvature_reg_reduce_gather + inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter + regularization_H": 7.7020534000000005, + "pdip_solve + psf_convolution_mapping_matrix": 3.9764483, + "data_vector_D + pdip_solve": 1.9577304999999998, + "mapped_reconstruction + pdip_solve": 1.7463912, + "mapping_matrix + pdip_solve": 1.7048316000000003, + "pdip_solve + regularization_H": 0.7571771, + "inversion_other + pdip_solve + regularization_H": 0.44193940000000004, + "inversion_other + pdip_solve": 0.19358879999999998, + "inversion_other + regularization_H": 0.16271819999999987, + "inversion_other + mapping_matrix + mesh_construction + mesh_interpolation_weights + pdip_solve": 0.0616038, + "mapping_matrix + mesh_interpolation_weights + pdip_solve": 0.0598374, + "grids_and_structures + mass_profile_deflections + ray_trace_data_grid": 0.0308865, + "inversion_other + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + pdip_solve + regularization_H": 0.0229409, + "grids_and_structures + mass_profile_deflections + pdip_solve + ray_trace_data_grid": 0.02206729999999999, + "chi_squared_evidence + pdip_solve": 0.021427400000000003, + "inversion_other + mesh_construction + mesh_dual_areas + mesh_interpolation_weights": 0.0214081, + "inversion_other + mesh_construction + mesh_interpolation_weights": 0.020777900000000005, + "border_relocator + pdip_solve": 0.018947400000000007, + "inversion_other + mapping_matrix + mesh_construction + mesh_interpolation_weights": 0.014419300000000001, + "pdip_solve + ray_trace_data_grid": 0.013171399999999998, + "mesh_construction + pdip_solve + regularization_H": 0.0110304, + "mesh_locate_walk + mesh_seed_argmin": 0.0096322, + "mesh_construction + mesh_seed_argmin + pdip_solve + regularization_H": 0.0095521, + "mesh_dual_areas + mesh_interpolation_weights": 0.009353700000000001, + "inversion_other + mapped_reconstruction + reconstruction_scatter": 0.0089473, + "inversion_other + mapped_reconstruction": 0.0088993, + "inversion_other + mapped_reconstruction + reconstruction_scatter + regularization_H": 0.008339599999999999, + "inversion_other + mesh_dual_areas + mesh_locate_walk": 0.008019299999999997, + "mesh_construction + mesh_dual_areas + mesh_interpolation_weights + pdip_solve + regularization_H": 0.0064928, + "inversion_other + pdip_solve + ray_trace_data_grid": 0.0046945, + "grids_and_structures + mass_profile_deflections + pdip_solve": 0.0044512, + "mapping_matrix + pdip_solve + regularization_H": 0.004067300000000001, + "inversion_other + mesh_locate_walk + mesh_seed_argmin": 0.003696, + "inversion_other + mesh_dual_areas + mesh_locate_walk + pdip_solve": 0.0034976, + "inversion_other + mesh_interpolation_weights": 0.0034400000000000003, + "inversion_other + mesh_construction + mesh_interpolation_weights + pdip_solve + regularization_H": 0.0033185000000000007, + "inversion_other + mesh_construction + regularization_H": 0.0027264, + "chi_squared_evidence + inversion_other": 0.0023584, + "inversion_other + mapping_matrix": 0.0021696000000000003 + }, + "example_kernels": { + "curvature_matrix_F + psf_convolution_mapping_matrix": [ + "loop_divide_gather_fusion" + ], + "curvature_reg_reduce_gather + inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter + regularization_H": [ + "input_add_multiply_transpose_fusion" + ], + "pdip_solve + psf_convolution_mapping_matrix": [ + "loop_broadcast_fusion.7" + ], + "data_vector_D + pdip_solve": [ + "input_reduce_fusion.21", + "input_reduce_fusion.47" + ], + "mapped_reconstruction + pdip_solve": [ + "input_reduce_fusion.25" + ], + "mapping_matrix + pdip_solve": [ + "loop_broadcast_fusion.8", + "loop_divide_fusion" + ], + "pdip_solve + regularization_H": [ + "loop_broadcast_fusion", + "input_transpose_fusion.6" + ], + "inversion_other + pdip_solve + regularization_H": [ + "input_transpose_fusion.7", + "loop_log_fusion" + ], + "inversion_other + pdip_solve": [ + "input_reduce_fusion.23", + "input_reduce_fusion.24", + "input_transpose_fusion.3", + "input_reduce_fusion.29" + ], + "inversion_other + regularization_H": [ + "input_reduce_fusion.44", + "input_reduce_fusion.37", + "input_reduce_fusion.38", + "input_reduce_fusion.39" + ] + }, + "prorated_estimate_ms": { + "psf_convolution_mapping_matrix": 10.61672645, + "curvature_matrix_F": 8.6285023, + "pdip_solve": 6.680758236666668, + "mapped_reconstruction": 2.16638815, + "regularization_H": 1.907136385, + "inversion_other": 1.6625870766666666, + "reconstruction_scatter": 1.2887429000000001, + "curvature_reg_reduce_gather": 1.2836755666666668, + "data_vector_D": 0.9788652499999999, + "mapping_matrix": 0.890727751666667, + "mesh_interpolation_weights": 0.060331970000000006, + "mesh_construction": 0.04096294500000001, + "ray_trace_data_grid": 0.02396285833333333, + "mesh_dual_areas": 0.01869841833333333, + "grids_and_structures": 0.01729605833333333, + "mass_profile_deflections": 0.01729605833333333, + "chi_squared_evidence": 0.011892900000000001, + "mesh_locate_walk": 0.0095956, + "border_relocator": 0.009473700000000003, + "mesh_seed_argmin": 0.008436125 + }, + "prorated_note": "ESTIMATE ONLY \u2014 a mixed fusion's time split equally across the stages its constituents span. Never summed into the measured table, never reconciled." + }, + "other_sources_ms": { + "copy.138": 0.04782109999999985, + "copy.123": 0.03263710000000005, + "copy.141": 0.03252490000000003, + "copy.140": 0.032499600000000024, + "copy.142": 0.032099300000000025, + "copy.139": 0.02960969999999999, + "copy.121": 0.02258580000000002, + "copy.122": 0.022438500000000007, + "loop_broadcast_fusion.2": 0.0026240999999999994, + "copy.137": 0.0023616, + "copy.97": 0.0022976, + "copy.58": 0.0021792, + "loop_broadcast_fusion.5": 0.0014015999999999998 + }, + "device_span_ms": 983.0956613000001, + "device_busy_ms": 865.5984667999999, + "device_idle_ms": 117.4971945000002, + "largest_idle_gaps": [ + { + "gap_ms": 5.422875, + "after": "pure_callback.0", + "before": "pure_callback.0" + }, + { + "gap_ms": 5.148058, + "after": "pure_callback.0", + "before": "pure_callback.0" + }, + { + "gap_ms": 4.925337, + "after": "pure_callback.0", + "before": "pure_callback.0" + }, + { + "gap_ms": 4.920217, + "after": "pure_callback.0", + "before": "pure_callback.0" + }, + { + "gap_ms": 4.912537, + "after": "pure_callback.0", + "before": "pure_callback.0" + }, + { + "gap_ms": 4.893369, + "after": "pure_callback.0", + "before": "pure_callback.0" + }, + { + "gap_ms": 4.885785, + "after": "pure_callback.0", + "before": "pure_callback.0" + }, + { + "gap_ms": 4.885497, + "after": "pure_callback.0", + "before": "pure_callback.0" + } + ], + "kernel_ms": 864.5078620000169, + "sum_ms": 982.0050565000171, + "wall_ms": 983.1974248998449, + "host_outside_span_ms": 0.10176359984484407, + "reconciliation_pct": -0.12127456496840446, + "unjoined_ms": 0.0, + "unjoined_pct": 0.0, + "other_ms": 0.2628649999999998, + "other_pct": 0.0267357290959928, + "note": "Stage rows attribute the command-buffers-OFF program (see the module docstring): kernel times are the same, the launch overhead the CUDA graphs remove is not. sum_ms = kernel rows + device_idle_ms; the residual against wall_ms is host_outside_span_ms (dispatch before the first kernel, teardown after the last).", + "per_stage_ms_per_lane": { + "border_relocator": 0.00551709375, + "curvature_matrix_F": 4.14451453125, + "inversion_other": 0.8685733437500001, + "mapping_matrix": 0.00341803125, + "mesh_construction": 0.0005859999999999999, + "mesh_dual_areas": 0.000396, + "mesh_locate_walk": 0.05323243749999998, + "mesh_qhull_callback": 0.012388125000000005, + "mesh_seed_argmin": 0.08683443749999997, + "mixed_fusion": 2.26561653125, + "other": 0.016429062499999987, + "pdip_solve": 39.45120581250106, + "psf_convolution_mapping_matrix": 7.122855968749999, + "regularization_H": 0.000174 + }, + "per_lane_divisor": 16, + "host_callback": { + "pure_callback_span_ms": 84.32977940000004, + "qhull_ms": 73.77305450000001, + "callback_body_ms_note": "the OUTERMOST matching body event, not a sum: under the probe the body appears twice (the wrapper and the timed re-implementation it calls) and summing them would count the same work twice", + "events_by_name": { + "pure_callback.0": { + "count": 160, + "ms": 84.32977940000004 + }, + "$callback.py:815 _wrapped_callback": { + "count": 160, + "ms": 77.60940430000004 + }, + "$callback.py:224 _callback": { + "count": 160, + "ms": 77.25697470000003 + }, + "$callback.py:74 pure_callback_impl": { + "count": 160, + "ms": 77.11895030000001 + }, + "$callback.py:69 __call__": { + "count": 160, + "ms": 74.01667320000003 + }, + "$delaunay.py:162 ": { + "count": 160, + "ms": 73.90968079999999 + }, + "$host_callback_probe.py:225 wrapped": { + "count": 160, + "ms": 73.77305450000001 + }, + "$host_callback_probe.py:160 _timed_tri_only": { + "count": 160, + "ms": 73.65393510000004 + }, + "$callback.py:822 ": { + "count": 640, + "ms": 0.21493199999999957 + }, + "ThenExecuteCallback:GetEventForComputeStreamSyncPoint": { + "count": 10, + "ms": 0.031331700000000004 + }, + "$__init__.py:132 _xla_gc_callback": { + "count": 2, + "ms": 0.00041300000000000006 + } + }, + "note": "HOST milliseconds per traced BATCH (the whole invocation), aggregated by name because the events nest. Not a row of the device table: the device pays for them as the idle gaps largest_idle_gaps names." + }, + "host_callback_ms": 84.32977940000004 + }, + "hlo_census": { + "status": "excluded", + "reason": "The legacy census anchors PyAutoArray source line numbers that moved after the phase-1 run. No batched attribution is published from unsupported anchors; the device-event table and wall reconciliation remain valid." + }, + "trace_split": { + "expected_calls": 10, + "executions_per_invocation": 1, + "method": "per-call (first-instruction recurrence)", + "note": "DECIDED IN CODE: the scalar arm's trace is split by trace_calls * B, so every lane's execution is its own block and the per-stage median is taken over all of them. The vmap arm's is split by trace_calls, one block per batched execution, and per_stage_ms_per_lane divides those rows by B." + } + }, + "scalar": { + "arm": "scalar", + "program": "jax.jit(fn), called B times", + "stands_for": "Nautilus(use_jax_vmap=False, use_jax_jit=True). Plain use_jax_vmap=False is UNJITTED and is NOT this arm", + "hlo_source": "jax.jit(fn).lower(lane_trees[0]) \u2014 the same program phase 1 traced", + "batch_wall_ms": 623.1401064000238, + "wall_production_nesting_ms": 623.1401064000238, + "wall_aot_command_buffers_on_ms": 624.67713799997, + "wall_aot_command_buffers_off_ms": 629.2699801000708, + "command_buffer_delta_ms": 4.592842100100825, + "production_nesting_vs_aot_on_delta_ms": -1.5370315999462036, + "production_nesting_vs_aot_on_delta_pct": -0.24605216142010905, + "wall_per_lane_ms": 38.94625665000149, + "wall_per_lane_command_buffers_off_ms": 39.32937375625443, + "traced_batch_wall_ms": 648.9253239000391, + "untraced_batch_wall_ms": 630.6407185998978, + "traced_wall_per_lane_ms": 40.55783274375244, + "callback_count_per_call": 16.0, + "callback_count_per_lane": 1.0, + "callback_expectation": "1 per likelihood evaluation, B per batch", + "host_qhull_ms": 72.32723560045997, + "host_tables_ms": 1.8967355994391255, + "host_qhull_ms_per_lane": 4.520452225028748, + "host_tables_ms_per_lane": 0.11854597496494534, + "host_callback_probe": { + "calls": 160, + "qhull_ms_total": 723.2723560045997, + "tables_ms_total": 18.967355994391255, + "total_ms_total": 742.239711998991, + "qhull_ms_mean": 4.520452225028748, + "tables_ms_mean": 0.11854597496494534, + "total_ms_mean": 4.638998199993694, + "non_finite_calls": 0, + "n_points": [ + 1500 + ] + }, + "host_callback_records_first": [ + { + "n_points": 1500, + "qhull_ms": 4.733442001452204, + "tables_ms": 0.17900799866765738, + "total_ms": 4.912450000119861, + "finite": true + }, + { + "n_points": 1500, + "qhull_ms": 4.471472999284742, + "tables_ms": 0.11633800022536889, + "total_ms": 4.587810999510111, + "finite": true + }, + { + "n_points": 1500, + "qhull_ms": 4.518871999607654, + "tables_ms": 0.13704999946639873, + "total_ms": 4.655921999074053, + "finite": true + }, + { + "n_points": 1500, + "qhull_ms": 4.520321999734733, + "tables_ms": 0.1152199984062463, + "total_ms": 4.63554199814098, + "finite": true + } + ], + "device_idle_ms": 7.038046343749997, + "device_idle_ms_per_lane": 7.038046343749997, + "trace": { + "parser": "ProfileData.from_file(xplane) + as_text() + stack_frame_index(proto field 17)", + "stage_audit": { + "mixed_fusion": [ + { + "instruction": "loop_divide_gather_fusion", + "ms": 1.01618255, + "opcode": "fusion", + "shape": "(f64[15361,1,1,1500]{3,2,1,0}, f64[15361,1,1,1500]{3,2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_broadcast_fusion.4", + "ms": 0.22685640624999995, + "opcode": "fusion", + "shape": "f64[1500,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_reduce_fusion.13", + "ms": 0.12212294375, + "opcode": "fusion", + "shape": "f64[92,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123 (data_vector_via_blurred_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:67 (InversionImagingMapping.data_vector)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:699 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_reduce_fusion.17", + "ms": 0.11467717499999995, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163 (mapped_reconstructed_data_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:120 (InversionImagingMapping._mapped_reconstructed_data_dict_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:196 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "loop_broadcast_fusion.2", + "ms": 0.11074701249999995, + "opcode": "fusion", + "shape": "f64[15361,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:342", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:342 (mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:283 (Mapper.mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:91 (AbstractInversionImaging._mapping_matrix_for_convolution_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:137 (AbstractInversionImaging.operated_mapping_matrix_list)" + ] + }, + { + "instruction": "input_multiply_transpose_fusion", + "ms": 0.1094647, + "opcode": "fusion", + "shape": "(f64[1500,1500]{1,0}, f64[1500,1500]{1,0}, f64[1500,1500]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:237 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:274 (_certified_positive_only_from)" + ] + } + ], + "border_relocator": [ + { + "instruction": "eigh.45", + "ms": 0.0747120687499999, + "opcode": "custom-call", + "shape": "(f64[2,2]{0,1}, f64[2]{0}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "custom-call.2", + "ms": 0.007940712500000002, + "opcode": "custom-call", + "shape": "(f64[2,2]{1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_reduce_fusion.18", + "ms": 0.005587918750000001, + "opcode": "fusion", + "shape": "(f64[], f64[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:269", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:269 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_add_fusion.7", + "ms": 0.0035423562500000007, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:423 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:208 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_add_fusion.9", + "ms": 0.003390181250000005, + "opcode": "fusion", + "shape": "f64[1500]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:458 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_concatenate_fusion.12", + "ms": 0.002420368749999997, + "opcode": "fusion", + "shape": "f64[392,2]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:238", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:238 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + } + ], + "mesh_construction": [ + { + "instruction": "input_concatenate_fusion.7", + "ms": 0.0020611750000000028, + "opcode": "fusion", + "shape": "f64[1500,2]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:820", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:820 (InterpolatorDelaunay.mesh_grid_xy)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:847 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + } + ], + "mesh_qhull_callback": [ + { + "instruction": "pure_callback.4", + "ms": 0.010633525000000033, + "opcode": "custom-call", + "shape": "(s32[3000,3]{1,0}, s32[3000,3]{1,0}, s32[1500]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:161", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:161 (_jax_delaunay_tables)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:405 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + } + ], + "other": [ + { + "instruction": "copy.106", + "ms": 0.04206421875000185, + "opcode": "copy", + "shape": "f64[1,1024,2]{2,1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.70", + "ms": 0.016997462500000067, + "opcode": "copy", + "shape": "s32[21361]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.75", + "ms": 0.0019839874999999997, + "opcode": "copy", + "shape": "s64[1500]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.105", + "ms": 0.001800175, + "opcode": "copy", + "shape": "s32[]", + "source": "", + "stack": [] + }, + { + "instruction": "copy.104", + "ms": 0.0017587874999999999, + "opcode": "copy", + "shape": "s64[]", + "source": "", + "stack": [] + }, + { + "instruction": "copy.61", + "ms": 0.0016451812499999976, + "opcode": "copy", + "shape": "s32[]", + "source": "", + "stack": [] + } + ], + "mesh_seed_argmin": [ + { + "instruction": "input_reduce_fusion", + "ms": 0.14923728124999885, + "opcode": "fusion", + "shape": "(f64[1024]{0}, s64[1024]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:191", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:191 (_nearest_vertex_seed_from..argmin_chunk)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)" + ] + }, + { + "instruction": "loop_dynamic_update_slice_fusion", + "ms": 0.04132142499999959, + "opcode": "fusion", + "shape": "s32[21,1024]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_add_fusion", + "ms": 0.0319596874999985, + "opcode": "fusion", + "shape": "s64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_broadcast_fusion", + "ms": 0.001969968750000002, + "opcode": "fusion", + "shape": "s32[21,1024]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "pdip_solve": [ + { + "instruction": "cholesky.60", + "ms": 5.895535906249981, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "cholesky.80", + "ms": 3.7716603000000033, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:106", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:106 (factorize_kkt)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:212 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve.1", + "ms": 1.0602555687500193, + "opcode": "custom-call", + "shape": "(f64[1500,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "triangular-solve", + "ms": 0.9150642125000006, + "opcode": "custom-call", + "shape": "(f64[1500,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "cholesky.110", + "ms": 0.8895390812499994, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:297 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:274 (_certified_positive_only_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:496 (reconstruction_positive_only_from)" + ] + }, + { + "instruction": "cholesky.100", + "ms": 0.8622849687500019, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:237 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:274 (_certified_positive_only_from)" + ] + } + ], + "regularization_H": [ + { + "instruction": "input_scatter_fusion.10", + "ms": 0.0020717625, + "opcode": "fusion", + "shape": "f64[1500,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:615", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:615 (pixel_splitted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:137 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_concatenate_fusion.9", + "ms": 0.0018711750000000018, + "opcode": "fusion", + "shape": "pred[3]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:91", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:91 (split_points_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:410 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + }, + { + "instruction": "input_concatenate_fusion.8", + "ms": 0.001868987500000002, + "opcode": "fusion", + "shape": "pred[3]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:93", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:93 (split_points_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:410 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + }, + { + "instruction": "input_concatenate_fusion.10", + "ms": 0.001855962500000001, + "opcode": "fusion", + "shape": "pred[3]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:90", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:90 (split_points_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:410 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + }, + { + "instruction": "input_concatenate_fusion", + "ms": 0.0017665874999999987, + "opcode": "fusion", + "shape": "s32[1500,2]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:615", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:615 (pixel_splitted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:137 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_concatenate_fusion.11", + "ms": 0.0015551812499999987, + "opcode": "fusion", + "shape": "pred[3]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:88", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:88 (split_points_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:410 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + } + ], + "mesh_locate_walk": [ + { + "instruction": "loop_reduce_fusion", + "ms": 0.02537100000000025, + "opcode": "fusion", + "shape": "(f64[21361]{0}, s64[21361]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:264", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:264 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:264 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)" + ] + }, + { + "instruction": "input_reduce_fusion.1", + "ms": 0.024173693749999777, + "opcode": "fusion", + "shape": "pred[196]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:288", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:288 (_walk_from_seed..cond)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)" + ] + }, + { + "instruction": "loop_or_select_fusion", + "ms": 0.02259331249999992, + "opcode": "fusion", + "shape": "(s32[21361]{0}, pred[21361]{0}, pred[21361]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:270", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:270 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)" + ] + }, + { + "instruction": "loop_select_fusion", + "ms": 0.02015188124999996, + "opcode": "fusion", + "shape": "s32[21361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:242", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:242 (_walk_from_seed..weights_of)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:262 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)" + ] + }, + { + "instruction": "input_reduce_fusion.2", + "ms": 0.016261350000000098, + "opcode": "fusion", + "shape": "pred[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:288", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:288 (_walk_from_seed..cond)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)" + ] + }, + { + "instruction": "while.34", + "ms": 0.014478906249999883, + "opcode": "while", + "shape": "(s32[], s32[21361]{0}, pred[21361]{0}, pred[21361]{0}, s32[3000,3]{1,0}, /*index=5*/f64[1500,2]{1,0}, f64[21361,2]{1,0}, s32[3000,3]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "psf_convolution_mapping_matrix": [ + { + "instruction": "input_scatter_fusion", + "ms": 1.9813170499999992, + "opcode": "fusion", + "shape": "f64[1500,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.19.0", + "ms": 1.7578670187499987, + "opcode": "fft", + "shape": "f64[1500,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.15.0", + "ms": 1.3664876625000009, + "opcode": "fft", + "shape": "c128[1500,180,91]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.17.0", + "ms": 0.9794295187499994, + "opcode": "fft", + "shape": "c128[1500,91,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_transpose_fusion.4", + "ms": 0.5138982312500002, + "opcode": "fusion", + "shape": "c128[1500,91,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "wrapped_transpose", + "ms": 0.49981874375000007, + "opcode": "fusion", + "shape": "c128[1500,180,91]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + } + ], + "inversion_other": [ + { + "instruction": "cholesky.120", + "ms": 0.893844968750001, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1078 (AbstractInversion.log_det_curvature_reg_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:347 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "cholesky.130", + "ms": 0.8885384437500004, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1157 (AbstractInversion.log_det_regularization_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:348 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "loop_reduce_window_fusion", + "ms": 0.002868962499999998, + "opcode": "fusion", + "shape": "s64[6,16]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "loop_reduce_window_fusion.1", + "ms": 0.0027941812499999996, + "opcode": "fusion", + "shape": "s64[94,16]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "loop_broadcast_convert_fusion", + "ms": 0.002191568749999996, + "opcode": "fusion", + "shape": "(s32[1500]{0}, s64[1500]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527 (AbstractInversion.zeroed_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:567 (AbstractInversion.solve_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:684 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_scatter_fusion.5", + "ms": 0.0019479874999999986, + "opcode": "fusion", + "shape": "s64[1500]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527 (AbstractInversion.zeroed_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:567 (AbstractInversion.solve_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:684 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "mapping_matrix": [ + { + "instruction": "input_reduce_fusion.31", + "ms": 0.00288934374999999, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:120 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + } + ], + "curvature_matrix_F": [ + { + "instruction": "cublas-lt-matmul.2", + "ms": 4.248923318749999, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "chi_squared_evidence": [ + { + "instruction": "loop_multiply_fusion.2", + "ms": 0.002985412499999996, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:300", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:300 (AbstractNDArray.__pow__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:60 (unwrap_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:35 (to_new_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:78 (chi_squared_map_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:78 (AbstractFit.chi_squared_map)" + ] + } + ] + }, + "stage_audit_note": "The HLO instructions that contributed most of each stage's milliseconds, with their full source stack. A stage row is only as good as the rules that built it; this is how a reader checks a row against the HLO instead of trusting it.", + "untraced_wall_ms": 39.41504491249361, + "reconciliation_vs_untraced_pct": -23.025230819582127, + "wall_basis": "wall_ms is the TRACED run's wall, the run these kernel durations came from. untraced_wall_ms is the same executable without the profiler; the difference is the profiler's overhead and belongs in neither the stages nor the idle row.", + "calls": 160, + "call_split": "per-call (first-instruction recurrence)", + "call_blocks": 160, + "events": 98790, + "streams": [ + "Stream #14(Memset,MemcpyD2H,Compute,MemcpyH2D,MemcpyD2D)" + ], + "per_stage_ms": { + "border_relocator": { + "median_ms": 0.101054, + "min_ms": 0.10041200000000002, + "max_ms": 0.10230200000000002 + }, + "chi_squared_evidence": { + "median_ms": 0.002944, + "min_ms": 0.002848, + "max_ms": 0.00336 + }, + "curvature_matrix_F": { + "median_ms": 4.2460915, + "min_ms": 4.231661, + "max_ms": 4.314042 + }, + "inversion_other": { + "median_ms": 1.794964, + "min_ms": 1.778482, + "max_ms": 1.80594 + }, + "mapping_matrix": { + "median_ms": 0.00288, + "min_ms": 0.002879, + "max_ms": 0.002912 + }, + "memset": { + "median_ms": 0.021343999999999995, + "min_ms": 0.009951, + "max_ms": 0.10031899999999999 + }, + "mesh_construction": { + "median_ms": 0.002048, + "min_ms": 0.002047, + "max_ms": 0.00208 + }, + "mesh_locate_walk": { + "median_ms": 0.14809450000000002, + "min_ms": 0.13039800000000001, + "max_ms": 0.18339200000000003 + }, + "mesh_qhull_callback": { + "median_ms": 0.010592, + "min_ms": 0.010495, + "max_ms": 0.011072000000000002 + }, + "mesh_seed_argmin": { + "median_ms": 0.22449350000000015, + "min_ms": 0.22418500000000013, + "max_ms": 0.2248270000000002 + }, + "mixed_fusion": { + "median_ms": 1.9843225000000002, + "min_ms": 1.9764949999999994, + "max_ms": 1.9972369999999995 + }, + "other": { + "median_ms": 0.06620649999999999, + "min_ms": 0.063579, + "max_ms": 0.07391900000000001 + }, + "pdip_solve": { + "median_ms": 7.5871984999999995, + "min_ms": 2.417604, + "max_ms": 50.35396399999999 + }, + "psf_convolution_mapping_matrix": { + "median_ms": 7.0983845, + "min_ms": 7.082967999999999, + "max_ms": 7.112631 + }, + "regularization_H": { + "median_ms": 0.010976, + "min_ms": 0.010879999999999999, + "max_ms": 0.011231999999999999 + } + }, + "stage_order": [ + "border_relocator", + "mesh_qhull_callback", + "mesh_seed_argmin", + "mesh_locate_walk", + "mesh_construction", + "mapping_matrix", + "psf_convolution_mapping_matrix", + "curvature_matrix_F", + "regularization_H", + "pdip_solve", + "chi_squared_evidence", + "inversion_other", + "mixed_fusion", + "other", + "memset" + ], + "mixed_fusion": { + "ms": 1.9843225000000002, + "constituent_stage_sets": { + "curvature_matrix_F + psf_convolution_mapping_matrix": 1.01618255, + "pdip_solve + psf_convolution_mapping_matrix": 0.22685640624999995, + "data_vector_D + pdip_solve": 0.12582651250000004, + "mapped_reconstruction + pdip_solve": 0.11467717499999995, + "mapping_matrix + pdip_solve": 0.11311618749999988, + "curvature_reg_reduce_gather + inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": 0.1094647, + "pdip_solve + regularization_H": 0.04574368125000003, + "inversion_other + pdip_solve + regularization_H": 0.024028306250000003, + "inversion_other + pdip_solve": 0.023009943750000022, + "inversion_other + mapping_matrix + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin + pdip_solve": 0.021254193749999994, + "inversion_other + mesh_construction + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin + pdip_solve + regularization_H": 0.018688974999999986, + "inversion_other + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + pdip_solve + regularization_H": 0.014765443749999992, + "pdip_solve + ray_trace_data_grid": 0.013713206249999926, + "border_relocator + pdip_solve": 0.013252043749999977, + "inversion_other + mapping_matrix + mesh_construction + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin": 0.011749874999999996, + "grids_and_structures + mass_profile_deflections + pdip_solve": 0.010185662500000007, + "grids_and_structures + mass_profile_deflections + pdip_solve + ray_trace_data_grid": 0.009021918750000005, + "chi_squared_evidence + pdip_solve": 0.007643331249999998, + "inversion_other + mesh_construction + mesh_seed_argmin + pdip_solve + regularization_H": 0.007074362499999999, + "inversion_other + mesh_dual_areas + mesh_locate_walk": 0.0067975187499999664, + "inversion_other + mesh_construction + pdip_solve + regularization_H": 0.006546906249999998, + "grids_and_structures + mass_profile_deflections + ray_trace_data_grid": 0.005509749999999998, + "inversion_other + pdip_solve + ray_trace_data_grid": 0.00529954999999999, + "inversion_other + regularization_H": 0.005251937499999984, + "inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": 0.0048135625, + "inversion_other + mapped_reconstruction": 0.0037877499999999973, + "mapping_matrix + pdip_solve + regularization_H": 0.0034847687500000027, + "inversion_other + mesh_construction + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin": 0.0031391749999999993, + "inversion_other + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin": 0.002967537499999995, + "inversion_other + mesh_construction + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin + regularization_H": 0.0027021937500000016, + "inversion_other + mesh_dual_areas + mesh_locate_walk + pdip_solve": 0.0026039500000000037, + "inversion_other + mesh_locate_walk + mesh_seed_argmin": 0.0025089750000000014, + "inversion_other + mesh_interpolation_weights": 0.0021447562500000027, + "chi_squared_evidence + inversion_other": 0.0018979937500000006 + }, + "example_kernels": { + "curvature_matrix_F + psf_convolution_mapping_matrix": [ + "loop_divide_gather_fusion" + ], + "pdip_solve + psf_convolution_mapping_matrix": [ + "loop_broadcast_fusion.4" + ], + "data_vector_D + pdip_solve": [ + "input_reduce_fusion.13", + "input_reduce_fusion.29" + ], + "mapped_reconstruction + pdip_solve": [ + "input_reduce_fusion.17" + ], + "mapping_matrix + pdip_solve": [ + "loop_broadcast_fusion.2", + "loop_divide_fusion" + ], + "curvature_reg_reduce_gather + inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": [ + "input_multiply_transpose_fusion" + ], + "pdip_solve + regularization_H": [ + "loop_select_fusion.5", + "input_transpose_fusion.5" + ], + "inversion_other + pdip_solve + regularization_H": [ + "input_transpose_fusion.6" + ], + "inversion_other + pdip_solve": [ + "input_reduce_fusion.15", + "loop_log_fusion", + "input_reduce_fusion.16", + "input_reduce_fusion.20" + ], + "inversion_other + mapping_matrix + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin + pdip_solve": [ + "input_scatter_fusion.6", + "input_scatter_fusion.3" + ] + }, + "prorated_estimate_ms": { + "psf_convolution_mapping_matrix": 0.621519478125, + "curvature_matrix_F": 0.508091275, + "pdip_solve": 0.39309393820684513, + "mapped_reconstruction": 0.08232879312499998, + "inversion_other": 0.06904186226934524, + "data_vector_D": 0.06291325625000002, + "mapping_matrix": 0.06233477005208327, + "regularization_H": 0.04330155992559524, + "reconstruction_scatter": 0.023096330625, + "curvature_reg_reduce_gather": 0.02189294, + "mesh_construction": 0.014370236852678566, + "ray_trace_data_grid": 0.01271518281249996, + "mesh_locate_walk": 0.012610882581845225, + "mesh_interpolation_weights": 0.012391015915178568, + "mesh_seed_argmin": 0.011108927998511903, + "mesh_dual_areas": 0.008529098177083319, + "grids_and_structures": 0.007487283854166669, + "mass_profile_deflections": 0.007487283854166669, + "border_relocator": 0.006626021874999988, + "chi_squared_evidence": 0.004770662499999999 + }, + "prorated_note": "ESTIMATE ONLY \u2014 a mixed fusion's time split equally across the stages its constituents span. Never summed into the measured table, never reconciled." + }, + "other_sources_ms": { + "copy.106": 0.04206421875000185, + "copy.70": 0.016997462500000067, + "copy.75": 0.0019839874999999997, + "copy.105": 0.001800175, + "copy.104": 0.0017587874999999999, + "copy.61": 0.0016451812499999976, + "copy.103": 0.0004564000000000001, + "copy.40": 0.00038679375000000017 + }, + "device_span_ms": 40.55124409375, + "device_busy_ms": 33.51319775, + "device_idle_ms": 7.038046343749997, + "largest_idle_gaps": [ + { + "gap_ms": 5.471902, + "after": "pure_callback.4", + "before": "pure_callback.4" + }, + { + "gap_ms": 0.034079, + "after": "pure_callback.4", + "before": "copy.105" + }, + { + "gap_ms": 0.034079, + "after": "copy.70", + "before": "input_reduce_fusion.1" + }, + { + "gap_ms": 0.031167, + "after": "loop_add_fusion", + "before": "copy.106" + }, + { + "gap_ms": 0.029344, + "after": "loop_add_fusion.8", + "before": "input_reduce_fusion.14" + }, + { + "gap_ms": 0.025887, + "after": "input_concatenate_fusion.7", + "before": "pure_callback.4" + }, + { + "gap_ms": 0.020896, + "after": "while.40", + "before": "input_reduce_select_fusion" + }, + { + "gap_ms": 0.020319, + "after": "eigh.45", + "before": "eigh.45" + } + ], + "kernel_ms": 23.3015935, + "sum_ms": 30.339639843749996, + "wall_ms": 40.55783274375244, + "host_outside_span_ms": 0.006588650002441909, + "reconciliation_pct": -25.19412949050258, + "unjoined_ms": 0.0, + "unjoined_pct": 0.0, + "other_ms": 0.06620649999999999, + "other_pct": 0.16323973822343474, + "note": "Stage rows attribute the command-buffers-OFF program (see the module docstring): kernel times are the same, the launch overhead the CUDA graphs remove is not. sum_ms = kernel rows + device_idle_ms; the residual against wall_ms is host_outside_span_ms (dispatch before the first kernel, teardown after the last).", + "per_stage_ms_per_lane": { + "border_relocator": 0.101054, + "chi_squared_evidence": 0.002944, + "curvature_matrix_F": 4.2460915, + "inversion_other": 1.794964, + "mapping_matrix": 0.00288, + "memset": 0.021343999999999995, + "mesh_construction": 0.002048, + "mesh_locate_walk": 0.14809450000000002, + "mesh_qhull_callback": 0.010592, + "mesh_seed_argmin": 0.22449350000000015, + "mixed_fusion": 1.9843225000000002, + "other": 0.06620649999999999, + "pdip_solve": 7.5871984999999995, + "psf_convolution_mapping_matrix": 7.0983845, + "regularization_H": 0.010976 + }, + "per_lane_divisor": 1, + "host_callback": { + "pure_callback_span_ms": 79.86106850000004, + "qhull_ms": 74.37435889999995, + "callback_body_ms_note": "the OUTERMOST matching body event, not a sum: under the probe the body appears twice (the wrapper and the timed re-implementation it calls) and summing them would count the same work twice", + "events_by_name": { + "pure_callback.4": { + "count": 160, + "ms": 79.86106850000004 + }, + "$callback.py:815 _wrapped_callback": { + "count": 160, + "ms": 78.47551830000002 + }, + "$callback.py:224 _callback": { + "count": 160, + "ms": 78.10033139999999 + }, + "$callback.py:74 pure_callback_impl": { + "count": 160, + "ms": 77.9551307 + }, + "$callback.py:69 __call__": { + "count": 160, + "ms": 74.62516729999999 + }, + "$delaunay.py:162 ": { + "count": 160, + "ms": 74.51630229999998 + }, + "$host_callback_probe.py:225 wrapped": { + "count": 160, + "ms": 74.37435889999995 + }, + "$host_callback_probe.py:160 _timed_tri_only": { + "count": 160, + "ms": 74.2428192 + }, + "ThenExecuteCallback:GetEventForComputeStreamSyncPoint": { + "count": 160, + "ms": 0.30488480000000007 + }, + "$callback.py:822 ": { + "count": 640, + "ms": 0.22714369999999948 + }, + "$__init__.py:132 _xla_gc_callback": { + "count": 2, + "ms": 0.00035299999999999996 + } + }, + "note": "HOST milliseconds per traced BATCH (the whole invocation), aggregated by name because the events nest. Not a row of the device table: the device pays for them as the idle gaps largest_idle_gaps names." + }, + "host_callback_ms": 79.86106850000004 + }, + "hlo_census": { + "status": "excluded", + "reason": "The legacy census anchors PyAutoArray source line numbers that moved after the phase-1 run. No batched attribution is published from unsupported anchors; the device-event table and wall reconciliation remain valid." + }, + "trace_split": { + "expected_calls": 160, + "executions_per_invocation": 16, + "method": "per-call (first-instruction recurrence)", + "note": "DECIDED IN CODE: the scalar arm's trace is split by trace_calls * B, so every lane's execution is its own block and the per-stage median is taken over all of them. The vmap arm's is split by trace_calls, one block per batched execution, and per_stage_ms_per_lane divides those rows by B." + } + } + }, + "certification_report": { + "source": "vmap arm, library solve observed through its stats= out-dict (PyAutoArray #566) and jax.debug.callback(..., ordered=True); ordered because the unordered batching rule returns the lanes permuted. Untimed, separately compiled; max rel diff of its log likelihoods vs the timed arm's: 4.523e-06", + "rows": 16, + "pdip_iter": "NOT AVAILABLE per lane without changing library numerics. The fallback branch calls the library's own reconstruction_positive_only_from, which returns the solution alone \u2014 jax_nnls.solve_nnls' iteration count is discarded inside the library's custom_vjp primal. The PDIP while_loop's cost is in the pdip_solve stage row of each arm's device table instead, which is a max-over-lanes quantity under vmap because every lane runs the same fixed kernel sequence.", + "passes_semantics": "library `passes`: restricted active-set passes run (jax_active_set.solve_certified)" + }, + "lane_construction": { + "draws_sha256": "0d36cfdd54138e3d4343da6cff62621f6145bc8ee8d317d15fbcea328cacd342", + "lane_rows": [ + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315 + ], + "calls": [ + 15 + ], + "stage": "pix1", + "regularization_range": { + "galaxies.source.pixelization.regularization.inner_coefficient": { + "min": 8.610204122811597e-06, + "max": 609.7498208301598 + }, + "galaxies.source.pixelization.regularization.outer_coefficient": { + "min": 3.4330906156470037e-06, + "max": 159.11676392313697 + }, + "galaxies.source.pixelization.regularization.signal_scale": { + "min": 0.12452271846719754, + "max": 0.9404155018121758 + } + }, + "phases": [ + "exploration" + ], + "window_rule": "nautilus_batches.timed_window: consecutive captured calls, in call order, from the FIRST call that is not a prior batch, concatenated and truncated to B; at B == n_batch exactly one real Nautilus batch. Falls back to the latest B lanes if the post-prior lanes run out; never repeats a lane.", + "note": "Lane k is captured lane lane_rows[k]: the mass AND shear of a real Nautilus proposal (nautilus_batch_capture.py), lens light fixed at S3, the S3 light-subtracted dataset shared by every lane. `offsets` in the lane table are the mass offsets from the fiducial; the shear is in the capture file." + }, + "captured": { + "batches_path": "/mnt/ral/jnightin/autolens_profiling_wt/certified-solver-phase-c1-lane-rate/results/breakdown/imaging/nautilus_batches_delaunay_pix1.npz", + "batches_sha256": "e71a5e23026b342d1ff4359b8fb914a87980d8aea0060659d2334dcfa3215c00", + "schema_version": 2, + "n_calls": 932, + "n_lanes": 18640, + "call_sizes_seen": [ + 20 + ], + "calls_by_phase": { + "prior": 15, + "exploration": 917 + }, + "parameter_paths": [ + "galaxies.source.pixelization.regularization.inner_coefficient", + "galaxies.source.pixelization.regularization.outer_coefficient", + "galaxies.source.pixelization.regularization.signal_scale", + "galaxies.lens.mass.centre.centre_0", + "galaxies.lens.mass.centre.centre_1", + "galaxies.lens.mass.einstein_radius", + "galaxies.lens.mass.ell_comps.ell_comps_0", + "galaxies.lens.mass.ell_comps.ell_comps_1", + "galaxies.lens.shear.gamma_1", + "galaxies.lens.shear.gamma_2" + ], + "stage": "pix1", + "regularization": { + "class": "AdaptSplit", + "free": true, + "priors": { + "inner_coefficient": [ + "LogUniform", + 1e-06, + 1000000.0 + ], + "outer_coefficient": [ + "LogUniform", + 1e-06, + 1000000.0 + ], + "signal_scale": [ + "Uniform", + 0.0, + 1.0 + ] + }, + "priors_source": "PyAutoGalaxy packaged config/priors/regularization (adapt_split.yaml / constant.yaml); adapt_split.yaml is identical to euclid_strong_lens_modeling_pipeline/config/priors/regularization/adapt_split.yaml" + }, + "nautilus": { + "departures_from_production": [ + "mass/shear priors are the phase-B cell's Gaussians, not chained from source_lp", + "no positions likelihood", + "the cell's mesh (Hilbert 1500, weight_power 1) in both stages; source_pix_2 redraws a 500-vertex Hilbert grid at weight_power 3.5", + "seeded (production passes no seed)", + "quick updates disabled (iterations_per_quick_update=1e12; render-only)", + "NullPaths: no output directory, so no checkpoint and one Sampler.run call", + "post-fit perform_update skipped (samples / latent variables never built)" + ], + "n_batch": 20, + "n_like_max": 40000, + "n_live": 150, + "number_of_cores": 1, + "production_reference": "euclid_strong_lens_modeling_pipeline/scripts/full_model.py source_pix_1 (n_live=150) / source_pix_2 (n_live=75): af.Nautilus(n_batch=20, **SettingsSearch.search_dict) with use_jax_vmap=True and number_of_cores=1 (SettingsSearch defaults)", + "production_stage": "source_pix_1", + "seed": 1, + "stage": "pix1", + "use_jax_vmap": true, + "version": "1.0.5" + }, + "capture_fit_status": "sampling complete (n_like_max or convergence); post-fit result skipped", + "capture_library_revisions": { + "PyAutoArray": { + "head": "7fa8d2714f7da43fec2b23c31bff580764831670", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoArray" + }, + "PyAutoFit": { + "head": "a736840127be7a3c21e15a5c945e94d8f1082983", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoFit" + }, + "PyAutoGalaxy": { + "head": "70a61e26cd715cefe7012a38285698091246a8a4", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy" + }, + "PyAutoLens": { + "head": "86054bbc19baa2f710a12e04a94fa27ab37cc354", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoLens" + }, + "PyAutoNerves": { + "head": "1fa613aa8d89a79613009fb66f5b4e2d21deb57a", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoNerves" + } + }, + "fingerprint_check": { + "fields": [ + "mesh", + "source_pixels", + "dataset_sha256", + "regularization_class", + "regularization_s0_fiducial", + "border_relocator", + "use_mixed_precision", + "log_evidence_s3_library" + ], + "not_identity": "the regularization coefficients: free per lane since the capture frees them", + "log_evidence_s3_library_rel_diff": 0.0, + "passed": true + }, + "timed_window_vs_capture_pdip": { + "reference": "the capture's own figure of merit (library PDIP, Fitness.call_wrap jax.jit(jax.vmap(call)) over parameter vectors) for the same lanes", + "compared_against": "this cell's jit(vmap) library-PDIP reference", + "n_compared": 16, + "max_rel_diff": 2.981920799591605e-06, + "max_abs_diff_nats": 0.528155098494608, + "gated": false, + "note": "RECORDED, NOT GATED: proves the lane trees rebuilt here are the models the sampler evaluated (a wrong parameter mapping shows up as nats, not 1e-10)." + } + }, + "matched": { + "vmap_wall_per_lane_ms": 60.196023100002094, + "scalar_wall_per_lane_ms": 38.94625665000149, + "speedup_vmap_over_scalar": 0.6469905260236392, + "note": "Both walls are the PRODUCTION nesting of their arm, measured in one process on the same B lanes with the SAME library Settings (no injection). A speedup below 1 means the batch is slower per lane than B sequential jitted calls." + }, + "solver_source": "library", + "solver": "certified", + "certified_fallback": "pdip", + "certified_pass_budget": 16, + "certified_pass_budget_basis": "config default (Settings().certified_pass_budget)", + "certified_tau_rel": 1e-09, + "solver_used": "certified", + "solver_check": { + "solver_used": "certified", + "solver_used_source": "AbstractInversion.positive_only_solver_used on the fiducial S3 inversion, built eagerly on the JAX backend (AnalysisImaging(use_jax=True).fit_from) with the arms' Settings", + "reference_solver_used": "pdip", + "traced_solver_kwargs_jax": [ + "certified" + ], + "observed_calls_jax": 1, + "report_rows": 16, + "report_vs_timed_arm_max_rel_diff": 4.52299316571609e-06 + }, + "lanes_certified": [ + true, + false, + true, + true, + true, + true, + true, + true, + true, + true, + true, + false, + true, + true, + false, + false + ], + "lanes_passes": [ + 10, + 16, + 0, + 0, + 10, + 4, + 0, + 1, + 4, + 0, + 2, + 16, + 9, + 2, + 16, + 16 + ], + "uncertified_lanes": 4, + "per_lane_certification_note": "certified / passes come from the library's own solve through its stats= out-dict (PyAutoArray #566): passes is the number of restricted active-set passes the library ran (0 when the unconstrained solve was already non-negative), certified is its KKT certificate. With certified_fallback=pdip a False lane returned the PDIP solution; with none it returned the last uncertified iterate. null for a library-PDIP row (no certificate).", + "gate": { + "pre_registered": true, + "gated": [ + "per lane: jit(vmap) arm vs jit(vmap) library PDIP <= lane_rtol relative", + "per lane: scalar jit arm vs scalar jit library PDIP <= lane_rtol relative" + ], + "recorded_not_gated": [ + "per lane: jit(vmap) arm vs scalar jit arm (rel_diff, abs_diff_nats)", + "per lane: jit(vmap) library PDIP vs scalar jit library PDIP", + "uncertified_lanes (certified_fallback=none rows)" + ], + "lanes_failed": 5, + "passed": false, + "policy_eligible": false, + "note": "Pre-registered before submission (module docstring; submit header). Phase 3 (results/notes/hst_gpu_residue_phase3_psf_2026_09.md) placed phase 2's ~2.5e-9 certified-vs-PDIP residual BETWEEN the jit(vmap) and scalar-jit compositions, not in the solver \u2014 so each arm is gated against the library-PDIP reference of its OWN composition, and the cross-composition difference is recorded with its nats. A certified_fallback=none row is policy-eligible only if every lane certifies AND passes the gate. Timing is never gated." + }, + "library_revisions": { + "PyAutoArray": { + "head": "3de624b5b91a4efa130dc3cb0a3a0f06f85025a3", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoArray", + "module_file": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/__init__.py" + }, + "PyAutoFit": { + "head": "dd9fbe0aab60c4a57702b1444ca031b317c91331", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoFit", + "module_file": "/mnt/ral/jnightin/PyAuto/PyAutoFit/autofit/__init__.py" + }, + "PyAutoGalaxy": { + "head": "70a61e26cd715cefe7012a38285698091246a8a4", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy", + "module_file": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/__init__.py" + }, + "PyAutoLens": { + "head": "86054bbc19baa2f710a12e04a94fa27ab37cc354", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoLens", + "module_file": "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/__init__.py" + }, + "autoarray_file": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/__init__.py" + } + }, + "headline_arm_note": "`trace`, `hlo_census`, `command_buffers` and `trace_timing` above describe the scalar arm \u2014 the program phase 1 traced. Both arms' full blocks, the lane table and the matched comparison are under `vmap`." +} \ No newline at end of file diff --git a/results/breakdown/imaging/fixed_light_trace_delaunay_jitvmap16_captured_pix1_libcertified_fbon_b16_hpc_a100_fp64_fixed_light_trace.png b/results/breakdown/imaging/fixed_light_trace_delaunay_jitvmap16_captured_pix1_libcertified_fbon_b16_hpc_a100_fp64_fixed_light_trace.png new file mode 100644 index 000000000..2757d7e23 Binary files /dev/null and b/results/breakdown/imaging/fixed_light_trace_delaunay_jitvmap16_captured_pix1_libcertified_fbon_b16_hpc_a100_fp64_fixed_light_trace.png differ diff --git a/results/breakdown/imaging/fixed_light_trace_delaunay_jitvmap16_captured_pix1_libpdip_fbon_b16_hpc_a100_fp64_fixed_light_trace.json b/results/breakdown/imaging/fixed_light_trace_delaunay_jitvmap16_captured_pix1_libpdip_fbon_b16_hpc_a100_fp64_fixed_light_trace.json new file mode 100644 index 000000000..bc75a6a19 --- /dev/null +++ b/results/breakdown/imaging/fixed_light_trace_delaunay_jitvmap16_captured_pix1_libpdip_fbon_b16_hpc_a100_fp64_fixed_light_trace.json @@ -0,0 +1,6403 @@ +{ + "device": { + "backend": "gpu", + "device": "cuda:0", + "hostname": "euclid-ral-gpu-2", + "xla_flags": "--xla_disable_hlo_passes=constant_folding --xla_gpu_autotune_level=0 --xla_gpu_enable_triton_gemm=false", + "omp_num_threads": null, + "cpu_count": 124, + "jax_compilation_cache_dir": "/mnt/ral/jnightin/autolens_profiling_wt/certified-solver-phase-c1-lane-rate/output/jax_cache/fixed_light_lanerate_delaunay_pix1_time_16_pdip_on_350768_8", + "autotune_cache_entries_at_start": 0, + "cache_fresh": true, + "nvidia_smi": "NVIDIA A100 80GB PCIe, 35457 MiB, 81920 MiB" + }, + "machine": { + "cpu_model": "AMD EPYC 7702 64-Core Processor", + "cpu_count_os": 124, + "nproc": 4, + "nproc_all": 124, + "nproc_note": "GNU nproc honours OMP_NUM_THREADS, so `nproc` can print 1 on a multi-core host; `nproc_all` is the core count.", + "ram_total": "928298204 kB", + "kernel": "5.14.0-687.50.1.el9_8.x86_64", + "platform": "Linux-5.14.0-687.50.1.el9_8.x86_64-x86_64-with-glibc2.34", + "python": "3.12.4", + "jax_thread_env": { + "NPROC": null + }, + "blas_thread_env": { + "OMP_NUM_THREADS": null, + "OPENBLAS_NUM_THREADS": null, + "MKL_NUM_THREADS": null, + "VECLIB_MAXIMUM_THREADS": null, + "NUMEXPR_NUM_THREADS": null + }, + "thread_env_note": "NPROC sizes XLA's CPU intra-op pool (the JAX rows); the BLAS knobs pin OpenBLAS/MKL/OpenMP (the numpy/scipy rows) and do not touch JAX. Two disjoint families; both are recorded on every CPU timing.", + "gpu": "NVIDIA A100 80GB PCIe, 81920 MiB, 610.57.04" + }, + "precision": "fp64", + "configuration": { + "pixel_scale_arcsec": 0.05, + "mask_radius_arcsec": 3.5, + "image_pixels_masked": 15361, + "over_sampled_pixels": 62752, + "mesh": "delaunay", + "mesh_shape": null, + "source_pixels": 1500, + "source_pixels_requested": null, + "dataset": "hst", + "dataset_sha256": { + "data.fits": "e4e833a28e9c6f6fb023cd85c0d3dde74068720256bc77a240633500e5b04fac", + "noise_map.fits": "315c6266a0acd3ac9c8da82fcd2b45a08697362481fd7a35072bab1658530ba3", + "psf.fits": "8389ba0e8bf4a09b4a561cfc246181a2fb944ed396754cd0ff76fdd22910d303" + }, + "cell_source_sha256": "06a162fcdae6b329384ec33322f443df07215d86e56f0505ac15b3d3473eb432", + "inversion_path": "dense", + "pass_budget": 7, + "pass_budget_basis": "phase 3 (autolens_profiling#255): the smallest ZERO-fallback budget per mesh, the budget a production run fixes. NOT phase 0's certifying budget (2 for Delaunay), which falls back on 67.5 % of a graded draw set and is not a production cost.", + "border_relocator_mode": "cell", + "border_relocator": true, + "border_relocator_note": "'cell' is use_border_relocator=True, which every profiling cell in this family forces; 'library' passes None and takes the shipped config default, which is what production runs. The resolved boolean is what this leg actually ran.", + "routes_selected": [ + "b", + "d" + ], + "trace_calls": 10, + "command_buffers_traced": "off", + "use_mixed_precision": false, + "tau_rel": 1e-09, + "regularization": { + "scheme": "adapt_split", + "inner_coefficient": 0.1, + "outer_coefficient": 10.0, + "signal_scale": 0.1 + }, + "thread_env": { + "n_threads": null, + "vars": [ + "OPENBLAS_NUM_THREADS", + "MKL_NUM_THREADS", + "OMP_NUM_THREADS", + "VECLIB_MAXIMUM_THREADS", + "NUMEXPR_NUM_THREADS" + ], + "set_to": null, + "preexisting": {}, + "overridden": {}, + "note": "Not pinned (legacy variant): recorded as found." + }, + "over_sample_size_lp_rule": { + "sub_size_list": [ + 4, + 2, + 2 + ], + "radial_list": [ + 0.3, + 0.6 + ], + "centre": [ + 0.0, + 0.0 + ] + }, + "vmap_batch": 16, + "lanes": "captured", + "arms": [ + "vmap", + "scalar" + ], + "fallback": "on", + "draw_seed": 0, + "vmap_composition": "jax.jit(jax.vmap(fn))", + "lane_rtol": 1e-09, + "vmap_flags_note": "Strict ProfileCLI.parse_cell_args rejects unknown flags. These keys record the exact batching program and prevent historical vmap(jit) artifacts from being mistaken for current jit(vmap) measurements.", + "solver_source": "library", + "solver": "pdip", + "certified_fallback": "pdip", + "certified_pass_budget": 16, + "captured_pass": "time", + "batches": "/mnt/ral/jnightin/autolens_profiling_wt/certified-solver-phase-c1-lane-rate/results/breakdown/imaging/nautilus_batches_delaunay_pix1.npz" + }, + "solver_injection": { + "patched": null, + "part_v": "none \u2014 library mode selects the solver through al.Settings", + "part_b_route_d": { + "patched": "autoarray.inversion.inversion.inversion_util.reconstruction_positive_only_from", + "pass_budget": 7, + "fallback": true + }, + "note": "Library mode (phase B, #300): PART V's arms and references run the library's own positive-only solve, selected by Settings(positive_only_solver, certified_fallback, certified_pass_budget); nothing is injected. PART B's single-call route d (the fiducial d == b pin) still uses the phase-1 harness injection at the phase-3 budget and is not a phase-B row. The untimed certification report observes the library solve (library_solver_observed) without changing it." + }, + "routes": { + "b_s3_pdip": { + "label": "S3 PDIP (source-only)", + "status": "ok", + "solver": "library", + "ms": 50.78495950001525, + "log_likelihood": 29155.00017325151 + }, + "d_s3_certified_fallback": { + "label": "S3 certified active set, budget 7, PDIP fallback", + "status": "ok", + "solver": "harness-injected certified active set", + "pass_budget": 7, + "fallback": true, + "injected_solver_calls_jax": 1, + "injected_solver_calls_numpy": 0, + "ms": 31.750443900091337, + "log_likelihood": 29155.00017451813 + } + }, + "equivalence_pins": [ + { + "pin": "route d (certified, fallback) == route b (library PDIP)", + "route": "d_s3_certified_fallback", + "reference": "b_s3_pdip", + "expectation": "the certified active set returns the library's own positive solution", + "rtol": 1e-09, + "got": 29155.00017451813, + "reference_value": 29155.00017325151, + "rel_diff": 4.3444367066475434e-11, + "status": "PASS" + } + ], + "equivalence_rtol": 1e-09, + "reference": { + "log_evidence_s0_library": 29155.00017433923, + "log_evidence_s3_library": 29155.000174339304, + "s3": { + "n_params": 1500, + "n_mapper": 1500, + "n_funcs": 0, + "edge_zeroed_pixels": 0, + "subtracted_light_flux": 5105.448603818575 + } + }, + "command_buffers": { + "wall_on_ms": 808.6460623002495, + "wall_off_ms": 816.1012223001308, + "command_buffer_delta_ms": 7.455159999881289, + "command_buffer_delta_pct": 0.9219311572079597, + "traced": "off", + "compiler_option": "xla_gpu_enable_command_buffer", + "probe": { + "note": "Not taken in --vmap-batch mode: the CUPTI-inside-a-CUDA-graph probe is a phase-1 diagnostic about the JOIN, and this mode already compiles and times both the command-buffers ON and OFF executable of every arm." + }, + "note": "ONE lowering, TWO compilations, one process. wall_on_ms is the PRODUCTION program (CUDA graphs as XLA ships them) and is the number comparable to phase 5's row; wall_off_ms is the graph-less program the stage rows attribute. The delta is the launch overhead the graphs remove \u2014 it lands in device_idle and host_outside_span, not in any stage. Reconciliation is computed against wall_off_ms." + }, + "trace": { + "parser": "ProfileData.from_file(xplane) + as_text() + stack_frame_index(proto field 17)", + "stage_audit": { + "chi_squared_evidence": [ + { + "instruction": "input_reduce_fusion.26", + "ms": 0.003917775, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:104", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:104 (noise_normalization_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:98 (AbstractFit.noise_normalization)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:306 (FitDataset.noise_normalization)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:349 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)" + ] + }, + { + "instruction": "input_reduce_fusion.28", + "ms": 0.0037747749999999915, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:90", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:90 (chi_squared_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:87 (AbstractFit.chi_squared)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:293 (FitDataset.chi_squared)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:345 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)" + ] + }, + { + "instruction": "loop_multiply_fusion.2", + "ms": 0.003001168749999995, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:300", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:300 (AbstractNDArray.__pow__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:60 (unwrap_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:35 (to_new_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:78 (chi_squared_map_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:78 (AbstractFit.chi_squared_map)" + ] + } + ], + "psf_convolution_mapping_matrix": [ + { + "instruction": "input_scatter_fusion", + "ms": 1.9838513812500007, + "opcode": "fusion", + "shape": "f64[1500,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.19.0", + "ms": 1.76107434375, + "opcode": "fft", + "shape": "f64[1500,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.15.0", + "ms": 1.3677336124999995, + "opcode": "fft", + "shape": "c128[1500,180,91]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.17.0", + "ms": 0.9792066249999994, + "opcode": "fft", + "shape": "c128[1500,91,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_transpose_fusion.1", + "ms": 0.5137675937500001, + "opcode": "fusion", + "shape": "c128[1500,91,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "wrapped_transpose", + "ms": 0.4998541, + "opcode": "fusion", + "shape": "c128[1500,180,91]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + } + ], + "mapping_matrix": [ + { + "instruction": "loop_broadcast_fusion.2", + "ms": 0.11097046250000002, + "opcode": "fusion", + "shape": "f64[15361,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:342", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:342 (mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:283 (Mapper.mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:91 (AbstractInversionImaging._mapping_matrix_for_convolution_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:137 (AbstractInversionImaging.operated_mapping_matrix_list)" + ] + }, + { + "instruction": "input_reduce_fusion.29", + "ms": 0.002914968749999992, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:120 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + }, + { + "instruction": "loop_divide_fusion", + "ms": 0.002381581250000002, + "opcode": "fusion", + "shape": "f64[1500]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:92", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:92 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:120 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + } + ], + "mixed_fusion": [ + { + "instruction": "loop_divide_gather_fusion", + "ms": 1.0180024062500006, + "opcode": "fusion", + "shape": "(f64[15361,1,1,1500]{3,2,1,0}, f64[15361,1,1,1500]{3,2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_add_multiply_transpose_fusion", + "ms": 0.06093762499999998, + "opcode": "fusion", + "shape": "(f64[1500,1500]{1,0}, f64[1500,1500]{1,0}, f64[1500,1500]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:61", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:61 (initialize)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:72 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:508 (reconstruction_positive_only_from)" + ] + }, + { + "instruction": "input_transpose_fusion.3", + "ms": 0.024325706249999992, + "opcode": "fusion", + "shape": "f64[1500,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1157 (AbstractInversion.log_det_regularization_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:348 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "input_scatter_fusion.2", + "ms": 0.016327875000000002, + "opcode": "fusion", + "shape": "f64[1500,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:579", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:579 (pixel_splitted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:137 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_scatter_fusion.3", + "ms": 0.014850712500000003, + "opcode": "fusion", + "shape": "f64[1500]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:70", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:70 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:120 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + }, + { + "instruction": "loop_abs_fusion", + "ms": 0.014794250000000004, + "opcode": "fusion", + "shape": "(f64[6000,1]{1,0}, f64[6000,1]{1,0}, f64[6000,1]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:613", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:613 (triangle_area_xp)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:657 (pixel_weights_delaunay_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:982 (InterpolatorDelaunay._mappings_sizes_weights_split)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:124 (AdaptSplit.regularization_matrix_from)" + ] + } + ], + "ray_trace_data_grid": [ + { + "instruction": "input_reduce_fusion.18", + "ms": 0.003240987500000005, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:506", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:506 (FlatLambdaCDM._simpson_1d)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:644 (FlatLambdaCDM.angular_diameter_distance_kpc_z1z2)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:133 (LensingCosmology.angular_diameter_distance_to_earth_in_kpc_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:362 (LensingCosmology.scaling_factor_between_redshifts_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer_util.py:252 (traced_grid_2d_list_from)" + ] + }, + { + "instruction": "input_reduce_fusion.20", + "ms": 0.002768362500000002, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:506", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:506 (FlatLambdaCDM._simpson_1d)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:644 (FlatLambdaCDM.angular_diameter_distance_kpc_z1z2)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:151 (LensingCosmology.angular_diameter_distance_between_redshifts_in_kpc_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:355 (LensingCosmology.scaling_factor_between_redshifts_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer_util.py:252 (traced_grid_2d_list_from)" + ] + }, + { + "instruction": "input_reduce_fusion.19", + "ms": 0.0026012000000000058, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:503", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:503 (FlatLambdaCDM._simpson_1d)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:644 (FlatLambdaCDM.angular_diameter_distance_kpc_z1z2)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:133 (LensingCosmology.angular_diameter_distance_to_earth_in_kpc_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:362 (LensingCosmology.scaling_factor_between_redshifts_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer_util.py:252 (traced_grid_2d_list_from)" + ] + }, + { + "instruction": "input_reduce_fusion.21", + "ms": 0.0025914000000000054, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:503", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:503 (FlatLambdaCDM._simpson_1d)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:644 (FlatLambdaCDM.angular_diameter_distance_kpc_z1z2)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:151 (LensingCosmology.angular_diameter_distance_between_redshifts_in_kpc_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:355 (LensingCosmology.scaling_factor_between_redshifts_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer_util.py:252 (traced_grid_2d_list_from)" + ] + }, + { + "instruction": "loop_divide_fusion.1", + "ms": 0.0025315812500000014, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:380", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:380 (LensingCosmology.scaling_factor_between_redshifts_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer_util.py:252 (traced_grid_2d_list_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer.py:632 (Tracer.traced_grid_2d_list_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/structures/decorators/abstract.py:93 (AbstractMaker.evaluate_func)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/structures/decorators/abstract.py:110 (AbstractMaker.result)" + ] + } + ], + "border_relocator": [ + { + "instruction": "eigh.45", + "ms": 0.07483110624999999, + "opcode": "custom-call", + "shape": "(f64[2,2]{0,1}, f64[2]{0}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "custom-call.2", + "ms": 0.007959975, + "opcode": "custom-call", + "shape": "(f64[2,2]{1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_reduce_fusion.15", + "ms": 0.005811374999999996, + "opcode": "fusion", + "shape": "(f64[], f64[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:269", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:269 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_select_sine_fusion", + "ms": 0.0036667749999999906, + "opcode": "fusion", + "shape": "(f64[], f64[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:301", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:301 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:458 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_concatenate_fusion.3", + "ms": 0.0036359687499999986, + "opcode": "fusion", + "shape": "f64[15361,2]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:323", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:323 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:423 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:208 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_add_fusion.5", + "ms": 0.0035445687500000028, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:423 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:208 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + } + ], + "mesh_construction": [ + { + "instruction": "input_concatenate_fusion.7", + "ms": 0.002053781250000004, + "opcode": "fusion", + "shape": "f64[1500,2]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:820", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:820 (InterpolatorDelaunay.mesh_grid_xy)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:847 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + } + ], + "mesh_qhull_callback": [ + { + "instruction": "pure_callback.4", + "ms": 0.010638512500000029, + "opcode": "custom-call", + "shape": "(s32[3000,3]{1,0}, s32[3000,3]{1,0}, s32[1500]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:161", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:161 (_jax_delaunay_tables)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:405 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + } + ], + "other": [ + { + "instruction": "copy.72", + "ms": 0.042004900000001816, + "opcode": "copy", + "shape": "f64[1,1024,2]{2,1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.35", + "ms": 0.017002456250000093, + "opcode": "copy", + "shape": "s32[21361]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.40", + "ms": 0.0019799687500000017, + "opcode": "copy", + "shape": "s64[1500]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "loop_broadcast_fusion.1", + "ms": 0.0019762125000000034, + "opcode": "fusion", + "shape": "(pred[21361]{0}, pred[21361]{0})", + "source": "", + "stack": [] + }, + { + "instruction": "copy.71", + "ms": 0.0018016062500000013, + "opcode": "copy", + "shape": "s32[]", + "source": "", + "stack": [] + }, + { + "instruction": "loop_broadcast_fusion.4", + "ms": 0.0017822062499999992, + "opcode": "fusion", + "shape": "(f64[1500]{0}, f64[1500]{0}, f64[1500]{0}, f64[1500]{0})", + "source": "", + "stack": [] + } + ], + "mesh_seed_argmin": [ + { + "instruction": "input_reduce_fusion", + "ms": 0.15269622500000266, + "opcode": "fusion", + "shape": "(f64[1024]{0}, s64[1024]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:191", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:191 (_nearest_vertex_seed_from..argmin_chunk)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)" + ] + }, + { + "instruction": "loop_dynamic_update_slice_fusion", + "ms": 0.04129490624999953, + "opcode": "fusion", + "shape": "s32[21,1024]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_add_fusion", + "ms": 0.03184760624999863, + "opcode": "fusion", + "shape": "s64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_broadcast_fusion", + "ms": 0.001955412499999998, + "opcode": "fusion", + "shape": "s32[21,1024]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "regularization_H": [ + { + "instruction": "loop_select_fusion.3", + "ms": 0.020070875000000002, + "opcode": "fusion", + "shape": "f64[1500,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:549", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:549 (pixel_splitted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:137 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_scatter_fusion.10", + "ms": 0.0020686000000000007, + "opcode": "fusion", + "shape": "f64[1500,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:615", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:615 (pixel_splitted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:137 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_concatenate_fusion.8", + "ms": 0.0018732062500000017, + "opcode": "fusion", + "shape": "pred[3]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:93", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:93 (split_points_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:410 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + }, + { + "instruction": "input_concatenate_fusion.9", + "ms": 0.0018491749999999991, + "opcode": "fusion", + "shape": "pred[3]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:91", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:91 (split_points_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:410 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + }, + { + "instruction": "input_concatenate_fusion.10", + "ms": 0.001846981249999998, + "opcode": "fusion", + "shape": "pred[3]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:90", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:90 (split_points_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:410 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + }, + { + "instruction": "input_concatenate_fusion", + "ms": 0.0017675999999999992, + "opcode": "fusion", + "shape": "s32[1500,2]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:615", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:615 (pixel_splitted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:137 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "mesh_locate_walk": [ + { + "instruction": "loop_reduce_fusion", + "ms": 0.02580061874999997, + "opcode": "fusion", + "shape": "(f64[21361]{0}, s64[21361]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:264", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:264 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:264 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)" + ] + }, + { + "instruction": "input_reduce_fusion.1", + "ms": 0.025136112500000016, + "opcode": "fusion", + "shape": "pred[196]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:288", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:288 (_walk_from_seed..cond)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)" + ] + }, + { + "instruction": "loop_or_select_fusion", + "ms": 0.023382499999999754, + "opcode": "fusion", + "shape": "(s32[21361]{0}, pred[21361]{0}, pred[21361]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:270", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:270 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)" + ] + }, + { + "instruction": "loop_select_fusion", + "ms": 0.020160456249999886, + "opcode": "fusion", + "shape": "s32[21361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:242", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:242 (_walk_from_seed..weights_of)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:262 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)" + ] + }, + { + "instruction": "input_reduce_fusion.2", + "ms": 0.01623728750000017, + "opcode": "fusion", + "shape": "pred[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:288", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:288 (_walk_from_seed..cond)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)" + ] + }, + { + "instruction": "while.22", + "ms": 0.014526274999999767, + "opcode": "while", + "shape": "(s32[], s32[21361]{0}, pred[21361]{0}, pred[21361]{0}, s32[3000,3]{1,0}, /*index=5*/f64[1500,2]{1,0}, f64[21361,2]{1,0}, s32[3000,3]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "data_vector_D": [ + { + "instruction": "input_reduce_fusion.10", + "ms": 0.12160307499999996, + "opcode": "fusion", + "shape": "f64[92,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123 (data_vector_via_blurred_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:67 (InversionImagingMapping.data_vector)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:699 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_reduce_fusion.27", + "ms": 0.0036965937499999963, + "opcode": "fusion", + "shape": "f64[1500]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123 (data_vector_via_blurred_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:67 (InversionImagingMapping.data_vector)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:699 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "inversion_other": [ + { + "instruction": "cholesky.60", + "ms": 0.8938812312500021, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1078 (AbstractInversion.log_det_curvature_reg_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:347 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "cholesky.70", + "ms": 0.8923673750000006, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1157 (AbstractInversion.log_det_regularization_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:348 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "input_reduce_fusion.17", + "ms": 0.01297495625, + "opcode": "fusion", + "shape": "f64[1500]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:946", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:946 (AbstractInversion.regularization_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:346 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)", + "/mnt/ral/jnightin/autolens_profiling_wt/certified-solver-phase-c1-lane-rate/scripts/imaging/likelihood_breakdown/fixed_light_trace.py:1195 (_captured_likelihood_fn.._likelihood)" + ] + }, + { + "instruction": "loop_reduce_window_fusion", + "ms": 0.002881393749999993, + "opcode": "fusion", + "shape": "s64[6,16]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "loop_reduce_window_fusion.1", + "ms": 0.0027907937500000002, + "opcode": "fusion", + "shape": "s64[94,16]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "input_reduce_fusion.25", + "ms": 0.00266678125, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:944", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:944 (AbstractInversion.regularization_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:346 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)", + "/mnt/ral/jnightin/autolens_profiling_wt/certified-solver-phase-c1-lane-rate/scripts/imaging/likelihood_breakdown/fixed_light_trace.py:1195 (_captured_likelihood_fn.._likelihood)" + ] + } + ], + "curvature_matrix_F": [ + { + "instruction": "cublas-lt-matmul.2", + "ms": 4.26782450625, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "pdip_solve": [ + { + "instruction": "cholesky.20", + "ms": 16.14834093749997, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:106", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:106 (factorize_kkt)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:212 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve", + "ms": 2.571473356250029, + "opcode": "custom-call", + "shape": "(f64[1500,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:213 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve.2", + "ms": 2.5177017312498977, + "opcode": "custom-call", + "shape": "(f64[1500,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:217 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve.3", + "ms": 2.440972899999916, + "opcode": "custom-call", + "shape": "(f64[1500,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:217 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve.1", + "ms": 2.3317068874999007, + "opcode": "custom-call", + "shape": "(f64[1500,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:213 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "cholesky.40", + "ms": 0.8640322062500013, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:62", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:62 (initialize)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:72 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:508 (reconstruction_positive_only_from)" + ] + } + ], + "mapped_reconstruction": [ + { + "instruction": "input_reduce_fusion.14", + "ms": 0.11515689999999999, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163 (mapped_reconstructed_data_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:120 (InversionImagingMapping._mapped_reconstructed_data_dict_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:196 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + } + ] + }, + "stage_audit_note": "The HLO instructions that contributed most of each stage's milliseconds, with their full source stack. A stage row is only as good as the rules that built it; this is how a reader checks a row against the HLO instead of trusting it.", + "untraced_wall_ms": 50.99743364999085, + "reconciliation_vs_untraced_pct": -0.5315860266644271, + "wall_basis": "wall_ms is the TRACED run's wall, the run these kernel durations came from. untraced_wall_ms is the same executable without the profiler; the difference is the profiler's overhead and belongs in neither the stages nor the idle row.", + "calls": 160, + "call_split": "per-call (first-instruction recurrence)", + "call_blocks": 160, + "events": 153930, + "streams": [ + "Stream #14(Memset,MemcpyD2H,Compute,MemcpyH2D,MemcpyD2D)" + ], + "per_stage_ms": { + "border_relocator": { + "median_ms": 0.11510500000000001, + "min_ms": 0.11436500000000002, + "max_ms": 0.116032 + }, + "chi_squared_evidence": { + "median_ms": 0.010688, + "min_ms": 0.010336000000000001, + "max_ms": 0.011296 + }, + "curvature_matrix_F": { + "median_ms": 4.267072, + "min_ms": 4.247425, + "max_ms": 4.332549 + }, + "data_vector_D": { + "median_ms": 0.12534099999999998, + "min_ms": 0.12447799999999999, + "max_ms": 0.12595299999999998 + }, + "inversion_other": { + "median_ms": 1.818591, + "min_ms": 1.8023280000000002, + "max_ms": 1.830704 + }, + "mapped_reconstruction": { + "median_ms": 0.115169, + "min_ms": 0.114593, + "max_ms": 0.115873 + }, + "mapping_matrix": { + "median_ms": 0.11622199999999999, + "min_ms": 0.115454, + "max_ms": 0.117345 + }, + "memset": { + "median_ms": 0.048959000000000016, + "min_ms": 0.04032000000000001, + "max_ms": 0.08275200000000003 + }, + "mesh_construction": { + "median_ms": 0.002048, + "min_ms": 0.002016, + "max_ms": 0.00208 + }, + "mesh_locate_walk": { + "median_ms": 0.15027249999999998, + "min_ms": 0.132226, + "max_ms": 0.18601800000000013 + }, + "mesh_qhull_callback": { + "median_ms": 0.010592, + "min_ms": 0.010496000000000002, + "max_ms": 0.011072 + }, + "mesh_seed_argmin": { + "median_ms": 0.2277760000000001, + "min_ms": 0.22751300000000008, + "max_ms": 0.2281290000000001 + }, + "mixed_fusion": { + "median_ms": 1.2594120000000002, + "min_ms": 1.253861, + "max_ms": 1.263404 + }, + "other": { + "median_ms": 0.07148649999999998, + "min_ms": 0.069149, + "max_ms": 0.07616 + }, + "pdip_solve": { + "median_ms": 27.291537000000034, + "min_ms": 22.702046000000006, + "max_ms": 47.42273900000002 + }, + "psf_convolution_mapping_matrix": { + "median_ms": 7.332478000000001, + "min_ms": 7.310459000000001, + "max_ms": 7.347292 + }, + "ray_trace_data_grid": { + "median_ms": 0.013696000000000002, + "min_ms": 0.013599, + "max_ms": 0.014079000000000001 + }, + "regularization_H": { + "median_ms": 0.031008, + "min_ms": 0.030431, + "max_ms": 0.031808 + } + }, + "stage_order": [ + "ray_trace_data_grid", + "border_relocator", + "mesh_qhull_callback", + "mesh_seed_argmin", + "mesh_locate_walk", + "mesh_construction", + "mapping_matrix", + "psf_convolution_mapping_matrix", + "data_vector_D", + "curvature_matrix_F", + "regularization_H", + "pdip_solve", + "mapped_reconstruction", + "chi_squared_evidence", + "inversion_other", + "mixed_fusion", + "other", + "memset" + ], + "mixed_fusion": { + "ms": 1.2594120000000002, + "constituent_stage_sets": { + "curvature_matrix_F + psf_convolution_mapping_matrix": 1.0180024062500006, + "curvature_reg_reduce_gather + inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter + regularization_H": 0.06093762499999998, + "inversion_other + regularization_H": 0.0295624375000001, + "inversion_other + mesh_construction + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin + regularization_H": 0.021517068749999972, + "inversion_other + mapping_matrix + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin": 0.0213614625, + "inversion_other + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + regularization_H": 0.014794250000000004, + "grids_and_structures + mass_profile_deflections + ray_trace_data_grid": 0.014543493750000004, + "inversion_other + mapping_matrix + mesh_construction + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin": 0.011769274999999997, + "grids_and_structures + mass_profile_deflections": 0.010189981249999994, + "inversion_other + mesh_dual_areas + mesh_locate_walk": 0.00937176250000002, + "inversion_other + mesh_construction + mesh_seed_argmin + regularization_H": 0.007327943749999996, + "inversion_other + mesh_construction + regularization_H": 0.00661453749999999, + "inversion_other + ray_trace_data_grid": 0.0053681687500000035, + "inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": 0.004833356250000001, + "inversion_other + mapped_reconstruction": 0.0037823749999999954, + "mapping_matrix + regularization_H": 0.0034730125, + "inversion_other + mesh_construction + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin": 0.003182962499999998, + "inversion_other + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin": 0.002953393749999999, + "inversion_other + pdip_solve": 0.0028459687499999987, + "inversion_other + mesh_locate_walk + mesh_seed_argmin": 0.0025221812499999965, + "inversion_other + mesh_interpolation_weights": 0.002148206250000002, + "chi_squared_evidence + inversion_other": 0.0019078125000000007 + }, + "example_kernels": { + "curvature_matrix_F + psf_convolution_mapping_matrix": [ + "loop_divide_gather_fusion" + ], + "curvature_reg_reduce_gather + inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter + regularization_H": [ + "input_add_multiply_transpose_fusion" + ], + "inversion_other + regularization_H": [ + "loop_reduce_slice_fusion", + "loop_reduce_fusion.1", + "loop_reduce_fusion.2", + "input_transpose_fusion.3" + ], + "inversion_other + mesh_construction + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin + regularization_H": [ + "input_reduce_fusion.24", + "loop_select_fusion.4", + "input_scatter_fusion.2" + ], + "inversion_other + mapping_matrix + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin": [ + "input_scatter_fusion.6", + "input_scatter_fusion.3" + ], + "inversion_other + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + regularization_H": [ + "loop_abs_fusion" + ], + "grids_and_structures + mass_profile_deflections + ray_trace_data_grid": [ + "loop_subtract_fusion.2", + "loop_subtract_fusion.1" + ], + "inversion_other + mapping_matrix + mesh_construction + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin": [ + "input_scatter_fusion.4" + ], + "grids_and_structures + mass_profile_deflections": [ + "loop_divide_minimum_multiply_sine_sqrt_fusion", + "loop_slice_fusion" + ], + "inversion_other + mesh_dual_areas + mesh_locate_walk": [ + "loop_select_fusion.6", + "input_scatter_fusion.9", + "input_scatter_fusion.8", + "input_scatter_fusion.7" + ] + }, + "prorated_estimate_ms": { + "curvature_matrix_F": 0.5090012031250003, + "psf_convolution_mapping_matrix": 0.5090012031250003, + "inversion_other": 0.05486061020833337, + "regularization_H": 0.037255855729166704, + "mesh_construction": 0.016723868020833324, + "mesh_interpolation_weights": 0.013761139374999997, + "mesh_locate_walk": 0.013692834166666666, + "mapped_reconstruction": 0.013255797395833328, + "pdip_solve": 0.01278759427083333, + "mesh_seed_argmin": 0.012400899270833326, + "reconstruction_scatter": 0.01136460989583333, + "curvature_reg_reduce_gather": 0.01015627083333333, + "grids_and_structures": 0.009942821874999997, + "mass_profile_deflections": 0.009942821874999997, + "mesh_dual_areas": 0.009626640625000007, + "ray_trace_data_grid": 0.007531915625000003, + "mapping_matrix": 0.006749689583333333, + "chi_squared_evidence": 0.0009539062500000003 + }, + "prorated_note": "ESTIMATE ONLY \u2014 a mixed fusion's time split equally across the stages its constituents span. Never summed into the measured table, never reconciled." + }, + "other_sources_ms": { + "copy.72": 0.042004900000001816, + "copy.35": 0.017002456250000093, + "copy.40": 0.0019799687500000017, + "loop_broadcast_fusion.1": 0.0019762125000000034, + "copy.71": 0.0018016062500000013, + "loop_broadcast_fusion.4": 0.0017822062499999992, + "copy.70": 0.001763374999999999, + "copy.20": 0.0016625937500000004, + "copy.52": 0.0016511874999999999 + }, + "device_span_ms": 52.50365706875, + "device_busy_ms": 44.784771649999996, + "device_idle_ms": 7.718885418750006, + "largest_idle_gaps": [ + { + "gap_ms": 5.420902, + "after": "pure_callback.4", + "before": "pure_callback.4" + }, + { + "gap_ms": 0.050879, + "after": "copy.35", + "before": "input_reduce_fusion.1" + }, + { + "gap_ms": 0.034176, + "after": "pure_callback.4", + "before": "copy.71" + }, + { + "gap_ms": 0.031775, + "after": "loop_broadcast_fusion", + "before": "loop_add_fusion.5" + }, + { + "gap_ms": 0.031263, + "after": "input_scatter_fusion.7", + "before": "loop_reduce_fusion.1" + }, + { + "gap_ms": 0.031231, + "after": "input_concatenate_fusion.7", + "before": "pure_callback.4" + }, + { + "gap_ms": 0.022336, + "after": "eigh.45", + "before": "eigh.45" + }, + { + "gap_ms": 0.022143, + "after": "while.28", + "before": "input_reduce_fusion.3" + } + ], + "kernel_ms": 43.007453000000034, + "sum_ms": 50.72633841875004, + "wall_ms": 52.51032926876178, + "host_outside_span_ms": 0.006672200011777818, + "reconciliation_pct": -3.397409376126366, + "unjoined_ms": 0.0, + "unjoined_pct": 0.0, + "other_ms": 0.07148649999999998, + "other_pct": 0.13613797703326735, + "note": "Stage rows attribute the command-buffers-OFF program (see the module docstring): kernel times are the same, the launch overhead the CUDA graphs remove is not. sum_ms = kernel rows + device_idle_ms; the residual against wall_ms is host_outside_span_ms (dispatch before the first kernel, teardown after the last).", + "per_stage_ms_per_lane": { + "border_relocator": 0.11510500000000001, + "chi_squared_evidence": 0.010688, + "curvature_matrix_F": 4.267072, + "data_vector_D": 0.12534099999999998, + "inversion_other": 1.818591, + "mapped_reconstruction": 0.115169, + "mapping_matrix": 0.11622199999999999, + "memset": 0.048959000000000016, + "mesh_construction": 0.002048, + "mesh_locate_walk": 0.15027249999999998, + "mesh_qhull_callback": 0.010592, + "mesh_seed_argmin": 0.2277760000000001, + "mixed_fusion": 1.2594120000000002, + "other": 0.07148649999999998, + "pdip_solve": 27.291537000000034, + "psf_convolution_mapping_matrix": 7.332478000000001, + "ray_trace_data_grid": 0.013696000000000002, + "regularization_H": 0.031008 + }, + "per_lane_divisor": 1, + "host_callback": { + "pure_callback_span_ms": 83.9009001, + "qhull_ms": 78.39786950000001, + "callback_body_ms_note": "the OUTERMOST matching body event, not a sum: under the probe the body appears twice (the wrapper and the timed re-implementation it calls) and summing them would count the same work twice", + "events_by_name": { + "pure_callback.4": { + "count": 160, + "ms": 83.9009001 + }, + "$callback.py:815 _wrapped_callback": { + "count": 160, + "ms": 82.483341 + }, + "$callback.py:224 _callback": { + "count": 160, + "ms": 82.09361520000003 + }, + "$callback.py:74 pure_callback_impl": { + "count": 160, + "ms": 81.94491380000007 + }, + "$callback.py:69 __call__": { + "count": 160, + "ms": 78.653725 + }, + "$delaunay.py:162 ": { + "count": 160, + "ms": 78.54514460000006 + }, + "$host_callback_probe.py:225 wrapped": { + "count": 160, + "ms": 78.39786950000001 + }, + "$host_callback_probe.py:160 _timed_tri_only": { + "count": 160, + "ms": 78.2671368 + }, + "ThenExecuteCallback:GetEventForComputeStreamSyncPoint": { + "count": 160, + "ms": 0.3028661999999999 + }, + "$callback.py:822 ": { + "count": 640, + "ms": 0.2351646999999993 + }, + "$__init__.py:132 _xla_gc_callback": { + "count": 2, + "ms": 0.000771 + } + }, + "note": "HOST milliseconds per traced BATCH (the whole invocation), aggregated by name because the events nest. Not a row of the device table: the device pays for them as the idle gaps largest_idle_gaps names." + }, + "host_callback_ms": 83.9009001 + }, + "hlo_census": { + "status": "excluded", + "reason": "The legacy census anchors PyAutoArray source line numbers that moved after the phase-1 run. No batched attribution is published from unsupported anchors; the device-event table and wall reconciliation remain valid." + }, + "stage_map_provenance": [ + { + "label": "log_det_curvature_reg", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 850, + 882 + ], + "requires": { + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 884, + 896 + ] + }, + "function": null + }, + { + "label": "log_det_regularization", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 850, + 882 + ], + "requires": { + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 897, + 943 + ] + }, + "function": null + }, + { + "label": "curvature_reg_add", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 359, + 372 + ], + "requires": null, + "function": null + }, + { + "label": "curvature_reg_reduce_gather", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 374, + 398 + ], + "requires": null, + "function": null + }, + { + "label": "edge_subset_gather", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 606, + 614 + ], + "requires": null, + "function": null + }, + { + "label": "regularization_term", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 786, + 849 + ], + "requires": null, + "function": null + }, + { + "label": "mapped_reconstruction", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 722, + 785 + ], + "requires": null, + "function": null + }, + { + "label": "reconstruction_scatter", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 583, + 605 + ], + "requires": null, + "function": null + }, + { + "label": "reconstruction_scatter", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 615, + 721 + ], + "requires": null, + "function": null + }, + { + "label": "certified_active_set_solve", + "path": "likelihood_breakdown/active_set_steps.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "certified_active_set_solve", + "path": "likelihood_breakdown/library_solver_injection.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "pdip_solve", + "path": "PyAutoArray/autoarray/util/jax_nnls.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "pdip_solve", + "path": "PyAutoArray/autoarray/inversion/inversion/inversion_util.py", + "lines": [ + 256, + 488 + ], + "requires": null, + "function": null + }, + { + "label": "mapped_reconstruction", + "path": "PyAutoArray/autoarray/inversion/inversion/inversion_util.py", + "lines": [ + 156, + 200 + ], + "requires": null, + "function": null + }, + { + "label": "curvature_matrix_F", + "path": "PyAutoArray/autoarray/inversion/inversion/inversion_util.py", + "lines": [ + 12, + 155 + ], + "requires": null, + "function": null + }, + { + "label": "reconstruction_scatter", + "path": "PyAutoArray/autoarray/inversion/inversion/inversion_util.py", + "lines": [ + 201, + 255 + ], + "requires": null, + "function": null + }, + { + "label": "data_vector_D", + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py", + "lines": [ + 54, + 73 + ], + "requires": null, + "function": null + }, + { + "label": "curvature_matrix_F", + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py", + "lines": [ + 74, + 110 + ], + "requires": null, + "function": null + }, + { + "label": "data_vector_D", + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py", + "lines": null, + "requires": null, + "function": "data_vector_via_blurred_mapping_matrix_from" + }, + { + "label": "curvature_matrix_F", + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "likelihood_breakdown/psf_cube_injection.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": [ + 1086, + 1300 + ], + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": [ + 632, + 642 + ], + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": [ + 670, + 691 + ], + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": null, + "requires": { + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": [ + 1086, + 1300 + ] + }, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": null, + "requires": { + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py", + "lines": [ + 119, + 150 + ] + }, + "function": null + }, + { + "label": "psf_convolution_image", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py", + "lines": [ + 119, + 150 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_qhull_callback", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 139, + 172 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_seed_argmin", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 173, + 207 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_locate_walk", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 208, + 372 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_dual_areas", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 373, + 396 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_dual_areas", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 437, + 494 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_dual_areas", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 605, + 615 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_interpolation_weights", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 616, + 695 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_interpolation_weights", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 896, + 1000 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_construction", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "border_relocator", + "path": "PyAutoArray/autoarray/inversion/mesh/border_relocator.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "mesh_construction", + "path": "PyAutoArray/autoarray/inversion/mesh/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "mapping_matrix", + "path": "PyAutoArray/autoarray/inversion/mappers/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "mapping_matrix", + "path": "PyAutoArray/autoarray/inversion/mappings/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "mapping_matrix", + "path": "PyAutoArray/autoarray/inversion/linear_obj/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "regularization_H", + "path": "PyAutoArray/autoarray/inversion/regularization/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "chi_squared_evidence", + "path": "PyAutoArray/autoarray/fit/fit_util.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "chi_squared_evidence", + "path": "PyAutoArray/autoarray/fit/fit_dataset.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "ray_trace_mesh_grid", + "path": "PyAutoLens/autolens/lens/to_inversion.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "ray_trace_mesh_grid", + "path": "PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "mass_profile_deflections", + "path": "PyAutoGalaxy/autogalaxy/profiles/mass/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "light_profile_image", + "path": "PyAutoGalaxy/autogalaxy/profiles/light/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "light_profile_image", + "path": "PyAutoGalaxy/autogalaxy/operate/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "ray_trace_data_grid", + "path": "PyAutoLens/autolens/lens/tracer.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "ray_trace_data_grid", + "path": "PyAutoLens/autolens/lens/tracer_util.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "grids_and_structures", + "path": "PyAutoArray/autoarray/structures/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "grids_and_structures", + "path": "PyAutoArray/autoarray/operators/over_sampling/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "grids_and_structures", + "path": "PyAutoArray/autoarray/geometry/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "inversion_other", + "path": "PyAutoArray/autoarray/inversion/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "fit_imaging_other", + "path": "PyAutoLens/autolens/imaging/fit_imaging.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "fit_imaging_other", + "path": "PyAutoGalaxy/autogalaxy/imaging/fit_imaging.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "fit_imaging_other", + "path": "PyAutoArray/autoarray/fit/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "analysis_other", + "path": "PyAutoLens/autolens/analysis/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "analysis_other", + "path": "PyAutoGalaxy/autogalaxy/analysis/", + "lines": null, + "requires": null, + "function": null + } + ], + "trace_timing": { + "traced_wall_ms": 52.51032926876178, + "untraced_wall_ms": 50.99743364999085, + "profiler_overhead_ms": 1.5128956187709264, + "profiler_overhead_pct": 2.9666112792152193 + }, + "jit_phases": { + "b_s3_pdip_library_likelihood_jit": { + "lower_s": 1.6891905660013435, + "compile_s": 4.545904295002401, + "first_call_s": 1.9207261609990383, + "steady_per_call_s": 0.05078495950001525 + }, + "d_s3_certified_fallback_library_likelihood_jit": { + "lower_s": 0.4805432729990571, + "compile_s": 4.39150354999947, + "first_call_s": 0.04447846900075092, + "steady_per_call_s": 0.03175044390009134 + } + }, + "peak_bytes": { + "after_setup": 85108992, + "after_routes": 1181653248, + "after_all": 18893572608, + "note": "jax.devices()[0].memory_stats()['peak_bytes_in_use']; None on a backend that does not report it (CPU). Process-wide high-water marks." + }, + "note": "Every stage row is a MEASURED sum of GPU kernel durations joined to library source through the optimized HLO of ONE program \u2014 not arithmetic across compilations. The rows attribute the command-buffers-OFF program: kernel time is the same as production, the launch overhead the CUDA graphs remove is not, and command_buffers.* carries both walls and their delta. sum_ms = kernel rows + measured device_idle_ms; the residual against the wall is host_outside_span_ms and is reported, not absorbed. mixed_fusion.prorated_estimate_ms is an ESTIMATE and is never part of the table. No row may be quoted if reconciliation_pct is outside 5 % or unjoined_ms is non-zero.", + "vmap": { + "batch": 16, + "lanes_mode": "captured", + "arms": [ + "vmap", + "scalar" + ], + "draw_seed": 0, + "fallback": true, + "composition": "jax.jit(jax.vmap(fn))", + "composition_provenance": "Current Fitness._vmap after PyAutoFit#1638. Array 343376 used the retired jax.vmap(jax.jit(fn)) composition and is historical evidence only.", + "headline_arm": "scalar", + "lane_rtol": 1e-09, + "lanes": [ + { + "lane": 0, + "draw_name": "call00015_lane00", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.0033655095107821688, + "centre_1": 0.004631951955766499, + "ell_comps_0": 0.000564301988937442, + "ell_comps_1": -0.00879076787683888, + "einstein_radius": 0.018337010967920175 + }, + "log_likelihood_vmap": 24758.506194309146, + "log_likelihood_scalar": 24758.506194309124, + "log_likelihood_library_pdip": 24758.50619430915, + "log_likelihood_library_pdip_scalar": 24758.506194309135, + "rel_diff_vmap_vs_library_pdip": 1.4693854219395184e-16, + "rel_diff_scalar_vs_library_pdip_scalar": 4.4081562658185577e-16, + "abs_diff_nats": 2.1827872842550278e-11, + "rel_diff": 8.816312531637119e-16, + "rel_diff_scalar_vs_library_pdip": 1.028569795357663e-15, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 1.4551915228366852e-11, + "rel_diff_library_pdip_vmap_vs_scalar": 5.877541687758077e-16, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 1, + "draw_name": "call00015_lane01", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.004311760382151672, + "centre_1": 0.0027192789928108052, + "ell_comps_0": 0.0061667694809026535, + "ell_comps_1": 0.003465536775180321, + "einstein_radius": -0.05732579988501185 + }, + "log_likelihood_vmap": 20551.004887772695, + "log_likelihood_scalar": 20551.004887772382, + "log_likelihood_library_pdip": 20551.0048877727, + "log_likelihood_library_pdip_scalar": 20551.004887771785, + "rel_diff_vmap_vs_library_pdip": 1.7702194257450708e-16, + "rel_diff_scalar_vs_library_pdip_scalar": 2.903159858222045e-14, + "abs_diff_nats": 3.128661774098873e-10, + "rel_diff": 1.5223887061407843e-14, + "rel_diff_scalar_vs_library_pdip": 1.5400909003982116e-14, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 9.1313268058002e-10, + "rel_diff_library_pdip_vmap_vs_scalar": 4.443250758620325e-14, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 2, + "draw_name": "call00015_lane02", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.0002796502552123051, + "centre_1": 0.0016003321376979894, + "ell_comps_0": -0.002094430657472772, + "ell_comps_1": 0.006146479068253558, + "einstein_radius": -0.025968910196758177 + }, + "log_likelihood_vmap": -189709.7266473121, + "log_likelihood_scalar": -189709.04549508705, + "log_likelihood_library_pdip": -189709.79900397593, + "log_likelihood_library_pdip_scalar": -189709.0304210228, + "rel_diff_vmap_vs_library_pdip": 3.81407097571277e-07, + "rel_diff_scalar_vs_library_pdip_scalar": 7.945886510077773e-08, + "abs_diff_nats": 0.6811522250645794, + "rel_diff": 3.5905100006537083e-06, + "rel_diff_scalar_vs_library_pdip": 3.971902837068127e-06, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 0.7685829531401396, + "rel_diff_library_pdip_vmap_vs_scalar": 4.051377793847858e-06, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 3, + "draw_name": "call00015_lane03", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.004594602299816973, + "centre_1": 0.004924922434755804, + "ell_comps_0": 0.028601845732661953, + "ell_comps_1": 0.003760187047606014, + "einstein_radius": -0.03088526730480501 + }, + "log_likelihood_vmap": -141741.98159325594, + "log_likelihood_scalar": -141741.9655181495, + "log_likelihood_library_pdip": -141741.98025885387, + "log_likelihood_library_pdip_scalar": -141741.9670818188, + "rel_diff_vmap_vs_library_pdip": 9.414303846172863e-09, + "rel_diff_scalar_vs_library_pdip_scalar": 1.1031801878923308e-08, + "abs_diff_nats": 0.016075106454081833, + "rel_diff": 1.1341105928168804e-07, + "rel_diff_scalar_vs_library_pdip": 1.0399674364113432e-07, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 0.013177035085391253, + "rel_diff_library_pdip_vmap_vs_scalar": 9.296495143026323e-08, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 4, + "draw_name": "call00015_lane04", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.0060950290987001, + "centre_1": -0.0006121094560707545, + "ell_comps_0": 0.009637314264800585, + "ell_comps_1": 0.006641580028105454, + "einstein_radius": -0.03125810931551931 + }, + "log_likelihood_vmap": 24880.545932988694, + "log_likelihood_scalar": 24880.54593298873, + "log_likelihood_library_pdip": 24880.54593298869, + "log_likelihood_library_pdip_scalar": 24880.54593298873, + "rel_diff_vmap_vs_library_pdip": 1.4621780474150203e-16, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 3.637978807091713e-11, + "rel_diff": 1.462178047415018e-15, + "rel_diff_scalar_vs_library_pdip": 1.6083958521565223e-15, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 4.001776687800884e-11, + "rel_diff_library_pdip_vmap_vs_scalar": 1.6083958521565197e-15, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 5, + "draw_name": "call00015_lane05", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.008435952123169364, + "centre_1": -0.007849511137408794, + "ell_comps_0": -0.01598149485178925, + "ell_comps_1": 0.01654417876136871, + "einstein_radius": 0.014294380855379263 + }, + "log_likelihood_vmap": 25472.519186600086, + "log_likelihood_scalar": 25472.5191867783, + "log_likelihood_library_pdip": 25472.519186604342, + "log_likelihood_library_pdip_scalar": 25472.51918677379, + "rel_diff_vmap_vs_library_pdip": 1.67099106810594e-13, + "rel_diff_scalar_vs_library_pdip_scalar": 1.7709648926816943e-13, + "abs_diff_nats": 1.7821366782300174e-07, + "rel_diff": 6.996311064337322e-12, + "rel_diff_scalar_vs_library_pdip": 6.829211957574507e-12, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 1.6944613889791071e-07, + "rel_diff_library_pdip_vmap_vs_scalar": 6.6521154682609094e-12, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 6, + "draw_name": "call00015_lane06", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.0031698313356290646, + "centre_1": -0.0038584140676992847, + "ell_comps_0": 0.01810147576636289, + "ell_comps_1": -0.011577480306416508, + "einstein_radius": 0.016136835525067283 + }, + "log_likelihood_vmap": -83383.91629577159, + "log_likelihood_scalar": -83383.91557044249, + "log_likelihood_library_pdip": -83383.91622255862, + "log_likelihood_library_pdip_scalar": -83383.91553139297, + "rel_diff_vmap_vs_library_pdip": 8.780226868835588e-10, + "rel_diff_scalar_vs_library_pdip_scalar": 4.683100553098559e-10, + "abs_diff_nats": 0.0007253290968947113, + "rel_diff": 8.698669184969555e-09, + "rel_diff_scalar_vs_library_pdip": 7.820646430056781e-09, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 0.0006911656528245658, + "rel_diff_library_pdip_vmap_vs_scalar": 8.288956550191635e-09, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 7, + "draw_name": "call00015_lane07", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.006158729760195174, + "centre_1": 0.004883559265258847, + "ell_comps_0": 0.007613883677130215, + "ell_comps_1": -0.005800175617006949, + "einstein_radius": 0.0662922007765554 + }, + "log_likelihood_vmap": -11960.284433495239, + "log_likelihood_scalar": -11960.28442969585, + "log_likelihood_library_pdip": -11960.284432962995, + "log_likelihood_library_pdip_scalar": -11960.284430066371, + "rel_diff_vmap_vs_library_pdip": 4.450091286861443e-11, + "rel_diff_scalar_vs_library_pdip_scalar": 3.0979268738228547e-11, + "abs_diff_nats": 3.799388650804758e-06, + "rel_diff": 3.1766708167670024e-10, + "rel_diff_scalar_vs_library_pdip": 2.7316616872130993e-10, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 2.8966242098249495e-06, + "rel_diff_library_pdip_vmap_vs_scalar": 2.4218690004923866e-10, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 8, + "draw_name": "call00015_lane08", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.0030335293924908615, + "centre_1": 0.0012117081273721316, + "ell_comps_0": 0.0008852687687036301, + "ell_comps_1": -0.0027113633212058814, + "einstein_radius": -0.03873713959923952 + }, + "log_likelihood_vmap": 23223.550391414446, + "log_likelihood_scalar": 23223.55039149581, + "log_likelihood_library_pdip": 23223.550391411005, + "log_likelihood_library_pdip_scalar": 23223.550391492525, + "rel_diff_vmap_vs_library_pdip": 1.4819129261052068e-13, + "rel_diff_scalar_vs_library_pdip_scalar": 1.414553247640914e-13, + "abs_diff_nats": 8.136339602060616e-08, + "rel_diff": 3.503486531947349e-12, + "rel_diff_scalar_vs_library_pdip": 3.651677824570663e-12, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 8.15198291093111e-08, + "rel_diff_library_pdip_vmap_vs_scalar": 3.510222499793754e-12, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 9, + "draw_name": "call00015_lane09", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.0008035510098975272, + "centre_1": 0.005559773241319952, + "ell_comps_0": -0.003701655436278317, + "ell_comps_1": -0.012378591445614512, + "einstein_radius": 0.032284336889985665 + }, + "log_likelihood_vmap": -177118.65020104276, + "log_likelihood_scalar": -177117.73386044288, + "log_likelihood_library_pdip": -177119.41150152817, + "log_likelihood_library_pdip_scalar": -177117.74273056397, + "rel_diff_vmap_vs_library_pdip": 4.298232920675486e-06, + "rel_diff_scalar_vs_library_pdip_scalar": 5.0080364365854004e-08, + "abs_diff_nats": 0.9163405998842791, + "rel_diff": 5.173624232378081e-06, + "rel_diff_scalar_vs_library_pdip": 9.4718081494774e-06, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 1.6687709641992114, + "rel_diff_library_pdip_vmap_vs_scalar": 9.421817026754843e-06, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 10, + "draw_name": "call00015_lane10", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.008473569241265282, + "centre_1": -0.0051993251621340235, + "ell_comps_0": -0.0031466996514049606, + "ell_comps_1": -0.0076036423480284636, + "einstein_radius": 0.08283321334626792 + }, + "log_likelihood_vmap": -101745.38551521233, + "log_likelihood_scalar": -101745.38334721276, + "log_likelihood_library_pdip": -101745.38547418748, + "log_likelihood_library_pdip_scalar": -101745.38352798171, + "rel_diff_vmap_vs_library_pdip": 4.0321088304993536e-10, + "rel_diff_scalar_vs_library_pdip_scalar": 1.776679675924146e-09, + "abs_diff_nats": 0.0021679995697923005, + "rel_diff": 2.13080878804482e-08, + "rel_diff_scalar_vs_library_pdip": 2.090487655195532e-08, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 0.0019462057680357248, + "rel_diff_library_pdip_vmap_vs_scalar": 1.9128197275903775e-08, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 11, + "draw_name": "call00015_lane11", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.001017060353322001, + "centre_1": 0.003035861051809724, + "ell_comps_0": 0.0014054844842678396, + "ell_comps_1": -0.00019678252877009805, + "einstein_radius": -0.04179610309843307 + }, + "log_likelihood_vmap": 18957.528349913133, + "log_likelihood_scalar": 18957.52834975365, + "log_likelihood_library_pdip": 18957.52834991328, + "log_likelihood_library_pdip_scalar": 18957.528349738823, + "rel_diff_vmap_vs_library_pdip": 7.676061435737438e-15, + "rel_diff_scalar_vs_library_pdip_scalar": 7.821906603088431e-13, + "abs_diff_nats": 1.594817149452865e-07, + "rel_diff": 8.412579530567283e-12, + "rel_diff_scalar_vs_library_pdip": 8.420255591932183e-12, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 1.74455635715276e-07, + "rel_diff_library_pdip_vmap_vs_scalar": 9.202446252318514e-12, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 12, + "draw_name": "call00015_lane12", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.0012508260776529923, + "centre_1": -0.0075763258203543175, + "ell_comps_0": -0.0003476568325791879, + "ell_comps_1": 0.0070528223693464365, + "einstein_radius": -0.005182936058341969 + }, + "log_likelihood_vmap": 24810.049660194898, + "log_likelihood_scalar": 24810.049660194905, + "log_likelihood_library_pdip": 24810.0496601949, + "log_likelihood_library_pdip_scalar": 24810.049660194898, + "rel_diff_vmap_vs_library_pdip": 1.4663327389176753e-16, + "rel_diff_scalar_vs_library_pdip_scalar": 2.932665477835351e-16, + "abs_diff_nats": 7.275957614183426e-12, + "rel_diff": 2.93266547783535e-16, + "rel_diff_scalar_vs_library_pdip": 1.4663327389176753e-16, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 3.637978807091713e-12, + "rel_diff_library_pdip_vmap_vs_scalar": 1.4663327389176755e-16, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 13, + "draw_name": "call00015_lane13", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.0039046265841316857, + "centre_1": 0.008586063066835778, + "ell_comps_0": 0.01612319103606081, + "ell_comps_1": -0.006478405394829051, + "einstein_radius": -0.06420305523683667 + }, + "log_likelihood_vmap": -3605.7062167468175, + "log_likelihood_scalar": -3605.706215974824, + "log_likelihood_library_pdip": -3605.7062167202894, + "log_likelihood_library_pdip_scalar": -3605.7062159174166, + "rel_diff_vmap_vs_library_pdip": 7.357266473429572e-12, + "rel_diff_scalar_vs_library_pdip_scalar": 1.592123765449394e-11, + "abs_diff_nats": 7.719936547800899e-07, + "rel_diff": 2.1410331528393165e-10, + "rel_diff_scalar_vs_library_pdip": 2.0674604876623705e-10, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 8.028728188946843e-07, + "rel_diff_library_pdip_vmap_vs_scalar": 2.2266728646676658e-10, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 14, + "draw_name": "call00015_lane14", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.007195835212073937, + "centre_1": -0.0022675171274400335, + "ell_comps_0": 0.004220685262914858, + "ell_comps_1": 0.006581974817750368, + "einstein_radius": 0.08589577997501685 + }, + "log_likelihood_vmap": 11126.921475740786, + "log_likelihood_scalar": 11126.921475785763, + "log_likelihood_library_pdip": 11126.92147574079, + "log_likelihood_library_pdip_scalar": 11126.921475785763, + "rel_diff_vmap_vs_library_pdip": 3.269528606832834e-16, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 4.497633199207485e-08, + "rel_diff": 4.042118216611096e-12, + "rel_diff_scalar_vs_library_pdip": 4.04179126376675e-12, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 4.4972694013267756e-08, + "rel_diff_library_pdip_vmap_vs_scalar": 4.041791263750414e-12, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 15, + "draw_name": "call00015_lane15", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.0024446743118905125, + "centre_1": 0.0028324231769206983, + "ell_comps_0": -0.017159158004659933, + "ell_comps_1": 0.008265799441903459, + "einstein_radius": -0.03860302877433641 + }, + "log_likelihood_vmap": 20410.343973733572, + "log_likelihood_scalar": 20410.343973719955, + "log_likelihood_library_pdip": 20410.34397373363, + "log_likelihood_library_pdip_scalar": 20410.343973719544, + "rel_diff_vmap_vs_library_pdip": 2.851870648940346e-15, + "rel_diff_scalar_vs_library_pdip_scalar": 2.0141336458155093e-14, + "abs_diff_nats": 1.3616954674944282e-08, + "rel_diff": 6.671594899369292e-13, + "rel_diff_scalar_vs_library_pdip": 6.700113605854225e-13, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 1.4086253941059113e-08, + "rel_diff_library_pdip_vmap_vs_scalar": 6.901526970440401e-13, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + } + ], + "lane_pins": [ + { + "pin": "lane 0: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 24758.506194309146, + "reference_value": 24758.50619430915, + "rel_diff": 1.4693854219395184e-16, + "abs_diff_nats": 3.637978807091713e-12, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 0: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 24758.506194309124, + "reference_value": 24758.506194309135, + "rel_diff": 4.4081562658185577e-16, + "abs_diff_nats": 1.0913936421275139e-11, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 0: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 24758.506194309146, + "reference_value": 24758.506194309124, + "rel_diff": 8.816312531637119e-16, + "abs_diff_nats": 2.1827872842550278e-11, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 0: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 24758.50619430915, + "reference_value": 24758.506194309135, + "rel_diff": 5.877541687758077e-16, + "abs_diff_nats": 1.4551915228366852e-11, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 1: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 20551.004887772695, + "reference_value": 20551.0048877727, + "rel_diff": 1.7702194257450708e-16, + "abs_diff_nats": 3.637978807091713e-12, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 1: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 20551.004887772382, + "reference_value": 20551.004887771785, + "rel_diff": 2.903159858222045e-14, + "abs_diff_nats": 5.966285243630409e-10, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 1: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 20551.004887772695, + "reference_value": 20551.004887772382, + "rel_diff": 1.5223887061407843e-14, + "abs_diff_nats": 3.128661774098873e-10, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 1: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 20551.0048877727, + "reference_value": 20551.004887771785, + "rel_diff": 4.443250758620325e-14, + "abs_diff_nats": 9.1313268058002e-10, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 2: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -189709.7266473121, + "reference_value": -189709.79900397593, + "rel_diff": 3.81407097571277e-07, + "abs_diff_nats": 0.0723566638189368, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 2: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -189709.04549508705, + "reference_value": -189709.0304210228, + "rel_diff": 7.945886510077773e-08, + "abs_diff_nats": 0.015074064256623387, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 2: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -189709.7266473121, + "reference_value": -189709.04549508705, + "rel_diff": 3.5905100006537083e-06, + "abs_diff_nats": 0.6811522250645794, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 2: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -189709.79900397593, + "reference_value": -189709.0304210228, + "rel_diff": 4.051377793847858e-06, + "abs_diff_nats": 0.7685829531401396, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 3: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -141741.98159325594, + "reference_value": -141741.98025885387, + "rel_diff": 9.414303846172863e-09, + "abs_diff_nats": 0.001334402069915086, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 3: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -141741.9655181495, + "reference_value": -141741.9670818188, + "rel_diff": 1.1031801878923308e-08, + "abs_diff_nats": 0.001563669298775494, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 3: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -141741.98159325594, + "reference_value": -141741.9655181495, + "rel_diff": 1.1341105928168804e-07, + "abs_diff_nats": 0.016075106454081833, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 3: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -141741.98025885387, + "reference_value": -141741.9670818188, + "rel_diff": 9.296495143026323e-08, + "abs_diff_nats": 0.013177035085391253, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 4: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 24880.545932988694, + "reference_value": 24880.54593298869, + "rel_diff": 1.4621780474150203e-16, + "abs_diff_nats": 3.637978807091713e-12, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 4: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 24880.54593298873, + "reference_value": 24880.54593298873, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 4: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 24880.545932988694, + "reference_value": 24880.54593298873, + "rel_diff": 1.462178047415018e-15, + "abs_diff_nats": 3.637978807091713e-11, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 4: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 24880.54593298869, + "reference_value": 24880.54593298873, + "rel_diff": 1.6083958521565197e-15, + "abs_diff_nats": 4.001776687800884e-11, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 5: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 25472.519186600086, + "reference_value": 25472.519186604342, + "rel_diff": 1.67099106810594e-13, + "abs_diff_nats": 4.256435204297304e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 5: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 25472.5191867783, + "reference_value": 25472.51918677379, + "rel_diff": 1.7709648926816943e-13, + "abs_diff_nats": 4.511093720793724e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 5: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 25472.519186600086, + "reference_value": 25472.5191867783, + "rel_diff": 6.996311064337322e-12, + "abs_diff_nats": 1.7821366782300174e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 5: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 25472.519186604342, + "reference_value": 25472.51918677379, + "rel_diff": 6.6521154682609094e-12, + "abs_diff_nats": 1.6944613889791071e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 6: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -83383.91629577159, + "reference_value": -83383.91622255862, + "rel_diff": 8.780226868835588e-10, + "abs_diff_nats": 7.321297016460449e-05, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 6: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -83383.91557044249, + "reference_value": -83383.91553139297, + "rel_diff": 4.683100553098559e-10, + "abs_diff_nats": 3.9049526094459e-05, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 6: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -83383.91629577159, + "reference_value": -83383.91557044249, + "rel_diff": 8.698669184969555e-09, + "abs_diff_nats": 0.0007253290968947113, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 6: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -83383.91622255862, + "reference_value": -83383.91553139297, + "rel_diff": 8.288956550191635e-09, + "abs_diff_nats": 0.0006911656528245658, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 7: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -11960.284433495239, + "reference_value": -11960.284432962995, + "rel_diff": 4.450091286861443e-11, + "abs_diff_nats": 5.322435754351318e-07, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 7: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -11960.28442969585, + "reference_value": -11960.284430066371, + "rel_diff": 3.0979268738228547e-11, + "abs_diff_nats": 3.705208655446768e-07, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 7: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -11960.284433495239, + "reference_value": -11960.28442969585, + "rel_diff": 3.1766708167670024e-10, + "abs_diff_nats": 3.799388650804758e-06, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 7: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -11960.284432962995, + "reference_value": -11960.284430066371, + "rel_diff": 2.4218690004923866e-10, + "abs_diff_nats": 2.8966242098249495e-06, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 8: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 23223.550391414446, + "reference_value": 23223.550391411005, + "rel_diff": 1.4819129261052068e-13, + "abs_diff_nats": 3.4415279515087605e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 8: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 23223.55039149581, + "reference_value": 23223.550391492525, + "rel_diff": 1.414553247640914e-13, + "abs_diff_nats": 3.285094862803817e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 8: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 23223.550391414446, + "reference_value": 23223.55039149581, + "rel_diff": 3.503486531947349e-12, + "abs_diff_nats": 8.136339602060616e-08, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 8: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 23223.550391411005, + "reference_value": 23223.550391492525, + "rel_diff": 3.510222499793754e-12, + "abs_diff_nats": 8.15198291093111e-08, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 9: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -177118.65020104276, + "reference_value": -177119.41150152817, + "rel_diff": 4.298232920675486e-06, + "abs_diff_nats": 0.7613004854065366, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 9: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -177117.73386044288, + "reference_value": -177117.74273056397, + "rel_diff": 5.0080364365854004e-08, + "abs_diff_nats": 0.008870121091604233, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 9: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -177118.65020104276, + "reference_value": -177117.73386044288, + "rel_diff": 5.173624232378081e-06, + "abs_diff_nats": 0.9163405998842791, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 9: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -177119.41150152817, + "reference_value": -177117.74273056397, + "rel_diff": 9.421817026754843e-06, + "abs_diff_nats": 1.6687709641992114, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 10: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -101745.38551521233, + "reference_value": -101745.38547418748, + "rel_diff": 4.0321088304993536e-10, + "abs_diff_nats": 4.10248467233032e-05, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 10: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -101745.38334721276, + "reference_value": -101745.38352798171, + "rel_diff": 1.776679675924146e-09, + "abs_diff_nats": 0.0001807689550332725, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 10: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -101745.38551521233, + "reference_value": -101745.38334721276, + "rel_diff": 2.13080878804482e-08, + "abs_diff_nats": 0.0021679995697923005, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 10: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -101745.38547418748, + "reference_value": -101745.38352798171, + "rel_diff": 1.9128197275903775e-08, + "abs_diff_nats": 0.0019462057680357248, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 11: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 18957.528349913133, + "reference_value": 18957.52834991328, + "rel_diff": 7.676061435737438e-15, + "abs_diff_nats": 1.4551915228366852e-10, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 11: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 18957.52834975365, + "reference_value": 18957.528349738823, + "rel_diff": 7.821906603088431e-13, + "abs_diff_nats": 1.4828401617705822e-08, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 11: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 18957.528349913133, + "reference_value": 18957.52834975365, + "rel_diff": 8.412579530567283e-12, + "abs_diff_nats": 1.594817149452865e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 11: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 18957.52834991328, + "reference_value": 18957.528349738823, + "rel_diff": 9.202446252318514e-12, + "abs_diff_nats": 1.74455635715276e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 12: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 24810.049660194898, + "reference_value": 24810.0496601949, + "rel_diff": 1.4663327389176753e-16, + "abs_diff_nats": 3.637978807091713e-12, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 12: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 24810.049660194905, + "reference_value": 24810.049660194898, + "rel_diff": 2.932665477835351e-16, + "abs_diff_nats": 7.275957614183426e-12, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 12: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 24810.049660194898, + "reference_value": 24810.049660194905, + "rel_diff": 2.93266547783535e-16, + "abs_diff_nats": 7.275957614183426e-12, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 12: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 24810.0496601949, + "reference_value": 24810.049660194898, + "rel_diff": 1.4663327389176755e-16, + "abs_diff_nats": 3.637978807091713e-12, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 13: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -3605.7062167468175, + "reference_value": -3605.7062167202894, + "rel_diff": 7.357266473429572e-12, + "abs_diff_nats": 2.652814146131277e-08, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 13: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -3605.706215974824, + "reference_value": -3605.7062159174166, + "rel_diff": 1.592123765449394e-11, + "abs_diff_nats": 5.740730557590723e-08, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 13: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -3605.7062167468175, + "reference_value": -3605.706215974824, + "rel_diff": 2.1410331528393165e-10, + "abs_diff_nats": 7.719936547800899e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 13: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -3605.7062167202894, + "reference_value": -3605.7062159174166, + "rel_diff": 2.2266728646676658e-10, + "abs_diff_nats": 8.028728188946843e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 14: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 11126.921475740786, + "reference_value": 11126.92147574079, + "rel_diff": 3.269528606832834e-16, + "abs_diff_nats": 3.637978807091713e-12, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 14: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 11126.921475785763, + "reference_value": 11126.921475785763, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 14: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 11126.921475740786, + "reference_value": 11126.921475785763, + "rel_diff": 4.042118216611096e-12, + "abs_diff_nats": 4.497633199207485e-08, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 14: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 11126.92147574079, + "reference_value": 11126.921475785763, + "rel_diff": 4.041791263750414e-12, + "abs_diff_nats": 4.4972694013267756e-08, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 15: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 20410.343973733572, + "reference_value": 20410.34397373363, + "rel_diff": 2.851870648940346e-15, + "abs_diff_nats": 5.820766091346741e-11, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 15: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 20410.343973719955, + "reference_value": 20410.343973719544, + "rel_diff": 2.0141336458155093e-14, + "abs_diff_nats": 4.1109160520136356e-10, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 15: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 20410.343973733572, + "reference_value": 20410.343973719955, + "rel_diff": 6.671594899369292e-13, + "abs_diff_nats": 1.3616954674944282e-08, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 15: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 20410.34397373363, + "reference_value": 20410.343973719544, + "rel_diff": 6.901526970440401e-13, + "abs_diff_nats": 1.4086253941059113e-08, + "within_rtol": true, + "status": "RECORDED" + } + ], + "lanes_failed": 4, + "arm_rows": { + "vmap": { + "arm": "vmap", + "program": "jax.jit(jax.vmap(fn))", + "stands_for": "Nautilus(use_jax_vmap=True) \u2014 Fitness._vmap", + "hlo_source": "jax.jit(jax.vmap(fn)).lower(batched_tree) \u2014 the exact current Fitness._vmap composition (PyAutoFit#1638)", + "batch_wall_ms": 752.1205302000453, + "wall_production_nesting_ms": 752.1205302000453, + "wall_aot_command_buffers_on_ms": 752.9892208000092, + "wall_aot_command_buffers_off_ms": 753.1141911000304, + "command_buffer_delta_ms": 0.1249703000212321, + "production_nesting_vs_aot_on_delta_ms": -0.8686905999638839, + "production_nesting_vs_aot_on_delta_pct": -0.11536560895798062, + "wall_per_lane_ms": 47.00753313750283, + "wall_per_lane_command_buffers_off_ms": 47.0696369437519, + "traced_batch_wall_ms": 767.3282251998899, + "untraced_batch_wall_ms": 754.8854673001188, + "traced_wall_per_lane_ms": 47.958014074993116, + "callback_count_per_call": 16.0, + "callback_count_per_lane": 1.0, + "callback_expectation": "B per batched call \u2014 the qhull pure_callback is vmap_method='sequential'", + "host_qhull_ms": 71.24476080243767, + "host_tables_ms": 1.8442888955178205, + "host_qhull_ms_per_lane": 4.452797550152354, + "host_tables_ms_per_lane": 0.11526805596986378, + "host_callback_probe": { + "calls": 160, + "qhull_ms_total": 712.4476080243767, + "tables_ms_total": 18.442888955178205, + "total_ms_total": 730.8904969795549, + "qhull_ms_mean": 4.452797550152354, + "tables_ms_mean": 0.11526805596986378, + "total_ms_mean": 4.568065606122218, + "non_finite_calls": 0, + "n_points": [ + 1500 + ] + }, + "host_callback_records_first": [ + { + "n_points": 1500, + "qhull_ms": 4.6890009980415925, + "tables_ms": 0.19110900029772893, + "total_ms": 4.8801099983393215, + "finite": true + }, + { + "n_points": 1500, + "qhull_ms": 4.417472999193706, + "tables_ms": 0.11089899999205954, + "total_ms": 4.528371999185765, + "finite": true + }, + { + "n_points": 1500, + "qhull_ms": 4.406043000926729, + "tables_ms": 0.10991900126100518, + "total_ms": 4.5159620021877345, + "finite": true + }, + { + "n_points": 1500, + "qhull_ms": 4.457094000827055, + "tables_ms": 0.11845799963339232, + "total_ms": 4.575552000460448, + "finite": true + } + ], + "device_idle_ms": 104.49158350000005, + "device_idle_ms_per_lane": 6.530723968750003, + "trace": { + "parser": "ProfileData.from_file(xplane) + as_text() + stack_frame_index(proto field 17)", + "stage_audit": { + "chi_squared_evidence": [ + { + "instruction": "input_reduce_fusion.18", + "ms": 0.0151939, + "opcode": "fusion", + "shape": "f64[92,16]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:90", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:90 (chi_squared_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:87 (AbstractFit.chi_squared)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:293 (FitDataset.chi_squared)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:345 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)" + ] + }, + { + "instruction": "input_reduce_fusion.44", + "ms": 0.0040514, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:104", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:104 (noise_normalization_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:98 (AbstractFit.noise_normalization)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:306 (FitDataset.noise_normalization)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:349 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)" + ] + }, + { + "instruction": "input_reduce_fusion.46", + "ms": 0.0022592, + "opcode": "fusion", + "shape": "f64[16]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:90", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:90 (chi_squared_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:87 (AbstractFit.chi_squared)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:293 (FitDataset.chi_squared)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:345 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)" + ] + } + ], + "psf_convolution_mapping_matrix": [ + { + "instruction": "input_scatter_fusion", + "ms": 32.2895165, + "opcode": "fusion", + "shape": "f64[16,1500,180,180]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.29.0", + "ms": 28.3344094, + "opcode": "fft", + "shape": "f64[16,1500,180,180]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.25.0", + "ms": 21.5615553, + "opcode": "fft", + "shape": "c128[16,1500,180,91]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.27.0", + "ms": 15.516142199999997, + "opcode": "fft", + "shape": "c128[16,1500,91,180]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_transpose_fusion.2", + "ms": 8.438982, + "opcode": "fusion", + "shape": "c128[16,1500,91,180]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "wrapped_transpose", + "ms": 7.9173885, + "opcode": "fusion", + "shape": "c128[16,1500,180,91]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + } + ], + "mapping_matrix": [ + { + "instruction": "loop_broadcast_fusion.7", + "ms": 1.7026908, + "opcode": "fusion", + "shape": "f64[15361,16,1500]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:353", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:353 (mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:283 (Mapper.mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:91 (AbstractInversionImaging._mapping_matrix_for_convolution_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:137 (AbstractInversionImaging.operated_mapping_matrix_list)" + ] + }, + { + "instruction": "input_scatter_fusion.3", + "ms": 0.052534599999999994, + "opcode": "fusion", + "shape": "f64[16,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:71", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:71 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:120 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + }, + { + "instruction": "input_reduce_fusion.47", + "ms": 0.0037729, + "opcode": "fusion", + "shape": "f64[16]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:120 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + }, + { + "instruction": "loop_divide_fusion", + "ms": 0.0031872000000000003, + "opcode": "fusion", + "shape": "f64[16,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:92", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:92 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:120 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + } + ], + "other": [ + { + "instruction": "copy.105", + "ms": 0.047664199999999844, + "opcode": "copy", + "shape": "f64[1,16,1024,2]{3,2,1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.107", + "ms": 0.032640200000000036, + "opcode": "copy", + "shape": "s32[1,3000,3]{2,1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.108", + "ms": 0.032397, + "opcode": "copy", + "shape": "s32[1,3000,3]{2,1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.109", + "ms": 0.03218270000000002, + "opcode": "copy", + "shape": "f64[1,1500,2]{2,1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.106", + "ms": 0.029651300000000023, + "opcode": "copy", + "shape": "s32[1,1500]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "loop_broadcast_fusion.6", + "ms": 0.0029568, + "opcode": "fusion", + "shape": "(pred[16,21361]{1,0}, pred[16,21361]{1,0})", + "source": "", + "stack": [] + } + ], + "mesh_qhull_callback": [ + { + "instruction": "pure_callback.0", + "ms": 0.17187920000000026, + "opcode": "custom-call", + "shape": "(s32[3000,3]{1,0}, s32[3000,3]{1,0}, s32[1500]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:161", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:161 (_jax_delaunay_tables)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:405 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + }, + { + "instruction": "loop_add_fusion.1", + "ms": 0.024390599999999946, + "opcode": "fusion", + "shape": "s64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:161", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:161 (_jax_delaunay_tables)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:405 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + }, + { + "instruction": "loop_broadcast_fusion.3", + "ms": 0.0019904999999999996, + "opcode": "fusion", + "shape": "s32[16,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:161", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:161 (_jax_delaunay_tables)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:405 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + } + ], + "mixed_fusion": [ + { + "instruction": "loop_divide_gather_fusion", + "ms": 17.3455473, + "opcode": "fusion", + "shape": "(f64[15361,16,1,1,1500]{4,3,2,1,0}, f64[15361,16,1,1,1500]{4,3,2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_add_multiply_transpose_fusion", + "ms": 1.6116155, + "opcode": "fusion", + "shape": "(f64[16,1500,1500]{2,1,0}, f64[16,1500,1500]{2,1,0}, f64[16,1500,1500]{2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:61", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:61 (initialize)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:72 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:508 (reconstruction_positive_only_from)" + ] + }, + { + "instruction": "input_transpose_fusion.3", + "ms": 0.43657850000000004, + "opcode": "fusion", + "shape": "f64[16,1500,1500]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1157 (AbstractInversion.log_det_regularization_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:348 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "input_scatter_fusion.1", + "ms": 0.1452137, + "opcode": "fusion", + "shape": "f64[16,1500,1500]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:579", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:579 (pixel_splitted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:137 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_scatter_fusion.2", + "ms": 0.0640675, + "opcode": "fusion", + "shape": "f64[16,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:70", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:70 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:120 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + }, + { + "instruction": "input_scatter_fusion.6", + "ms": 0.061084999999999993, + "opcode": "fusion", + "shape": "f64[15361,16,1500]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:353", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:353 (mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:283 (Mapper.mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:91 (AbstractInversionImaging._mapping_matrix_for_convolution_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:137 (AbstractInversionImaging.operated_mapping_matrix_list)" + ] + } + ], + "ray_trace_data_grid": [ + { + "instruction": "input_reduce_fusion.29", + "ms": 0.0027744000000000007, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:506", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:506 (FlatLambdaCDM._simpson_1d)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:644 (FlatLambdaCDM.angular_diameter_distance_kpc_z1z2)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:133 (LensingCosmology.angular_diameter_distance_to_earth_in_kpc_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:362 (LensingCosmology.scaling_factor_between_redshifts_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer_util.py:252 (traced_grid_2d_list_from)" + ] + }, + { + "instruction": "input_reduce_fusion.31", + "ms": 0.0027169000000000004, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:506", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:506 (FlatLambdaCDM._simpson_1d)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:644 (FlatLambdaCDM.angular_diameter_distance_kpc_z1z2)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:151 (LensingCosmology.angular_diameter_distance_between_redshifts_in_kpc_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:355 (LensingCosmology.scaling_factor_between_redshifts_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer_util.py:252 (traced_grid_2d_list_from)" + ] + }, + { + "instruction": "input_reduce_fusion.32", + "ms": 0.0026016, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:503", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:503 (FlatLambdaCDM._simpson_1d)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:644 (FlatLambdaCDM.angular_diameter_distance_kpc_z1z2)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:151 (LensingCosmology.angular_diameter_distance_between_redshifts_in_kpc_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:355 (LensingCosmology.scaling_factor_between_redshifts_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer_util.py:252 (traced_grid_2d_list_from)" + ] + }, + { + "instruction": "input_reduce_fusion.30", + "ms": 0.0025760000000000006, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:503", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:503 (FlatLambdaCDM._simpson_1d)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:644 (FlatLambdaCDM.angular_diameter_distance_kpc_z1z2)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:133 (LensingCosmology.angular_diameter_distance_to_earth_in_kpc_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:362 (LensingCosmology.scaling_factor_between_redshifts_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer_util.py:252 (traced_grid_2d_list_from)" + ] + }, + { + "instruction": "loop_divide_fusion.1", + "ms": 0.0025504, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:380", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:380 (LensingCosmology.scaling_factor_between_redshifts_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer_util.py:252 (traced_grid_2d_list_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer.py:632 (Tracer.traced_grid_2d_list_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/structures/decorators/abstract.py:93 (AbstractMaker.evaluate_func)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/structures/decorators/abstract.py:110 (AbstractMaker.result)" + ] + } + ], + "border_relocator": [ + { + "instruction": "custom-call.2", + "ms": 0.04217289999999999, + "opcode": "custom-call", + "shape": "(f64[16,2,2]{2,1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "eigh.34", + "ms": 0.014585800000000001, + "opcode": "custom-call", + "shape": "(f64[16,2,2]{1,2,0}, f64[16,2]{1,0}, s32[16]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_add_rsqrt_fusion", + "ms": 0.012931300000000001, + "opcode": "fusion", + "shape": "(f64[16,15361]{1,0}, f64[16,15361]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:311", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:311 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:423 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:208 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_concatenate_fusion.7", + "ms": 0.008819200000000001, + "opcode": "fusion", + "shape": "f64[16,15361,2]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:323", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:323 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:423 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:208 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_concatenate_fusion.9", + "ms": 0.0037696, + "opcode": "fusion", + "shape": "f64[16,1500,2]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:323", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:323 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:458 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_add_fusion.4", + "ms": 0.0036992000000000006, + "opcode": "fusion", + "shape": "f64[16,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:458 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + } + ], + "mesh_construction": [ + { + "instruction": "loop_compare_fusion.4", + "ms": 0.004681599999999999, + "opcode": "fusion", + "shape": "pred[16,6000,3]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:736", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:736 (DelaunayInterface.splitted_sizes)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:997 (InterpolatorDelaunay._mappings_sizes_weights_split)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:124 (AdaptSplit.regularization_matrix_from)" + ] + }, + { + "instruction": "loop_transpose_fusion.1", + "ms": 0.0024575999999999995, + "opcode": "fusion", + "shape": "f64[16,1500,2]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:820", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:820 (InterpolatorDelaunay.mesh_grid_xy)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:847 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + }, + { + "instruction": "loop_multiply_fusion.4", + "ms": 0.002336, + "opcode": "fusion", + "shape": "f64[16,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:412", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:412 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "mesh_seed_argmin": [ + { + "instruction": "input_reduce_fusion", + "ms": 1.3147235000000004, + "opcode": "fusion", + "shape": "(f64[16,1024]{1,0}, s64[16,1024]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:191", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:191 (_nearest_vertex_seed_from..argmin_chunk)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)" + ] + }, + { + "instruction": "loop_dynamic_update_slice_fusion", + "ms": 0.047932999999999816, + "opcode": "fusion", + "shape": "s32[21,16,1024]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_add_fusion", + "ms": 0.03179209999999992, + "opcode": "fusion", + "shape": "s64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_broadcast_fusion.4", + "ms": 0.0024608, + "opcode": "fusion", + "shape": "s32[21,16,1024]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "mesh_dual_areas": [ + { + "instruction": "input_scatter_fusion.9", + "ms": 0.0033984, + "opcode": "fusion", + "shape": "f64[16,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:393", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:393 (_dual_areas_padded_jnp)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:408 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + }, + { + "instruction": "input_scatter_fusion.7", + "ms": 0.0033407999999999992, + "opcode": "fusion", + "shape": "f64[16,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:393", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:393 (_dual_areas_padded_jnp)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:408 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + } + ], + "mesh_locate_walk": [ + { + "instruction": "loop_slice_subtract_fusion", + "ms": 0.29226370000000007, + "opcode": "fusion", + "shape": "(f64[16,21361,1]{2,1,0}, f64[16,21361,1]{2,1,0}, f64[16,21361,1]{2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:236", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:236 (_walk_from_seed..cross)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:250 (_walk_from_seed..weights_of)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:262 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)" + ] + }, + { + "instruction": "loop_reduce_fusion", + "ms": 0.10811890000000002, + "opcode": "fusion", + "shape": "(f64[16,21361]{1,0}, s64[16,21361]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:264", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:264 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:264 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)" + ] + }, + { + "instruction": "loop_select_fusion", + "ms": 0.10122310000000004, + "opcode": "fusion", + "shape": "(pred[16,21361]{1,0}, pred[16,21361]{1,0}, s32[16,21361]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_gather_fusion.1", + "ms": 0.0706945, + "opcode": "fusion", + "shape": "s32[341776,1,1,3]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:239", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:239 (_walk_from_seed..weights_of)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:262 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)" + ] + }, + { + "instruction": "loop_gather_fusion", + "ms": 0.05425630000000002, + "opcode": "fusion", + "shape": "s32[341776,1,1,1]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:267", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:267 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)" + ] + }, + { + "instruction": "input_concatenate_fusion.1", + "ms": 0.04155869999999998, + "opcode": "fusion", + "shape": "s32[16,21361,2]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:244", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:244 (_walk_from_seed..weights_of)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:262 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)" + ] + } + ], + "regularization_H": [ + { + "instruction": "loop_broadcast_fusion", + "ms": 0.30042430000000003, + "opcode": "fusion", + "shape": "f64[16,1500,1500]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:579", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:579 (pixel_splitted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:137 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_scatter_fusion.10", + "ms": 0.0028000000000000004, + "opcode": "fusion", + "shape": "f64[16,1500,1500]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:615", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:615 (pixel_splitted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:137 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "curvature_matrix_F": [ + { + "instruction": "cublas-lt-matmul.2", + "ms": 66.9105534, + "opcode": "custom-call", + "shape": "(f64[16,1500,1500]{2,1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "inversion_other": [ + { + "instruction": "cholesky.60", + "ms": 7.1283894000000565, + "opcode": "custom-call", + "shape": "(f64[16,1500,1500]{1,2,0}, s32[16]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1078 (AbstractInversion.log_det_curvature_reg_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:347 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "cholesky.70", + "ms": 7.018967799999987, + "opcode": "custom-call", + "shape": "(f64[16,1500,1500]{1,2,0}, s32[16]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1157 (AbstractInversion.log_det_regularization_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:348 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "input_reduce_fusion.27", + "ms": 0.169092, + "opcode": "fusion", + "shape": "f64[16,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:946", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:946 (AbstractInversion.regularization_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:346 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)", + "/mnt/ral/jnightin/autolens_profiling_wt/certified-solver-phase-c1-lane-rate/scripts/imaging/likelihood_breakdown/fixed_light_trace.py:1195 (_captured_likelihood_fn.._likelihood)" + ] + }, + { + "instruction": "input_reduce_fusion.22", + "ms": 0.0083072, + "opcode": "fusion", + "shape": "f64[16]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:985", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:985 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1078 (AbstractInversion.log_det_curvature_reg_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:347 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "input_reduce_fusion.21", + "ms": 0.0082435, + "opcode": "fusion", + "shape": "f64[16]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:985", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:985 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1157 (AbstractInversion.log_det_regularization_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:348 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "input_reduce_fusion.43", + "ms": 0.0053248, + "opcode": "fusion", + "shape": "f64[16]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:944", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:944 (AbstractInversion.regularization_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:346 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)", + "/mnt/ral/jnightin/autolens_profiling_wt/certified-solver-phase-c1-lane-rate/scripts/imaging/likelihood_breakdown/fixed_light_trace.py:1195 (_captured_likelihood_fn.._likelihood)" + ] + } + ], + "pdip_solve": [ + { + "instruction": "cholesky.20", + "ms": 192.68626879995995, + "opcode": "custom-call", + "shape": "(f64[16,1500,1500]{1,2,0}, s32[16]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:106", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:106 (factorize_kkt)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:212 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve", + "ms": 54.51259210000317, + "opcode": "custom-call", + "shape": "(f64[16,1500,1]{1,2,0}, s8[256]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:213 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve.2", + "ms": 50.17893129999953, + "opcode": "custom-call", + "shape": "(f64[16,1500,1]{1,2,0}, s8[256]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:217 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve.3", + "ms": 49.353075700001405, + "opcode": "custom-call", + "shape": "(f64[16,1500,1]{1,2,0}, s8[256]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:217 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve.1", + "ms": 48.945070000001365, + "opcode": "custom-call", + "shape": "(f64[16,1500,1]{1,2,0}, s8[256]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:213 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "loop_add_fusion.2", + "ms": 10.710981900000005, + "opcode": "fusion", + "shape": "f64[16,1500,1500]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:107", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:107 (factorize_kkt)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:212 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + } + ], + "data_vector_D": [ + { + "instruction": "input_reduce_fusion.19", + "ms": 1.9449486999999999, + "opcode": "fusion", + "shape": "f64[92,16,1500]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123 (data_vector_via_blurred_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:67 (InversionImagingMapping.data_vector)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:699 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_reduce_fusion.45", + "ms": 0.015552, + "opcode": "fusion", + "shape": "f64[16,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123 (data_vector_via_blurred_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:67 (InversionImagingMapping.data_vector)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:699 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "mapped_reconstruction": [ + { + "instruction": "input_reduce_fusion.23", + "ms": 1.7459586000000002, + "opcode": "fusion", + "shape": "f64[15361,16]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163 (mapped_reconstructed_data_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:120 (InversionImagingMapping._mapped_reconstructed_data_dict_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:196 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + } + ] + }, + "stage_audit_note": "The HLO instructions that contributed most of each stage's milliseconds, with their full source stack. A stage row is only as good as the rules that built it; this is how a reader checks a row against the HLO instead of trusting it.", + "untraced_wall_ms": 754.8854673001188, + "reconciliation_vs_untraced_pct": 1.568331848036606, + "wall_basis": "wall_ms is the TRACED run's wall, the run these kernel durations came from. untraced_wall_ms is the same executable without the profiler; the difference is the profiler's overhead and belongs in neither the stages nor the idle row.", + "calls": 10, + "call_split": "per-call (first-instruction recurrence)", + "call_blocks": 10, + "events": 222990, + "streams": [ + "Stream #14(MemcpyH2D,MemcpyD2D,Compute,MemcpyD2H)" + ], + "per_stage_ms": { + "border_relocator": { + "median_ms": 0.10747299999999997, + "min_ms": 0.10723299999999998, + "max_ms": 0.108161 + }, + "chi_squared_evidence": { + "median_ms": 0.0214405, + "min_ms": 0.021218, + "max_ms": 0.021984 + }, + "curvature_matrix_F": { + "median_ms": 66.9247895, + "min_ms": 66.383633, + "max_ms": 67.408864 + }, + "data_vector_D": { + "median_ms": 1.9590994999999998, + "min_ms": 1.9512070000000001, + "max_ms": 1.970191 + }, + "inversion_other": { + "median_ms": 14.301851000000006, + "min_ms": 14.042966999999994, + "max_ms": 14.797018999999999 + }, + "mapped_reconstruction": { + "median_ms": 1.746886, + "min_ms": 1.740102, + "max_ms": 1.752461 + }, + "mapping_matrix": { + "median_ms": 1.7595299999999998, + "min_ms": 1.755752, + "max_ms": 1.774663 + }, + "mesh_construction": { + "median_ms": 0.009488, + "min_ms": 0.009376, + "max_ms": 0.009536 + }, + "mesh_dual_areas": { + "median_ms": 0.006752, + "min_ms": 0.0066879999999999995, + "max_ms": 0.006784 + }, + "mesh_locate_walk": { + "median_ms": 0.862533, + "min_ms": 0.859811, + "max_ms": 0.867267 + }, + "mesh_qhull_callback": { + "median_ms": 0.19811250000000008, + "min_ms": 0.19734400000000002, + "max_ms": 0.19993699999999998 + }, + "mesh_seed_argmin": { + "median_ms": 1.3966954999999999, + "min_ms": 1.3900850000000002, + "max_ms": 1.4039090000000003 + }, + "mixed_fusion": { + "median_ms": 19.983020499999995, + "min_ms": 19.693801000000004, + "max_ms": 20.279307 + }, + "other": { + "median_ms": 0.19036849999999989, + "min_ms": 0.18992299999999984, + "max_ms": 0.19151999999999988 + }, + "pdip_solve": { + "median_ms": 434.4447084999864, + "min_ms": 433.3647849999802, + "max_ms": 437.58059599998387 + }, + "psf_convolution_mapping_matrix": { + "median_ms": 118.00395550000002, + "min_ms": 117.76141199999999, + "max_ms": 118.33052900000001 + }, + "ray_trace_data_grid": { + "median_ms": 0.013184000000000001, + "min_ms": 0.01312, + "max_ms": 0.013376 + }, + "regularization_H": { + "median_ms": 0.30310549999999997, + "min_ms": 0.29901, + "max_ms": 0.310082 + } + }, + "stage_order": [ + "ray_trace_data_grid", + "border_relocator", + "mesh_qhull_callback", + "mesh_seed_argmin", + "mesh_locate_walk", + "mesh_dual_areas", + "mesh_construction", + "mapping_matrix", + "psf_convolution_mapping_matrix", + "data_vector_D", + "curvature_matrix_F", + "regularization_H", + "pdip_solve", + "mapped_reconstruction", + "chi_squared_evidence", + "inversion_other", + "mixed_fusion", + "other" + ], + "mixed_fusion": { + "ms": 19.983020499999995, + "constituent_stage_sets": { + "curvature_matrix_F + psf_convolution_mapping_matrix": 17.3455473, + "curvature_reg_reduce_gather + inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter + regularization_H": 1.6116155, + "inversion_other + regularization_H": 0.5983586999999999, + "inversion_other + mapping_matrix + mesh_construction + mesh_interpolation_weights": 0.0756996, + "mapping_matrix + mesh_interpolation_weights": 0.0640675, + "grids_and_structures + mass_profile_deflections + ray_trace_data_grid": 0.05337299999999999, + "inversion_other + mesh_construction + mesh_dual_areas + mesh_interpolation_weights": 0.023341, + "inversion_other + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + regularization_H": 0.022755299999999996, + "inversion_other + mesh_construction + mesh_interpolation_weights": 0.0210688, + "inversion_other + mesh_dual_areas + mesh_locate_walk": 0.0118305, + "mesh_construction + regularization_H": 0.010937700000000002, + "mesh_locate_walk + mesh_seed_argmin": 0.0098433, + "mesh_seed_argmin + regularization_H": 0.009638400000000002, + "inversion_other + mapped_reconstruction + reconstruction_scatter": 0.009334400000000001, + "mesh_dual_areas + mesh_interpolation_weights": 0.0089537, + "inversion_other + mapped_reconstruction": 0.008796799999999999, + "inversion_other + mapped_reconstruction + reconstruction_scatter + regularization_H": 0.008483200000000002, + "inversion_other + pdip_solve + regularization_H": 0.0069632, + "mesh_dual_areas + mesh_interpolation_weights + regularization_H": 0.006540799999999999, + "inversion_other + ray_trace_data_grid": 0.004774400000000001, + "grids_and_structures + mass_profile_deflections": 0.0044481, + "mapping_matrix + regularization_H": 0.0040864, + "inversion_other + mesh_locate_walk + mesh_seed_argmin": 0.0038016000000000005, + "inversion_other + mesh_construction + mesh_interpolation_weights + regularization_H": 0.0033375999999999996, + "inversion_other + mesh_interpolation_weights": 0.0033248000000000006, + "inversion_other + mesh_construction + regularization_H": 0.0026784, + "chi_squared_evidence + inversion_other": 0.0023584, + "inversion_other + mapping_matrix": 0.00216 + }, + "example_kernels": { + "curvature_matrix_F + psf_convolution_mapping_matrix": [ + "loop_divide_gather_fusion" + ], + "curvature_reg_reduce_gather + inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter + regularization_H": [ + "input_add_multiply_transpose_fusion" + ], + "inversion_other + regularization_H": [ + "input_reduce_fusion.42", + "input_reduce_fusion.35", + "input_reduce_fusion.36", + "input_reduce_fusion.37" + ], + "inversion_other + mapping_matrix + mesh_construction + mesh_interpolation_weights": [ + "loop_compare_fusion.3", + "input_scatter_fusion.6", + "input_concatenate_fusion.3" + ], + "mapping_matrix + mesh_interpolation_weights": [ + "input_scatter_fusion.2" + ], + "grids_and_structures + mass_profile_deflections + ray_trace_data_grid": [ + "loop_sqrt_fusion.1", + "loop_slice_fusion.3", + "loop_subtract_fusion.2", + "loop_sqrt_fusion" + ], + "inversion_other + mesh_construction + mesh_dual_areas + mesh_interpolation_weights": [ + "loop_abs_add_fusion" + ], + "inversion_other + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + regularization_H": [ + "loop_abs_fusion", + "loop_convert_select_fusion" + ], + "inversion_other + mesh_construction + mesh_interpolation_weights": [ + "loop_slice_fusion.1", + "loop_slice_fusion" + ], + "inversion_other + mesh_dual_areas + mesh_locate_walk": [ + "input_concatenate_fusion.6", + "input_concatenate_fusion.5", + "loop_select_fusion.5", + "input_scatter_fusion.8" + ] + }, + "prorated_estimate_ms": { + "curvature_matrix_F": 8.67277365, + "psf_convolution_mapping_matrix": 8.67277365, + "inversion_other": 0.62931451, + "regularization_H": 0.5930135766666667, + "mapped_reconstruction": 0.27823325000000004, + "reconstruction_scatter": 0.27383485, + "pdip_solve": 0.27092365, + "curvature_reg_reduce_gather": 0.26860258333333337, + "mesh_interpolation_weights": 0.07752181, + "mapping_matrix": 0.05408185000000001, + "mesh_construction": 0.04353019333333333, + "mesh_dual_areas": 0.020986926666666666, + "ray_trace_data_grid": 0.020178199999999997, + "grids_and_structures": 0.02001505, + "mass_profile_deflections": 0.02001505, + "mesh_seed_argmin": 0.011008050000000002, + "mesh_locate_walk": 0.01013235, + "chi_squared_evidence": 0.0011792 + }, + "prorated_note": "ESTIMATE ONLY \u2014 a mixed fusion's time split equally across the stages its constituents span. Never summed into the measured table, never reconciled." + }, + "other_sources_ms": { + "copy.105": 0.047664199999999844, + "copy.107": 0.032640200000000036, + "copy.108": 0.032397, + "copy.109": 0.03218270000000002, + "copy.106": 0.029651300000000023, + "loop_broadcast_fusion.6": 0.0029568, + "loop_broadcast_fusion.2": 0.0026335999999999994, + "copy.76": 0.0023103999999999998, + "copy.104": 0.002272, + "loop_broadcast_fusion.9": 0.0022367999999999997, + "copy.37": 0.0021439999999999996, + "loop_broadcast_fusion.5": 0.0014079999999999997 + }, + "device_span_ms": 767.2261862, + "device_busy_ms": 662.7346027, + "device_idle_ms": 104.49158350000005, + "largest_idle_gaps": [ + { + "gap_ms": 5.400693, + "after": "pure_callback.0", + "before": "pure_callback.0" + }, + { + "gap_ms": 5.054899, + "after": "pure_callback.0", + "before": "pure_callback.0" + }, + { + "gap_ms": 4.881074, + "after": "pure_callback.0", + "before": "pure_callback.0" + }, + { + "gap_ms": 4.876243, + "after": "pure_callback.0", + "before": "pure_callback.0" + }, + { + "gap_ms": 4.865587, + "after": "pure_callback.0", + "before": "pure_callback.0" + }, + { + "gap_ms": 4.860627, + "after": "pure_callback.0", + "before": "pure_callback.0" + }, + { + "gap_ms": 4.845106, + "after": "pure_callback.0", + "before": "pure_callback.0" + }, + { + "gap_ms": 4.836915, + "after": "pure_callback.0", + "before": "pure_callback.0" + } + ], + "kernel_ms": 662.2329929999864, + "sum_ms": 766.7245764999865, + "wall_ms": 767.3282251998899, + "host_outside_span_ms": 0.10203899988982812, + "reconciliation_pct": -0.07866890335568237, + "unjoined_ms": 0.0, + "unjoined_pct": 0.0, + "other_ms": 0.19036849999999989, + "other_pct": 0.024809265937064763, + "note": "Stage rows attribute the command-buffers-OFF program (see the module docstring): kernel times are the same, the launch overhead the CUDA graphs remove is not. sum_ms = kernel rows + device_idle_ms; the residual against wall_ms is host_outside_span_ms (dispatch before the first kernel, teardown after the last).", + "per_stage_ms_per_lane": { + "border_relocator": 0.006717062499999998, + "chi_squared_evidence": 0.00134003125, + "curvature_matrix_F": 4.18279934375, + "data_vector_D": 0.12244371874999999, + "inversion_other": 0.8938656875000004, + "mapped_reconstruction": 0.109180375, + "mapping_matrix": 0.10997062499999999, + "mesh_construction": 0.000593, + "mesh_dual_areas": 0.000422, + "mesh_locate_walk": 0.0539083125, + "mesh_qhull_callback": 0.012382031250000005, + "mesh_seed_argmin": 0.08729346874999999, + "mixed_fusion": 1.2489387812499997, + "other": 0.011898031249999993, + "pdip_solve": 27.15279428124915, + "psf_convolution_mapping_matrix": 7.375247218750001, + "ray_trace_data_grid": 0.0008240000000000001, + "regularization_H": 0.018944093749999998 + }, + "per_lane_divisor": 16, + "host_callback": { + "pure_callback_span_ms": 83.8906656, + "qhull_ms": 73.22748900000002, + "callback_body_ms_note": "the OUTERMOST matching body event, not a sum: under the probe the body appears twice (the wrapper and the timed re-implementation it calls) and summing them would count the same work twice", + "events_by_name": { + "pure_callback.0": { + "count": 160, + "ms": 83.8906656 + }, + "$callback.py:815 _wrapped_callback": { + "count": 160, + "ms": 77.1702053 + }, + "$callback.py:224 _callback": { + "count": 160, + "ms": 76.80206680000003 + }, + "$callback.py:74 pure_callback_impl": { + "count": 160, + "ms": 76.63635840000003 + }, + "$callback.py:69 __call__": { + "count": 160, + "ms": 73.49709909999994 + }, + "$delaunay.py:162 ": { + "count": 160, + "ms": 73.38256719999998 + }, + "$host_callback_probe.py:225 wrapped": { + "count": 160, + "ms": 73.22748900000002 + }, + "$host_callback_probe.py:160 _timed_tri_only": { + "count": 160, + "ms": 73.10819069999998 + }, + "$callback.py:822 ": { + "count": 640, + "ms": 0.23173609999999903 + }, + "ThenExecuteCallback:GetEventForComputeStreamSyncPoint": { + "count": 10, + "ms": 0.0271619 + }, + "$__init__.py:132 _xla_gc_callback": { + "count": 2, + "ms": 0.00043900000000000005 + } + }, + "note": "HOST milliseconds per traced BATCH (the whole invocation), aggregated by name because the events nest. Not a row of the device table: the device pays for them as the idle gaps largest_idle_gaps names." + }, + "host_callback_ms": 83.8906656 + }, + "hlo_census": { + "status": "excluded", + "reason": "The legacy census anchors PyAutoArray source line numbers that moved after the phase-1 run. No batched attribution is published from unsupported anchors; the device-event table and wall reconciliation remain valid." + }, + "trace_split": { + "expected_calls": 10, + "executions_per_invocation": 1, + "method": "per-call (first-instruction recurrence)", + "note": "DECIDED IN CODE: the scalar arm's trace is split by trace_calls * B, so every lane's execution is its own block and the per-stage median is taken over all of them. The vmap arm's is split by trace_calls, one block per batched execution, and per_stage_ms_per_lane divides those rows by B." + } + }, + "scalar": { + "arm": "scalar", + "program": "jax.jit(fn), called B times", + "stands_for": "Nautilus(use_jax_vmap=False, use_jax_jit=True). Plain use_jax_vmap=False is UNJITTED and is NOT this arm", + "hlo_source": "jax.jit(fn).lower(lane_trees[0]) \u2014 the same program phase 1 traced", + "batch_wall_ms": 809.0416472998186, + "wall_production_nesting_ms": 809.0416472998186, + "wall_aot_command_buffers_on_ms": 808.6460623002495, + "wall_aot_command_buffers_off_ms": 816.1012223001308, + "command_buffer_delta_ms": 7.455159999881289, + "production_nesting_vs_aot_on_delta_ms": 0.39558499956910964, + "production_nesting_vs_aot_on_delta_pct": 0.048919424456707404, + "wall_per_lane_ms": 50.56510295623866, + "wall_per_lane_command_buffers_off_ms": 51.00632639375817, + "traced_batch_wall_ms": 840.1652683001885, + "untraced_batch_wall_ms": 815.9589383998537, + "traced_wall_per_lane_ms": 52.51032926876178, + "callback_count_per_call": 16.0, + "callback_count_per_lane": 1.0, + "callback_expectation": "1 per likelihood evaluation, B per batch", + "host_qhull_ms": 76.28499399907014, + "host_tables_ms": 1.9626227996923262, + "host_qhull_ms_per_lane": 4.767812124941884, + "host_tables_ms_per_lane": 0.12266392498077039, + "host_callback_probe": { + "calls": 160, + "qhull_ms_total": 762.8499399907014, + "tables_ms_total": 19.626227996923262, + "total_ms_total": 782.4761679876246, + "qhull_ms_mean": 4.767812124941884, + "tables_ms_mean": 0.12266392498077039, + "total_ms_mean": 4.890476049922654, + "non_finite_calls": 0, + "n_points": [ + 1500 + ] + }, + "host_callback_records_first": [ + { + "n_points": 1500, + "qhull_ms": 4.7203809990605805, + "tables_ms": 0.19024799985345453, + "total_ms": 4.910628998914035, + "finite": true + }, + { + "n_points": 1500, + "qhull_ms": 4.484843000682304, + "tables_ms": 0.13394800043897703, + "total_ms": 4.618791001121281, + "finite": true + }, + { + "n_points": 1500, + "qhull_ms": 4.5787719973304775, + "tables_ms": 0.12030900325044058, + "total_ms": 4.699081000580918, + "finite": true + }, + { + "n_points": 1500, + "qhull_ms": 4.963638999470277, + "tables_ms": 0.11594899842748418, + "total_ms": 5.079587997897761, + "finite": true + } + ], + "device_idle_ms": 7.718885418750006, + "device_idle_ms_per_lane": 7.718885418750006, + "trace": { + "parser": "ProfileData.from_file(xplane) + as_text() + stack_frame_index(proto field 17)", + "stage_audit": { + "chi_squared_evidence": [ + { + "instruction": "input_reduce_fusion.26", + "ms": 0.003917775, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:104", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:104 (noise_normalization_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:98 (AbstractFit.noise_normalization)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:306 (FitDataset.noise_normalization)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:349 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)" + ] + }, + { + "instruction": "input_reduce_fusion.28", + "ms": 0.0037747749999999915, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:90", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:90 (chi_squared_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:87 (AbstractFit.chi_squared)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:293 (FitDataset.chi_squared)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:345 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)" + ] + }, + { + "instruction": "loop_multiply_fusion.2", + "ms": 0.003001168749999995, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:300", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:300 (AbstractNDArray.__pow__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:60 (unwrap_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:35 (to_new_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:78 (chi_squared_map_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:78 (AbstractFit.chi_squared_map)" + ] + } + ], + "psf_convolution_mapping_matrix": [ + { + "instruction": "input_scatter_fusion", + "ms": 1.9838513812500007, + "opcode": "fusion", + "shape": "f64[1500,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.19.0", + "ms": 1.76107434375, + "opcode": "fft", + "shape": "f64[1500,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.15.0", + "ms": 1.3677336124999995, + "opcode": "fft", + "shape": "c128[1500,180,91]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.17.0", + "ms": 0.9792066249999994, + "opcode": "fft", + "shape": "c128[1500,91,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_transpose_fusion.1", + "ms": 0.5137675937500001, + "opcode": "fusion", + "shape": "c128[1500,91,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "wrapped_transpose", + "ms": 0.4998541, + "opcode": "fusion", + "shape": "c128[1500,180,91]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + } + ], + "mapping_matrix": [ + { + "instruction": "loop_broadcast_fusion.2", + "ms": 0.11097046250000002, + "opcode": "fusion", + "shape": "f64[15361,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:342", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:342 (mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:283 (Mapper.mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:91 (AbstractInversionImaging._mapping_matrix_for_convolution_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:137 (AbstractInversionImaging.operated_mapping_matrix_list)" + ] + }, + { + "instruction": "input_reduce_fusion.29", + "ms": 0.002914968749999992, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:120 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + }, + { + "instruction": "loop_divide_fusion", + "ms": 0.002381581250000002, + "opcode": "fusion", + "shape": "f64[1500]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:92", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:92 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:120 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + } + ], + "mixed_fusion": [ + { + "instruction": "loop_divide_gather_fusion", + "ms": 1.0180024062500006, + "opcode": "fusion", + "shape": "(f64[15361,1,1,1500]{3,2,1,0}, f64[15361,1,1,1500]{3,2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_add_multiply_transpose_fusion", + "ms": 0.06093762499999998, + "opcode": "fusion", + "shape": "(f64[1500,1500]{1,0}, f64[1500,1500]{1,0}, f64[1500,1500]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:61", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:61 (initialize)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:72 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:508 (reconstruction_positive_only_from)" + ] + }, + { + "instruction": "input_transpose_fusion.3", + "ms": 0.024325706249999992, + "opcode": "fusion", + "shape": "f64[1500,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1157 (AbstractInversion.log_det_regularization_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:348 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "input_scatter_fusion.2", + "ms": 0.016327875000000002, + "opcode": "fusion", + "shape": "f64[1500,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:579", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:579 (pixel_splitted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:137 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_scatter_fusion.3", + "ms": 0.014850712500000003, + "opcode": "fusion", + "shape": "f64[1500]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:70", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:70 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:120 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + }, + { + "instruction": "loop_abs_fusion", + "ms": 0.014794250000000004, + "opcode": "fusion", + "shape": "(f64[6000,1]{1,0}, f64[6000,1]{1,0}, f64[6000,1]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:613", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:613 (triangle_area_xp)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:657 (pixel_weights_delaunay_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:982 (InterpolatorDelaunay._mappings_sizes_weights_split)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:124 (AdaptSplit.regularization_matrix_from)" + ] + } + ], + "ray_trace_data_grid": [ + { + "instruction": "input_reduce_fusion.18", + "ms": 0.003240987500000005, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:506", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:506 (FlatLambdaCDM._simpson_1d)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:644 (FlatLambdaCDM.angular_diameter_distance_kpc_z1z2)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:133 (LensingCosmology.angular_diameter_distance_to_earth_in_kpc_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:362 (LensingCosmology.scaling_factor_between_redshifts_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer_util.py:252 (traced_grid_2d_list_from)" + ] + }, + { + "instruction": "input_reduce_fusion.20", + "ms": 0.002768362500000002, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:506", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:506 (FlatLambdaCDM._simpson_1d)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:644 (FlatLambdaCDM.angular_diameter_distance_kpc_z1z2)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:151 (LensingCosmology.angular_diameter_distance_between_redshifts_in_kpc_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:355 (LensingCosmology.scaling_factor_between_redshifts_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer_util.py:252 (traced_grid_2d_list_from)" + ] + }, + { + "instruction": "input_reduce_fusion.19", + "ms": 0.0026012000000000058, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:503", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:503 (FlatLambdaCDM._simpson_1d)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:644 (FlatLambdaCDM.angular_diameter_distance_kpc_z1z2)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:133 (LensingCosmology.angular_diameter_distance_to_earth_in_kpc_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:362 (LensingCosmology.scaling_factor_between_redshifts_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer_util.py:252 (traced_grid_2d_list_from)" + ] + }, + { + "instruction": "input_reduce_fusion.21", + "ms": 0.0025914000000000054, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:503", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:503 (FlatLambdaCDM._simpson_1d)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:644 (FlatLambdaCDM.angular_diameter_distance_kpc_z1z2)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:151 (LensingCosmology.angular_diameter_distance_between_redshifts_in_kpc_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:355 (LensingCosmology.scaling_factor_between_redshifts_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer_util.py:252 (traced_grid_2d_list_from)" + ] + }, + { + "instruction": "loop_divide_fusion.1", + "ms": 0.0025315812500000014, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:380", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:380 (LensingCosmology.scaling_factor_between_redshifts_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer_util.py:252 (traced_grid_2d_list_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer.py:632 (Tracer.traced_grid_2d_list_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/structures/decorators/abstract.py:93 (AbstractMaker.evaluate_func)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/structures/decorators/abstract.py:110 (AbstractMaker.result)" + ] + } + ], + "border_relocator": [ + { + "instruction": "eigh.45", + "ms": 0.07483110624999999, + "opcode": "custom-call", + "shape": "(f64[2,2]{0,1}, f64[2]{0}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "custom-call.2", + "ms": 0.007959975, + "opcode": "custom-call", + "shape": "(f64[2,2]{1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_reduce_fusion.15", + "ms": 0.005811374999999996, + "opcode": "fusion", + "shape": "(f64[], f64[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:269", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:269 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_select_sine_fusion", + "ms": 0.0036667749999999906, + "opcode": "fusion", + "shape": "(f64[], f64[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:301", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:301 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:458 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_concatenate_fusion.3", + "ms": 0.0036359687499999986, + "opcode": "fusion", + "shape": "f64[15361,2]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:323", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:323 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:423 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:208 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_add_fusion.5", + "ms": 0.0035445687500000028, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:423 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:208 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + } + ], + "mesh_construction": [ + { + "instruction": "input_concatenate_fusion.7", + "ms": 0.002053781250000004, + "opcode": "fusion", + "shape": "f64[1500,2]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:820", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:820 (InterpolatorDelaunay.mesh_grid_xy)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:847 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + } + ], + "mesh_qhull_callback": [ + { + "instruction": "pure_callback.4", + "ms": 0.010638512500000029, + "opcode": "custom-call", + "shape": "(s32[3000,3]{1,0}, s32[3000,3]{1,0}, s32[1500]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:161", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:161 (_jax_delaunay_tables)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:405 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + } + ], + "other": [ + { + "instruction": "copy.72", + "ms": 0.042004900000001816, + "opcode": "copy", + "shape": "f64[1,1024,2]{2,1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.35", + "ms": 0.017002456250000093, + "opcode": "copy", + "shape": "s32[21361]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.40", + "ms": 0.0019799687500000017, + "opcode": "copy", + "shape": "s64[1500]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "loop_broadcast_fusion.1", + "ms": 0.0019762125000000034, + "opcode": "fusion", + "shape": "(pred[21361]{0}, pred[21361]{0})", + "source": "", + "stack": [] + }, + { + "instruction": "copy.71", + "ms": 0.0018016062500000013, + "opcode": "copy", + "shape": "s32[]", + "source": "", + "stack": [] + }, + { + "instruction": "loop_broadcast_fusion.4", + "ms": 0.0017822062499999992, + "opcode": "fusion", + "shape": "(f64[1500]{0}, f64[1500]{0}, f64[1500]{0}, f64[1500]{0})", + "source": "", + "stack": [] + } + ], + "mesh_seed_argmin": [ + { + "instruction": "input_reduce_fusion", + "ms": 0.15269622500000266, + "opcode": "fusion", + "shape": "(f64[1024]{0}, s64[1024]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:191", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:191 (_nearest_vertex_seed_from..argmin_chunk)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)" + ] + }, + { + "instruction": "loop_dynamic_update_slice_fusion", + "ms": 0.04129490624999953, + "opcode": "fusion", + "shape": "s32[21,1024]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_add_fusion", + "ms": 0.03184760624999863, + "opcode": "fusion", + "shape": "s64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_broadcast_fusion", + "ms": 0.001955412499999998, + "opcode": "fusion", + "shape": "s32[21,1024]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "regularization_H": [ + { + "instruction": "loop_select_fusion.3", + "ms": 0.020070875000000002, + "opcode": "fusion", + "shape": "f64[1500,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:549", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:549 (pixel_splitted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:137 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_scatter_fusion.10", + "ms": 0.0020686000000000007, + "opcode": "fusion", + "shape": "f64[1500,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:615", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:615 (pixel_splitted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:137 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_concatenate_fusion.8", + "ms": 0.0018732062500000017, + "opcode": "fusion", + "shape": "pred[3]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:93", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:93 (split_points_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:410 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + }, + { + "instruction": "input_concatenate_fusion.9", + "ms": 0.0018491749999999991, + "opcode": "fusion", + "shape": "pred[3]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:91", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:91 (split_points_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:410 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + }, + { + "instruction": "input_concatenate_fusion.10", + "ms": 0.001846981249999998, + "opcode": "fusion", + "shape": "pred[3]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:90", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:90 (split_points_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:410 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + }, + { + "instruction": "input_concatenate_fusion", + "ms": 0.0017675999999999992, + "opcode": "fusion", + "shape": "s32[1500,2]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:615", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:615 (pixel_splitted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:137 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "mesh_locate_walk": [ + { + "instruction": "loop_reduce_fusion", + "ms": 0.02580061874999997, + "opcode": "fusion", + "shape": "(f64[21361]{0}, s64[21361]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:264", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:264 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:264 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)" + ] + }, + { + "instruction": "input_reduce_fusion.1", + "ms": 0.025136112500000016, + "opcode": "fusion", + "shape": "pred[196]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:288", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:288 (_walk_from_seed..cond)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)" + ] + }, + { + "instruction": "loop_or_select_fusion", + "ms": 0.023382499999999754, + "opcode": "fusion", + "shape": "(s32[21361]{0}, pred[21361]{0}, pred[21361]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:270", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:270 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)" + ] + }, + { + "instruction": "loop_select_fusion", + "ms": 0.020160456249999886, + "opcode": "fusion", + "shape": "s32[21361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:242", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:242 (_walk_from_seed..weights_of)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:262 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)" + ] + }, + { + "instruction": "input_reduce_fusion.2", + "ms": 0.01623728750000017, + "opcode": "fusion", + "shape": "pred[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:288", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:288 (_walk_from_seed..cond)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)" + ] + }, + { + "instruction": "while.22", + "ms": 0.014526274999999767, + "opcode": "while", + "shape": "(s32[], s32[21361]{0}, pred[21361]{0}, pred[21361]{0}, s32[3000,3]{1,0}, /*index=5*/f64[1500,2]{1,0}, f64[21361,2]{1,0}, s32[3000,3]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "data_vector_D": [ + { + "instruction": "input_reduce_fusion.10", + "ms": 0.12160307499999996, + "opcode": "fusion", + "shape": "f64[92,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123 (data_vector_via_blurred_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:67 (InversionImagingMapping.data_vector)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:699 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_reduce_fusion.27", + "ms": 0.0036965937499999963, + "opcode": "fusion", + "shape": "f64[1500]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123 (data_vector_via_blurred_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:67 (InversionImagingMapping.data_vector)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:699 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "inversion_other": [ + { + "instruction": "cholesky.60", + "ms": 0.8938812312500021, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1078 (AbstractInversion.log_det_curvature_reg_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:347 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "cholesky.70", + "ms": 0.8923673750000006, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1157 (AbstractInversion.log_det_regularization_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:348 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "input_reduce_fusion.17", + "ms": 0.01297495625, + "opcode": "fusion", + "shape": "f64[1500]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:946", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:946 (AbstractInversion.regularization_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:346 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)", + "/mnt/ral/jnightin/autolens_profiling_wt/certified-solver-phase-c1-lane-rate/scripts/imaging/likelihood_breakdown/fixed_light_trace.py:1195 (_captured_likelihood_fn.._likelihood)" + ] + }, + { + "instruction": "loop_reduce_window_fusion", + "ms": 0.002881393749999993, + "opcode": "fusion", + "shape": "s64[6,16]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "loop_reduce_window_fusion.1", + "ms": 0.0027907937500000002, + "opcode": "fusion", + "shape": "s64[94,16]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "input_reduce_fusion.25", + "ms": 0.00266678125, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:944", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:944 (AbstractInversion.regularization_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:346 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)", + "/mnt/ral/jnightin/autolens_profiling_wt/certified-solver-phase-c1-lane-rate/scripts/imaging/likelihood_breakdown/fixed_light_trace.py:1195 (_captured_likelihood_fn.._likelihood)" + ] + } + ], + "curvature_matrix_F": [ + { + "instruction": "cublas-lt-matmul.2", + "ms": 4.26782450625, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "pdip_solve": [ + { + "instruction": "cholesky.20", + "ms": 16.14834093749997, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:106", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:106 (factorize_kkt)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:212 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve", + "ms": 2.571473356250029, + "opcode": "custom-call", + "shape": "(f64[1500,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:213 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve.2", + "ms": 2.5177017312498977, + "opcode": "custom-call", + "shape": "(f64[1500,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:217 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve.3", + "ms": 2.440972899999916, + "opcode": "custom-call", + "shape": "(f64[1500,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:217 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve.1", + "ms": 2.3317068874999007, + "opcode": "custom-call", + "shape": "(f64[1500,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:213 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "cholesky.40", + "ms": 0.8640322062500013, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:62", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:62 (initialize)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:72 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:508 (reconstruction_positive_only_from)" + ] + } + ], + "mapped_reconstruction": [ + { + "instruction": "input_reduce_fusion.14", + "ms": 0.11515689999999999, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163 (mapped_reconstructed_data_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:120 (InversionImagingMapping._mapped_reconstructed_data_dict_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:196 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + } + ] + }, + "stage_audit_note": "The HLO instructions that contributed most of each stage's milliseconds, with their full source stack. A stage row is only as good as the rules that built it; this is how a reader checks a row against the HLO instead of trusting it.", + "untraced_wall_ms": 50.99743364999085, + "reconciliation_vs_untraced_pct": -0.5315860266644271, + "wall_basis": "wall_ms is the TRACED run's wall, the run these kernel durations came from. untraced_wall_ms is the same executable without the profiler; the difference is the profiler's overhead and belongs in neither the stages nor the idle row.", + "calls": 160, + "call_split": "per-call (first-instruction recurrence)", + "call_blocks": 160, + "events": 153930, + "streams": [ + "Stream #14(Memset,MemcpyD2H,Compute,MemcpyH2D,MemcpyD2D)" + ], + "per_stage_ms": { + "border_relocator": { + "median_ms": 0.11510500000000001, + "min_ms": 0.11436500000000002, + "max_ms": 0.116032 + }, + "chi_squared_evidence": { + "median_ms": 0.010688, + "min_ms": 0.010336000000000001, + "max_ms": 0.011296 + }, + "curvature_matrix_F": { + "median_ms": 4.267072, + "min_ms": 4.247425, + "max_ms": 4.332549 + }, + "data_vector_D": { + "median_ms": 0.12534099999999998, + "min_ms": 0.12447799999999999, + "max_ms": 0.12595299999999998 + }, + "inversion_other": { + "median_ms": 1.818591, + "min_ms": 1.8023280000000002, + "max_ms": 1.830704 + }, + "mapped_reconstruction": { + "median_ms": 0.115169, + "min_ms": 0.114593, + "max_ms": 0.115873 + }, + "mapping_matrix": { + "median_ms": 0.11622199999999999, + "min_ms": 0.115454, + "max_ms": 0.117345 + }, + "memset": { + "median_ms": 0.048959000000000016, + "min_ms": 0.04032000000000001, + "max_ms": 0.08275200000000003 + }, + "mesh_construction": { + "median_ms": 0.002048, + "min_ms": 0.002016, + "max_ms": 0.00208 + }, + "mesh_locate_walk": { + "median_ms": 0.15027249999999998, + "min_ms": 0.132226, + "max_ms": 0.18601800000000013 + }, + "mesh_qhull_callback": { + "median_ms": 0.010592, + "min_ms": 0.010496000000000002, + "max_ms": 0.011072 + }, + "mesh_seed_argmin": { + "median_ms": 0.2277760000000001, + "min_ms": 0.22751300000000008, + "max_ms": 0.2281290000000001 + }, + "mixed_fusion": { + "median_ms": 1.2594120000000002, + "min_ms": 1.253861, + "max_ms": 1.263404 + }, + "other": { + "median_ms": 0.07148649999999998, + "min_ms": 0.069149, + "max_ms": 0.07616 + }, + "pdip_solve": { + "median_ms": 27.291537000000034, + "min_ms": 22.702046000000006, + "max_ms": 47.42273900000002 + }, + "psf_convolution_mapping_matrix": { + "median_ms": 7.332478000000001, + "min_ms": 7.310459000000001, + "max_ms": 7.347292 + }, + "ray_trace_data_grid": { + "median_ms": 0.013696000000000002, + "min_ms": 0.013599, + "max_ms": 0.014079000000000001 + }, + "regularization_H": { + "median_ms": 0.031008, + "min_ms": 0.030431, + "max_ms": 0.031808 + } + }, + "stage_order": [ + "ray_trace_data_grid", + "border_relocator", + "mesh_qhull_callback", + "mesh_seed_argmin", + "mesh_locate_walk", + "mesh_construction", + "mapping_matrix", + "psf_convolution_mapping_matrix", + "data_vector_D", + "curvature_matrix_F", + "regularization_H", + "pdip_solve", + "mapped_reconstruction", + "chi_squared_evidence", + "inversion_other", + "mixed_fusion", + "other", + "memset" + ], + "mixed_fusion": { + "ms": 1.2594120000000002, + "constituent_stage_sets": { + "curvature_matrix_F + psf_convolution_mapping_matrix": 1.0180024062500006, + "curvature_reg_reduce_gather + inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter + regularization_H": 0.06093762499999998, + "inversion_other + regularization_H": 0.0295624375000001, + "inversion_other + mesh_construction + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin + regularization_H": 0.021517068749999972, + "inversion_other + mapping_matrix + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin": 0.0213614625, + "inversion_other + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + regularization_H": 0.014794250000000004, + "grids_and_structures + mass_profile_deflections + ray_trace_data_grid": 0.014543493750000004, + "inversion_other + mapping_matrix + mesh_construction + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin": 0.011769274999999997, + "grids_and_structures + mass_profile_deflections": 0.010189981249999994, + "inversion_other + mesh_dual_areas + mesh_locate_walk": 0.00937176250000002, + "inversion_other + mesh_construction + mesh_seed_argmin + regularization_H": 0.007327943749999996, + "inversion_other + mesh_construction + regularization_H": 0.00661453749999999, + "inversion_other + ray_trace_data_grid": 0.0053681687500000035, + "inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": 0.004833356250000001, + "inversion_other + mapped_reconstruction": 0.0037823749999999954, + "mapping_matrix + regularization_H": 0.0034730125, + "inversion_other + mesh_construction + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin": 0.003182962499999998, + "inversion_other + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin": 0.002953393749999999, + "inversion_other + pdip_solve": 0.0028459687499999987, + "inversion_other + mesh_locate_walk + mesh_seed_argmin": 0.0025221812499999965, + "inversion_other + mesh_interpolation_weights": 0.002148206250000002, + "chi_squared_evidence + inversion_other": 0.0019078125000000007 + }, + "example_kernels": { + "curvature_matrix_F + psf_convolution_mapping_matrix": [ + "loop_divide_gather_fusion" + ], + "curvature_reg_reduce_gather + inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter + regularization_H": [ + "input_add_multiply_transpose_fusion" + ], + "inversion_other + regularization_H": [ + "loop_reduce_slice_fusion", + "loop_reduce_fusion.1", + "loop_reduce_fusion.2", + "input_transpose_fusion.3" + ], + "inversion_other + mesh_construction + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin + regularization_H": [ + "input_reduce_fusion.24", + "loop_select_fusion.4", + "input_scatter_fusion.2" + ], + "inversion_other + mapping_matrix + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin": [ + "input_scatter_fusion.6", + "input_scatter_fusion.3" + ], + "inversion_other + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + regularization_H": [ + "loop_abs_fusion" + ], + "grids_and_structures + mass_profile_deflections + ray_trace_data_grid": [ + "loop_subtract_fusion.2", + "loop_subtract_fusion.1" + ], + "inversion_other + mapping_matrix + mesh_construction + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin": [ + "input_scatter_fusion.4" + ], + "grids_and_structures + mass_profile_deflections": [ + "loop_divide_minimum_multiply_sine_sqrt_fusion", + "loop_slice_fusion" + ], + "inversion_other + mesh_dual_areas + mesh_locate_walk": [ + "loop_select_fusion.6", + "input_scatter_fusion.9", + "input_scatter_fusion.8", + "input_scatter_fusion.7" + ] + }, + "prorated_estimate_ms": { + "curvature_matrix_F": 0.5090012031250003, + "psf_convolution_mapping_matrix": 0.5090012031250003, + "inversion_other": 0.05486061020833337, + "regularization_H": 0.037255855729166704, + "mesh_construction": 0.016723868020833324, + "mesh_interpolation_weights": 0.013761139374999997, + "mesh_locate_walk": 0.013692834166666666, + "mapped_reconstruction": 0.013255797395833328, + "pdip_solve": 0.01278759427083333, + "mesh_seed_argmin": 0.012400899270833326, + "reconstruction_scatter": 0.01136460989583333, + "curvature_reg_reduce_gather": 0.01015627083333333, + "grids_and_structures": 0.009942821874999997, + "mass_profile_deflections": 0.009942821874999997, + "mesh_dual_areas": 0.009626640625000007, + "ray_trace_data_grid": 0.007531915625000003, + "mapping_matrix": 0.006749689583333333, + "chi_squared_evidence": 0.0009539062500000003 + }, + "prorated_note": "ESTIMATE ONLY \u2014 a mixed fusion's time split equally across the stages its constituents span. Never summed into the measured table, never reconciled." + }, + "other_sources_ms": { + "copy.72": 0.042004900000001816, + "copy.35": 0.017002456250000093, + "copy.40": 0.0019799687500000017, + "loop_broadcast_fusion.1": 0.0019762125000000034, + "copy.71": 0.0018016062500000013, + "loop_broadcast_fusion.4": 0.0017822062499999992, + "copy.70": 0.001763374999999999, + "copy.20": 0.0016625937500000004, + "copy.52": 0.0016511874999999999 + }, + "device_span_ms": 52.50365706875, + "device_busy_ms": 44.784771649999996, + "device_idle_ms": 7.718885418750006, + "largest_idle_gaps": [ + { + "gap_ms": 5.420902, + "after": "pure_callback.4", + "before": "pure_callback.4" + }, + { + "gap_ms": 0.050879, + "after": "copy.35", + "before": "input_reduce_fusion.1" + }, + { + "gap_ms": 0.034176, + "after": "pure_callback.4", + "before": "copy.71" + }, + { + "gap_ms": 0.031775, + "after": "loop_broadcast_fusion", + "before": "loop_add_fusion.5" + }, + { + "gap_ms": 0.031263, + "after": "input_scatter_fusion.7", + "before": "loop_reduce_fusion.1" + }, + { + "gap_ms": 0.031231, + "after": "input_concatenate_fusion.7", + "before": "pure_callback.4" + }, + { + "gap_ms": 0.022336, + "after": "eigh.45", + "before": "eigh.45" + }, + { + "gap_ms": 0.022143, + "after": "while.28", + "before": "input_reduce_fusion.3" + } + ], + "kernel_ms": 43.007453000000034, + "sum_ms": 50.72633841875004, + "wall_ms": 52.51032926876178, + "host_outside_span_ms": 0.006672200011777818, + "reconciliation_pct": -3.397409376126366, + "unjoined_ms": 0.0, + "unjoined_pct": 0.0, + "other_ms": 0.07148649999999998, + "other_pct": 0.13613797703326735, + "note": "Stage rows attribute the command-buffers-OFF program (see the module docstring): kernel times are the same, the launch overhead the CUDA graphs remove is not. sum_ms = kernel rows + device_idle_ms; the residual against wall_ms is host_outside_span_ms (dispatch before the first kernel, teardown after the last).", + "per_stage_ms_per_lane": { + "border_relocator": 0.11510500000000001, + "chi_squared_evidence": 0.010688, + "curvature_matrix_F": 4.267072, + "data_vector_D": 0.12534099999999998, + "inversion_other": 1.818591, + "mapped_reconstruction": 0.115169, + "mapping_matrix": 0.11622199999999999, + "memset": 0.048959000000000016, + "mesh_construction": 0.002048, + "mesh_locate_walk": 0.15027249999999998, + "mesh_qhull_callback": 0.010592, + "mesh_seed_argmin": 0.2277760000000001, + "mixed_fusion": 1.2594120000000002, + "other": 0.07148649999999998, + "pdip_solve": 27.291537000000034, + "psf_convolution_mapping_matrix": 7.332478000000001, + "ray_trace_data_grid": 0.013696000000000002, + "regularization_H": 0.031008 + }, + "per_lane_divisor": 1, + "host_callback": { + "pure_callback_span_ms": 83.9009001, + "qhull_ms": 78.39786950000001, + "callback_body_ms_note": "the OUTERMOST matching body event, not a sum: under the probe the body appears twice (the wrapper and the timed re-implementation it calls) and summing them would count the same work twice", + "events_by_name": { + "pure_callback.4": { + "count": 160, + "ms": 83.9009001 + }, + "$callback.py:815 _wrapped_callback": { + "count": 160, + "ms": 82.483341 + }, + "$callback.py:224 _callback": { + "count": 160, + "ms": 82.09361520000003 + }, + "$callback.py:74 pure_callback_impl": { + "count": 160, + "ms": 81.94491380000007 + }, + "$callback.py:69 __call__": { + "count": 160, + "ms": 78.653725 + }, + "$delaunay.py:162 ": { + "count": 160, + "ms": 78.54514460000006 + }, + "$host_callback_probe.py:225 wrapped": { + "count": 160, + "ms": 78.39786950000001 + }, + "$host_callback_probe.py:160 _timed_tri_only": { + "count": 160, + "ms": 78.2671368 + }, + "ThenExecuteCallback:GetEventForComputeStreamSyncPoint": { + "count": 160, + "ms": 0.3028661999999999 + }, + "$callback.py:822 ": { + "count": 640, + "ms": 0.2351646999999993 + }, + "$__init__.py:132 _xla_gc_callback": { + "count": 2, + "ms": 0.000771 + } + }, + "note": "HOST milliseconds per traced BATCH (the whole invocation), aggregated by name because the events nest. Not a row of the device table: the device pays for them as the idle gaps largest_idle_gaps names." + }, + "host_callback_ms": 83.9009001 + }, + "hlo_census": { + "status": "excluded", + "reason": "The legacy census anchors PyAutoArray source line numbers that moved after the phase-1 run. No batched attribution is published from unsupported anchors; the device-event table and wall reconciliation remain valid." + }, + "trace_split": { + "expected_calls": 160, + "executions_per_invocation": 16, + "method": "per-call (first-instruction recurrence)", + "note": "DECIDED IN CODE: the scalar arm's trace is split by trace_calls * B, so every lane's execution is its own block and the per-stage median is taken over all of them. The vmap arm's is split by trace_calls, one block per batched execution, and per_stage_ms_per_lane divides those rows by B." + } + } + }, + "certification_report": { + "source": "vmap arm, library solve observed through its stats= out-dict (PyAutoArray #566) and jax.debug.callback(..., ordered=True); ordered because the unordered batching rule returns the lanes permuted. Untimed, separately compiled; max rel diff of its log likelihoods vs the timed arm's: 1.686e-06", + "rows": 0, + "pdip_iter": "NOT AVAILABLE per lane without changing library numerics. The fallback branch calls the library's own reconstruction_positive_only_from, which returns the solution alone \u2014 jax_nnls.solve_nnls' iteration count is discarded inside the library's custom_vjp primal. The PDIP while_loop's cost is in the pdip_solve stage row of each arm's device table instead, which is a max-over-lanes quantity under vmap because every lane runs the same fixed kernel sequence.", + "passes_semantics": "library `passes`: restricted active-set passes run (jax_active_set.solve_certified)" + }, + "lane_construction": { + "draws_sha256": "0d36cfdd54138e3d4343da6cff62621f6145bc8ee8d317d15fbcea328cacd342", + "lane_rows": [ + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315 + ], + "calls": [ + 15 + ], + "stage": "pix1", + "regularization_range": { + "galaxies.source.pixelization.regularization.inner_coefficient": { + "min": 8.610204122811597e-06, + "max": 609.7498208301598 + }, + "galaxies.source.pixelization.regularization.outer_coefficient": { + "min": 3.4330906156470037e-06, + "max": 159.11676392313697 + }, + "galaxies.source.pixelization.regularization.signal_scale": { + "min": 0.12452271846719754, + "max": 0.9404155018121758 + } + }, + "phases": [ + "exploration" + ], + "window_rule": "nautilus_batches.timed_window: consecutive captured calls, in call order, from the FIRST call that is not a prior batch, concatenated and truncated to B; at B == n_batch exactly one real Nautilus batch. Falls back to the latest B lanes if the post-prior lanes run out; never repeats a lane.", + "note": "Lane k is captured lane lane_rows[k]: the mass AND shear of a real Nautilus proposal (nautilus_batch_capture.py), lens light fixed at S3, the S3 light-subtracted dataset shared by every lane. `offsets` in the lane table are the mass offsets from the fiducial; the shear is in the capture file." + }, + "captured": { + "batches_path": "/mnt/ral/jnightin/autolens_profiling_wt/certified-solver-phase-c1-lane-rate/results/breakdown/imaging/nautilus_batches_delaunay_pix1.npz", + "batches_sha256": "e71a5e23026b342d1ff4359b8fb914a87980d8aea0060659d2334dcfa3215c00", + "schema_version": 2, + "n_calls": 932, + "n_lanes": 18640, + "call_sizes_seen": [ + 20 + ], + "calls_by_phase": { + "prior": 15, + "exploration": 917 + }, + "parameter_paths": [ + "galaxies.source.pixelization.regularization.inner_coefficient", + "galaxies.source.pixelization.regularization.outer_coefficient", + "galaxies.source.pixelization.regularization.signal_scale", + "galaxies.lens.mass.centre.centre_0", + "galaxies.lens.mass.centre.centre_1", + "galaxies.lens.mass.einstein_radius", + "galaxies.lens.mass.ell_comps.ell_comps_0", + "galaxies.lens.mass.ell_comps.ell_comps_1", + "galaxies.lens.shear.gamma_1", + "galaxies.lens.shear.gamma_2" + ], + "stage": "pix1", + "regularization": { + "class": "AdaptSplit", + "free": true, + "priors": { + "inner_coefficient": [ + "LogUniform", + 1e-06, + 1000000.0 + ], + "outer_coefficient": [ + "LogUniform", + 1e-06, + 1000000.0 + ], + "signal_scale": [ + "Uniform", + 0.0, + 1.0 + ] + }, + "priors_source": "PyAutoGalaxy packaged config/priors/regularization (adapt_split.yaml / constant.yaml); adapt_split.yaml is identical to euclid_strong_lens_modeling_pipeline/config/priors/regularization/adapt_split.yaml" + }, + "nautilus": { + "departures_from_production": [ + "mass/shear priors are the phase-B cell's Gaussians, not chained from source_lp", + "no positions likelihood", + "the cell's mesh (Hilbert 1500, weight_power 1) in both stages; source_pix_2 redraws a 500-vertex Hilbert grid at weight_power 3.5", + "seeded (production passes no seed)", + "quick updates disabled (iterations_per_quick_update=1e12; render-only)", + "NullPaths: no output directory, so no checkpoint and one Sampler.run call", + "post-fit perform_update skipped (samples / latent variables never built)" + ], + "n_batch": 20, + "n_like_max": 40000, + "n_live": 150, + "number_of_cores": 1, + "production_reference": "euclid_strong_lens_modeling_pipeline/scripts/full_model.py source_pix_1 (n_live=150) / source_pix_2 (n_live=75): af.Nautilus(n_batch=20, **SettingsSearch.search_dict) with use_jax_vmap=True and number_of_cores=1 (SettingsSearch defaults)", + "production_stage": "source_pix_1", + "seed": 1, + "stage": "pix1", + "use_jax_vmap": true, + "version": "1.0.5" + }, + "capture_fit_status": "sampling complete (n_like_max or convergence); post-fit result skipped", + "capture_library_revisions": { + "PyAutoArray": { + "head": "7fa8d2714f7da43fec2b23c31bff580764831670", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoArray" + }, + "PyAutoFit": { + "head": "a736840127be7a3c21e15a5c945e94d8f1082983", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoFit" + }, + "PyAutoGalaxy": { + "head": "70a61e26cd715cefe7012a38285698091246a8a4", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy" + }, + "PyAutoLens": { + "head": "86054bbc19baa2f710a12e04a94fa27ab37cc354", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoLens" + }, + "PyAutoNerves": { + "head": "1fa613aa8d89a79613009fb66f5b4e2d21deb57a", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoNerves" + } + }, + "fingerprint_check": { + "fields": [ + "mesh", + "source_pixels", + "dataset_sha256", + "regularization_class", + "regularization_s0_fiducial", + "border_relocator", + "use_mixed_precision", + "log_evidence_s3_library" + ], + "not_identity": "the regularization coefficients: free per lane since the capture frees them", + "log_evidence_s3_library_rel_diff": 0.0, + "passed": true + }, + "timed_window_vs_capture_pdip": { + "reference": "the capture's own figure of merit (library PDIP, Fitness.call_wrap jax.jit(jax.vmap(call)) over parameter vectors) for the same lanes", + "compared_against": "this cell's jit(vmap) library-PDIP reference", + "n_compared": 16, + "max_rel_diff": 1.8151357928474666e-06, + "max_abs_diff_nats": 0.32149519986705855, + "gated": false, + "note": "RECORDED, NOT GATED: proves the lane trees rebuilt here are the models the sampler evaluated (a wrong parameter mapping shows up as nats, not 1e-10)." + } + }, + "matched": { + "vmap_wall_per_lane_ms": 47.00753313750283, + "scalar_wall_per_lane_ms": 50.56510295623866, + "speedup_vmap_over_scalar": 1.0756808447771444, + "note": "Both walls are the PRODUCTION nesting of their arm, measured in one process on the same B lanes with the SAME library Settings (no injection). A speedup below 1 means the batch is slower per lane than B sequential jitted calls." + }, + "solver_source": "library", + "solver": "pdip", + "certified_fallback": "pdip", + "certified_pass_budget": 16, + "certified_pass_budget_basis": "config default (Settings().certified_pass_budget)", + "certified_tau_rel": 1e-09, + "solver_used": "pdip", + "solver_check": { + "solver_used": "pdip", + "solver_used_source": "AbstractInversion.positive_only_solver_used on the fiducial S3 inversion, built eagerly on the JAX backend (AnalysisImaging(use_jax=True).fit_from) with the arms' Settings", + "reference_solver_used": "pdip", + "traced_solver_kwargs_jax": [ + "pdip" + ], + "observed_calls_jax": 1, + "report_rows": 0, + "report_vs_timed_arm_max_rel_diff": 1.6864381558265331e-06 + }, + "lanes_certified": [ + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null + ], + "lanes_passes": [ + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null + ], + "uncertified_lanes": null, + "per_lane_certification_note": "Not applicable: a library-PDIP row has no certificate or pass count.", + "gate": { + "pre_registered": true, + "gated": [ + "per lane: jit(vmap) arm vs jit(vmap) library PDIP <= lane_rtol relative", + "per lane: scalar jit arm vs scalar jit library PDIP <= lane_rtol relative" + ], + "recorded_not_gated": [ + "per lane: jit(vmap) arm vs scalar jit arm (rel_diff, abs_diff_nats)", + "per lane: jit(vmap) library PDIP vs scalar jit library PDIP", + "uncertified_lanes (certified_fallback=none rows)" + ], + "lanes_failed": 4, + "passed": false, + "policy_eligible": false, + "note": "Pre-registered before submission (module docstring; submit header). Phase 3 (results/notes/hst_gpu_residue_phase3_psf_2026_09.md) placed phase 2's ~2.5e-9 certified-vs-PDIP residual BETWEEN the jit(vmap) and scalar-jit compositions, not in the solver \u2014 so each arm is gated against the library-PDIP reference of its OWN composition, and the cross-composition difference is recorded with its nats. A certified_fallback=none row is policy-eligible only if every lane certifies AND passes the gate. Timing is never gated." + }, + "library_revisions": { + "PyAutoArray": { + "head": "3de624b5b91a4efa130dc3cb0a3a0f06f85025a3", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoArray", + "module_file": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/__init__.py" + }, + "PyAutoFit": { + "head": "dd9fbe0aab60c4a57702b1444ca031b317c91331", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoFit", + "module_file": "/mnt/ral/jnightin/PyAuto/PyAutoFit/autofit/__init__.py" + }, + "PyAutoGalaxy": { + "head": "70a61e26cd715cefe7012a38285698091246a8a4", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy", + "module_file": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/__init__.py" + }, + "PyAutoLens": { + "head": "86054bbc19baa2f710a12e04a94fa27ab37cc354", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoLens", + "module_file": "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/__init__.py" + }, + "autoarray_file": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/__init__.py" + } + }, + "headline_arm_note": "`trace`, `hlo_census`, `command_buffers` and `trace_timing` above describe the scalar arm \u2014 the program phase 1 traced. Both arms' full blocks, the lane table and the matched comparison are under `vmap`." +} \ No newline at end of file diff --git a/results/breakdown/imaging/fixed_light_trace_delaunay_jitvmap16_captured_pix1_libpdip_fbon_b16_hpc_a100_fp64_fixed_light_trace.png b/results/breakdown/imaging/fixed_light_trace_delaunay_jitvmap16_captured_pix1_libpdip_fbon_b16_hpc_a100_fp64_fixed_light_trace.png new file mode 100644 index 000000000..ce00c294c Binary files /dev/null and b/results/breakdown/imaging/fixed_light_trace_delaunay_jitvmap16_captured_pix1_libpdip_fbon_b16_hpc_a100_fp64_fixed_light_trace.png differ diff --git a/results/breakdown/imaging/fixed_light_trace_delaunay_jitvmap20_captured_pix1_libcertified_fboff_b16_hpc_a100_fp64_fixed_light_trace.json b/results/breakdown/imaging/fixed_light_trace_delaunay_jitvmap20_captured_pix1_libcertified_fboff_b16_hpc_a100_fp64_fixed_light_trace.json new file mode 100644 index 000000000..46681866a --- /dev/null +++ b/results/breakdown/imaging/fixed_light_trace_delaunay_jitvmap20_captured_pix1_libcertified_fboff_b16_hpc_a100_fp64_fixed_light_trace.json @@ -0,0 +1,6130 @@ +{ + "device": { + "backend": "gpu", + "device": "cuda:0", + "hostname": "euclid-ral-gpu-1", + "xla_flags": "--xla_disable_hlo_passes=constant_folding --xla_gpu_autotune_level=0 --xla_gpu_enable_triton_gemm=false", + "omp_num_threads": null, + "cpu_count": 124, + "jax_compilation_cache_dir": "/mnt/ral/jnightin/autolens_profiling_wt/certified-solver-phase-c1-lane-rate/output/jax_cache/fixed_light_lanerate_delaunay_pix1_time_20_certified_off_350768_13", + "autotune_cache_entries_at_start": 0, + "cache_fresh": true, + "nvidia_smi": "NVIDIA A100 80GB PCIe, 35457 MiB, 81920 MiB" + }, + "machine": { + "cpu_model": "AMD EPYC 7702 64-Core Processor", + "cpu_count_os": 124, + "nproc": 4, + "nproc_all": 124, + "nproc_note": "GNU nproc honours OMP_NUM_THREADS, so `nproc` can print 1 on a multi-core host; `nproc_all` is the core count.", + "ram_total": "928298200 kB", + "kernel": "5.14.0-687.50.1.el9_8.x86_64", + "platform": "Linux-5.14.0-687.50.1.el9_8.x86_64-x86_64-with-glibc2.34", + "python": "3.12.4", + "jax_thread_env": { + "NPROC": null + }, + "blas_thread_env": { + "OMP_NUM_THREADS": null, + "OPENBLAS_NUM_THREADS": null, + "MKL_NUM_THREADS": null, + "VECLIB_MAXIMUM_THREADS": null, + "NUMEXPR_NUM_THREADS": null + }, + "thread_env_note": "NPROC sizes XLA's CPU intra-op pool (the JAX rows); the BLAS knobs pin OpenBLAS/MKL/OpenMP (the numpy/scipy rows) and do not touch JAX. Two disjoint families; both are recorded on every CPU timing.", + "gpu": "NVIDIA A100 80GB PCIe, 81920 MiB, 610.57.04" + }, + "precision": "fp64", + "configuration": { + "pixel_scale_arcsec": 0.05, + "mask_radius_arcsec": 3.5, + "image_pixels_masked": 15361, + "over_sampled_pixels": 62752, + "mesh": "delaunay", + "mesh_shape": null, + "source_pixels": 1500, + "source_pixels_requested": null, + "dataset": "hst", + "dataset_sha256": { + "data.fits": "e4e833a28e9c6f6fb023cd85c0d3dde74068720256bc77a240633500e5b04fac", + "noise_map.fits": "315c6266a0acd3ac9c8da82fcd2b45a08697362481fd7a35072bab1658530ba3", + "psf.fits": "8389ba0e8bf4a09b4a561cfc246181a2fb944ed396754cd0ff76fdd22910d303" + }, + "cell_source_sha256": "06a162fcdae6b329384ec33322f443df07215d86e56f0505ac15b3d3473eb432", + "inversion_path": "dense", + "pass_budget": 7, + "pass_budget_basis": "phase 3 (autolens_profiling#255): the smallest ZERO-fallback budget per mesh, the budget a production run fixes. NOT phase 0's certifying budget (2 for Delaunay), which falls back on 67.5 % of a graded draw set and is not a production cost.", + "border_relocator_mode": "cell", + "border_relocator": true, + "border_relocator_note": "'cell' is use_border_relocator=True, which every profiling cell in this family forces; 'library' passes None and takes the shipped config default, which is what production runs. The resolved boolean is what this leg actually ran.", + "routes_selected": [ + "b", + "d" + ], + "trace_calls": 10, + "command_buffers_traced": "off", + "use_mixed_precision": false, + "tau_rel": 1e-09, + "regularization": { + "scheme": "adapt_split", + "inner_coefficient": 0.1, + "outer_coefficient": 10.0, + "signal_scale": 0.1 + }, + "thread_env": { + "n_threads": null, + "vars": [ + "OPENBLAS_NUM_THREADS", + "MKL_NUM_THREADS", + "OMP_NUM_THREADS", + "VECLIB_MAXIMUM_THREADS", + "NUMEXPR_NUM_THREADS" + ], + "set_to": null, + "preexisting": {}, + "overridden": {}, + "note": "Not pinned (legacy variant): recorded as found." + }, + "over_sample_size_lp_rule": { + "sub_size_list": [ + 4, + 2, + 2 + ], + "radial_list": [ + 0.3, + 0.6 + ], + "centre": [ + 0.0, + 0.0 + ] + }, + "vmap_batch": 20, + "lanes": "captured", + "arms": [ + "vmap", + "scalar" + ], + "fallback": "off", + "draw_seed": 0, + "vmap_composition": "jax.jit(jax.vmap(fn))", + "lane_rtol": 1e-09, + "vmap_flags_note": "Strict ProfileCLI.parse_cell_args rejects unknown flags. These keys record the exact batching program and prevent historical vmap(jit) artifacts from being mistaken for current jit(vmap) measurements.", + "solver_source": "library", + "solver": "certified", + "certified_fallback": "none", + "certified_pass_budget": 16, + "captured_pass": "time", + "batches": "/mnt/ral/jnightin/autolens_profiling_wt/certified-solver-phase-c1-lane-rate/results/breakdown/imaging/nautilus_batches_delaunay_pix1.npz" + }, + "solver_injection": { + "patched": null, + "part_v": "none \u2014 library mode selects the solver through al.Settings", + "part_b_route_d": { + "patched": "autoarray.inversion.inversion.inversion_util.reconstruction_positive_only_from", + "pass_budget": 7, + "fallback": true + }, + "note": "Library mode (phase B, #300): PART V's arms and references run the library's own positive-only solve, selected by Settings(positive_only_solver, certified_fallback, certified_pass_budget); nothing is injected. PART B's single-call route d (the fiducial d == b pin) still uses the phase-1 harness injection at the phase-3 budget and is not a phase-B row. The untimed certification report observes the library solve (library_solver_observed) without changing it." + }, + "routes": { + "b_s3_pdip": { + "label": "S3 PDIP (source-only)", + "status": "ok", + "solver": "library", + "ms": 50.878148099945975, + "log_likelihood": 29155.000174252804 + }, + "d_s3_certified_fallback": { + "label": "S3 certified active set, budget 7, PDIP fallback", + "status": "ok", + "solver": "harness-injected certified active set", + "pass_budget": 7, + "fallback": true, + "injected_solver_calls_jax": 1, + "injected_solver_calls_numpy": 0, + "ms": 31.497855800262187, + "log_likelihood": 29155.000173664765 + } + }, + "equivalence_pins": [ + { + "pin": "route d (certified, fallback) == route b (library PDIP)", + "route": "d_s3_certified_fallback", + "reference": "b_s3_pdip", + "expectation": "the certified active set returns the library's own positive solution", + "rtol": 1e-09, + "got": 29155.000173664765, + "reference_value": 29155.000174252804, + "rel_diff": 2.0169413578628726e-11, + "status": "PASS" + } + ], + "equivalence_rtol": 1e-09, + "reference": { + "log_evidence_s0_library": 29155.00017433923, + "log_evidence_s3_library": 29155.000174339304, + "s3": { + "n_params": 1500, + "n_mapper": 1500, + "n_funcs": 0, + "edge_zeroed_pixels": 0, + "subtracted_light_flux": 5105.448603818575 + } + }, + "command_buffers": { + "wall_on_ms": 686.2691859001643, + "wall_off_ms": 691.6505541001243, + "command_buffer_delta_ms": 5.381368199959979, + "command_buffer_delta_pct": 0.7841483066009085, + "traced": "off", + "compiler_option": "xla_gpu_enable_command_buffer", + "probe": { + "note": "Not taken in --vmap-batch mode: the CUPTI-inside-a-CUDA-graph probe is a phase-1 diagnostic about the JOIN, and this mode already compiles and times both the command-buffers ON and OFF executable of every arm." + }, + "note": "ONE lowering, TWO compilations, one process. wall_on_ms is the PRODUCTION program (CUDA graphs as XLA ships them) and is the number comparable to phase 5's row; wall_off_ms is the graph-less program the stage rows attribute. The delta is the launch overhead the graphs remove \u2014 it lands in device_idle and host_outside_span, not in any stage. Reconciliation is computed against wall_off_ms." + }, + "trace": { + "parser": "ProfileData.from_file(xplane) + as_text() + stack_frame_index(proto field 17)", + "stage_audit": { + "mixed_fusion": [ + { + "instruction": "loop_divide_gather_fusion", + "ms": 1.014830575, + "opcode": "fusion", + "shape": "(f64[15361,1,1,1500]{3,2,1,0}, f64[15361,1,1,1500]{3,2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_broadcast_fusion.4", + "ms": 0.22561039500000007, + "opcode": "fusion", + "shape": "f64[1500,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_reduce_fusion.5", + "ms": 0.12116068500000002, + "opcode": "fusion", + "shape": "f64[92,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123 (data_vector_via_blurred_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:67 (InversionImagingMapping.data_vector)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:699 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_reduce_fusion.9", + "ms": 0.11469936500000001, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163 (mapped_reconstructed_data_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:120 (InversionImagingMapping._mapped_reconstructed_data_dict_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:196 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "loop_broadcast_fusion.2", + "ms": 0.11041876500000011, + "opcode": "fusion", + "shape": "f64[15361,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:342", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:342 (mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:283 (Mapper.mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:91 (AbstractInversionImaging._mapping_matrix_for_convolution_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:137 (AbstractInversionImaging.operated_mapping_matrix_list)" + ] + }, + { + "instruction": "input_multiply_transpose_fusion", + "ms": 0.10953336000000004, + "opcode": "fusion", + "shape": "(f64[1500,1500]{1,0}, f64[1500,1500]{1,0}, f64[1500,1500]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:237 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:274 (_certified_positive_only_from)" + ] + } + ], + "border_relocator": [ + { + "instruction": "eigh.45", + "ms": 0.0745658599999995, + "opcode": "custom-call", + "shape": "(f64[2,2]{0,1}, f64[2]{0}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "custom-call.2", + "ms": 0.007951620000000019, + "opcode": "custom-call", + "shape": "(f64[2,2]{1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_reduce_fusion.10", + "ms": 0.005889879999999996, + "opcode": "fusion", + "shape": "(f64[], f64[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:269", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:269 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_add_fusion.3", + "ms": 0.003586034999999997, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:423 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:208 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_add_fusion.5", + "ms": 0.003427964999999993, + "opcode": "fusion", + "shape": "f64[1500]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:458 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_concatenate_fusion.12", + "ms": 0.0024041449999999977, + "opcode": "fusion", + "shape": "f64[392,2]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:238", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:238 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + } + ], + "mesh_construction": [ + { + "instruction": "input_concatenate_fusion.7", + "ms": 0.001939029999999998, + "opcode": "fusion", + "shape": "f64[1500,2]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:820", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:820 (InterpolatorDelaunay.mesh_grid_xy)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:847 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + } + ], + "mesh_qhull_callback": [ + { + "instruction": "pure_callback.4", + "ms": 0.010609819999999987, + "opcode": "custom-call", + "shape": "(s32[3000,3]{1,0}, s32[3000,3]{1,0}, s32[1500]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:161", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:161 (_jax_delaunay_tables)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:405 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + } + ], + "other": [ + { + "instruction": "copy.80", + "ms": 0.0416873749999986, + "opcode": "copy", + "shape": "f64[1,1024,2]{2,1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.48", + "ms": 0.01709492000000022, + "opcode": "copy", + "shape": "s32[21361]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.53", + "ms": 0.002002704999999998, + "opcode": "copy", + "shape": "s64[1500]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.79", + "ms": 0.0017998299999999966, + "opcode": "copy", + "shape": "s32[]", + "source": "", + "stack": [] + }, + { + "instruction": "copy.78", + "ms": 0.0017754899999999996, + "opcode": "copy", + "shape": "s64[]", + "source": "", + "stack": [] + }, + { + "instruction": "copy.39", + "ms": 0.0016524749999999953, + "opcode": "copy", + "shape": "s32[]", + "source": "", + "stack": [] + } + ], + "mesh_seed_argmin": [ + { + "instruction": "input_reduce_fusion", + "ms": 0.14850283000000372, + "opcode": "fusion", + "shape": "(f64[1024]{0}, s64[1024]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:191", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:191 (_nearest_vertex_seed_from..argmin_chunk)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)" + ] + }, + { + "instruction": "loop_dynamic_update_slice_fusion", + "ms": 0.04091853499999826, + "opcode": "fusion", + "shape": "s32[21,1024]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_add_fusion", + "ms": 0.031879360000000044, + "opcode": "fusion", + "shape": "s64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_broadcast_fusion", + "ms": 0.0019465549999999965, + "opcode": "fusion", + "shape": "s32[21,1024]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "pdip_solve": [ + { + "instruction": "cholesky.50", + "ms": 7.571322239999946, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "triangular-solve.1", + "ms": 1.3521416300000395, + "opcode": "custom-call", + "shape": "(f64[1500,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "triangular-solve", + "ms": 1.1715294199999895, + "opcode": "custom-call", + "shape": "(f64[1500,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "cholesky.70", + "ms": 0.8921585999999985, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:297 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:274 (_certified_positive_only_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:496 (reconstruction_positive_only_from)" + ] + }, + { + "instruction": "cholesky.60", + "ms": 0.8642273799999994, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:237 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:274 (_certified_positive_only_from)" + ] + }, + { + "instruction": "input_transpose_fusion", + "ms": 0.2996470950000008, + "opcode": "fusion", + "shape": "f64[1500,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + } + ], + "regularization_H": [ + { + "instruction": "input_scatter_fusion.10", + "ms": 0.0020590249999999947, + "opcode": "fusion", + "shape": "f64[1500,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:615", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:615 (pixel_splitted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:137 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_concatenate_fusion.8", + "ms": 0.0018705649999999972, + "opcode": "fusion", + "shape": "pred[3]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:93", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:93 (split_points_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:410 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + }, + { + "instruction": "input_concatenate_fusion.9", + "ms": 0.0018559750000000012, + "opcode": "fusion", + "shape": "pred[3]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:91", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:91 (split_points_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:410 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + }, + { + "instruction": "input_concatenate_fusion.10", + "ms": 0.0018550400000000016, + "opcode": "fusion", + "shape": "pred[3]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:90", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:90 (split_points_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:410 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + }, + { + "instruction": "input_concatenate_fusion", + "ms": 0.0017529450000000014, + "opcode": "fusion", + "shape": "s32[1500,2]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:615", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:615 (pixel_splitted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:137 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_concatenate_fusion.11", + "ms": 0.0015462449999999988, + "opcode": "fusion", + "shape": "pred[3]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:88", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:88 (split_points_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:410 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + } + ], + "mesh_locate_walk": [ + { + "instruction": "input_reduce_fusion.1", + "ms": 0.025416295000000685, + "opcode": "fusion", + "shape": "pred[196]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:288", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:288 (_walk_from_seed..cond)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)" + ] + }, + { + "instruction": "loop_reduce_fusion", + "ms": 0.025351530000000278, + "opcode": "fusion", + "shape": "(f64[21361]{0}, s64[21361]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:264", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:264 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:264 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)" + ] + }, + { + "instruction": "loop_or_select_fusion", + "ms": 0.022417385000000328, + "opcode": "fusion", + "shape": "(s32[21361]{0}, pred[21361]{0}, pred[21361]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:270", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:270 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)" + ] + }, + { + "instruction": "loop_select_fusion", + "ms": 0.020096609999999963, + "opcode": "fusion", + "shape": "s32[21361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:242", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:242 (_walk_from_seed..weights_of)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:262 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)" + ] + }, + { + "instruction": "input_reduce_fusion.2", + "ms": 0.016372954999999835, + "opcode": "fusion", + "shape": "pred[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:288", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:288 (_walk_from_seed..cond)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)" + ] + }, + { + "instruction": "while.20", + "ms": 0.014597884999999899, + "opcode": "while", + "shape": "(s32[], s32[21361]{0}, pred[21361]{0}, pred[21361]{0}, s32[3000,3]{1,0}, /*index=5*/f64[1500,2]{1,0}, f64[21361,2]{1,0}, s32[3000,3]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "psf_convolution_mapping_matrix": [ + { + "instruction": "input_scatter_fusion", + "ms": 1.97975727, + "opcode": "fusion", + "shape": "f64[1500,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.19.0", + "ms": 1.7551799450000005, + "opcode": "fft", + "shape": "f64[1500,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.15.0", + "ms": 1.3641246450000013, + "opcode": "fft", + "shape": "c128[1500,180,91]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.17.0", + "ms": 0.9786353050000003, + "opcode": "fft", + "shape": "c128[1500,91,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_transpose_fusion.2", + "ms": 0.5137602899999998, + "opcode": "fusion", + "shape": "c128[1500,91,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "wrapped_transpose", + "ms": 0.4983216949999999, + "opcode": "fusion", + "shape": "c128[1500,180,91]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + } + ], + "inversion_other": [ + { + "instruction": "cholesky.80", + "ms": 0.8954901000000013, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1078 (AbstractInversion.log_det_curvature_reg_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:347 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "cholesky.90", + "ms": 0.8914510800000003, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1157 (AbstractInversion.log_det_regularization_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:348 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "loop_reduce_window_fusion.1", + "ms": 0.002767499999999998, + "opcode": "fusion", + "shape": "s64[94,16]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "loop_reduce_window_fusion", + "ms": 0.0026879849999999956, + "opcode": "fusion", + "shape": "s64[6,16]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "loop_broadcast_convert_fusion", + "ms": 0.002175330000000001, + "opcode": "fusion", + "shape": "(s32[1500]{0}, s64[1500]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527 (AbstractInversion.zeroed_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:567 (AbstractInversion.solve_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:684 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_scatter_fusion.5", + "ms": 0.001927665000000001, + "opcode": "fusion", + "shape": "s64[1500]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527 (AbstractInversion.zeroed_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:567 (AbstractInversion.solve_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:684 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "mapping_matrix": [ + { + "instruction": "input_reduce_fusion.23", + "ms": 0.0028863699999999914, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:120 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + } + ], + "curvature_matrix_F": [ + { + "instruction": "cublas-lt-matmul.2", + "ms": 4.198070774999998, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "chi_squared_evidence": [ + { + "instruction": "loop_multiply_fusion", + "ms": 0.003009435000000001, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:300", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:300 (AbstractNDArray.__pow__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:60 (unwrap_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:35 (to_new_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:78 (chi_squared_map_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:78 (AbstractFit.chi_squared_map)" + ] + } + ] + }, + "stage_audit_note": "The HLO instructions that contributed most of each stage's milliseconds, with their full source stack. A stage row is only as good as the rules that built it; this is how a reader checks a row against the HLO instead of trusting it.", + "untraced_wall_ms": 34.56384598001023, + "reconciliation_vs_untraced_pct": 6.815444572783263, + "wall_basis": "wall_ms is the TRACED run's wall, the run these kernel durations came from. untraced_wall_ms is the same executable without the profiler; the difference is the profiler's overhead and belongs in neither the stages nor the idle row.", + "calls": 200, + "call_split": "per-call (first-instruction recurrence)", + "call_blocks": 200, + "events": 99770, + "streams": [ + "Stream #14(MemcpyD2H,Compute,MemcpyH2D,Memset,MemcpyD2D)" + ], + "per_stage_ms": { + "border_relocator": { + "median_ms": 0.10128100000000001, + "min_ms": 0.10073700000000002, + "max_ms": 0.10217800000000002 + }, + "chi_squared_evidence": { + "median_ms": 0.003008, + "min_ms": 0.002816, + "max_ms": 0.003392 + }, + "curvature_matrix_F": { + "median_ms": 4.196892500000001, + "min_ms": 4.178059, + "max_ms": 4.24619 + }, + "inversion_other": { + "median_ms": 1.7981955, + "min_ms": 1.778524, + "max_ms": 1.816411 + }, + "mapping_matrix": { + "median_ms": 0.00288, + "min_ms": 0.002879, + "max_ms": 0.002912 + }, + "memset": { + "median_ms": 0.0345595, + "min_ms": 0.010112999999999999, + "max_ms": 0.05388700000000001 + }, + "mesh_construction": { + "median_ms": 0.001952, + "min_ms": 0.001919, + "max_ms": 0.001953 + }, + "mesh_locate_walk": { + "median_ms": 0.14809750000000002, + "min_ms": 0.13023799999999996, + "max_ms": 0.18329300000000004 + }, + "mesh_qhull_callback": { + "median_ms": 0.01056, + "min_ms": 0.010495, + "max_ms": 0.011104 + }, + "mesh_seed_argmin": { + "median_ms": 0.22323500000000007, + "min_ms": 0.22285000000000008, + "max_ms": 0.22374600000000014 + }, + "mixed_fusion": { + "median_ms": 1.9799594999999997, + "min_ms": 1.9719579999999992, + "max_ms": 1.9930169999999996 + }, + "other": { + "median_ms": 0.065728, + "min_ms": 0.063329, + "max_ms": 0.070016 + }, + "pdip_solve": { + "median_ms": 14.683332, + "min_ms": 2.4254860000000003, + "max_ms": 23.052538000000023 + }, + "psf_convolution_mapping_matrix": { + "median_ms": 7.089918000000001, + "min_ms": 7.074800000000001, + "max_ms": 7.103885 + }, + "regularization_H": { + "median_ms": 0.010912, + "min_ms": 0.010784, + "max_ms": 0.011296 + } + }, + "stage_order": [ + "border_relocator", + "mesh_qhull_callback", + "mesh_seed_argmin", + "mesh_locate_walk", + "mesh_construction", + "mapping_matrix", + "psf_convolution_mapping_matrix", + "curvature_matrix_F", + "regularization_H", + "pdip_solve", + "chi_squared_evidence", + "inversion_other", + "mixed_fusion", + "other", + "memset" + ], + "mixed_fusion": { + "ms": 1.9799594999999997, + "constituent_stage_sets": { + "curvature_matrix_F + psf_convolution_mapping_matrix": 1.014830575, + "pdip_solve + psf_convolution_mapping_matrix": 0.22561039500000007, + "data_vector_D + pdip_solve": 0.12483967000000015, + "mapped_reconstruction + pdip_solve": 0.11469936500000001, + "mapping_matrix + pdip_solve": 0.11277122500000009, + "curvature_reg_reduce_gather + inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": 0.10953336000000004, + "pdip_solve + regularization_H": 0.045041625000000016, + "inversion_other + pdip_solve + regularization_H": 0.024227685000000013, + "inversion_other + pdip_solve": 0.02283095499999999, + "inversion_other + mapping_matrix + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin + pdip_solve": 0.021145820000000003, + "inversion_other + mesh_construction + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin + pdip_solve + regularization_H": 0.019092000000000015, + "inversion_other + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + pdip_solve + regularization_H": 0.014647434999999995, + "pdip_solve + ray_trace_data_grid": 0.013688684999999956, + "border_relocator + pdip_solve": 0.013573504999999991, + "inversion_other + mapping_matrix + mesh_construction + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin": 0.011668704999999996, + "grids_and_structures + mass_profile_deflections + pdip_solve": 0.010161980000000003, + "grids_and_structures + mass_profile_deflections + pdip_solve + ray_trace_data_grid": 0.009011490000000004, + "chi_squared_evidence + pdip_solve": 0.007725344999999981, + "inversion_other + mesh_construction + mesh_seed_argmin + pdip_solve + regularization_H": 0.006955930000000005, + "inversion_other + mesh_dual_areas + mesh_locate_walk": 0.006663660000000058, + "inversion_other + mesh_construction + pdip_solve + regularization_H": 0.006492274999999981, + "grids_and_structures + mass_profile_deflections + ray_trace_data_grid": 0.0054911500000000045, + "inversion_other + pdip_solve + ray_trace_data_grid": 0.005259500000000019, + "inversion_other + regularization_H": 0.005234534999999999, + "inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": 0.004753875, + "inversion_other + mapped_reconstruction + pdip_solve": 0.0037404800000000035, + "mapping_matrix + pdip_solve + regularization_H": 0.003474379999999996, + "inversion_other + mesh_construction + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin": 0.00310092, + "inversion_other + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin": 0.002918069999999999, + "inversion_other + mesh_construction + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin + regularization_H": 0.0026831799999999986, + "inversion_other + mesh_dual_areas + mesh_locate_walk + pdip_solve": 0.0025835149999999946, + "inversion_other + mesh_locate_walk + mesh_seed_argmin": 0.0024814150000000037, + "inversion_other + mesh_interpolation_weights": 0.0021529750000000053, + "chi_squared_evidence + inversion_other": 0.0019567950000000003 + }, + "example_kernels": { + "curvature_matrix_F + psf_convolution_mapping_matrix": [ + "loop_divide_gather_fusion" + ], + "pdip_solve + psf_convolution_mapping_matrix": [ + "loop_broadcast_fusion.4" + ], + "data_vector_D + pdip_solve": [ + "input_reduce_fusion.5", + "input_reduce_fusion.21" + ], + "mapped_reconstruction + pdip_solve": [ + "input_reduce_fusion.9" + ], + "mapping_matrix + pdip_solve": [ + "loop_broadcast_fusion.2", + "loop_divide_fusion" + ], + "curvature_reg_reduce_gather + inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": [ + "input_multiply_transpose_fusion" + ], + "pdip_solve + regularization_H": [ + "loop_select_fusion.2", + "input_transpose_fusion.3" + ], + "inversion_other + pdip_solve + regularization_H": [ + "input_transpose_fusion.4" + ], + "inversion_other + pdip_solve": [ + "input_reduce_fusion.7", + "loop_log_fusion", + "input_reduce_fusion.8", + "input_reduce_fusion.12" + ], + "inversion_other + mapping_matrix + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin + pdip_solve": [ + "input_scatter_fusion.6", + "input_scatter_fusion.3" + ] + }, + "prorated_estimate_ms": { + "psf_convolution_mapping_matrix": 0.620220485, + "curvature_matrix_F": 0.5074152875, + "pdip_solve": 0.39283176865476194, + "mapped_reconstruction": 0.08169164991666669, + "inversion_other": 0.06827755598809528, + "data_vector_D": 0.062419835000000076, + "mapping_matrix": 0.062131750833333374, + "regularization_H": 0.04300222082142858, + "reconstruction_scatter": 0.02309514075000001, + "curvature_reg_reduce_gather": 0.02190667200000001, + "mesh_construction": 0.01432465982142857, + "ray_trace_data_grid": 0.012680764999999986, + "mesh_locate_walk": 0.01256340298809526, + "mesh_interpolation_weights": 0.012386892571428575, + "mesh_seed_argmin": 0.011087490238095243, + "mesh_dual_areas": 0.008437910416666684, + "grids_and_structures": 0.007470582500000003, + "mass_profile_deflections": 0.007470582500000003, + "border_relocator": 0.0067867524999999955, + "chi_squared_evidence": 0.004841069999999991 + }, + "prorated_note": "ESTIMATE ONLY \u2014 a mixed fusion's time split equally across the stages its constituents span. Never summed into the measured table, never reconciled." + }, + "other_sources_ms": { + "copy.80": 0.0416873749999986, + "copy.48": 0.01709492000000022, + "copy.53": 0.002002704999999998, + "copy.79": 0.0017998299999999966, + "copy.78": 0.0017754899999999996, + "copy.39": 0.0016524749999999953 + }, + "device_span_ms": 35.60909475, + "device_busy_ms": 29.040079504999998, + "device_idle_ms": 6.569015244999999, + "largest_idle_gaps": [ + { + "gap_ms": 5.50344, + "after": "pure_callback.4", + "before": "pure_callback.4" + }, + { + "gap_ms": 0.140541, + "after": "input_transpose_fusion", + "before": "triangular-solve" + }, + { + "gap_ms": 0.031455, + "after": "pure_callback.4", + "before": "copy.79" + }, + { + "gap_ms": 0.028447, + "after": "while.20", + "before": "loop_add_fusion.4" + }, + { + "gap_ms": 0.028351, + "after": "input_concatenate_fusion.7", + "before": "pure_callback.4" + }, + { + "gap_ms": 0.028319, + "after": "input_reduce_fusion.20", + "before": "loop_broadcast_fusion.4" + }, + { + "gap_ms": 0.023904, + "after": "copy.48", + "before": "input_reduce_fusion.1" + }, + { + "gap_ms": 0.019039, + "after": "input_scatter_fusion.7", + "before": "loop_reduce_fusion.1" + } + ], + "kernel_ms": 30.350510500000002, + "sum_ms": 36.919525745, + "wall_ms": 35.613951534996886, + "host_outside_span_ms": 0.004856784996889019, + "reconciliation_pct": 3.6659066285305695, + "unjoined_ms": 0.0, + "unjoined_pct": 0.0, + "other_ms": 0.065728, + "other_pct": 0.1845568861838059, + "note": "Stage rows attribute the command-buffers-OFF program (see the module docstring): kernel times are the same, the launch overhead the CUDA graphs remove is not. sum_ms = kernel rows + device_idle_ms; the residual against wall_ms is host_outside_span_ms (dispatch before the first kernel, teardown after the last).", + "per_stage_ms_per_lane": { + "border_relocator": 0.10128100000000001, + "chi_squared_evidence": 0.003008, + "curvature_matrix_F": 4.196892500000001, + "inversion_other": 1.7981955, + "mapping_matrix": 0.00288, + "memset": 0.0345595, + "mesh_construction": 0.001952, + "mesh_locate_walk": 0.14809750000000002, + "mesh_qhull_callback": 0.01056, + "mesh_seed_argmin": 0.22323500000000007, + "mixed_fusion": 1.9799594999999997, + "other": 0.065728, + "pdip_solve": 14.683332, + "psf_convolution_mapping_matrix": 7.089918000000001, + "regularization_H": 0.010912 + }, + "per_lane_divisor": 1, + "host_callback": { + "pure_callback_span_ms": 99.9314493, + "qhull_ms": 93.31271309999998, + "callback_body_ms_note": "the OUTERMOST matching body event, not a sum: under the probe the body appears twice (the wrapper and the timed re-implementation it calls) and summing them would count the same work twice", + "events_by_name": { + "pure_callback.4": { + "count": 200, + "ms": 99.9314493 + }, + "$callback.py:815 _wrapped_callback": { + "count": 200, + "ms": 98.30340699999998 + }, + "$callback.py:224 _callback": { + "count": 200, + "ms": 97.8397079 + }, + "$callback.py:74 pure_callback_impl": { + "count": 200, + "ms": 97.6615542 + }, + "$callback.py:69 __call__": { + "count": 200, + "ms": 93.62564410000006 + }, + "$delaunay.py:162 ": { + "count": 200, + "ms": 93.48909439999997 + }, + "$host_callback_probe.py:225 wrapped": { + "count": 200, + "ms": 93.31271309999998 + }, + "$host_callback_probe.py:160 _timed_tri_only": { + "count": 200, + "ms": 93.15025310000003 + }, + "ThenExecuteCallback:GetEventForComputeStreamSyncPoint": { + "count": 200, + "ms": 0.36440779999999984 + }, + "$callback.py:822 ": { + "count": 800, + "ms": 0.2796993999999996 + }, + "$__init__.py:132 _xla_gc_callback": { + "count": 2, + "ms": 0.00037200000000000004 + } + }, + "note": "HOST milliseconds per traced BATCH (the whole invocation), aggregated by name because the events nest. Not a row of the device table: the device pays for them as the idle gaps largest_idle_gaps names." + }, + "host_callback_ms": 99.9314493 + }, + "hlo_census": { + "status": "excluded", + "reason": "The legacy census anchors PyAutoArray source line numbers that moved after the phase-1 run. No batched attribution is published from unsupported anchors; the device-event table and wall reconciliation remain valid." + }, + "stage_map_provenance": [ + { + "label": "log_det_curvature_reg", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 850, + 882 + ], + "requires": { + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 884, + 896 + ] + }, + "function": null + }, + { + "label": "log_det_regularization", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 850, + 882 + ], + "requires": { + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 897, + 943 + ] + }, + "function": null + }, + { + "label": "curvature_reg_add", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 359, + 372 + ], + "requires": null, + "function": null + }, + { + "label": "curvature_reg_reduce_gather", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 374, + 398 + ], + "requires": null, + "function": null + }, + { + "label": "edge_subset_gather", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 606, + 614 + ], + "requires": null, + "function": null + }, + { + "label": "regularization_term", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 786, + 849 + ], + "requires": null, + "function": null + }, + { + "label": "mapped_reconstruction", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 722, + 785 + ], + "requires": null, + "function": null + }, + { + "label": "reconstruction_scatter", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 583, + 605 + ], + "requires": null, + "function": null + }, + { + "label": "reconstruction_scatter", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 615, + 721 + ], + "requires": null, + "function": null + }, + { + "label": "certified_active_set_solve", + "path": "likelihood_breakdown/active_set_steps.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "certified_active_set_solve", + "path": "likelihood_breakdown/library_solver_injection.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "pdip_solve", + "path": "PyAutoArray/autoarray/util/jax_nnls.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "pdip_solve", + "path": "PyAutoArray/autoarray/inversion/inversion/inversion_util.py", + "lines": [ + 256, + 488 + ], + "requires": null, + "function": null + }, + { + "label": "mapped_reconstruction", + "path": "PyAutoArray/autoarray/inversion/inversion/inversion_util.py", + "lines": [ + 156, + 200 + ], + "requires": null, + "function": null + }, + { + "label": "curvature_matrix_F", + "path": "PyAutoArray/autoarray/inversion/inversion/inversion_util.py", + "lines": [ + 12, + 155 + ], + "requires": null, + "function": null + }, + { + "label": "reconstruction_scatter", + "path": "PyAutoArray/autoarray/inversion/inversion/inversion_util.py", + "lines": [ + 201, + 255 + ], + "requires": null, + "function": null + }, + { + "label": "data_vector_D", + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py", + "lines": [ + 54, + 73 + ], + "requires": null, + "function": null + }, + { + "label": "curvature_matrix_F", + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py", + "lines": [ + 74, + 110 + ], + "requires": null, + "function": null + }, + { + "label": "data_vector_D", + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py", + "lines": null, + "requires": null, + "function": "data_vector_via_blurred_mapping_matrix_from" + }, + { + "label": "curvature_matrix_F", + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "likelihood_breakdown/psf_cube_injection.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": [ + 1086, + 1300 + ], + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": [ + 632, + 642 + ], + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": [ + 670, + 691 + ], + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": null, + "requires": { + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": [ + 1086, + 1300 + ] + }, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": null, + "requires": { + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py", + "lines": [ + 119, + 150 + ] + }, + "function": null + }, + { + "label": "psf_convolution_image", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py", + "lines": [ + 119, + 150 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_qhull_callback", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 139, + 172 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_seed_argmin", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 173, + 207 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_locate_walk", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 208, + 372 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_dual_areas", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 373, + 396 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_dual_areas", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 437, + 494 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_dual_areas", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 605, + 615 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_interpolation_weights", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 616, + 695 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_interpolation_weights", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 896, + 1000 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_construction", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "border_relocator", + "path": "PyAutoArray/autoarray/inversion/mesh/border_relocator.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "mesh_construction", + "path": "PyAutoArray/autoarray/inversion/mesh/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "mapping_matrix", + "path": "PyAutoArray/autoarray/inversion/mappers/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "mapping_matrix", + "path": "PyAutoArray/autoarray/inversion/mappings/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "mapping_matrix", + "path": "PyAutoArray/autoarray/inversion/linear_obj/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "regularization_H", + "path": "PyAutoArray/autoarray/inversion/regularization/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "chi_squared_evidence", + "path": "PyAutoArray/autoarray/fit/fit_util.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "chi_squared_evidence", + "path": "PyAutoArray/autoarray/fit/fit_dataset.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "ray_trace_mesh_grid", + "path": "PyAutoLens/autolens/lens/to_inversion.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "ray_trace_mesh_grid", + "path": "PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "mass_profile_deflections", + "path": "PyAutoGalaxy/autogalaxy/profiles/mass/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "light_profile_image", + "path": "PyAutoGalaxy/autogalaxy/profiles/light/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "light_profile_image", + "path": "PyAutoGalaxy/autogalaxy/operate/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "ray_trace_data_grid", + "path": "PyAutoLens/autolens/lens/tracer.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "ray_trace_data_grid", + "path": "PyAutoLens/autolens/lens/tracer_util.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "grids_and_structures", + "path": "PyAutoArray/autoarray/structures/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "grids_and_structures", + "path": "PyAutoArray/autoarray/operators/over_sampling/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "grids_and_structures", + "path": "PyAutoArray/autoarray/geometry/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "inversion_other", + "path": "PyAutoArray/autoarray/inversion/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "fit_imaging_other", + "path": "PyAutoLens/autolens/imaging/fit_imaging.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "fit_imaging_other", + "path": "PyAutoGalaxy/autogalaxy/imaging/fit_imaging.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "fit_imaging_other", + "path": "PyAutoArray/autoarray/fit/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "analysis_other", + "path": "PyAutoLens/autolens/analysis/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "analysis_other", + "path": "PyAutoGalaxy/autogalaxy/analysis/", + "lines": null, + "requires": null, + "function": null + } + ], + "trace_timing": { + "traced_wall_ms": 35.613951534996886, + "untraced_wall_ms": 34.56384598001023, + "profiler_overhead_ms": 1.0501055549866578, + "profiler_overhead_pct": 3.0381617705216586 + }, + "jit_phases": { + "b_s3_pdip_library_likelihood_jit": { + "lower_s": 1.4973016289986845, + "compile_s": 4.446675585000776, + "first_call_s": 0.15088251099950867, + "steady_per_call_s": 0.05087814809994597 + }, + "d_s3_certified_fallback_library_likelihood_jit": { + "lower_s": 0.4865443349990528, + "compile_s": 4.247194718001992, + "first_call_s": 0.06678787000055308, + "steady_per_call_s": 0.03149785580026219 + } + }, + "peak_bytes": { + "after_setup": 85108992, + "after_routes": 1181653248, + "after_all": 23614093824, + "note": "jax.devices()[0].memory_stats()['peak_bytes_in_use']; None on a backend that does not report it (CPU). Process-wide high-water marks." + }, + "note": "Every stage row is a MEASURED sum of GPU kernel durations joined to library source through the optimized HLO of ONE program \u2014 not arithmetic across compilations. The rows attribute the command-buffers-OFF program: kernel time is the same as production, the launch overhead the CUDA graphs remove is not, and command_buffers.* carries both walls and their delta. sum_ms = kernel rows + measured device_idle_ms; the residual against the wall is host_outside_span_ms and is reported, not absorbed. mixed_fusion.prorated_estimate_ms is an ESTIMATE and is never part of the table. No row may be quoted if reconciliation_pct is outside 5 % or unjoined_ms is non-zero.", + "vmap": { + "batch": 20, + "lanes_mode": "captured", + "arms": [ + "vmap", + "scalar" + ], + "draw_seed": 0, + "fallback": false, + "composition": "jax.jit(jax.vmap(fn))", + "composition_provenance": "Current Fitness._vmap after PyAutoFit#1638. Array 343376 used the retired jax.vmap(jax.jit(fn)) composition and is historical evidence only.", + "headline_arm": "scalar", + "lane_rtol": 1e-09, + "lanes": [ + { + "lane": 0, + "draw_name": "call00015_lane00", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.0033655095107821688, + "centre_1": 0.004631951955766499, + "ell_comps_0": 0.000564301988937442, + "ell_comps_1": -0.00879076787683888, + "einstein_radius": 0.018337010967920175 + }, + "log_likelihood_vmap": 24758.506194309342, + "log_likelihood_scalar": 24758.506194309346, + "log_likelihood_library_pdip": 24758.50619430915, + "log_likelihood_library_pdip_scalar": 24758.506194309153, + "rel_diff_vmap_vs_library_pdip": 7.787742736279448e-15, + "rel_diff_scalar_vs_library_pdip_scalar": 7.787742736279447e-15, + "abs_diff_nats": 3.637978807091713e-12, + "rel_diff": 1.4693854219395068e-16, + "rel_diff_scalar_vs_library_pdip": 7.9346812784734e-15, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 3.637978807091713e-12, + "rel_diff_library_pdip_vmap_vs_scalar": 1.4693854219395182e-16, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 10, + "pdip_iter": null + }, + { + "lane": 1, + "draw_name": "call00015_lane01", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.004311760382151672, + "centre_1": 0.0027192789928108052, + "ell_comps_0": 0.0061667694809026535, + "ell_comps_1": 0.003465536775180321, + "einstein_radius": -0.05732579988501185 + }, + "log_likelihood_vmap": 20552.706459415946, + "log_likelihood_scalar": 20552.706459415127, + "log_likelihood_library_pdip": 20551.00488777265, + "log_likelihood_library_pdip_scalar": 20551.004887772448, + "rel_diff_vmap_vs_library_pdip": 8.279749105148112e-05, + "rel_diff_scalar_vs_library_pdip_scalar": 8.279749102156523e-05, + "abs_diff_nats": 8.185452315956354e-10, + "rel_diff": 3.982663953343539e-14, + "rel_diff_scalar_vs_library_pdip": 8.279749101165118e-05, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 2.0372681319713593e-10, + "rel_diff_library_pdip_vmap_vs_scalar": 9.913228784172517e-15, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 2, + "draw_name": "call00015_lane02", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.0002796502552123051, + "centre_1": 0.0016003321376979894, + "ell_comps_0": -0.002094430657472772, + "ell_comps_1": 0.006146479068253558, + "einstein_radius": -0.025968910196758177 + }, + "log_likelihood_vmap": -189709.75922536693, + "log_likelihood_scalar": -189709.0677186827, + "log_likelihood_library_pdip": -189709.78218648065, + "log_likelihood_library_pdip_scalar": -189709.0679785746, + "rel_diff_vmap_vs_library_pdip": 1.2103284002386354e-07, + "rel_diff_scalar_vs_library_pdip_scalar": 1.3699498492651947e-09, + "abs_diff_nats": 0.6915066842339002, + "rel_diff": 3.6450903088055186e-06, + "rel_diff_scalar_vs_library_pdip": 3.7661094210204296e-06, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 0.714207906043157, + "rel_diff_library_pdip_vmap_vs_scalar": 3.7647536496453525e-06, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": true, + "passes": 0, + "pdip_iter": null + }, + { + "lane": 3, + "draw_name": "call00015_lane03", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.004594602299816973, + "centre_1": 0.004924922434755804, + "ell_comps_0": 0.028601845732661953, + "ell_comps_1": 0.003760187047606014, + "einstein_radius": -0.03088526730480501 + }, + "log_likelihood_vmap": -141741.98025945516, + "log_likelihood_scalar": -141741.96681345947, + "log_likelihood_library_pdip": -141741.9783256529, + "log_likelihood_library_pdip_scalar": -141741.96788141696, + "rel_diff_vmap_vs_library_pdip": 1.3643116113597083e-08, + "rel_diff_scalar_vs_library_pdip_scalar": 7.534518587376962e-09, + "abs_diff_nats": 0.0134459956898354, + "rel_diff": 9.486248845079946e-08, + "rel_diff_scalar_vs_library_pdip": 8.121936463253133e-08, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 0.010444235929753631, + "rel_diff_library_pdip_vmap_vs_scalar": 7.368485202979124e-08, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": true, + "passes": 0, + "pdip_iter": null + }, + { + "lane": 4, + "draw_name": "call00015_lane04", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.0060950290987001, + "centre_1": -0.0006121094560707545, + "ell_comps_0": 0.009637314264800585, + "ell_comps_1": 0.006641580028105454, + "einstein_radius": -0.03125810931551931 + }, + "log_likelihood_vmap": 24880.545932988687, + "log_likelihood_scalar": 24880.545932988724, + "log_likelihood_library_pdip": 24880.545932988694, + "log_likelihood_library_pdip_scalar": 24880.545932988734, + "rel_diff_vmap_vs_library_pdip": 2.92435609483004e-16, + "rel_diff_scalar_vs_library_pdip_scalar": 4.386534142245053e-16, + "abs_diff_nats": 3.637978807091713e-11, + "rel_diff": 1.4621780474150184e-15, + "rel_diff_scalar_vs_library_pdip": 1.169742437932016e-15, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 4.001776687800884e-11, + "rel_diff_library_pdip_vmap_vs_scalar": 1.6083958521565195e-15, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 10, + "pdip_iter": null + }, + { + "lane": 5, + "draw_name": "call00015_lane05", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.008435952123169364, + "centre_1": -0.007849511137408794, + "ell_comps_0": -0.01598149485178925, + "ell_comps_1": 0.01654417876136871, + "einstein_radius": 0.014294380855379263 + }, + "log_likelihood_vmap": 25472.519186602753, + "log_likelihood_scalar": 25472.519186788293, + "log_likelihood_library_pdip": 25472.51918660039, + "log_likelihood_library_pdip_scalar": 25472.519186778263, + "rel_diff_vmap_vs_library_pdip": 9.269001736760028e-14, + "rel_diff_scalar_vs_library_pdip_scalar": 3.9375404912278817e-13, + "abs_diff_nats": 1.8554055714048445e-07, + "rel_diff": 7.283950039645778e-12, + "rel_diff_scalar_vs_library_pdip": 7.37664005706711e-12, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 1.7787169781513512e-07, + "rel_diff_library_pdip_vmap_vs_scalar": 6.982886007892812e-12, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 4, + "pdip_iter": null + }, + { + "lane": 6, + "draw_name": "call00015_lane06", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.0031698313356290646, + "centre_1": -0.0038584140676992847, + "ell_comps_0": 0.01810147576636289, + "ell_comps_1": -0.011577480306416508, + "einstein_radius": 0.016136835525067283 + }, + "log_likelihood_vmap": -83383.91630840673, + "log_likelihood_scalar": -83383.91546882152, + "log_likelihood_library_pdip": -83383.91627984545, + "log_likelihood_library_pdip_scalar": -83383.9154780034, + "rel_diff_vmap_vs_library_pdip": 3.425274096446194e-10, + "rel_diff_scalar_vs_library_pdip_scalar": 1.1011572323832307e-10, + "abs_diff_nats": 0.000839585205540061, + "rel_diff": 1.0068910782367785e-08, + "rel_diff_scalar_vs_library_pdip": 9.72638327478908e-09, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 0.0008018420485313982, + "rel_diff_library_pdip_vmap_vs_scalar": 9.616267645082262e-09, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 0, + "pdip_iter": null + }, + { + "lane": 7, + "draw_name": "call00015_lane07", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.006158729760195174, + "centre_1": 0.004883559265258847, + "ell_comps_0": 0.007613883677130215, + "ell_comps_1": -0.005800175617006949, + "einstein_radius": 0.0662922007765554 + }, + "log_likelihood_vmap": -11960.284433131557, + "log_likelihood_scalar": -11960.284429709114, + "log_likelihood_library_pdip": -11960.284432895794, + "log_likelihood_library_pdip_scalar": -11960.284429695843, + "rel_diff_vmap_vs_library_pdip": 1.9712144464051283e-11, + "rel_diff_scalar_vs_library_pdip_scalar": 1.1096179832746727e-12, + "abs_diff_nats": 3.4224431146867573e-06, + "rel_diff": 2.861506458981423e-10, + "rel_diff_scalar_vs_library_pdip": 2.6643850135784944e-10, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 3.1999516068026423e-06, + "rel_diff_library_pdip_vmap_vs_scalar": 2.675481194124092e-10, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 1, + "pdip_iter": null + }, + { + "lane": 8, + "draw_name": "call00015_lane08", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.0030335293924908615, + "centre_1": 0.0012117081273721316, + "ell_comps_0": 0.0008852687687036301, + "ell_comps_1": -0.0027113633212058814, + "einstein_radius": -0.03873713959923952 + }, + "log_likelihood_vmap": 23223.550391412093, + "log_likelihood_scalar": 23223.550391493583, + "log_likelihood_library_pdip": 23223.55039142327, + "log_likelihood_library_pdip_scalar": 23223.550391499484, + "rel_diff_vmap_vs_library_pdip": 4.812300749463839e-13, + "rel_diff_scalar_vs_library_pdip_scalar": 2.5408697316421647e-13, + "abs_diff_nats": 8.149072527885437e-08, + "rel_diff": 3.508969296473425e-12, + "rel_diff_scalar_vs_library_pdip": 3.0277392215376652e-12, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 7.621565600857139e-08, + "rel_diff_library_pdip_vmap_vs_scalar": 3.281826194691945e-12, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 4, + "pdip_iter": null + }, + { + "lane": 9, + "draw_name": "call00015_lane09", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.0008035510098975272, + "centre_1": 0.005559773241319952, + "ell_comps_0": -0.003701655436278317, + "ell_comps_1": -0.012378591445614512, + "einstein_radius": 0.032284336889985665 + }, + "log_likelihood_vmap": NaN, + "log_likelihood_scalar": -177117.66925439955, + "log_likelihood_library_pdip": -177119.62523776368, + "log_likelihood_library_pdip_scalar": -177117.7627973323, + "rel_diff_vmap_vs_library_pdip": NaN, + "rel_diff_scalar_vs_library_pdip_scalar": 5.281397601695954e-07, + "abs_diff_nats": NaN, + "rel_diff": NaN, + "rel_diff_scalar_vs_library_pdip": 1.1043289875495109e-05, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 1.8624404313741252, + "rel_diff_library_pdip_vmap_vs_scalar": 1.0515266238458702e-05, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": true, + "passes": 0, + "pdip_iter": null + }, + { + "lane": 10, + "draw_name": "call00015_lane10", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.008473569241265282, + "centre_1": -0.0051993251621340235, + "ell_comps_0": -0.0031466996514049606, + "ell_comps_1": -0.0076036423480284636, + "einstein_radius": 0.08283321334626792 + }, + "log_likelihood_vmap": -101745.38562719991, + "log_likelihood_scalar": -101745.38342286281, + "log_likelihood_library_pdip": -101745.38537429697, + "log_likelihood_library_pdip_scalar": -101745.38336786059, + "rel_diff_vmap_vs_library_pdip": 2.4856453529471607e-09, + "rel_diff_scalar_vs_library_pdip_scalar": 5.405869181873643e-10, + "abs_diff_nats": 0.0022043370991013944, + "rel_diff": 2.1665229663934477e-08, + "rel_diff_scalar_vs_library_pdip": 1.9179583895457225e-08, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 0.002006436377996579, + "rel_diff_library_pdip_vmap_vs_scalar": 1.9720171191869267e-08, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": true, + "passes": 2, + "pdip_iter": null + }, + { + "lane": 11, + "draw_name": "call00015_lane11", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.001017060353322001, + "centre_1": 0.003035861051809724, + "ell_comps_0": 0.0014054844842678396, + "ell_comps_1": -0.00019678252877009805, + "einstein_radius": -0.04179610309843307 + }, + "log_likelihood_vmap": 18959.672781157926, + "log_likelihood_scalar": 18959.672780987996, + "log_likelihood_library_pdip": 18957.52834991362, + "log_likelihood_library_pdip_scalar": 18957.528349751083, + "rel_diff_vmap_vs_library_pdip": 0.0001131176598934229, + "rel_diff_scalar_vs_library_pdip_scalar": 0.00011311765950444882, + "abs_diff_nats": 1.699299900792539e-07, + "rel_diff": 8.962706901231594e-12, + "rel_diff_scalar_vs_library_pdip": 0.00011311765092970216, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 1.6253761714324355e-07, + "rel_diff_library_pdip_vmap_vs_scalar": 8.573776820720288e-12, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 12, + "draw_name": "call00015_lane12", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.0012508260776529923, + "centre_1": -0.0075763258203543175, + "ell_comps_0": -0.0003476568325791879, + "ell_comps_1": 0.0070528223693464365, + "einstein_radius": -0.005182936058341969 + }, + "log_likelihood_vmap": 24810.04966019512, + "log_likelihood_scalar": 24810.04966019512, + "log_likelihood_library_pdip": 24810.049660194898, + "log_likelihood_library_pdip_scalar": 24810.0496601949, + "rel_diff_vmap_vs_library_pdip": 8.944629707397821e-15, + "rel_diff_scalar_vs_library_pdip_scalar": 8.797996433506052e-15, + "abs_diff_nats": 0.0, + "rel_diff": 0.0, + "rel_diff_scalar_vs_library_pdip": 8.944629707397821e-15, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 3.637978807091713e-12, + "rel_diff_library_pdip_vmap_vs_scalar": 1.4663327389176753e-16, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 9, + "pdip_iter": null + }, + { + "lane": 13, + "draw_name": "call00015_lane13", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.0039046265841316857, + "centre_1": 0.008586063066835778, + "ell_comps_0": 0.01612319103606081, + "ell_comps_1": -0.006478405394829051, + "einstein_radius": -0.06420305523683667 + }, + "log_likelihood_vmap": -3605.706216699764, + "log_likelihood_scalar": -3605.7062158882327, + "log_likelihood_library_pdip": -3605.7062167850163, + "log_likelihood_library_pdip_scalar": -3605.7062158904737, + "rel_diff_vmap_vs_library_pdip": 2.3643744176529572e-11, + "rel_diff_scalar_vs_library_pdip_scalar": 6.215134597744962e-13, + "abs_diff_nats": 8.115312084555626e-07, + "rel_diff": 2.2506858847224449e-10, + "rel_diff_scalar_vs_library_pdip": 2.4871233259279675e-10, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 8.945426088757813e-07, + "rel_diff_library_pdip_vmap_vs_scalar": 2.4809081919472546e-10, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 2, + "pdip_iter": null + }, + { + "lane": 14, + "draw_name": "call00015_lane14", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.007195835212073937, + "centre_1": -0.0022675171274400335, + "ell_comps_0": 0.004220685262914858, + "ell_comps_1": 0.006581974817750368, + "einstein_radius": 0.08589577997501685 + }, + "log_likelihood_vmap": 11129.438563023068, + "log_likelihood_scalar": 11129.43856306804, + "log_likelihood_library_pdip": 11126.92147574079, + "log_likelihood_library_pdip_scalar": 11126.921475785763, + "rel_diff_vmap_vs_library_pdip": 0.00022621596528438225, + "rel_diff_scalar_vs_library_pdip_scalar": 0.00022621596528346792, + "abs_diff_nats": 4.4972694013267756e-08, + "rel_diff": 4.040877152824695e-12, + "rel_diff_scalar_vs_library_pdip": 0.00022621596932617352, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 4.4972694013267756e-08, + "rel_diff_library_pdip_vmap_vs_scalar": 4.041791263750414e-12, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 15, + "draw_name": "call00015_lane15", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.0024446743118905125, + "centre_1": 0.0028324231769206983, + "ell_comps_0": -0.017159158004659933, + "ell_comps_1": 0.008265799441903459, + "einstein_radius": -0.03860302877433641 + }, + "log_likelihood_vmap": 20407.780654997303, + "log_likelihood_scalar": 20407.780654984555, + "log_likelihood_library_pdip": 20410.343973733576, + "log_likelihood_library_pdip_scalar": 20410.343973722494, + "rel_diff_vmap_vs_library_pdip": 0.00012558919827963488, + "rel_diff_scalar_vs_library_pdip_scalar": 0.00012558919836133786, + "abs_diff_nats": 1.2747477740049362e-08, + "rel_diff": 6.246381199190231e-13, + "rel_diff_scalar_vs_library_pdip": 0.00012558919890419455, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 1.1081283446401358e-08, + "rel_diff_library_pdip_vmap_vs_scalar": 5.429248747923146e-13, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 16, + "draw_name": "call00015_lane16", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.00546338030193603, + "centre_1": 0.0029217319844296002, + "ell_comps_0": 0.018887239108742314, + "ell_comps_1": 0.01610145140759906, + "einstein_radius": 0.09308737119031596 + }, + "log_likelihood_vmap": 9734.862241685194, + "log_likelihood_scalar": 9734.862241686911, + "log_likelihood_library_pdip": 9734.862241684299, + "log_likelihood_library_pdip_scalar": 9734.86224168189, + "rel_diff_vmap_vs_library_pdip": 9.193173609714284e-14, + "rel_diff_scalar_vs_library_pdip_scalar": 5.157146171304411e-13, + "abs_diff_nats": 1.7171259969472885e-09, + "rel_diff": 1.7638934730829178e-13, + "rel_diff_scalar_vs_library_pdip": 2.6832108340548195e-13, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 2.408341970294714e-09, + "rel_diff_library_pdip_vmap_vs_scalar": 2.473935337248928e-13, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 17, + "draw_name": "call00015_lane17", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.0033403521024317102, + "centre_1": -0.004078467297591464, + "ell_comps_0": -0.01076606265657356, + "ell_comps_1": 0.014404445881011321, + "einstein_radius": -0.016103243806114165 + }, + "log_likelihood_vmap": 19481.580998496996, + "log_likelihood_scalar": 19481.580996516812, + "log_likelihood_library_pdip": 19481.557219621747, + "log_likelihood_library_pdip_scalar": 19481.557217641563, + "rel_diff_vmap_vs_library_pdip": 1.2205839082161961e-06, + "rel_diff_scalar_vs_library_pdip_scalar": 1.2205839083402613e-06, + "abs_diff_nats": 1.980184606509283e-06, + "rel_diff": 1.016439377719564e-10, + "rel_diff_scalar_vs_library_pdip": 1.2204822641543697e-06, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 1.980184606509283e-06, + "rel_diff_library_pdip_vmap_vs_scalar": 1.0164406183691123e-10, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 18, + "draw_name": "call00015_lane18", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.0036504937209151113, + "centre_1": -0.0003963555596475738, + "ell_comps_0": -0.008227000946306733, + "ell_comps_1": -0.02487475830854786, + "einstein_radius": -0.0327871904693704 + }, + "log_likelihood_vmap": 18817.121700992862, + "log_likelihood_scalar": 18817.121698566574, + "log_likelihood_library_pdip": 18812.94686042335, + "log_likelihood_library_pdip_scalar": 18812.946857997056, + "rel_diff_vmap_vs_library_pdip": 0.000221913164401335, + "rel_diff_scalar_vs_library_pdip_scalar": 0.00022191316443034178, + "abs_diff_nats": 2.4262881197500974e-06, + "rel_diff": 1.2894044894947582e-10, + "rel_diff_scalar_vs_library_pdip": 0.0002219130354322725, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 2.4262953957077116e-06, + "rel_diff_library_pdip_vmap_vs_scalar": 1.2896944928520519e-10, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 19, + "draw_name": "call00015_lane19", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.00840275144875603, + "centre_1": -0.003628185056462521, + "ell_comps_0": 0.005265994929748281, + "ell_comps_1": 0.009958068668923414, + "einstein_radius": -0.06501253116347949 + }, + "log_likelihood_vmap": 16927.8572292553, + "log_likelihood_scalar": 16927.857229255565, + "log_likelihood_library_pdip": 16927.632549569396, + "log_likelihood_library_pdip_scalar": 16927.632549568654, + "rel_diff_vmap_vs_library_pdip": 1.327295386673867e-05, + "rel_diff_scalar_vs_library_pdip_scalar": 1.3272953926270324e-05, + "abs_diff_nats": 2.6557245291769505e-10, + "rel_diff": 1.5688486104355814e-14, + "rel_diff_scalar_vs_library_pdip": 1.3272953882427364e-05, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 7.421476766467094e-10, + "rel_diff_library_pdip_vmap_vs_scalar": 4.384237869492392e-14, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": false, + "passes": 16, + "pdip_iter": null + } + ], + "lane_pins": [ + { + "pin": "lane 0: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 24758.506194309342, + "reference_value": 24758.50619430915, + "rel_diff": 7.787742736279448e-15, + "abs_diff_nats": 1.9281287677586079e-10, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 0: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 24758.506194309346, + "reference_value": 24758.506194309153, + "rel_diff": 7.787742736279447e-15, + "abs_diff_nats": 1.9281287677586079e-10, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 0: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 24758.506194309342, + "reference_value": 24758.506194309346, + "rel_diff": 1.4693854219395068e-16, + "abs_diff_nats": 3.637978807091713e-12, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 0: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 24758.50619430915, + "reference_value": 24758.506194309153, + "rel_diff": 1.4693854219395182e-16, + "abs_diff_nats": 3.637978807091713e-12, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 1: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 20552.706459415946, + "reference_value": 20551.00488777265, + "rel_diff": 8.279749105148112e-05, + "abs_diff_nats": 1.7015716432943009, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 1: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 20552.706459415127, + "reference_value": 20551.004887772448, + "rel_diff": 8.279749102156523e-05, + "abs_diff_nats": 1.7015716426794825, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 1: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 20552.706459415946, + "reference_value": 20552.706459415127, + "rel_diff": 3.982663953343539e-14, + "abs_diff_nats": 8.185452315956354e-10, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 1: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 20551.00488777265, + "reference_value": 20551.004887772448, + "rel_diff": 9.913228784172517e-15, + "abs_diff_nats": 2.0372681319713593e-10, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 2: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -189709.75922536693, + "reference_value": -189709.78218648065, + "rel_diff": 1.2103284002386354e-07, + "abs_diff_nats": 0.02296111371833831, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 2: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -189709.0677186827, + "reference_value": -189709.0679785746, + "rel_diff": 1.3699498492651947e-09, + "abs_diff_nats": 0.00025989190908148885, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 2: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -189709.75922536693, + "reference_value": -189709.0677186827, + "rel_diff": 3.6450903088055186e-06, + "abs_diff_nats": 0.6915066842339002, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 2: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -189709.78218648065, + "reference_value": -189709.0679785746, + "rel_diff": 3.7647536496453525e-06, + "abs_diff_nats": 0.714207906043157, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 3: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -141741.98025945516, + "reference_value": -141741.9783256529, + "rel_diff": 1.3643116113597083e-08, + "abs_diff_nats": 0.0019338022684678435, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 3: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -141741.96681345947, + "reference_value": -141741.96788141696, + "rel_diff": 7.534518587376962e-09, + "abs_diff_nats": 0.0010679574916139245, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 3: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -141741.98025945516, + "reference_value": -141741.96681345947, + "rel_diff": 9.486248845079946e-08, + "abs_diff_nats": 0.0134459956898354, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 3: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -141741.9783256529, + "reference_value": -141741.96788141696, + "rel_diff": 7.368485202979124e-08, + "abs_diff_nats": 0.010444235929753631, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 4: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 24880.545932988687, + "reference_value": 24880.545932988694, + "rel_diff": 2.92435609483004e-16, + "abs_diff_nats": 7.275957614183426e-12, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 4: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 24880.545932988724, + "reference_value": 24880.545932988734, + "rel_diff": 4.386534142245053e-16, + "abs_diff_nats": 1.0913936421275139e-11, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 4: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 24880.545932988687, + "reference_value": 24880.545932988724, + "rel_diff": 1.4621780474150184e-15, + "abs_diff_nats": 3.637978807091713e-11, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 4: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 24880.545932988694, + "reference_value": 24880.545932988734, + "rel_diff": 1.6083958521565195e-15, + "abs_diff_nats": 4.001776687800884e-11, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 5: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 25472.519186602753, + "reference_value": 25472.51918660039, + "rel_diff": 9.269001736760028e-14, + "abs_diff_nats": 2.3610482458025217e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 5: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 25472.519186788293, + "reference_value": 25472.519186778263, + "rel_diff": 3.9375404912278817e-13, + "abs_diff_nats": 1.0029907571151853e-08, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 5: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 25472.519186602753, + "reference_value": 25472.519186788293, + "rel_diff": 7.283950039645778e-12, + "abs_diff_nats": 1.8554055714048445e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 5: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 25472.51918660039, + "reference_value": 25472.519186778263, + "rel_diff": 6.982886007892812e-12, + "abs_diff_nats": 1.7787169781513512e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 6: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -83383.91630840673, + "reference_value": -83383.91627984545, + "rel_diff": 3.425274096446194e-10, + "abs_diff_nats": 2.8561276849359274e-05, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 6: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -83383.91546882152, + "reference_value": -83383.9154780034, + "rel_diff": 1.1011572323832307e-10, + "abs_diff_nats": 9.181880159303546e-06, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 6: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -83383.91630840673, + "reference_value": -83383.91546882152, + "rel_diff": 1.0068910782367785e-08, + "abs_diff_nats": 0.000839585205540061, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 6: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -83383.91627984545, + "reference_value": -83383.9154780034, + "rel_diff": 9.616267645082262e-09, + "abs_diff_nats": 0.0008018420485313982, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 7: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -11960.284433131557, + "reference_value": -11960.284432895794, + "rel_diff": 1.9712144464051283e-11, + "abs_diff_nats": 2.3576285457238555e-07, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 7: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -11960.284429709114, + "reference_value": -11960.284429695843, + "rel_diff": 1.1096179832746727e-12, + "abs_diff_nats": 1.3271346688270569e-08, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 7: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -11960.284433131557, + "reference_value": -11960.284429709114, + "rel_diff": 2.861506458981423e-10, + "abs_diff_nats": 3.4224431146867573e-06, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 7: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -11960.284432895794, + "reference_value": -11960.284429695843, + "rel_diff": 2.675481194124092e-10, + "abs_diff_nats": 3.1999516068026423e-06, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 8: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 23223.550391412093, + "reference_value": 23223.55039142327, + "rel_diff": 4.812300749463839e-13, + "abs_diff_nats": 1.1175870895385742e-08, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 8: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 23223.550391493583, + "reference_value": 23223.550391499484, + "rel_diff": 2.5408697316421647e-13, + "abs_diff_nats": 5.900801625102758e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 8: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 23223.550391412093, + "reference_value": 23223.550391493583, + "rel_diff": 3.508969296473425e-12, + "abs_diff_nats": 8.149072527885437e-08, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 8: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 23223.55039142327, + "reference_value": 23223.550391499484, + "rel_diff": 3.281826194691945e-12, + "abs_diff_nats": 7.621565600857139e-08, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 9: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": NaN, + "reference_value": -177119.62523776368, + "rel_diff": NaN, + "abs_diff_nats": NaN, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 9: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -177117.66925439955, + "reference_value": -177117.7627973323, + "rel_diff": 5.281397601695954e-07, + "abs_diff_nats": 0.09354293276555836, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 9: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": NaN, + "reference_value": -177117.66925439955, + "rel_diff": NaN, + "abs_diff_nats": NaN, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 9: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -177119.62523776368, + "reference_value": -177117.7627973323, + "rel_diff": 1.0515266238458702e-05, + "abs_diff_nats": 1.8624404313741252, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 10: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -101745.38562719991, + "reference_value": -101745.38537429697, + "rel_diff": 2.4856453529471607e-09, + "abs_diff_nats": 0.00025290294433943927, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 10: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -101745.38342286281, + "reference_value": -101745.38336786059, + "rel_diff": 5.405869181873643e-10, + "abs_diff_nats": 5.500222323462367e-05, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 10: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -101745.38562719991, + "reference_value": -101745.38342286281, + "rel_diff": 2.1665229663934477e-08, + "abs_diff_nats": 0.0022043370991013944, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 10: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -101745.38537429697, + "reference_value": -101745.38336786059, + "rel_diff": 1.9720171191869267e-08, + "abs_diff_nats": 0.002006436377996579, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 11: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 18959.672781157926, + "reference_value": 18957.52834991362, + "rel_diff": 0.0001131176598934229, + "abs_diff_nats": 2.1444312443054514, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 11: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 18959.672780987996, + "reference_value": 18957.528349751083, + "rel_diff": 0.00011311765950444882, + "abs_diff_nats": 2.1444312369130785, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 11: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 18959.672781157926, + "reference_value": 18959.672780987996, + "rel_diff": 8.962706901231594e-12, + "abs_diff_nats": 1.699299900792539e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 11: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 18957.52834991362, + "reference_value": 18957.528349751083, + "rel_diff": 8.573776820720288e-12, + "abs_diff_nats": 1.6253761714324355e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 12: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 24810.04966019512, + "reference_value": 24810.049660194898, + "rel_diff": 8.944629707397821e-15, + "abs_diff_nats": 2.219167072325945e-10, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 12: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 24810.04966019512, + "reference_value": 24810.0496601949, + "rel_diff": 8.797996433506052e-15, + "abs_diff_nats": 2.1827872842550278e-10, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 12: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 24810.04966019512, + "reference_value": 24810.04966019512, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 12: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 24810.049660194898, + "reference_value": 24810.0496601949, + "rel_diff": 1.4663327389176753e-16, + "abs_diff_nats": 3.637978807091713e-12, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 13: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -3605.706216699764, + "reference_value": -3605.7062167850163, + "rel_diff": 2.3643744176529572e-11, + "abs_diff_nats": 8.52523953653872e-08, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 13: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -3605.7062158882327, + "reference_value": -3605.7062158904737, + "rel_diff": 6.215134597744962e-13, + "abs_diff_nats": 2.240994945168495e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 13: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -3605.706216699764, + "reference_value": -3605.7062158882327, + "rel_diff": 2.2506858847224449e-10, + "abs_diff_nats": 8.115312084555626e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 13: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -3605.7062167850163, + "reference_value": -3605.7062158904737, + "rel_diff": 2.4809081919472546e-10, + "abs_diff_nats": 8.945426088757813e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 14: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 11129.438563023068, + "reference_value": 11126.92147574079, + "rel_diff": 0.00022621596528438225, + "abs_diff_nats": 2.5170872822782258, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 14: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 11129.43856306804, + "reference_value": 11126.921475785763, + "rel_diff": 0.00022621596528346792, + "abs_diff_nats": 2.5170872822782258, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 14: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 11129.438563023068, + "reference_value": 11129.43856306804, + "rel_diff": 4.040877152824695e-12, + "abs_diff_nats": 4.4972694013267756e-08, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 14: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 11126.92147574079, + "reference_value": 11126.921475785763, + "rel_diff": 4.041791263750414e-12, + "abs_diff_nats": 4.4972694013267756e-08, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 15: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 20407.780654997303, + "reference_value": 20410.343973733576, + "rel_diff": 0.00012558919827963488, + "abs_diff_nats": 2.5633187362727767, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 15: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 20407.780654984555, + "reference_value": 20410.343973722494, + "rel_diff": 0.00012558919836133786, + "abs_diff_nats": 2.563318737938971, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 15: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 20407.780654997303, + "reference_value": 20407.780654984555, + "rel_diff": 6.246381199190231e-13, + "abs_diff_nats": 1.2747477740049362e-08, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 15: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 20410.343973733576, + "reference_value": 20410.343973722494, + "rel_diff": 5.429248747923146e-13, + "abs_diff_nats": 1.1081283446401358e-08, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 16: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 9734.862241685194, + "reference_value": 9734.862241684299, + "rel_diff": 9.193173609714284e-14, + "abs_diff_nats": 8.949427865445614e-10, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 16: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 9734.862241686911, + "reference_value": 9734.86224168189, + "rel_diff": 5.157146171304411e-13, + "abs_diff_nats": 5.020410753786564e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 16: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 9734.862241685194, + "reference_value": 9734.862241686911, + "rel_diff": 1.7638934730829178e-13, + "abs_diff_nats": 1.7171259969472885e-09, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 16: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 9734.862241684299, + "reference_value": 9734.86224168189, + "rel_diff": 2.473935337248928e-13, + "abs_diff_nats": 2.408341970294714e-09, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 17: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 19481.580998496996, + "reference_value": 19481.557219621747, + "rel_diff": 1.2205839082161961e-06, + "abs_diff_nats": 0.023778875249263365, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 17: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 19481.580996516812, + "reference_value": 19481.557217641563, + "rel_diff": 1.2205839083402613e-06, + "abs_diff_nats": 0.023778875249263365, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 17: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 19481.580998496996, + "reference_value": 19481.580996516812, + "rel_diff": 1.016439377719564e-10, + "abs_diff_nats": 1.980184606509283e-06, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 17: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 19481.557219621747, + "reference_value": 19481.557217641563, + "rel_diff": 1.0164406183691123e-10, + "abs_diff_nats": 1.980184606509283e-06, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 18: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 18817.121700992862, + "reference_value": 18812.94686042335, + "rel_diff": 0.000221913164401335, + "abs_diff_nats": 4.174840569510707, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 18: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 18817.121698566574, + "reference_value": 18812.946857997056, + "rel_diff": 0.00022191316443034178, + "abs_diff_nats": 4.174840569517983, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 18: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 18817.121700992862, + "reference_value": 18817.121698566574, + "rel_diff": 1.2894044894947582e-10, + "abs_diff_nats": 2.4262881197500974e-06, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 18: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 18812.94686042335, + "reference_value": 18812.946857997056, + "rel_diff": 1.2896944928520519e-10, + "abs_diff_nats": 2.4262953957077116e-06, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 19: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 16927.8572292553, + "reference_value": 16927.632549569396, + "rel_diff": 1.327295386673867e-05, + "abs_diff_nats": 0.22467968590353848, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 19: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 16927.857229255565, + "reference_value": 16927.632549568654, + "rel_diff": 1.3272953926270324e-05, + "abs_diff_nats": 0.2246796869112586, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 19: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 16927.8572292553, + "reference_value": 16927.857229255565, + "rel_diff": 1.5688486104355814e-14, + "abs_diff_nats": 2.6557245291769505e-10, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 19: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 16927.632549569396, + "reference_value": 16927.632549568654, + "rel_diff": 4.384237869492392e-14, + "abs_diff_nats": 7.421476766467094e-10, + "within_rtol": true, + "status": "RECORDED" + } + ], + "lanes_failed": 11, + "arm_rows": { + "vmap": { + "arm": "vmap", + "program": "jax.jit(jax.vmap(fn))", + "stands_for": "Nautilus(use_jax_vmap=True) \u2014 Fitness._vmap", + "hlo_source": "jax.jit(jax.vmap(fn)).lower(batched_tree) \u2014 the exact current Fitness._vmap composition (PyAutoFit#1638)", + "batch_wall_ms": 609.7379776998423, + "wall_production_nesting_ms": 609.7379776998423, + "wall_aot_command_buffers_on_ms": 613.7196075000247, + "wall_aot_command_buffers_off_ms": 612.5688400999934, + "command_buffer_delta_ms": -1.1507674000313273, + "production_nesting_vs_aot_on_delta_ms": -3.981629800182418, + "production_nesting_vs_aot_on_delta_pct": -0.6487701796593256, + "wall_per_lane_ms": 30.486898884992115, + "wall_per_lane_command_buffers_off_ms": 30.62844200499967, + "traced_batch_wall_ms": 619.0847408000991, + "untraced_batch_wall_ms": 613.6301525002636, + "traced_wall_per_lane_ms": 30.954237040004955, + "callback_count_per_call": 20.0, + "callback_count_per_lane": 1.0, + "callback_expectation": "B per batched call \u2014 the qhull pure_callback is vmap_method='sequential'", + "host_qhull_ms": 89.4914611002605, + "host_tables_ms": 2.3100747021089774, + "host_qhull_ms_per_lane": 4.474573055013025, + "host_tables_ms_per_lane": 0.11550373510544887, + "host_callback_probe": { + "calls": 200, + "qhull_ms_total": 894.9146110026049, + "tables_ms_total": 23.100747021089774, + "total_ms_total": 918.0153580236947, + "qhull_ms_mean": 4.474573055013025, + "tables_ms_mean": 0.11550373510544887, + "total_ms_mean": 4.590076790118474, + "non_finite_calls": 0, + "n_points": [ + 1500 + ] + }, + "host_callback_records_first": [ + { + "n_points": 1500, + "qhull_ms": 4.750485000840854, + "tables_ms": 0.17348699839203618, + "total_ms": 4.92397199923289, + "finite": true + }, + { + "n_points": 1500, + "qhull_ms": 4.4675770004687365, + "tables_ms": 0.11075799920945428, + "total_ms": 4.578334999678191, + "finite": true + }, + { + "n_points": 1500, + "qhull_ms": 4.47029799761367, + "tables_ms": 0.11890899986610748, + "total_ms": 4.589206997479778, + "finite": true + }, + { + "n_points": 1500, + "qhull_ms": 4.459747000510106, + "tables_ms": 0.110348999442067, + "total_ms": 4.570095999952173, + "finite": true + } + ], + "device_idle_ms": 111.85677179999999, + "device_idle_ms_per_lane": 5.5928385899999995, + "trace": { + "parser": "ProfileData.from_file(xplane) + as_text() + stack_frame_index(proto field 17)", + "stage_audit": { + "mixed_fusion": [ + { + "instruction": "loop_divide_gather_fusion", + "ms": 21.0109305, + "opcode": "fusion", + "shape": "(f64[15361,20,1,1,1500]{4,3,2,1,0}, f64[15361,20,1,1,1500]{4,3,2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_multiply_transpose_fusion", + "ms": 8.1490747, + "opcode": "fusion", + "shape": "(f64[20,1500,1500]{2,1,0}, f64[20,1500,1500]{2,1,0}, f64[20,1500,1500]{2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:237 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:274 (_certified_positive_only_from)" + ] + }, + { + "instruction": "loop_broadcast_fusion.6", + "ms": 5.0197235, + "opcode": "fusion", + "shape": "f64[20,1500,180,180]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_reduce_fusion.7", + "ms": 2.6090508999999997, + "opcode": "fusion", + "shape": "f64[92,20,1500]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123 (data_vector_via_blurred_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:67 (InversionImagingMapping.data_vector)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:699 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_reduce_fusion.11", + "ms": 2.188721, + "opcode": "fusion", + "shape": "f64[15361,20]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163 (mapped_reconstructed_data_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:120 (InversionImagingMapping._mapped_reconstructed_data_dict_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:196 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "loop_broadcast_fusion.8", + "ms": 2.1188957000000004, + "opcode": "fusion", + "shape": "f64[15361,20,1500]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:353", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:353 (mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:283 (Mapper.mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:91 (AbstractInversionImaging._mapping_matrix_for_convolution_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:137 (AbstractInversionImaging.operated_mapping_matrix_list)" + ] + } + ], + "other": [ + { + "instruction": "copy.113", + "ms": 0.048160299999999885, + "opcode": "copy", + "shape": "f64[1,20,1024,2]{3,2,1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.115", + "ms": 0.04006430000000008, + "opcode": "copy", + "shape": "s32[1,3000,3]{2,1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.117", + "ms": 0.03996200000000011, + "opcode": "copy", + "shape": "f64[1,1500,2]{2,1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.116", + "ms": 0.039757400000000116, + "opcode": "copy", + "shape": "s32[1,3000,3]{2,1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.114", + "ms": 0.0392327, + "opcode": "copy", + "shape": "s32[1,1500]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.98", + "ms": 0.0384193, + "opcode": "copy", + "shape": "s32[20]{0}", + "source": "", + "stack": [] + } + ], + "mesh_qhull_callback": [ + { + "instruction": "pure_callback.0", + "ms": 0.21414550000000102, + "opcode": "custom-call", + "shape": "(s32[3000,3]{1,0}, s32[3000,3]{1,0}, s32[1500]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:161", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:161 (_jax_delaunay_tables)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:405 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + }, + { + "instruction": "loop_add_fusion.1", + "ms": 0.030595499999999914, + "opcode": "fusion", + "shape": "s64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:161", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:161 (_jax_delaunay_tables)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:405 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + }, + { + "instruction": "loop_broadcast_fusion.2", + "ms": 0.0020032, + "opcode": "fusion", + "shape": "s32[20,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:161", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:161 (_jax_delaunay_tables)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:405 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + } + ], + "border_relocator": [ + { + "instruction": "custom-call.2", + "ms": 0.042138, + "opcode": "custom-call", + "shape": "(f64[20,2,2]{2,1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_add_rsqrt_fusion", + "ms": 0.015254600000000002, + "opcode": "fusion", + "shape": "(f64[20,15361]{1,0}, f64[20,15361]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:311", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:311 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:423 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:208 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "eigh.34", + "ms": 0.0146179, + "opcode": "custom-call", + "shape": "(f64[20,2,2]{1,2,0}, f64[20,2]{1,0}, s32[20]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_add_fusion.3", + "ms": 0.0037953000000000006, + "opcode": "fusion", + "shape": "f64[20,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:458 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_reduce_fusion.12", + "ms": 0.003327999999999999, + "opcode": "fusion", + "shape": "f64[20]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:270", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:270 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_reduce_fusion.13", + "ms": 0.003315199999999999, + "opcode": "fusion", + "shape": "f64[20]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:269", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:269 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + } + ], + "mesh_construction": [ + { + "instruction": "loop_compare_fusion.4", + "ms": 0.00424, + "opcode": "fusion", + "shape": "pred[20,6000,3]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:736", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:736 (DelaunayInterface.splitted_sizes)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:997 (InterpolatorDelaunay._mappings_sizes_weights_split)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:124 (AdaptSplit.regularization_matrix_from)" + ] + }, + { + "instruction": "loop_multiply_fusion.2", + "ms": 0.0023936, + "opcode": "fusion", + "shape": "f64[20,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:412", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:412 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_concatenate_fusion.9", + "ms": 0.002368, + "opcode": "fusion", + "shape": "f64[20,1500,2]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:820", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:820 (InterpolatorDelaunay.mesh_grid_xy)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:847 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + } + ], + "mesh_seed_argmin": [ + { + "instruction": "input_reduce_fusion", + "ms": 1.6191096000000005, + "opcode": "fusion", + "shape": "(f64[20,1024]{1,0}, s64[20,1024]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:191", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:191 (_nearest_vertex_seed_from..argmin_chunk)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)" + ] + }, + { + "instruction": "loop_dynamic_update_slice_fusion", + "ms": 0.0474273999999999, + "opcode": "fusion", + "shape": "s32[21,20,1024]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_add_fusion", + "ms": 0.03188519999999995, + "opcode": "fusion", + "shape": "s64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_broadcast_fusion.3", + "ms": 0.002656, + "opcode": "fusion", + "shape": "s32[21,20,1024]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "pdip_solve": [ + { + "instruction": "cholesky.50", + "ms": 113.97560059999603, + "opcode": "custom-call", + "shape": "(f64[20,1500,1500]{1,2,0}, s32[20]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "triangular-solve", + "ms": 29.233365500000577, + "opcode": "custom-call", + "shape": "(f64[20,1500,1]{1,2,0}, s8[320]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "triangular-solve.1", + "ms": 27.535786700000997, + "opcode": "custom-call", + "shape": "(f64[20,1500,1]{1,2,0}, s8[320]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "input_transpose_fusion", + "ms": 14.327704499999996, + "opcode": "fusion", + "shape": "f64[20,1500,1500]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "input_transpose_fusion.1", + "ms": 9.48304, + "opcode": "fusion", + "shape": "f64[20,1500,1500]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "cholesky.60", + "ms": 7.453225799999942, + "opcode": "custom-call", + "shape": "(f64[20,1500,1500]{1,2,0}, s32[20]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:237 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:274 (_certified_positive_only_from)" + ] + } + ], + "mesh_dual_areas": [ + { + "instruction": "input_scatter_fusion.9", + "ms": 0.0032736000000000006, + "opcode": "fusion", + "shape": "f64[20,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:393", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:393 (_dual_areas_padded_jnp)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:408 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + }, + { + "instruction": "input_scatter_fusion.7", + "ms": 0.0032384000000000002, + "opcode": "fusion", + "shape": "f64[20,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:393", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:393 (_dual_areas_padded_jnp)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:408 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + } + ], + "mesh_locate_walk": [ + { + "instruction": "loop_slice_subtract_fusion", + "ms": 0.3236666, + "opcode": "fusion", + "shape": "(f64[20,21361,1]{2,1,0}, f64[20,21361,1]{2,1,0}, f64[20,21361,1]{2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:236", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:236 (_walk_from_seed..cross)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:250 (_walk_from_seed..weights_of)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:262 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)" + ] + }, + { + "instruction": "loop_reduce_fusion", + "ms": 0.15157530000000005, + "opcode": "fusion", + "shape": "(f64[20,21361]{1,0}, s64[20,21361]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:264", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:264 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:264 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)" + ] + }, + { + "instruction": "loop_select_fusion", + "ms": 0.1280649, + "opcode": "fusion", + "shape": "(pred[20,21361]{1,0}, pred[20,21361]{1,0}, s32[20,21361]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_gather_fusion.1", + "ms": 0.08310179999999999, + "opcode": "fusion", + "shape": "s32[427220,1,1,3]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:239", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:239 (_walk_from_seed..weights_of)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:262 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)" + ] + }, + { + "instruction": "loop_gather_fusion", + "ms": 0.062279100000000004, + "opcode": "fusion", + "shape": "s32[427220,1,1,1]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:267", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:267 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)" + ] + }, + { + "instruction": "input_concatenate_fusion.1", + "ms": 0.045324999999999976, + "opcode": "fusion", + "shape": "s32[20,21361,2]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:244", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:244 (_walk_from_seed..weights_of)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:262 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)" + ] + } + ], + "psf_convolution_mapping_matrix": [ + { + "instruction": "input_scatter_fusion", + "ms": 40.28684, + "opcode": "fusion", + "shape": "f64[20,1500,180,180]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.29.0", + "ms": 35.087115299999994, + "opcode": "fft", + "shape": "f64[20,1500,180,180]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.25.0", + "ms": 26.871073199999998, + "opcode": "fft", + "shape": "c128[20,1500,180,91]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.27.0", + "ms": 19.3917665, + "opcode": "fft", + "shape": "c128[20,1500,91,180]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_transpose_fusion.3", + "ms": 10.544244500000001, + "opcode": "fusion", + "shape": "c128[20,1500,91,180]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "wrapped_transpose", + "ms": 9.8484988, + "opcode": "fusion", + "shape": "c128[20,1500,180,91]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + } + ], + "mapping_matrix": [ + { + "instruction": "input_scatter_fusion.3", + "ms": 0.0591847, + "opcode": "fusion", + "shape": "f64[20,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:71", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:71 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:120 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + }, + { + "instruction": "input_reduce_fusion.34", + "ms": 0.0037216, + "opcode": "fusion", + "shape": "f64[20]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:120 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + } + ], + "regularization_H": [ + { + "instruction": "input_scatter_fusion.10", + "ms": 0.0035488000000000004, + "opcode": "fusion", + "shape": "f64[20,1500,1500]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:615", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:615 (pixel_splitted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:137 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "curvature_matrix_F": [ + { + "instruction": "cublas-lt-matmul.2", + "ms": 81.0935818, + "opcode": "custom-call", + "shape": "(f64[20,1500,1500]{2,1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "inversion_other": [ + { + "instruction": "cholesky.80", + "ms": 7.757765500000026, + "opcode": "custom-call", + "shape": "(f64[20,1500,1500]{1,2,0}, s32[20]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1078 (AbstractInversion.log_det_curvature_reg_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:347 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "cholesky.90", + "ms": 7.5585414999999605, + "opcode": "custom-call", + "shape": "(f64[20,1500,1500]{1,2,0}, s32[20]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1157 (AbstractInversion.log_det_regularization_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:348 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "loop_reduce_window_fusion", + "ms": 0.0031072, + "opcode": "fusion", + "shape": "s64[94,16]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "loop_broadcast_convert_fusion", + "ms": 0.0025856000000000004, + "opcode": "fusion", + "shape": "(s32[1500]{0}, s64[1500]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527 (AbstractInversion.zeroed_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:567 (AbstractInversion.solve_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:684 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_scatter_fusion.5", + "ms": 0.002176, + "opcode": "fusion", + "shape": "s64[1500]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527 (AbstractInversion.zeroed_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:567 (AbstractInversion.solve_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:684 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_reduce_window_fusion.1", + "ms": 0.0021536, + "opcode": "fusion", + "shape": "s64[6,16]{1,0}", + "source": "", + "stack": [] + } + ], + "chi_squared_evidence": [ + { + "instruction": "loop_divide_fusion", + "ms": 0.0050848, + "opcode": "fusion", + "shape": "f64[15361,20]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:352", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:352 (AbstractNDArray.__truediv__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:57 (unwrap_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:35 (to_new_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:78 (chi_squared_map_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:78 (AbstractFit.chi_squared_map)" + ] + } + ] + }, + "stage_audit_note": "The HLO instructions that contributed most of each stage's milliseconds, with their full source stack. A stage row is only as good as the rules that built it; this is how a reader checks a row against the HLO instead of trusting it.", + "untraced_wall_ms": 613.6301525002636, + "reconciliation_vs_untraced_pct": 0.892494815879428, + "wall_basis": "wall_ms is the TRACED run's wall, the run these kernel durations came from. untraced_wall_ms is the same executable without the profiler; the difference is the profiler's overhead and belongs in neither the stages nor the idle row.", + "calls": 10, + "call_split": "per-call (first-instruction recurrence)", + "call_blocks": 10, + "events": 98600, + "streams": [ + "Stream #14(MemcpyH2D,MemcpyD2D,Compute,MemcpyD2H)" + ], + "per_stage_ms": { + "border_relocator": { + "median_ms": 0.0915045, + "min_ms": 0.091201, + "max_ms": 0.09174500000000001 + }, + "chi_squared_evidence": { + "median_ms": 0.005072, + "min_ms": 0.004928, + "max_ms": 0.005248 + }, + "curvature_matrix_F": { + "median_ms": 81.08069449999999, + "min_ms": 80.577891, + "max_ms": 81.581507 + }, + "inversion_other": { + "median_ms": 15.332442999999996, + "min_ms": 15.092703999999987, + "max_ms": 15.574853000000006 + }, + "mapping_matrix": { + "median_ms": 0.0630885, + "min_ms": 0.060577, + "max_ms": 0.065793 + }, + "mesh_construction": { + "median_ms": 0.008992, + "min_ms": 0.008864, + "max_ms": 0.009215999999999998 + }, + "mesh_dual_areas": { + "median_ms": 0.006512, + "min_ms": 0.006464, + "max_ms": 0.00656 + }, + "mesh_locate_walk": { + "median_ms": 1.0009050000000004, + "min_ms": 0.9965819999999999, + "max_ms": 1.0042619999999998 + }, + "mesh_qhull_callback": { + "median_ms": 0.24676950000000009, + "min_ms": 0.24589000000000005, + "max_ms": 0.24761599999999998 + }, + "mesh_seed_argmin": { + "median_ms": 1.7011029999999998, + "min_ms": 1.6961709999999999, + "max_ms": 1.7059049999999996 + }, + "mixed_fusion": { + "median_ms": 43.4708965, + "min_ms": 43.25550799999998, + "max_ms": 43.88580900000001 + }, + "other": { + "median_ms": 0.32461300000000004, + "min_ms": 0.323396, + "max_ms": 0.32560499999999987 + }, + "pdip_solve": { + "median_ms": 221.8421115000016, + "min_ms": 221.26421800000227, + "max_ms": 222.2356290000012 + }, + "psf_convolution_mapping_matrix": { + "median_ms": 142.071821, + "min_ms": 141.76865099999998, + "max_ms": 142.18634899999998 + }, + "regularization_H": { + "median_ms": 0.0034720000000000003, + "min_ms": 0.003424, + "max_ms": 0.003872 + } + }, + "stage_order": [ + "border_relocator", + "mesh_qhull_callback", + "mesh_seed_argmin", + "mesh_locate_walk", + "mesh_dual_areas", + "mesh_construction", + "mapping_matrix", + "psf_convolution_mapping_matrix", + "curvature_matrix_F", + "regularization_H", + "pdip_solve", + "chi_squared_evidence", + "inversion_other", + "mixed_fusion", + "other" + ], + "mixed_fusion": { + "ms": 43.4708965, + "constituent_stage_sets": { + "curvature_matrix_F + psf_convolution_mapping_matrix": 21.0109305, + "curvature_reg_reduce_gather + inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": 8.1490747, + "pdip_solve + psf_convolution_mapping_matrix": 5.0197235, + "data_vector_D + pdip_solve": 2.630171, + "mapped_reconstruction + pdip_solve": 2.188721, + "mapping_matrix + pdip_solve": 2.1220413000000002, + "pdip_solve + regularization_H": 0.9421704, + "inversion_other + pdip_solve + regularization_H": 0.5515274000000001, + "inversion_other + pdip_solve": 0.23193460000000005, + "inversion_other + regularization_H": 0.19064779999999992, + "inversion_other + mapping_matrix + mesh_construction + mesh_interpolation_weights + pdip_solve": 0.07794949999999999, + "mapping_matrix + mesh_interpolation_weights + pdip_solve": 0.07699539999999999, + "grids_and_structures + mass_profile_deflections + ray_trace_data_grid": 0.0345057, + "inversion_other + mesh_construction + mesh_interpolation_weights": 0.025264099999999998, + "inversion_other + mesh_construction + mesh_dual_areas + mesh_interpolation_weights": 0.024495999999999997, + "grids_and_structures + mass_profile_deflections + pdip_solve + ray_trace_data_grid": 0.0241891, + "inversion_other + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + pdip_solve + regularization_H": 0.0238757, + "border_relocator + pdip_solve": 0.020390400000000003, + "inversion_other + mapping_matrix + mesh_construction + mesh_interpolation_weights": 0.016192099999999997, + "pdip_solve + ray_trace_data_grid": 0.013238499999999993, + "mesh_construction + pdip_solve + regularization_H": 0.0123904, + "mesh_dual_areas + mesh_interpolation_weights": 0.0109058, + "mesh_construction + mesh_seed_argmin + pdip_solve + regularization_H": 0.010268800000000002, + "inversion_other + mapped_reconstruction": 0.009689600000000001, + "chi_squared_evidence + pdip_solve": 0.0096706, + "inversion_other + mapped_reconstruction + reconstruction_scatter + regularization_H": 0.009229, + "inversion_other + mapped_reconstruction + reconstruction_scatter": 0.008998399999999998, + "mesh_locate_walk + mesh_seed_argmin": 0.008918500000000001, + "inversion_other + mesh_dual_areas + mesh_locate_walk": 0.0083714, + "mesh_construction + mesh_dual_areas + mesh_interpolation_weights + pdip_solve + regularization_H": 0.006624, + "inversion_other + pdip_solve + ray_trace_data_grid": 0.0046625, + "grids_and_structures + mass_profile_deflections + pdip_solve": 0.0045088, + "mapping_matrix + pdip_solve + regularization_H": 0.004220799999999999, + "inversion_other + mesh_locate_walk + mesh_seed_argmin": 0.0039073, + "inversion_other + mesh_dual_areas + mesh_locate_walk + pdip_solve": 0.0038176000000000004, + "inversion_other + mesh_interpolation_weights": 0.0037503999999999997, + "inversion_other + mesh_construction + mesh_interpolation_weights + pdip_solve + regularization_H": 0.0032896, + "inversion_other + mesh_construction + regularization_H": 0.0027745, + "chi_squared_evidence + inversion_other": 0.0023648000000000002, + "inversion_other + mapping_matrix": 0.0020961 + }, + "example_kernels": { + "curvature_matrix_F + psf_convolution_mapping_matrix": [ + "loop_divide_gather_fusion" + ], + "curvature_reg_reduce_gather + inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": [ + "input_multiply_transpose_fusion" + ], + "pdip_solve + psf_convolution_mapping_matrix": [ + "loop_broadcast_fusion.6" + ], + "data_vector_D + pdip_solve": [ + "input_reduce_fusion.7", + "input_reduce_fusion.32" + ], + "mapped_reconstruction + pdip_solve": [ + "input_reduce_fusion.11" + ], + "mapping_matrix + pdip_solve": [ + "loop_broadcast_fusion.8", + "loop_divide_fusion.1" + ], + "pdip_solve + regularization_H": [ + "loop_broadcast_fusion", + "input_transpose_fusion.4" + ], + "inversion_other + pdip_solve + regularization_H": [ + "input_transpose_fusion.5", + "loop_log_fusion" + ], + "inversion_other + pdip_solve": [ + "input_reduce_fusion.9", + "input_reduce_fusion.10", + "input_transpose_fusion.2", + "input_reduce_fusion.15" + ], + "inversion_other + regularization_H": [ + "input_reduce_fusion.29", + "input_reduce_fusion.22", + "input_reduce_fusion.23", + "input_reduce_fusion.24" + ] + }, + "prorated_estimate_ms": { + "psf_convolution_mapping_matrix": 13.015327, + "curvature_matrix_F": 10.50546525, + "pdip_solve": 8.468068135000001, + "mapped_reconstruction": 2.734326956666667, + "inversion_other": 2.085552568333333, + "reconstruction_scatter": 1.6351216566666666, + "curvature_reg_reduce_gather": 1.62981494, + "data_vector_D": 1.3150855, + "mapping_matrix": 1.1087786916666666, + "regularization_H": 0.76754992, + "mesh_interpolation_weights": 0.07313852833333333, + "mesh_construction": 0.047767461666666663, + "ray_trace_data_grid": 0.025722591666666666, + "mesh_dual_areas": 0.02062585, + "grids_and_structures": 0.019052108333333335, + "mass_profile_deflections": 0.019052108333333335, + "border_relocator": 0.010195200000000001, + "mesh_locate_walk": 0.00950655, + "mesh_seed_argmin": 0.008328883333333335, + "chi_squared_evidence": 0.0060177 + }, + "prorated_note": "ESTIMATE ONLY \u2014 a mixed fusion's time split equally across the stages its constituents span. Never summed into the measured table, never reconciled." + }, + "other_sources_ms": { + "copy.113": 0.048160299999999885, + "copy.115": 0.04006430000000008, + "copy.117": 0.03996200000000011, + "copy.116": 0.039757400000000116, + "copy.114": 0.0392327, + "copy.98": 0.0384193, + "copy.99": 0.03582759999999998, + "copy.97": 0.032233900000000024, + "loop_broadcast_fusion.1": 0.0028095999999999998, + "copy.112": 0.0022848, + "copy.89": 0.0022688, + "copy.50": 0.0021344, + "loop_broadcast_fusion.4": 0.0014049 + }, + "device_span_ms": 618.9797929, + "device_busy_ms": 507.1230211, + "device_idle_ms": 111.85677179999999, + "largest_idle_gaps": [ + { + "gap_ms": 5.485891, + "after": "pure_callback.0", + "before": "pure_callback.0" + }, + { + "gap_ms": 5.048097, + "after": "pure_callback.0", + "before": "pure_callback.0" + }, + { + "gap_ms": 4.939648, + "after": "pure_callback.0", + "before": "pure_callback.0" + }, + { + "gap_ms": 4.919775, + "after": "pure_callback.0", + "before": "pure_callback.0" + }, + { + "gap_ms": 4.878335, + "after": "pure_callback.0", + "before": "pure_callback.0" + }, + { + "gap_ms": 4.871359, + "after": "pure_callback.0", + "before": "pure_callback.0" + }, + { + "gap_ms": 4.850975, + "after": "pure_callback.0", + "before": "pure_callback.0" + }, + { + "gap_ms": 4.837407, + "after": "pure_callback.0", + "before": "pure_callback.0" + } + ], + "kernel_ms": 507.2499980000016, + "sum_ms": 619.1067698000015, + "wall_ms": 619.0847408000991, + "host_outside_span_ms": 0.10494790009909138, + "reconciliation_pct": 0.0035583173757378697, + "unjoined_ms": 0.0, + "unjoined_pct": 0.0, + "other_ms": 0.32461300000000004, + "other_pct": 0.052434340342563335, + "note": "Stage rows attribute the command-buffers-OFF program (see the module docstring): kernel times are the same, the launch overhead the CUDA graphs remove is not. sum_ms = kernel rows + device_idle_ms; the residual against wall_ms is host_outside_span_ms (dispatch before the first kernel, teardown after the last).", + "per_stage_ms_per_lane": { + "border_relocator": 0.0045752250000000005, + "chi_squared_evidence": 0.0002536, + "curvature_matrix_F": 4.054034724999999, + "inversion_other": 0.7666221499999998, + "mapping_matrix": 0.003154425, + "mesh_construction": 0.0004496, + "mesh_dual_areas": 0.0003256, + "mesh_locate_walk": 0.05004525000000002, + "mesh_qhull_callback": 0.012338475000000005, + "mesh_seed_argmin": 0.08505515, + "mixed_fusion": 2.173544825, + "other": 0.016230650000000003, + "pdip_solve": 11.09210557500008, + "psf_convolution_mapping_matrix": 7.10359105, + "regularization_H": 0.00017360000000000002 + }, + "per_lane_divisor": 20, + "host_callback": { + "pure_callback_span_ms": 105.14257829999998, + "qhull_ms": 91.97451589999999, + "callback_body_ms_note": "the OUTERMOST matching body event, not a sum: under the probe the body appears twice (the wrapper and the timed re-implementation it calls) and summing them would count the same work twice", + "events_by_name": { + "pure_callback.0": { + "count": 200, + "ms": 105.14257829999998 + }, + "$callback.py:815 _wrapped_callback": { + "count": 200, + "ms": 96.74478699999999 + }, + "$callback.py:224 _callback": { + "count": 200, + "ms": 96.29638380000007 + }, + "$callback.py:74 pure_callback_impl": { + "count": 200, + "ms": 96.12194259999993 + }, + "$callback.py:69 __call__": { + "count": 200, + "ms": 92.28282549999999 + }, + "$delaunay.py:162 ": { + "count": 200, + "ms": 92.14507390000001 + }, + "$host_callback_probe.py:225 wrapped": { + "count": 200, + "ms": 91.97451589999999 + }, + "$host_callback_probe.py:160 _timed_tri_only": { + "count": 200, + "ms": 91.82591640000001 + }, + "$callback.py:822 ": { + "count": 800, + "ms": 0.27534069999999966 + }, + "ThenExecuteCallback:GetEventForComputeStreamSyncPoint": { + "count": 10, + "ms": 0.021091699999999998 + }, + "$__init__.py:132 _xla_gc_callback": { + "count": 2, + "ms": 0.000496 + } + }, + "note": "HOST milliseconds per traced BATCH (the whole invocation), aggregated by name because the events nest. Not a row of the device table: the device pays for them as the idle gaps largest_idle_gaps names." + }, + "host_callback_ms": 105.14257829999998 + }, + "hlo_census": { + "status": "excluded", + "reason": "The legacy census anchors PyAutoArray source line numbers that moved after the phase-1 run. No batched attribution is published from unsupported anchors; the device-event table and wall reconciliation remain valid." + }, + "trace_split": { + "expected_calls": 10, + "executions_per_invocation": 1, + "method": "per-call (first-instruction recurrence)", + "note": "DECIDED IN CODE: the scalar arm's trace is split by trace_calls * B, so every lane's execution is its own block and the per-stage median is taken over all of them. The vmap arm's is split by trace_calls, one block per batched execution, and per_stage_ms_per_lane divides those rows by B." + } + }, + "scalar": { + "arm": "scalar", + "program": "jax.jit(fn), called B times", + "stands_for": "Nautilus(use_jax_vmap=False, use_jax_jit=True). Plain use_jax_vmap=False is UNJITTED and is NOT this arm", + "hlo_source": "jax.jit(fn).lower(lane_trees[0]) \u2014 the same program phase 1 traced", + "batch_wall_ms": 685.8309781000571, + "wall_production_nesting_ms": 685.8309781000571, + "wall_aot_command_buffers_on_ms": 686.2691859001643, + "wall_aot_command_buffers_off_ms": 691.6505541001243, + "command_buffer_delta_ms": 5.381368199959979, + "production_nesting_vs_aot_on_delta_ms": -0.4382078001071932, + "production_nesting_vs_aot_on_delta_pct": -0.06385363194362363, + "wall_per_lane_ms": 34.291548905002855, + "wall_per_lane_command_buffers_off_ms": 34.582527705006214, + "traced_batch_wall_ms": 712.2790306999377, + "untraced_batch_wall_ms": 691.2769196002046, + "traced_wall_per_lane_ms": 35.613951534996886, + "callback_count_per_call": 20.0, + "callback_count_per_lane": 1.0, + "callback_expectation": "1 per likelihood evaluation, B per batch", + "host_qhull_ms": 90.7679644991731, + "host_tables_ms": 2.3583559992403025, + "host_qhull_ms_per_lane": 4.538398224958655, + "host_tables_ms_per_lane": 0.11791779996201512, + "host_callback_probe": { + "calls": 200, + "qhull_ms_total": 907.679644991731, + "tables_ms_total": 23.583559992403025, + "total_ms_total": 931.2632049841341, + "qhull_ms_mean": 4.538398224958655, + "tables_ms_mean": 0.11791779996201512, + "total_ms_mean": 4.65631602492067, + "non_finite_calls": 0, + "n_points": [ + 1500 + ] + }, + "host_callback_records_first": [ + { + "n_points": 1500, + "qhull_ms": 4.801352999493247, + "tables_ms": 0.17543799913255498, + "total_ms": 4.976790998625802, + "finite": true + }, + { + "n_points": 1500, + "qhull_ms": 4.6091959993646014, + "tables_ms": 0.12426800094544888, + "total_ms": 4.73346400031005, + "finite": true + }, + { + "n_points": 1500, + "qhull_ms": 4.555195999273565, + "tables_ms": 0.11976800306001678, + "total_ms": 4.6749640023335814, + "finite": true + }, + { + "n_points": 1500, + "qhull_ms": 4.538047000096412, + "tables_ms": 0.11796800026786514, + "total_ms": 4.6560150003642775, + "finite": true + } + ], + "device_idle_ms": 6.569015244999999, + "device_idle_ms_per_lane": 6.569015244999999, + "trace": { + "parser": "ProfileData.from_file(xplane) + as_text() + stack_frame_index(proto field 17)", + "stage_audit": { + "mixed_fusion": [ + { + "instruction": "loop_divide_gather_fusion", + "ms": 1.014830575, + "opcode": "fusion", + "shape": "(f64[15361,1,1,1500]{3,2,1,0}, f64[15361,1,1,1500]{3,2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_broadcast_fusion.4", + "ms": 0.22561039500000007, + "opcode": "fusion", + "shape": "f64[1500,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_reduce_fusion.5", + "ms": 0.12116068500000002, + "opcode": "fusion", + "shape": "f64[92,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123 (data_vector_via_blurred_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:67 (InversionImagingMapping.data_vector)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:699 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_reduce_fusion.9", + "ms": 0.11469936500000001, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163 (mapped_reconstructed_data_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:120 (InversionImagingMapping._mapped_reconstructed_data_dict_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:196 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "loop_broadcast_fusion.2", + "ms": 0.11041876500000011, + "opcode": "fusion", + "shape": "f64[15361,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:342", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:342 (mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:283 (Mapper.mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:91 (AbstractInversionImaging._mapping_matrix_for_convolution_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:137 (AbstractInversionImaging.operated_mapping_matrix_list)" + ] + }, + { + "instruction": "input_multiply_transpose_fusion", + "ms": 0.10953336000000004, + "opcode": "fusion", + "shape": "(f64[1500,1500]{1,0}, f64[1500,1500]{1,0}, f64[1500,1500]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:237 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:274 (_certified_positive_only_from)" + ] + } + ], + "border_relocator": [ + { + "instruction": "eigh.45", + "ms": 0.0745658599999995, + "opcode": "custom-call", + "shape": "(f64[2,2]{0,1}, f64[2]{0}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "custom-call.2", + "ms": 0.007951620000000019, + "opcode": "custom-call", + "shape": "(f64[2,2]{1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_reduce_fusion.10", + "ms": 0.005889879999999996, + "opcode": "fusion", + "shape": "(f64[], f64[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:269", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:269 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_add_fusion.3", + "ms": 0.003586034999999997, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:423 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:208 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_add_fusion.5", + "ms": 0.003427964999999993, + "opcode": "fusion", + "shape": "f64[1500]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:458 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_concatenate_fusion.12", + "ms": 0.0024041449999999977, + "opcode": "fusion", + "shape": "f64[392,2]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:238", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:238 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + } + ], + "mesh_construction": [ + { + "instruction": "input_concatenate_fusion.7", + "ms": 0.001939029999999998, + "opcode": "fusion", + "shape": "f64[1500,2]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:820", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:820 (InterpolatorDelaunay.mesh_grid_xy)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:847 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + } + ], + "mesh_qhull_callback": [ + { + "instruction": "pure_callback.4", + "ms": 0.010609819999999987, + "opcode": "custom-call", + "shape": "(s32[3000,3]{1,0}, s32[3000,3]{1,0}, s32[1500]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:161", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:161 (_jax_delaunay_tables)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:405 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + } + ], + "other": [ + { + "instruction": "copy.80", + "ms": 0.0416873749999986, + "opcode": "copy", + "shape": "f64[1,1024,2]{2,1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.48", + "ms": 0.01709492000000022, + "opcode": "copy", + "shape": "s32[21361]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.53", + "ms": 0.002002704999999998, + "opcode": "copy", + "shape": "s64[1500]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.79", + "ms": 0.0017998299999999966, + "opcode": "copy", + "shape": "s32[]", + "source": "", + "stack": [] + }, + { + "instruction": "copy.78", + "ms": 0.0017754899999999996, + "opcode": "copy", + "shape": "s64[]", + "source": "", + "stack": [] + }, + { + "instruction": "copy.39", + "ms": 0.0016524749999999953, + "opcode": "copy", + "shape": "s32[]", + "source": "", + "stack": [] + } + ], + "mesh_seed_argmin": [ + { + "instruction": "input_reduce_fusion", + "ms": 0.14850283000000372, + "opcode": "fusion", + "shape": "(f64[1024]{0}, s64[1024]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:191", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:191 (_nearest_vertex_seed_from..argmin_chunk)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)" + ] + }, + { + "instruction": "loop_dynamic_update_slice_fusion", + "ms": 0.04091853499999826, + "opcode": "fusion", + "shape": "s32[21,1024]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_add_fusion", + "ms": 0.031879360000000044, + "opcode": "fusion", + "shape": "s64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_broadcast_fusion", + "ms": 0.0019465549999999965, + "opcode": "fusion", + "shape": "s32[21,1024]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "pdip_solve": [ + { + "instruction": "cholesky.50", + "ms": 7.571322239999946, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "triangular-solve.1", + "ms": 1.3521416300000395, + "opcode": "custom-call", + "shape": "(f64[1500,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "triangular-solve", + "ms": 1.1715294199999895, + "opcode": "custom-call", + "shape": "(f64[1500,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "cholesky.70", + "ms": 0.8921585999999985, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:297 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:274 (_certified_positive_only_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:496 (reconstruction_positive_only_from)" + ] + }, + { + "instruction": "cholesky.60", + "ms": 0.8642273799999994, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:237 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:274 (_certified_positive_only_from)" + ] + }, + { + "instruction": "input_transpose_fusion", + "ms": 0.2996470950000008, + "opcode": "fusion", + "shape": "f64[1500,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + } + ], + "regularization_H": [ + { + "instruction": "input_scatter_fusion.10", + "ms": 0.0020590249999999947, + "opcode": "fusion", + "shape": "f64[1500,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:615", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:615 (pixel_splitted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:137 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_concatenate_fusion.8", + "ms": 0.0018705649999999972, + "opcode": "fusion", + "shape": "pred[3]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:93", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:93 (split_points_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:410 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + }, + { + "instruction": "input_concatenate_fusion.9", + "ms": 0.0018559750000000012, + "opcode": "fusion", + "shape": "pred[3]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:91", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:91 (split_points_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:410 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + }, + { + "instruction": "input_concatenate_fusion.10", + "ms": 0.0018550400000000016, + "opcode": "fusion", + "shape": "pred[3]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:90", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:90 (split_points_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:410 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + }, + { + "instruction": "input_concatenate_fusion", + "ms": 0.0017529450000000014, + "opcode": "fusion", + "shape": "s32[1500,2]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:615", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:615 (pixel_splitted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:137 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_concatenate_fusion.11", + "ms": 0.0015462449999999988, + "opcode": "fusion", + "shape": "pred[3]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:88", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:88 (split_points_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:410 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + } + ], + "mesh_locate_walk": [ + { + "instruction": "input_reduce_fusion.1", + "ms": 0.025416295000000685, + "opcode": "fusion", + "shape": "pred[196]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:288", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:288 (_walk_from_seed..cond)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)" + ] + }, + { + "instruction": "loop_reduce_fusion", + "ms": 0.025351530000000278, + "opcode": "fusion", + "shape": "(f64[21361]{0}, s64[21361]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:264", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:264 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:264 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)" + ] + }, + { + "instruction": "loop_or_select_fusion", + "ms": 0.022417385000000328, + "opcode": "fusion", + "shape": "(s32[21361]{0}, pred[21361]{0}, pred[21361]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:270", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:270 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)" + ] + }, + { + "instruction": "loop_select_fusion", + "ms": 0.020096609999999963, + "opcode": "fusion", + "shape": "s32[21361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:242", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:242 (_walk_from_seed..weights_of)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:262 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)" + ] + }, + { + "instruction": "input_reduce_fusion.2", + "ms": 0.016372954999999835, + "opcode": "fusion", + "shape": "pred[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:288", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:288 (_walk_from_seed..cond)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)" + ] + }, + { + "instruction": "while.20", + "ms": 0.014597884999999899, + "opcode": "while", + "shape": "(s32[], s32[21361]{0}, pred[21361]{0}, pred[21361]{0}, s32[3000,3]{1,0}, /*index=5*/f64[1500,2]{1,0}, f64[21361,2]{1,0}, s32[3000,3]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "psf_convolution_mapping_matrix": [ + { + "instruction": "input_scatter_fusion", + "ms": 1.97975727, + "opcode": "fusion", + "shape": "f64[1500,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.19.0", + "ms": 1.7551799450000005, + "opcode": "fft", + "shape": "f64[1500,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.15.0", + "ms": 1.3641246450000013, + "opcode": "fft", + "shape": "c128[1500,180,91]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.17.0", + "ms": 0.9786353050000003, + "opcode": "fft", + "shape": "c128[1500,91,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_transpose_fusion.2", + "ms": 0.5137602899999998, + "opcode": "fusion", + "shape": "c128[1500,91,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "wrapped_transpose", + "ms": 0.4983216949999999, + "opcode": "fusion", + "shape": "c128[1500,180,91]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + } + ], + "inversion_other": [ + { + "instruction": "cholesky.80", + "ms": 0.8954901000000013, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1078 (AbstractInversion.log_det_curvature_reg_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:347 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "cholesky.90", + "ms": 0.8914510800000003, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1157 (AbstractInversion.log_det_regularization_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:348 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "loop_reduce_window_fusion.1", + "ms": 0.002767499999999998, + "opcode": "fusion", + "shape": "s64[94,16]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "loop_reduce_window_fusion", + "ms": 0.0026879849999999956, + "opcode": "fusion", + "shape": "s64[6,16]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "loop_broadcast_convert_fusion", + "ms": 0.002175330000000001, + "opcode": "fusion", + "shape": "(s32[1500]{0}, s64[1500]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527 (AbstractInversion.zeroed_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:567 (AbstractInversion.solve_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:684 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_scatter_fusion.5", + "ms": 0.001927665000000001, + "opcode": "fusion", + "shape": "s64[1500]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527 (AbstractInversion.zeroed_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:567 (AbstractInversion.solve_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:684 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "mapping_matrix": [ + { + "instruction": "input_reduce_fusion.23", + "ms": 0.0028863699999999914, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:120 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + } + ], + "curvature_matrix_F": [ + { + "instruction": "cublas-lt-matmul.2", + "ms": 4.198070774999998, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "chi_squared_evidence": [ + { + "instruction": "loop_multiply_fusion", + "ms": 0.003009435000000001, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:300", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:300 (AbstractNDArray.__pow__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:60 (unwrap_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:35 (to_new_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:78 (chi_squared_map_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:78 (AbstractFit.chi_squared_map)" + ] + } + ] + }, + "stage_audit_note": "The HLO instructions that contributed most of each stage's milliseconds, with their full source stack. A stage row is only as good as the rules that built it; this is how a reader checks a row against the HLO instead of trusting it.", + "untraced_wall_ms": 34.56384598001023, + "reconciliation_vs_untraced_pct": 6.815444572783263, + "wall_basis": "wall_ms is the TRACED run's wall, the run these kernel durations came from. untraced_wall_ms is the same executable without the profiler; the difference is the profiler's overhead and belongs in neither the stages nor the idle row.", + "calls": 200, + "call_split": "per-call (first-instruction recurrence)", + "call_blocks": 200, + "events": 99770, + "streams": [ + "Stream #14(MemcpyD2H,Compute,MemcpyH2D,Memset,MemcpyD2D)" + ], + "per_stage_ms": { + "border_relocator": { + "median_ms": 0.10128100000000001, + "min_ms": 0.10073700000000002, + "max_ms": 0.10217800000000002 + }, + "chi_squared_evidence": { + "median_ms": 0.003008, + "min_ms": 0.002816, + "max_ms": 0.003392 + }, + "curvature_matrix_F": { + "median_ms": 4.196892500000001, + "min_ms": 4.178059, + "max_ms": 4.24619 + }, + "inversion_other": { + "median_ms": 1.7981955, + "min_ms": 1.778524, + "max_ms": 1.816411 + }, + "mapping_matrix": { + "median_ms": 0.00288, + "min_ms": 0.002879, + "max_ms": 0.002912 + }, + "memset": { + "median_ms": 0.0345595, + "min_ms": 0.010112999999999999, + "max_ms": 0.05388700000000001 + }, + "mesh_construction": { + "median_ms": 0.001952, + "min_ms": 0.001919, + "max_ms": 0.001953 + }, + "mesh_locate_walk": { + "median_ms": 0.14809750000000002, + "min_ms": 0.13023799999999996, + "max_ms": 0.18329300000000004 + }, + "mesh_qhull_callback": { + "median_ms": 0.01056, + "min_ms": 0.010495, + "max_ms": 0.011104 + }, + "mesh_seed_argmin": { + "median_ms": 0.22323500000000007, + "min_ms": 0.22285000000000008, + "max_ms": 0.22374600000000014 + }, + "mixed_fusion": { + "median_ms": 1.9799594999999997, + "min_ms": 1.9719579999999992, + "max_ms": 1.9930169999999996 + }, + "other": { + "median_ms": 0.065728, + "min_ms": 0.063329, + "max_ms": 0.070016 + }, + "pdip_solve": { + "median_ms": 14.683332, + "min_ms": 2.4254860000000003, + "max_ms": 23.052538000000023 + }, + "psf_convolution_mapping_matrix": { + "median_ms": 7.089918000000001, + "min_ms": 7.074800000000001, + "max_ms": 7.103885 + }, + "regularization_H": { + "median_ms": 0.010912, + "min_ms": 0.010784, + "max_ms": 0.011296 + } + }, + "stage_order": [ + "border_relocator", + "mesh_qhull_callback", + "mesh_seed_argmin", + "mesh_locate_walk", + "mesh_construction", + "mapping_matrix", + "psf_convolution_mapping_matrix", + "curvature_matrix_F", + "regularization_H", + "pdip_solve", + "chi_squared_evidence", + "inversion_other", + "mixed_fusion", + "other", + "memset" + ], + "mixed_fusion": { + "ms": 1.9799594999999997, + "constituent_stage_sets": { + "curvature_matrix_F + psf_convolution_mapping_matrix": 1.014830575, + "pdip_solve + psf_convolution_mapping_matrix": 0.22561039500000007, + "data_vector_D + pdip_solve": 0.12483967000000015, + "mapped_reconstruction + pdip_solve": 0.11469936500000001, + "mapping_matrix + pdip_solve": 0.11277122500000009, + "curvature_reg_reduce_gather + inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": 0.10953336000000004, + "pdip_solve + regularization_H": 0.045041625000000016, + "inversion_other + pdip_solve + regularization_H": 0.024227685000000013, + "inversion_other + pdip_solve": 0.02283095499999999, + "inversion_other + mapping_matrix + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin + pdip_solve": 0.021145820000000003, + "inversion_other + mesh_construction + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin + pdip_solve + regularization_H": 0.019092000000000015, + "inversion_other + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + pdip_solve + regularization_H": 0.014647434999999995, + "pdip_solve + ray_trace_data_grid": 0.013688684999999956, + "border_relocator + pdip_solve": 0.013573504999999991, + "inversion_other + mapping_matrix + mesh_construction + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin": 0.011668704999999996, + "grids_and_structures + mass_profile_deflections + pdip_solve": 0.010161980000000003, + "grids_and_structures + mass_profile_deflections + pdip_solve + ray_trace_data_grid": 0.009011490000000004, + "chi_squared_evidence + pdip_solve": 0.007725344999999981, + "inversion_other + mesh_construction + mesh_seed_argmin + pdip_solve + regularization_H": 0.006955930000000005, + "inversion_other + mesh_dual_areas + mesh_locate_walk": 0.006663660000000058, + "inversion_other + mesh_construction + pdip_solve + regularization_H": 0.006492274999999981, + "grids_and_structures + mass_profile_deflections + ray_trace_data_grid": 0.0054911500000000045, + "inversion_other + pdip_solve + ray_trace_data_grid": 0.005259500000000019, + "inversion_other + regularization_H": 0.005234534999999999, + "inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": 0.004753875, + "inversion_other + mapped_reconstruction + pdip_solve": 0.0037404800000000035, + "mapping_matrix + pdip_solve + regularization_H": 0.003474379999999996, + "inversion_other + mesh_construction + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin": 0.00310092, + "inversion_other + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin": 0.002918069999999999, + "inversion_other + mesh_construction + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin + regularization_H": 0.0026831799999999986, + "inversion_other + mesh_dual_areas + mesh_locate_walk + pdip_solve": 0.0025835149999999946, + "inversion_other + mesh_locate_walk + mesh_seed_argmin": 0.0024814150000000037, + "inversion_other + mesh_interpolation_weights": 0.0021529750000000053, + "chi_squared_evidence + inversion_other": 0.0019567950000000003 + }, + "example_kernels": { + "curvature_matrix_F + psf_convolution_mapping_matrix": [ + "loop_divide_gather_fusion" + ], + "pdip_solve + psf_convolution_mapping_matrix": [ + "loop_broadcast_fusion.4" + ], + "data_vector_D + pdip_solve": [ + "input_reduce_fusion.5", + "input_reduce_fusion.21" + ], + "mapped_reconstruction + pdip_solve": [ + "input_reduce_fusion.9" + ], + "mapping_matrix + pdip_solve": [ + "loop_broadcast_fusion.2", + "loop_divide_fusion" + ], + "curvature_reg_reduce_gather + inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": [ + "input_multiply_transpose_fusion" + ], + "pdip_solve + regularization_H": [ + "loop_select_fusion.2", + "input_transpose_fusion.3" + ], + "inversion_other + pdip_solve + regularization_H": [ + "input_transpose_fusion.4" + ], + "inversion_other + pdip_solve": [ + "input_reduce_fusion.7", + "loop_log_fusion", + "input_reduce_fusion.8", + "input_reduce_fusion.12" + ], + "inversion_other + mapping_matrix + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin + pdip_solve": [ + "input_scatter_fusion.6", + "input_scatter_fusion.3" + ] + }, + "prorated_estimate_ms": { + "psf_convolution_mapping_matrix": 0.620220485, + "curvature_matrix_F": 0.5074152875, + "pdip_solve": 0.39283176865476194, + "mapped_reconstruction": 0.08169164991666669, + "inversion_other": 0.06827755598809528, + "data_vector_D": 0.062419835000000076, + "mapping_matrix": 0.062131750833333374, + "regularization_H": 0.04300222082142858, + "reconstruction_scatter": 0.02309514075000001, + "curvature_reg_reduce_gather": 0.02190667200000001, + "mesh_construction": 0.01432465982142857, + "ray_trace_data_grid": 0.012680764999999986, + "mesh_locate_walk": 0.01256340298809526, + "mesh_interpolation_weights": 0.012386892571428575, + "mesh_seed_argmin": 0.011087490238095243, + "mesh_dual_areas": 0.008437910416666684, + "grids_and_structures": 0.007470582500000003, + "mass_profile_deflections": 0.007470582500000003, + "border_relocator": 0.0067867524999999955, + "chi_squared_evidence": 0.004841069999999991 + }, + "prorated_note": "ESTIMATE ONLY \u2014 a mixed fusion's time split equally across the stages its constituents span. Never summed into the measured table, never reconciled." + }, + "other_sources_ms": { + "copy.80": 0.0416873749999986, + "copy.48": 0.01709492000000022, + "copy.53": 0.002002704999999998, + "copy.79": 0.0017998299999999966, + "copy.78": 0.0017754899999999996, + "copy.39": 0.0016524749999999953 + }, + "device_span_ms": 35.60909475, + "device_busy_ms": 29.040079504999998, + "device_idle_ms": 6.569015244999999, + "largest_idle_gaps": [ + { + "gap_ms": 5.50344, + "after": "pure_callback.4", + "before": "pure_callback.4" + }, + { + "gap_ms": 0.140541, + "after": "input_transpose_fusion", + "before": "triangular-solve" + }, + { + "gap_ms": 0.031455, + "after": "pure_callback.4", + "before": "copy.79" + }, + { + "gap_ms": 0.028447, + "after": "while.20", + "before": "loop_add_fusion.4" + }, + { + "gap_ms": 0.028351, + "after": "input_concatenate_fusion.7", + "before": "pure_callback.4" + }, + { + "gap_ms": 0.028319, + "after": "input_reduce_fusion.20", + "before": "loop_broadcast_fusion.4" + }, + { + "gap_ms": 0.023904, + "after": "copy.48", + "before": "input_reduce_fusion.1" + }, + { + "gap_ms": 0.019039, + "after": "input_scatter_fusion.7", + "before": "loop_reduce_fusion.1" + } + ], + "kernel_ms": 30.350510500000002, + "sum_ms": 36.919525745, + "wall_ms": 35.613951534996886, + "host_outside_span_ms": 0.004856784996889019, + "reconciliation_pct": 3.6659066285305695, + "unjoined_ms": 0.0, + "unjoined_pct": 0.0, + "other_ms": 0.065728, + "other_pct": 0.1845568861838059, + "note": "Stage rows attribute the command-buffers-OFF program (see the module docstring): kernel times are the same, the launch overhead the CUDA graphs remove is not. sum_ms = kernel rows + device_idle_ms; the residual against wall_ms is host_outside_span_ms (dispatch before the first kernel, teardown after the last).", + "per_stage_ms_per_lane": { + "border_relocator": 0.10128100000000001, + "chi_squared_evidence": 0.003008, + "curvature_matrix_F": 4.196892500000001, + "inversion_other": 1.7981955, + "mapping_matrix": 0.00288, + "memset": 0.0345595, + "mesh_construction": 0.001952, + "mesh_locate_walk": 0.14809750000000002, + "mesh_qhull_callback": 0.01056, + "mesh_seed_argmin": 0.22323500000000007, + "mixed_fusion": 1.9799594999999997, + "other": 0.065728, + "pdip_solve": 14.683332, + "psf_convolution_mapping_matrix": 7.089918000000001, + "regularization_H": 0.010912 + }, + "per_lane_divisor": 1, + "host_callback": { + "pure_callback_span_ms": 99.9314493, + "qhull_ms": 93.31271309999998, + "callback_body_ms_note": "the OUTERMOST matching body event, not a sum: under the probe the body appears twice (the wrapper and the timed re-implementation it calls) and summing them would count the same work twice", + "events_by_name": { + "pure_callback.4": { + "count": 200, + "ms": 99.9314493 + }, + "$callback.py:815 _wrapped_callback": { + "count": 200, + "ms": 98.30340699999998 + }, + "$callback.py:224 _callback": { + "count": 200, + "ms": 97.8397079 + }, + "$callback.py:74 pure_callback_impl": { + "count": 200, + "ms": 97.6615542 + }, + "$callback.py:69 __call__": { + "count": 200, + "ms": 93.62564410000006 + }, + "$delaunay.py:162 ": { + "count": 200, + "ms": 93.48909439999997 + }, + "$host_callback_probe.py:225 wrapped": { + "count": 200, + "ms": 93.31271309999998 + }, + "$host_callback_probe.py:160 _timed_tri_only": { + "count": 200, + "ms": 93.15025310000003 + }, + "ThenExecuteCallback:GetEventForComputeStreamSyncPoint": { + "count": 200, + "ms": 0.36440779999999984 + }, + "$callback.py:822 ": { + "count": 800, + "ms": 0.2796993999999996 + }, + "$__init__.py:132 _xla_gc_callback": { + "count": 2, + "ms": 0.00037200000000000004 + } + }, + "note": "HOST milliseconds per traced BATCH (the whole invocation), aggregated by name because the events nest. Not a row of the device table: the device pays for them as the idle gaps largest_idle_gaps names." + }, + "host_callback_ms": 99.9314493 + }, + "hlo_census": { + "status": "excluded", + "reason": "The legacy census anchors PyAutoArray source line numbers that moved after the phase-1 run. No batched attribution is published from unsupported anchors; the device-event table and wall reconciliation remain valid." + }, + "trace_split": { + "expected_calls": 200, + "executions_per_invocation": 20, + "method": "per-call (first-instruction recurrence)", + "note": "DECIDED IN CODE: the scalar arm's trace is split by trace_calls * B, so every lane's execution is its own block and the per-stage median is taken over all of them. The vmap arm's is split by trace_calls, one block per batched execution, and per_stage_ms_per_lane divides those rows by B." + } + } + }, + "certification_report": { + "source": "vmap arm, library solve observed through its stats= out-dict (PyAutoArray #566) and jax.debug.callback(..., ordered=True); ordered because the unordered batching rule returns the lanes permuted. Untimed, separately compiled; max rel diff of its log likelihoods vs the timed arm's: nan", + "rows": 20, + "pdip_iter": "NOT AVAILABLE per lane without changing library numerics. The fallback branch calls the library's own reconstruction_positive_only_from, which returns the solution alone \u2014 jax_nnls.solve_nnls' iteration count is discarded inside the library's custom_vjp primal. The PDIP while_loop's cost is in the pdip_solve stage row of each arm's device table instead, which is a max-over-lanes quantity under vmap because every lane runs the same fixed kernel sequence.", + "passes_semantics": "library `passes`: restricted active-set passes run (jax_active_set.solve_certified)" + }, + "lane_construction": { + "draws_sha256": "2ef9de62dd3cb04c203df7c6177baeafe26acbe41f5db2137c5891526b265fcf", + "lane_rows": [ + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319 + ], + "calls": [ + 15 + ], + "stage": "pix1", + "regularization_range": { + "galaxies.source.pixelization.regularization.inner_coefficient": { + "min": 2.161360256524811e-06, + "max": 609.7498208301598 + }, + "galaxies.source.pixelization.regularization.outer_coefficient": { + "min": 3.4330906156470037e-06, + "max": 159.11676392313697 + }, + "galaxies.source.pixelization.regularization.signal_scale": { + "min": 0.12452271846719754, + "max": 0.9404155018121758 + } + }, + "phases": [ + "exploration" + ], + "window_rule": "nautilus_batches.timed_window: consecutive captured calls, in call order, from the FIRST call that is not a prior batch, concatenated and truncated to B; at B == n_batch exactly one real Nautilus batch. Falls back to the latest B lanes if the post-prior lanes run out; never repeats a lane.", + "note": "Lane k is captured lane lane_rows[k]: the mass AND shear of a real Nautilus proposal (nautilus_batch_capture.py), lens light fixed at S3, the S3 light-subtracted dataset shared by every lane. `offsets` in the lane table are the mass offsets from the fiducial; the shear is in the capture file." + }, + "captured": { + "batches_path": "/mnt/ral/jnightin/autolens_profiling_wt/certified-solver-phase-c1-lane-rate/results/breakdown/imaging/nautilus_batches_delaunay_pix1.npz", + "batches_sha256": "e71a5e23026b342d1ff4359b8fb914a87980d8aea0060659d2334dcfa3215c00", + "schema_version": 2, + "n_calls": 932, + "n_lanes": 18640, + "call_sizes_seen": [ + 20 + ], + "calls_by_phase": { + "prior": 15, + "exploration": 917 + }, + "parameter_paths": [ + "galaxies.source.pixelization.regularization.inner_coefficient", + "galaxies.source.pixelization.regularization.outer_coefficient", + "galaxies.source.pixelization.regularization.signal_scale", + "galaxies.lens.mass.centre.centre_0", + "galaxies.lens.mass.centre.centre_1", + "galaxies.lens.mass.einstein_radius", + "galaxies.lens.mass.ell_comps.ell_comps_0", + "galaxies.lens.mass.ell_comps.ell_comps_1", + "galaxies.lens.shear.gamma_1", + "galaxies.lens.shear.gamma_2" + ], + "stage": "pix1", + "regularization": { + "class": "AdaptSplit", + "free": true, + "priors": { + "inner_coefficient": [ + "LogUniform", + 1e-06, + 1000000.0 + ], + "outer_coefficient": [ + "LogUniform", + 1e-06, + 1000000.0 + ], + "signal_scale": [ + "Uniform", + 0.0, + 1.0 + ] + }, + "priors_source": "PyAutoGalaxy packaged config/priors/regularization (adapt_split.yaml / constant.yaml); adapt_split.yaml is identical to euclid_strong_lens_modeling_pipeline/config/priors/regularization/adapt_split.yaml" + }, + "nautilus": { + "departures_from_production": [ + "mass/shear priors are the phase-B cell's Gaussians, not chained from source_lp", + "no positions likelihood", + "the cell's mesh (Hilbert 1500, weight_power 1) in both stages; source_pix_2 redraws a 500-vertex Hilbert grid at weight_power 3.5", + "seeded (production passes no seed)", + "quick updates disabled (iterations_per_quick_update=1e12; render-only)", + "NullPaths: no output directory, so no checkpoint and one Sampler.run call", + "post-fit perform_update skipped (samples / latent variables never built)" + ], + "n_batch": 20, + "n_like_max": 40000, + "n_live": 150, + "number_of_cores": 1, + "production_reference": "euclid_strong_lens_modeling_pipeline/scripts/full_model.py source_pix_1 (n_live=150) / source_pix_2 (n_live=75): af.Nautilus(n_batch=20, **SettingsSearch.search_dict) with use_jax_vmap=True and number_of_cores=1 (SettingsSearch defaults)", + "production_stage": "source_pix_1", + "seed": 1, + "stage": "pix1", + "use_jax_vmap": true, + "version": "1.0.5" + }, + "capture_fit_status": "sampling complete (n_like_max or convergence); post-fit result skipped", + "capture_library_revisions": { + "PyAutoArray": { + "head": "7fa8d2714f7da43fec2b23c31bff580764831670", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoArray" + }, + "PyAutoFit": { + "head": "a736840127be7a3c21e15a5c945e94d8f1082983", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoFit" + }, + "PyAutoGalaxy": { + "head": "70a61e26cd715cefe7012a38285698091246a8a4", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy" + }, + "PyAutoLens": { + "head": "86054bbc19baa2f710a12e04a94fa27ab37cc354", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoLens" + }, + "PyAutoNerves": { + "head": "1fa613aa8d89a79613009fb66f5b4e2d21deb57a", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoNerves" + } + }, + "fingerprint_check": { + "fields": [ + "mesh", + "source_pixels", + "dataset_sha256", + "regularization_class", + "regularization_s0_fiducial", + "border_relocator", + "use_mixed_precision", + "log_evidence_s3_library" + ], + "not_identity": "the regularization coefficients: free per lane since the capture frees them", + "log_evidence_s3_library_rel_diff": 0.0, + "passed": true + }, + "timed_window_vs_capture_pdip": { + "reference": "the capture's own figure of merit (library PDIP, Fitness.call_wrap jax.jit(jax.vmap(call)) over parameter vectors) for the same lanes", + "compared_against": "this cell's jit(vmap) library-PDIP reference", + "n_compared": 20, + "max_rel_diff": 3.0218732230460707e-06, + "max_abs_diff_nats": 0.5352314353804104, + "gated": false, + "note": "RECORDED, NOT GATED: proves the lane trees rebuilt here are the models the sampler evaluated (a wrong parameter mapping shows up as nats, not 1e-10)." + } + }, + "matched": { + "vmap_wall_per_lane_ms": 30.486898884992115, + "scalar_wall_per_lane_ms": 34.291548905002855, + "speedup_vmap_over_scalar": 1.124796229172514, + "note": "Both walls are the PRODUCTION nesting of their arm, measured in one process on the same B lanes with the SAME library Settings (no injection). A speedup below 1 means the batch is slower per lane than B sequential jitted calls." + }, + "solver_source": "library", + "solver": "certified", + "certified_fallback": "none", + "certified_pass_budget": 16, + "certified_pass_budget_basis": "config default (Settings().certified_pass_budget)", + "certified_tau_rel": 1e-09, + "solver_used": "certified", + "solver_check": { + "solver_used": "certified", + "solver_used_source": "AbstractInversion.positive_only_solver_used on the fiducial S3 inversion, built eagerly on the JAX backend (AnalysisImaging(use_jax=True).fit_from) with the arms' Settings", + "reference_solver_used": "pdip", + "traced_solver_kwargs_jax": [ + "certified" + ], + "observed_calls_jax": 1, + "report_rows": 20, + "report_vs_timed_arm_max_rel_diff": NaN + }, + "lanes_certified": [ + true, + false, + true, + true, + true, + true, + true, + true, + true, + true, + true, + false, + true, + true, + false, + false, + true, + false, + false, + false + ], + "lanes_passes": [ + 10, + 16, + 0, + 0, + 10, + 4, + 0, + 1, + 4, + 0, + 2, + 16, + 9, + 2, + 16, + 16, + 16, + 16, + 16, + 16 + ], + "uncertified_lanes": 7, + "per_lane_certification_note": "certified / passes come from the library's own solve through its stats= out-dict (PyAutoArray #566): passes is the number of restricted active-set passes the library ran (0 when the unconstrained solve was already non-negative), certified is its KKT certificate. With certified_fallback=pdip a False lane returned the PDIP solution; with none it returned the last uncertified iterate. null for a library-PDIP row (no certificate).", + "gate": { + "pre_registered": true, + "gated": [ + "per lane: jit(vmap) arm vs jit(vmap) library PDIP <= lane_rtol relative", + "per lane: scalar jit arm vs scalar jit library PDIP <= lane_rtol relative" + ], + "recorded_not_gated": [ + "per lane: jit(vmap) arm vs scalar jit arm (rel_diff, abs_diff_nats)", + "per lane: jit(vmap) library PDIP vs scalar jit library PDIP", + "uncertified_lanes (certified_fallback=none rows)" + ], + "lanes_failed": 11, + "passed": false, + "policy_eligible": false, + "note": "Pre-registered before submission (module docstring; submit header). Phase 3 (results/notes/hst_gpu_residue_phase3_psf_2026_09.md) placed phase 2's ~2.5e-9 certified-vs-PDIP residual BETWEEN the jit(vmap) and scalar-jit compositions, not in the solver \u2014 so each arm is gated against the library-PDIP reference of its OWN composition, and the cross-composition difference is recorded with its nats. A certified_fallback=none row is policy-eligible only if every lane certifies AND passes the gate. Timing is never gated." + }, + "library_revisions": { + "PyAutoArray": { + "head": "3de624b5b91a4efa130dc3cb0a3a0f06f85025a3", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoArray", + "module_file": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/__init__.py" + }, + "PyAutoFit": { + "head": "dd9fbe0aab60c4a57702b1444ca031b317c91331", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoFit", + "module_file": "/mnt/ral/jnightin/PyAuto/PyAutoFit/autofit/__init__.py" + }, + "PyAutoGalaxy": { + "head": "70a61e26cd715cefe7012a38285698091246a8a4", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy", + "module_file": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/__init__.py" + }, + "PyAutoLens": { + "head": "86054bbc19baa2f710a12e04a94fa27ab37cc354", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoLens", + "module_file": "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/__init__.py" + }, + "autoarray_file": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/__init__.py" + } + }, + "headline_arm_note": "`trace`, `hlo_census`, `command_buffers` and `trace_timing` above describe the scalar arm \u2014 the program phase 1 traced. Both arms' full blocks, the lane table and the matched comparison are under `vmap`." +} \ No newline at end of file diff --git a/results/breakdown/imaging/fixed_light_trace_delaunay_jitvmap20_captured_pix1_libcertified_fboff_b16_hpc_a100_fp64_fixed_light_trace.png b/results/breakdown/imaging/fixed_light_trace_delaunay_jitvmap20_captured_pix1_libcertified_fboff_b16_hpc_a100_fp64_fixed_light_trace.png new file mode 100644 index 000000000..ab0b1bb55 Binary files /dev/null and b/results/breakdown/imaging/fixed_light_trace_delaunay_jitvmap20_captured_pix1_libcertified_fboff_b16_hpc_a100_fp64_fixed_light_trace.png differ diff --git a/results/breakdown/imaging/fixed_light_trace_delaunay_jitvmap20_captured_pix1_libcertified_fbon_b16_hpc_a100_fp64_fixed_light_trace.json b/results/breakdown/imaging/fixed_light_trace_delaunay_jitvmap20_captured_pix1_libcertified_fbon_b16_hpc_a100_fp64_fixed_light_trace.json new file mode 100644 index 000000000..ff4ebf28c --- /dev/null +++ b/results/breakdown/imaging/fixed_light_trace_delaunay_jitvmap20_captured_pix1_libcertified_fbon_b16_hpc_a100_fp64_fixed_light_trace.json @@ -0,0 +1,6135 @@ +{ + "device": { + "backend": "gpu", + "device": "cuda:0", + "hostname": "euclid-ral-gpu-1", + "xla_flags": "--xla_disable_hlo_passes=constant_folding --xla_gpu_autotune_level=0 --xla_gpu_enable_triton_gemm=false", + "omp_num_threads": null, + "cpu_count": 124, + "jax_compilation_cache_dir": "/mnt/ral/jnightin/autolens_profiling_wt/certified-solver-phase-c1-lane-rate/output/jax_cache/fixed_light_lanerate_delaunay_pix1_time_20_certified_on_350768_12", + "autotune_cache_entries_at_start": 0, + "cache_fresh": true, + "nvidia_smi": "NVIDIA A100 80GB PCIe, 35457 MiB, 81920 MiB" + }, + "machine": { + "cpu_model": "AMD EPYC 7702 64-Core Processor", + "cpu_count_os": 124, + "nproc": 4, + "nproc_all": 124, + "nproc_note": "GNU nproc honours OMP_NUM_THREADS, so `nproc` can print 1 on a multi-core host; `nproc_all` is the core count.", + "ram_total": "928298200 kB", + "kernel": "5.14.0-687.50.1.el9_8.x86_64", + "platform": "Linux-5.14.0-687.50.1.el9_8.x86_64-x86_64-with-glibc2.34", + "python": "3.12.4", + "jax_thread_env": { + "NPROC": null + }, + "blas_thread_env": { + "OMP_NUM_THREADS": null, + "OPENBLAS_NUM_THREADS": null, + "MKL_NUM_THREADS": null, + "VECLIB_MAXIMUM_THREADS": null, + "NUMEXPR_NUM_THREADS": null + }, + "thread_env_note": "NPROC sizes XLA's CPU intra-op pool (the JAX rows); the BLAS knobs pin OpenBLAS/MKL/OpenMP (the numpy/scipy rows) and do not touch JAX. Two disjoint families; both are recorded on every CPU timing.", + "gpu": "NVIDIA A100 80GB PCIe, 81920 MiB, 610.57.04" + }, + "precision": "fp64", + "configuration": { + "pixel_scale_arcsec": 0.05, + "mask_radius_arcsec": 3.5, + "image_pixels_masked": 15361, + "over_sampled_pixels": 62752, + "mesh": "delaunay", + "mesh_shape": null, + "source_pixels": 1500, + "source_pixels_requested": null, + "dataset": "hst", + "dataset_sha256": { + "data.fits": "e4e833a28e9c6f6fb023cd85c0d3dde74068720256bc77a240633500e5b04fac", + "noise_map.fits": "315c6266a0acd3ac9c8da82fcd2b45a08697362481fd7a35072bab1658530ba3", + "psf.fits": "8389ba0e8bf4a09b4a561cfc246181a2fb944ed396754cd0ff76fdd22910d303" + }, + "cell_source_sha256": "06a162fcdae6b329384ec33322f443df07215d86e56f0505ac15b3d3473eb432", + "inversion_path": "dense", + "pass_budget": 7, + "pass_budget_basis": "phase 3 (autolens_profiling#255): the smallest ZERO-fallback budget per mesh, the budget a production run fixes. NOT phase 0's certifying budget (2 for Delaunay), which falls back on 67.5 % of a graded draw set and is not a production cost.", + "border_relocator_mode": "cell", + "border_relocator": true, + "border_relocator_note": "'cell' is use_border_relocator=True, which every profiling cell in this family forces; 'library' passes None and takes the shipped config default, which is what production runs. The resolved boolean is what this leg actually ran.", + "routes_selected": [ + "b", + "d" + ], + "trace_calls": 10, + "command_buffers_traced": "off", + "use_mixed_precision": false, + "tau_rel": 1e-09, + "regularization": { + "scheme": "adapt_split", + "inner_coefficient": 0.1, + "outer_coefficient": 10.0, + "signal_scale": 0.1 + }, + "thread_env": { + "n_threads": null, + "vars": [ + "OPENBLAS_NUM_THREADS", + "MKL_NUM_THREADS", + "OMP_NUM_THREADS", + "VECLIB_MAXIMUM_THREADS", + "NUMEXPR_NUM_THREADS" + ], + "set_to": null, + "preexisting": {}, + "overridden": {}, + "note": "Not pinned (legacy variant): recorded as found." + }, + "over_sample_size_lp_rule": { + "sub_size_list": [ + 4, + 2, + 2 + ], + "radial_list": [ + 0.3, + 0.6 + ], + "centre": [ + 0.0, + 0.0 + ] + }, + "vmap_batch": 20, + "lanes": "captured", + "arms": [ + "vmap", + "scalar" + ], + "fallback": "on", + "draw_seed": 0, + "vmap_composition": "jax.jit(jax.vmap(fn))", + "lane_rtol": 1e-09, + "vmap_flags_note": "Strict ProfileCLI.parse_cell_args rejects unknown flags. These keys record the exact batching program and prevent historical vmap(jit) artifacts from being mistaken for current jit(vmap) measurements.", + "solver_source": "library", + "solver": "certified", + "certified_fallback": "pdip", + "certified_pass_budget": 16, + "captured_pass": "time", + "batches": "/mnt/ral/jnightin/autolens_profiling_wt/certified-solver-phase-c1-lane-rate/results/breakdown/imaging/nautilus_batches_delaunay_pix1.npz" + }, + "solver_injection": { + "patched": null, + "part_v": "none \u2014 library mode selects the solver through al.Settings", + "part_b_route_d": { + "patched": "autoarray.inversion.inversion.inversion_util.reconstruction_positive_only_from", + "pass_budget": 7, + "fallback": true + }, + "note": "Library mode (phase B, #300): PART V's arms and references run the library's own positive-only solve, selected by Settings(positive_only_solver, certified_fallback, certified_pass_budget); nothing is injected. PART B's single-call route d (the fiducial d == b pin) still uses the phase-1 harness injection at the phase-3 budget and is not a phase-B row. The untimed certification report observes the library solve (library_solver_observed) without changing it." + }, + "routes": { + "b_s3_pdip": { + "label": "S3 PDIP (source-only)", + "status": "ok", + "solver": "library", + "ms": 50.75694660008594, + "log_likelihood": 29155.000174806722 + }, + "d_s3_certified_fallback": { + "label": "S3 certified active set, budget 7, PDIP fallback", + "status": "ok", + "solver": "harness-injected certified active set", + "pass_budget": 7, + "fallback": true, + "injected_solver_calls_jax": 1, + "injected_solver_calls_numpy": 0, + "ms": 31.619597400276685, + "log_likelihood": 29155.00017354042 + } + }, + "equivalence_pins": [ + { + "pin": "route d (certified, fallback) == route b (library PDIP)", + "route": "d_s3_certified_fallback", + "reference": "b_s3_pdip", + "expectation": "the certified active set returns the library's own positive solution", + "rtol": 1e-09, + "got": 29155.00017354042, + "reference_value": 29155.000174806722, + "rel_diff": 4.3433511150787397e-11, + "status": "PASS" + } + ], + "equivalence_rtol": 1e-09, + "reference": { + "log_evidence_s0_library": 29155.00017433923, + "log_evidence_s3_library": 29155.000174339304, + "s3": { + "n_params": 1500, + "n_mapper": 1500, + "n_funcs": 0, + "edge_zeroed_pixels": 0, + "subtracted_light_flux": 5105.448603818575 + } + }, + "command_buffers": { + "wall_on_ms": 887.3907229000906, + "wall_off_ms": 895.7212022000022, + "command_buffer_delta_ms": 8.33047929991153, + "command_buffer_delta_pct": 0.938761143759381, + "traced": "off", + "compiler_option": "xla_gpu_enable_command_buffer", + "probe": { + "note": "Not taken in --vmap-batch mode: the CUPTI-inside-a-CUDA-graph probe is a phase-1 diagnostic about the JOIN, and this mode already compiles and times both the command-buffers ON and OFF executable of every arm." + }, + "note": "ONE lowering, TWO compilations, one process. wall_on_ms is the PRODUCTION program (CUDA graphs as XLA ships them) and is the number comparable to phase 5's row; wall_off_ms is the graph-less program the stage rows attribute. The delta is the launch overhead the graphs remove \u2014 it lands in device_idle and host_outside_span, not in any stage. Reconciliation is computed against wall_off_ms." + }, + "trace": { + "parser": "ProfileData.from_file(xplane) + as_text() + stack_frame_index(proto field 17)", + "stage_audit": { + "mixed_fusion": [ + { + "instruction": "loop_divide_gather_fusion", + "ms": 1.02100832, + "opcode": "fusion", + "shape": "(f64[15361,1,1,1500]{3,2,1,0}, f64[15361,1,1,1500]{3,2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_broadcast_fusion.4", + "ms": 0.225944575, + "opcode": "fusion", + "shape": "f64[1500,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_reduce_fusion.13", + "ms": 0.1212174, + "opcode": "fusion", + "shape": "f64[92,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123 (data_vector_via_blurred_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:67 (InversionImagingMapping.data_vector)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:699 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_reduce_fusion.17", + "ms": 0.11455684000000006, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163 (mapped_reconstructed_data_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:120 (InversionImagingMapping._mapped_reconstructed_data_dict_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:196 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "loop_broadcast_fusion.2", + "ms": 0.11049801, + "opcode": "fusion", + "shape": "f64[15361,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:342", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:342 (mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:283 (Mapper.mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:91 (AbstractInversionImaging._mapping_matrix_for_convolution_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:137 (AbstractInversionImaging.operated_mapping_matrix_list)" + ] + }, + { + "instruction": "input_multiply_transpose_fusion", + "ms": 0.10967261499999995, + "opcode": "fusion", + "shape": "(f64[1500,1500]{1,0}, f64[1500,1500]{1,0}, f64[1500,1500]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:237 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:274 (_certified_positive_only_from)" + ] + } + ], + "border_relocator": [ + { + "instruction": "eigh.45", + "ms": 0.07491276499999945, + "opcode": "custom-call", + "shape": "(f64[2,2]{0,1}, f64[2]{0}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "custom-call.2", + "ms": 0.007952945000000019, + "opcode": "custom-call", + "shape": "(f64[2,2]{1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_reduce_fusion.18", + "ms": 0.005679990000000003, + "opcode": "fusion", + "shape": "(f64[], f64[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:269", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:269 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_add_fusion.7", + "ms": 0.0035153400000000018, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:423 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:208 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_add_fusion.9", + "ms": 0.0033790250000000047, + "opcode": "fusion", + "shape": "f64[1500]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:458 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_concatenate_fusion.12", + "ms": 0.002400159999999999, + "opcode": "fusion", + "shape": "f64[392,2]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:238", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:238 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + } + ], + "mesh_construction": [ + { + "instruction": "input_concatenate_fusion.7", + "ms": 0.001950709999999996, + "opcode": "fusion", + "shape": "f64[1500,2]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:820", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:820 (InterpolatorDelaunay.mesh_grid_xy)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:847 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + } + ], + "mesh_qhull_callback": [ + { + "instruction": "pure_callback.4", + "ms": 0.010635229999999964, + "opcode": "custom-call", + "shape": "(s32[3000,3]{1,0}, s32[3000,3]{1,0}, s32[1500]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:161", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:161 (_jax_delaunay_tables)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:405 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + } + ], + "other": [ + { + "instruction": "copy.106", + "ms": 0.04191224999999906, + "opcode": "copy", + "shape": "f64[1,1024,2]{2,1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.70", + "ms": 0.017179350000000006, + "opcode": "copy", + "shape": "s32[21361]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.75", + "ms": 0.0019640150000000043, + "opcode": "copy", + "shape": "s64[1500]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.105", + "ms": 0.0018179299999999986, + "opcode": "copy", + "shape": "s32[]", + "source": "", + "stack": [] + }, + { + "instruction": "copy.104", + "ms": 0.001758395000000002, + "opcode": "copy", + "shape": "s64[]", + "source": "", + "stack": [] + }, + { + "instruction": "copy.61", + "ms": 0.0016627149999999993, + "opcode": "copy", + "shape": "s32[]", + "source": "", + "stack": [] + } + ], + "mesh_seed_argmin": [ + { + "instruction": "input_reduce_fusion", + "ms": 0.1494094300000016, + "opcode": "fusion", + "shape": "(f64[1024]{0}, s64[1024]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:191", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:191 (_nearest_vertex_seed_from..argmin_chunk)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)" + ] + }, + { + "instruction": "loop_dynamic_update_slice_fusion", + "ms": 0.04105313999999861, + "opcode": "fusion", + "shape": "s32[21,1024]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_add_fusion", + "ms": 0.0318532000000001, + "opcode": "fusion", + "shape": "s64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_broadcast_fusion", + "ms": 0.0019633499999999983, + "opcode": "fusion", + "shape": "s32[21,1024]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "pdip_solve": [ + { + "instruction": "cholesky.60", + "ms": 7.598958304999966, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "cholesky.80", + "ms": 5.308138535000001, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:106", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:106 (factorize_kkt)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:212 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve.1", + "ms": 1.3578426950000397, + "opcode": "custom-call", + "shape": "(f64[1500,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "triangular-solve", + "ms": 1.1759390649999863, + "opcode": "custom-call", + "shape": "(f64[1500,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "cholesky.110", + "ms": 0.8948393449999995, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:297 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:274 (_certified_positive_only_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:496 (reconstruction_positive_only_from)" + ] + }, + { + "instruction": "cholesky.100", + "ms": 0.8664200699999989, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:237 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:274 (_certified_positive_only_from)" + ] + } + ], + "regularization_H": [ + { + "instruction": "input_scatter_fusion.10", + "ms": 0.002064634999999996, + "opcode": "fusion", + "shape": "f64[1500,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:615", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:615 (pixel_splitted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:137 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_concatenate_fusion.8", + "ms": 0.001876489999999998, + "opcode": "fusion", + "shape": "pred[3]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:93", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:93 (split_points_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:410 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + }, + { + "instruction": "input_concatenate_fusion.9", + "ms": 0.0018718299999999982, + "opcode": "fusion", + "shape": "pred[3]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:91", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:91 (split_points_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:410 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + }, + { + "instruction": "input_concatenate_fusion.10", + "ms": 0.0018609449999999988, + "opcode": "fusion", + "shape": "pred[3]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:90", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:90 (split_points_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:410 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + }, + { + "instruction": "input_concatenate_fusion", + "ms": 0.0017558350000000003, + "opcode": "fusion", + "shape": "s32[1500,2]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:615", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:615 (pixel_splitted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:137 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_concatenate_fusion.11", + "ms": 0.0015556699999999994, + "opcode": "fusion", + "shape": "pred[3]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:88", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:88 (split_points_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:410 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + } + ], + "mesh_locate_walk": [ + { + "instruction": "loop_reduce_fusion", + "ms": 0.02563361500000045, + "opcode": "fusion", + "shape": "(f64[21361]{0}, s64[21361]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:264", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:264 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:264 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)" + ] + }, + { + "instruction": "input_reduce_fusion.1", + "ms": 0.025435760000000616, + "opcode": "fusion", + "shape": "pred[196]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:288", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:288 (_walk_from_seed..cond)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)" + ] + }, + { + "instruction": "loop_or_select_fusion", + "ms": 0.022603170000000325, + "opcode": "fusion", + "shape": "(s32[21361]{0}, pred[21361]{0}, pred[21361]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:270", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:270 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)" + ] + }, + { + "instruction": "loop_select_fusion", + "ms": 0.020302364999999784, + "opcode": "fusion", + "shape": "s32[21361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:242", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:242 (_walk_from_seed..weights_of)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:262 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)" + ] + }, + { + "instruction": "input_reduce_fusion.2", + "ms": 0.016408779999999915, + "opcode": "fusion", + "shape": "pred[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:288", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:288 (_walk_from_seed..cond)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)" + ] + }, + { + "instruction": "while.34", + "ms": 0.014675164999999662, + "opcode": "while", + "shape": "(s32[], s32[21361]{0}, pred[21361]{0}, pred[21361]{0}, s32[3000,3]{1,0}, /*index=5*/f64[1500,2]{1,0}, f64[21361,2]{1,0}, s32[3000,3]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "psf_convolution_mapping_matrix": [ + { + "instruction": "input_scatter_fusion", + "ms": 1.9909163300000001, + "opcode": "fusion", + "shape": "f64[1500,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.19.0", + "ms": 1.761691964999997, + "opcode": "fft", + "shape": "f64[1500,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.15.0", + "ms": 1.3703491899999993, + "opcode": "fft", + "shape": "c128[1500,180,91]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.17.0", + "ms": 0.9796025600000007, + "opcode": "fft", + "shape": "c128[1500,91,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_transpose_fusion.4", + "ms": 0.5137482899999998, + "opcode": "fusion", + "shape": "c128[1500,91,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "wrapped_transpose", + "ms": 0.49763212999999995, + "opcode": "fusion", + "shape": "c128[1500,180,91]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + } + ], + "inversion_other": [ + { + "instruction": "cholesky.120", + "ms": 0.8974949200000008, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1078 (AbstractInversion.log_det_curvature_reg_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:347 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "cholesky.130", + "ms": 0.8941805499999996, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1157 (AbstractInversion.log_det_regularization_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:348 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "loop_reduce_window_fusion.1", + "ms": 0.0027814400000000035, + "opcode": "fusion", + "shape": "s64[94,16]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "loop_reduce_window_fusion", + "ms": 0.002690549999999995, + "opcode": "fusion", + "shape": "s64[6,16]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "loop_broadcast_convert_fusion", + "ms": 0.002170080000000002, + "opcode": "fusion", + "shape": "(s32[1500]{0}, s64[1500]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527 (AbstractInversion.zeroed_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:567 (AbstractInversion.solve_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:684 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_scatter_fusion.5", + "ms": 0.0019360049999999987, + "opcode": "fusion", + "shape": "s64[1500]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527 (AbstractInversion.zeroed_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:567 (AbstractInversion.solve_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:684 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "mapping_matrix": [ + { + "instruction": "input_reduce_fusion.31", + "ms": 0.0028889249999999927, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:120 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + } + ], + "curvature_matrix_F": [ + { + "instruction": "cublas-lt-matmul.2", + "ms": 4.203954090000001, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "chi_squared_evidence": [ + { + "instruction": "loop_multiply_fusion.2", + "ms": 0.002985745000000001, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:300", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:300 (AbstractNDArray.__pow__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:60 (unwrap_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:35 (to_new_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:78 (chi_squared_map_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:78 (AbstractFit.chi_squared_map)" + ] + } + ] + }, + "stage_audit_note": "The HLO instructions that contributed most of each stage's milliseconds, with their full source stack. A stage row is only as good as the rules that built it; this is how a reader checks a row against the HLO instead of trusting it.", + "untraced_wall_ms": 44.679426924994914, + "reconciliation_vs_untraced_pct": -15.467513720792189, + "wall_basis": "wall_ms is the TRACED run's wall, the run these kernel durations came from. untraced_wall_ms is the same executable without the profiler; the difference is the profiler's overhead and belongs in neither the stages nor the idle row.", + "calls": 200, + "call_split": "per-call (first-instruction recurrence)", + "call_blocks": 200, + "events": 144140, + "streams": [ + "Stream #14(MemcpyD2D,MemcpyH2D,Compute,MemcpyD2H,Memset)" + ], + "per_stage_ms": { + "border_relocator": { + "median_ms": 0.1013135, + "min_ms": 0.10057300000000001, + "max_ms": 0.10214500000000001 + }, + "chi_squared_evidence": { + "median_ms": 0.002976, + "min_ms": 0.002848, + "max_ms": 0.003296 + }, + "curvature_matrix_F": { + "median_ms": 4.202033500000001, + "min_ms": 4.179871, + "max_ms": 4.304915 + }, + "inversion_other": { + "median_ms": 1.803238, + "min_ms": 1.786004, + "max_ms": 1.8153169999999998 + }, + "mapping_matrix": { + "median_ms": 0.00288, + "min_ms": 0.002879, + "max_ms": 0.002913 + }, + "memset": { + "median_ms": 0.034432000000000004, + "min_ms": 0.009984, + "max_ms": 0.09769400000000002 + }, + "mesh_construction": { + "median_ms": 0.001952, + "min_ms": 0.00192, + "max_ms": 0.001984 + }, + "mesh_locate_walk": { + "median_ms": 0.1489275, + "min_ms": 0.130945, + "max_ms": 0.184289 + }, + "mesh_qhull_callback": { + "median_ms": 0.010592, + "min_ms": 0.010176, + "max_ms": 0.011104 + }, + "mesh_seed_argmin": { + "median_ms": 0.22428450000000014, + "min_ms": 0.22387400000000016, + "max_ms": 0.22467400000000018 + }, + "mixed_fusion": { + "median_ms": 1.986319, + "min_ms": 1.9782960000000003, + "max_ms": 1.999138 + }, + "other": { + "median_ms": 0.06702349999999999, + "min_ms": 0.06371199999999999, + "max_ms": 0.07388899999999998 + }, + "pdip_solve": { + "median_ms": 14.734703000000003, + "min_ms": 2.4263630000000003, + "max_ms": 52.05862700000007 + }, + "psf_convolution_mapping_matrix": { + "median_ms": 7.113619999999999, + "min_ms": 7.100212, + "max_ms": 7.1291709999999995 + }, + "regularization_H": { + "median_ms": 0.010976, + "min_ms": 0.010848, + "max_ms": 0.011328 + } + }, + "stage_order": [ + "border_relocator", + "mesh_qhull_callback", + "mesh_seed_argmin", + "mesh_locate_walk", + "mesh_construction", + "mapping_matrix", + "psf_convolution_mapping_matrix", + "curvature_matrix_F", + "regularization_H", + "pdip_solve", + "chi_squared_evidence", + "inversion_other", + "mixed_fusion", + "other", + "memset" + ], + "mixed_fusion": { + "ms": 1.986319, + "constituent_stage_sets": { + "curvature_matrix_F + psf_convolution_mapping_matrix": 1.02100832, + "pdip_solve + psf_convolution_mapping_matrix": 0.225944575, + "data_vector_D + pdip_solve": 0.12488812000000023, + "mapped_reconstruction + pdip_solve": 0.11455684000000006, + "mapping_matrix + pdip_solve": 0.11286072999999995, + "curvature_reg_reduce_gather + inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": 0.10967261499999995, + "pdip_solve + regularization_H": 0.045423489999999955, + "inversion_other + pdip_solve + regularization_H": 0.024202355, + "inversion_other + pdip_solve": 0.02294705499999994, + "inversion_other + mapping_matrix + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin + pdip_solve": 0.02113966000000001, + "inversion_other + mesh_construction + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin + pdip_solve + regularization_H": 0.018736469999999984, + "inversion_other + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + pdip_solve + regularization_H": 0.014469269999999989, + "pdip_solve + ray_trace_data_grid": 0.013680334999999941, + "border_relocator + pdip_solve": 0.013327340000000023, + "inversion_other + mapping_matrix + mesh_construction + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin": 0.011626745, + "grids_and_structures + mass_profile_deflections + pdip_solve": 0.010069740000000006, + "grids_and_structures + mass_profile_deflections + pdip_solve + ray_trace_data_grid": 0.008905150000000004, + "chi_squared_evidence + pdip_solve": 0.00768813999999998, + "inversion_other + mesh_construction + mesh_seed_argmin + pdip_solve + regularization_H": 0.007145729999999994, + "inversion_other + mesh_dual_areas + mesh_locate_walk": 0.006733585000000049, + "inversion_other + mesh_construction + pdip_solve + regularization_H": 0.006547775000000004, + "grids_and_structures + mass_profile_deflections + ray_trace_data_grid": 0.005420630000000002, + "inversion_other + pdip_solve + ray_trace_data_grid": 0.005286555000000029, + "inversion_other + regularization_H": 0.005250225000000012, + "inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": 0.004806700000000002, + "inversion_other + mapped_reconstruction": 0.0037300700000000003, + "mapping_matrix + pdip_solve + regularization_H": 0.0034841699999999948, + "inversion_other + mesh_construction + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin": 0.0031295899999999994, + "inversion_other + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin": 0.0029588600000000054, + "inversion_other + mesh_construction + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin + regularization_H": 0.0027115199999999903, + "inversion_other + mesh_dual_areas + mesh_locate_walk + pdip_solve": 0.002606104999999996, + "inversion_other + mesh_locate_walk + mesh_seed_argmin": 0.0024943900000000047, + "inversion_other + mesh_interpolation_weights": 0.0021585600000000042, + "chi_squared_evidence + inversion_other": 0.0017876849999999987 + }, + "example_kernels": { + "curvature_matrix_F + psf_convolution_mapping_matrix": [ + "loop_divide_gather_fusion" + ], + "pdip_solve + psf_convolution_mapping_matrix": [ + "loop_broadcast_fusion.4" + ], + "data_vector_D + pdip_solve": [ + "input_reduce_fusion.13", + "input_reduce_fusion.29" + ], + "mapped_reconstruction + pdip_solve": [ + "input_reduce_fusion.17" + ], + "mapping_matrix + pdip_solve": [ + "loop_broadcast_fusion.2", + "loop_divide_fusion" + ], + "curvature_reg_reduce_gather + inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": [ + "input_multiply_transpose_fusion" + ], + "pdip_solve + regularization_H": [ + "loop_select_fusion.5", + "input_transpose_fusion.5" + ], + "inversion_other + pdip_solve + regularization_H": [ + "input_transpose_fusion.6" + ], + "inversion_other + pdip_solve": [ + "input_reduce_fusion.15", + "loop_log_fusion", + "input_reduce_fusion.16", + "input_reduce_fusion.20" + ], + "inversion_other + mapping_matrix + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin + pdip_solve": [ + "input_scatter_fusion.6", + "input_scatter_fusion.3" + ] + }, + "prorated_estimate_ms": { + "psf_convolution_mapping_matrix": 0.6234764475, + "curvature_matrix_F": 0.51050416, + "pdip_solve": 0.3918166617380953, + "mapped_reconstruction": 0.08227965300000002, + "inversion_other": 0.06893565307142857, + "data_vector_D": 0.062444060000000114, + "mapping_matrix": 0.06217200333333331, + "regularization_H": 0.04317189248809522, + "reconstruction_scatter": 0.02313619799999999, + "curvature_reg_reduce_gather": 0.02193452299999999, + "mesh_construction": 0.014305502988095234, + "ray_trace_data_grid": 0.012635516666666647, + "mesh_locate_walk": 0.012555386154761919, + "mesh_interpolation_weights": 0.012318693238095237, + "mesh_seed_argmin": 0.011088477571428569, + "mesh_dual_areas": 0.008443200416666682, + "grids_and_structures": 0.00738974416666667, + "mass_profile_deflections": 0.00738974416666667, + "border_relocator": 0.006663670000000011, + "chi_squared_evidence": 0.004737912499999989 + }, + "prorated_note": "ESTIMATE ONLY \u2014 a mixed fusion's time split equally across the stages its constituents span. Never summed into the measured table, never reconciled." + }, + "other_sources_ms": { + "copy.106": 0.04191224999999906, + "copy.70": 0.017179350000000006, + "copy.75": 0.0019640150000000043, + "copy.105": 0.0018179299999999986, + "copy.104": 0.001758395000000002, + "copy.61": 0.0016627149999999993, + "copy.103": 0.0006374550000000004, + "copy.40": 0.0005414449999999996 + }, + "device_span_ms": 46.05030798, + "device_busy_ms": 38.726948045, + "device_idle_ms": 7.323359934999999, + "largest_idle_gaps": [ + { + "gap_ms": 5.59937, + "after": "pure_callback.4", + "before": "pure_callback.4" + }, + { + "gap_ms": 0.035807, + "after": "cholesky.60", + "before": "Memset 3" + }, + { + "gap_ms": 0.035455, + "after": "pure_callback.4", + "before": "copy.105" + }, + { + "gap_ms": 0.034399, + "after": "input_concatenate_fusion.7", + "before": "pure_callback.4" + }, + { + "gap_ms": 0.029407, + "after": "copy.70", + "before": "input_reduce_fusion.1" + }, + { + "gap_ms": 0.022912, + "after": "eigh.45", + "before": "eigh.45" + }, + { + "gap_ms": 0.021888, + "after": "input_reduce_fusion.28", + "before": "loop_broadcast_fusion.4" + }, + { + "gap_ms": 0.021631, + "after": "loop_add_fusion.1", + "before": "loop_select_fusion" + } + ], + "kernel_ms": 30.445270500000003, + "sum_ms": 37.768630435000006, + "wall_ms": 46.05666195500817, + "host_outside_span_ms": 0.006353975008167367, + "reconciliation_pct": -17.99529355406732, + "unjoined_ms": 0.0, + "unjoined_pct": 0.0, + "other_ms": 0.06702349999999999, + "other_pct": 0.14552400707084223, + "note": "Stage rows attribute the command-buffers-OFF program (see the module docstring): kernel times are the same, the launch overhead the CUDA graphs remove is not. sum_ms = kernel rows + device_idle_ms; the residual against wall_ms is host_outside_span_ms (dispatch before the first kernel, teardown after the last).", + "per_stage_ms_per_lane": { + "border_relocator": 0.1013135, + "chi_squared_evidence": 0.002976, + "curvature_matrix_F": 4.202033500000001, + "inversion_other": 1.803238, + "mapping_matrix": 0.00288, + "memset": 0.034432000000000004, + "mesh_construction": 0.001952, + "mesh_locate_walk": 0.1489275, + "mesh_qhull_callback": 0.010592, + "mesh_seed_argmin": 0.22428450000000014, + "mixed_fusion": 1.986319, + "other": 0.06702349999999999, + "pdip_solve": 14.734703000000003, + "psf_convolution_mapping_matrix": 7.113619999999999, + "regularization_H": 0.010976 + }, + "per_lane_divisor": 1, + "host_callback": { + "pure_callback_span_ms": 101.56374749999996, + "qhull_ms": 94.28838409999997, + "callback_body_ms_note": "the OUTERMOST matching body event, not a sum: under the probe the body appears twice (the wrapper and the timed re-implementation it calls) and summing them would count the same work twice", + "events_by_name": { + "pure_callback.4": { + "count": 200, + "ms": 101.56374749999996 + }, + "$callback.py:815 _wrapped_callback": { + "count": 200, + "ms": 99.82454449999999 + }, + "$callback.py:224 _callback": { + "count": 200, + "ms": 99.32401829999998 + }, + "$callback.py:74 pure_callback_impl": { + "count": 200, + "ms": 99.11897000000002 + }, + "$callback.py:69 __call__": { + "count": 200, + "ms": 94.63252060000005 + }, + "$delaunay.py:162 ": { + "count": 200, + "ms": 94.49607710000001 + }, + "$host_callback_probe.py:225 wrapped": { + "count": 200, + "ms": 94.28838409999997 + }, + "$host_callback_probe.py:160 _timed_tri_only": { + "count": 200, + "ms": 94.1085758 + }, + "ThenExecuteCallback:GetEventForComputeStreamSyncPoint": { + "count": 200, + "ms": 0.39008080000000017 + }, + "$callback.py:822 ": { + "count": 800, + "ms": 0.29828569999999965 + }, + "$__init__.py:132 _xla_gc_callback": { + "count": 2, + "ms": 0.000334 + } + }, + "note": "HOST milliseconds per traced BATCH (the whole invocation), aggregated by name because the events nest. Not a row of the device table: the device pays for them as the idle gaps largest_idle_gaps names." + }, + "host_callback_ms": 101.56374749999996 + }, + "hlo_census": { + "status": "excluded", + "reason": "The legacy census anchors PyAutoArray source line numbers that moved after the phase-1 run. No batched attribution is published from unsupported anchors; the device-event table and wall reconciliation remain valid." + }, + "stage_map_provenance": [ + { + "label": "log_det_curvature_reg", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 850, + 882 + ], + "requires": { + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 884, + 896 + ] + }, + "function": null + }, + { + "label": "log_det_regularization", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 850, + 882 + ], + "requires": { + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 897, + 943 + ] + }, + "function": null + }, + { + "label": "curvature_reg_add", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 359, + 372 + ], + "requires": null, + "function": null + }, + { + "label": "curvature_reg_reduce_gather", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 374, + 398 + ], + "requires": null, + "function": null + }, + { + "label": "edge_subset_gather", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 606, + 614 + ], + "requires": null, + "function": null + }, + { + "label": "regularization_term", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 786, + 849 + ], + "requires": null, + "function": null + }, + { + "label": "mapped_reconstruction", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 722, + 785 + ], + "requires": null, + "function": null + }, + { + "label": "reconstruction_scatter", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 583, + 605 + ], + "requires": null, + "function": null + }, + { + "label": "reconstruction_scatter", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 615, + 721 + ], + "requires": null, + "function": null + }, + { + "label": "certified_active_set_solve", + "path": "likelihood_breakdown/active_set_steps.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "certified_active_set_solve", + "path": "likelihood_breakdown/library_solver_injection.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "pdip_solve", + "path": "PyAutoArray/autoarray/util/jax_nnls.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "pdip_solve", + "path": "PyAutoArray/autoarray/inversion/inversion/inversion_util.py", + "lines": [ + 256, + 488 + ], + "requires": null, + "function": null + }, + { + "label": "mapped_reconstruction", + "path": "PyAutoArray/autoarray/inversion/inversion/inversion_util.py", + "lines": [ + 156, + 200 + ], + "requires": null, + "function": null + }, + { + "label": "curvature_matrix_F", + "path": "PyAutoArray/autoarray/inversion/inversion/inversion_util.py", + "lines": [ + 12, + 155 + ], + "requires": null, + "function": null + }, + { + "label": "reconstruction_scatter", + "path": "PyAutoArray/autoarray/inversion/inversion/inversion_util.py", + "lines": [ + 201, + 255 + ], + "requires": null, + "function": null + }, + { + "label": "data_vector_D", + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py", + "lines": [ + 54, + 73 + ], + "requires": null, + "function": null + }, + { + "label": "curvature_matrix_F", + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py", + "lines": [ + 74, + 110 + ], + "requires": null, + "function": null + }, + { + "label": "data_vector_D", + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py", + "lines": null, + "requires": null, + "function": "data_vector_via_blurred_mapping_matrix_from" + }, + { + "label": "curvature_matrix_F", + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "likelihood_breakdown/psf_cube_injection.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": [ + 1086, + 1300 + ], + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": [ + 632, + 642 + ], + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": [ + 670, + 691 + ], + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": null, + "requires": { + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": [ + 1086, + 1300 + ] + }, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": null, + "requires": { + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py", + "lines": [ + 119, + 150 + ] + }, + "function": null + }, + { + "label": "psf_convolution_image", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py", + "lines": [ + 119, + 150 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_qhull_callback", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 139, + 172 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_seed_argmin", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 173, + 207 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_locate_walk", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 208, + 372 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_dual_areas", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 373, + 396 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_dual_areas", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 437, + 494 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_dual_areas", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 605, + 615 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_interpolation_weights", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 616, + 695 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_interpolation_weights", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 896, + 1000 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_construction", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "border_relocator", + "path": "PyAutoArray/autoarray/inversion/mesh/border_relocator.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "mesh_construction", + "path": "PyAutoArray/autoarray/inversion/mesh/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "mapping_matrix", + "path": "PyAutoArray/autoarray/inversion/mappers/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "mapping_matrix", + "path": "PyAutoArray/autoarray/inversion/mappings/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "mapping_matrix", + "path": "PyAutoArray/autoarray/inversion/linear_obj/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "regularization_H", + "path": "PyAutoArray/autoarray/inversion/regularization/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "chi_squared_evidence", + "path": "PyAutoArray/autoarray/fit/fit_util.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "chi_squared_evidence", + "path": "PyAutoArray/autoarray/fit/fit_dataset.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "ray_trace_mesh_grid", + "path": "PyAutoLens/autolens/lens/to_inversion.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "ray_trace_mesh_grid", + "path": "PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "mass_profile_deflections", + "path": "PyAutoGalaxy/autogalaxy/profiles/mass/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "light_profile_image", + "path": "PyAutoGalaxy/autogalaxy/profiles/light/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "light_profile_image", + "path": "PyAutoGalaxy/autogalaxy/operate/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "ray_trace_data_grid", + "path": "PyAutoLens/autolens/lens/tracer.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "ray_trace_data_grid", + "path": "PyAutoLens/autolens/lens/tracer_util.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "grids_and_structures", + "path": "PyAutoArray/autoarray/structures/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "grids_and_structures", + "path": "PyAutoArray/autoarray/operators/over_sampling/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "grids_and_structures", + "path": "PyAutoArray/autoarray/geometry/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "inversion_other", + "path": "PyAutoArray/autoarray/inversion/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "fit_imaging_other", + "path": "PyAutoLens/autolens/imaging/fit_imaging.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "fit_imaging_other", + "path": "PyAutoGalaxy/autogalaxy/imaging/fit_imaging.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "fit_imaging_other", + "path": "PyAutoArray/autoarray/fit/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "analysis_other", + "path": "PyAutoLens/autolens/analysis/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "analysis_other", + "path": "PyAutoGalaxy/autogalaxy/analysis/", + "lines": null, + "requires": null, + "function": null + } + ], + "trace_timing": { + "traced_wall_ms": 46.05666195500817, + "untraced_wall_ms": 44.679426924994914, + "profiler_overhead_ms": 1.377235030013253, + "profiler_overhead_pct": 3.082481412139128 + }, + "jit_phases": { + "b_s3_pdip_library_likelihood_jit": { + "lower_s": 1.4992639060001238, + "compile_s": 4.435199229999853, + "first_call_s": 0.13880351500120014, + "steady_per_call_s": 0.050756946600085937 + }, + "d_s3_certified_fallback_library_likelihood_jit": { + "lower_s": 0.48623529900214635, + "compile_s": 4.206273212002998, + "first_call_s": 0.04199881200111122, + "steady_per_call_s": 0.031619597400276686 + } + }, + "peak_bytes": { + "after_setup": 85108992, + "after_routes": 1181653248, + "after_all": 23614098176, + "note": "jax.devices()[0].memory_stats()['peak_bytes_in_use']; None on a backend that does not report it (CPU). Process-wide high-water marks." + }, + "note": "Every stage row is a MEASURED sum of GPU kernel durations joined to library source through the optimized HLO of ONE program \u2014 not arithmetic across compilations. The rows attribute the command-buffers-OFF program: kernel time is the same as production, the launch overhead the CUDA graphs remove is not, and command_buffers.* carries both walls and their delta. sum_ms = kernel rows + measured device_idle_ms; the residual against the wall is host_outside_span_ms and is reported, not absorbed. mixed_fusion.prorated_estimate_ms is an ESTIMATE and is never part of the table. No row may be quoted if reconciliation_pct is outside 5 % or unjoined_ms is non-zero.", + "vmap": { + "batch": 20, + "lanes_mode": "captured", + "arms": [ + "vmap", + "scalar" + ], + "draw_seed": 0, + "fallback": true, + "composition": "jax.jit(jax.vmap(fn))", + "composition_provenance": "Current Fitness._vmap after PyAutoFit#1638. Array 343376 used the retired jax.vmap(jax.jit(fn)) composition and is historical evidence only.", + "headline_arm": "scalar", + "lane_rtol": 1e-09, + "lanes": [ + { + "lane": 0, + "draw_name": "call00015_lane00", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.0033655095107821688, + "centre_1": 0.004631951955766499, + "ell_comps_0": 0.000564301988937442, + "ell_comps_1": -0.00879076787683888, + "einstein_radius": 0.018337010967920175 + }, + "log_likelihood_vmap": 24758.506194309346, + "log_likelihood_scalar": 24758.506194309346, + "log_likelihood_library_pdip": 24758.506194309142, + "log_likelihood_library_pdip_scalar": 24758.506194309142, + "rel_diff_vmap_vs_library_pdip": 8.228558362861305e-15, + "rel_diff_scalar_vs_library_pdip_scalar": 8.228558362861305e-15, + "abs_diff_nats": 0.0, + "rel_diff": 0.0, + "rel_diff_scalar_vs_library_pdip": 8.228558362861305e-15, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 0.0, + "rel_diff_library_pdip_vmap_vs_scalar": 0.0, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 10, + "pdip_iter": null + }, + { + "lane": 1, + "draw_name": "call00015_lane01", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.004311760382151672, + "centre_1": 0.0027192789928108052, + "ell_comps_0": 0.0061667694809026535, + "ell_comps_1": 0.003465536775180321, + "einstein_radius": -0.05732579988501185 + }, + "log_likelihood_vmap": 20551.004887772666, + "log_likelihood_scalar": 20551.00488777375, + "log_likelihood_library_pdip": 20551.004887772702, + "log_likelihood_library_pdip_scalar": 20551.004887771745, + "rel_diff_vmap_vs_library_pdip": 1.7702194257450706e-15, + "rel_diff_scalar_vs_library_pdip_scalar": 9.753909035855792e-14, + "abs_diff_nats": 1.0841176845133305e-09, + "rel_diff": 5.275253888720041e-14, + "rel_diff_scalar_vs_library_pdip": 5.098231946145803e-14, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 9.567884262651205e-10, + "rel_diff_library_pdip_vmap_vs_scalar": 4.655677089709752e-14, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 2, + "draw_name": "call00015_lane02", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.0002796502552123051, + "centre_1": 0.0016003321376979894, + "ell_comps_0": -0.002094430657472772, + "ell_comps_1": 0.006146479068253558, + "einstein_radius": -0.025968910196758177 + }, + "log_likelihood_vmap": -189709.78523837583, + "log_likelihood_scalar": -189709.09646469186, + "log_likelihood_library_pdip": -189709.75902380055, + "log_likelihood_library_pdip_scalar": -189709.0875481008, + "rel_diff_vmap_vs_library_pdip": 1.381825342748125e-07, + "rel_diff_scalar_vs_library_pdip_scalar": 4.7001391322481445e-08, + "abs_diff_nats": 0.6887736839707941, + "rel_diff": 3.6306834875416045e-06, + "rel_diff_scalar_vs_library_pdip": 3.492488273147288e-06, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 0.6714756997535005, + "rel_diff_library_pdip_vmap_vs_scalar": 3.539502026139089e-06, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": true, + "passes": 0, + "pdip_iter": null + }, + { + "lane": 3, + "draw_name": "call00015_lane03", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.004594602299816973, + "centre_1": 0.004924922434755804, + "ell_comps_0": 0.028601845732661953, + "ell_comps_1": 0.003760187047606014, + "einstein_radius": -0.03088526730480501 + }, + "log_likelihood_vmap": -141741.97961988975, + "log_likelihood_scalar": -141741.96673891594, + "log_likelihood_library_pdip": -141741.98068412492, + "log_likelihood_library_pdip_scalar": -141741.96778345545, + "rel_diff_vmap_vs_library_pdip": 7.508256655999751e-09, + "rel_diff_scalar_vs_library_pdip_scalar": 7.369302953986941e-09, + "abs_diff_nats": 0.01288097380893305, + "rel_diff": 9.087621757541563e-08, + "rel_diff_scalar_vs_library_pdip": 9.83844652906073e-08, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 0.012900669476948678, + "rel_diff_library_pdip_vmap_vs_scalar": 9.101517129109932e-08, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": true, + "passes": 0, + "pdip_iter": null + }, + { + "lane": 4, + "draw_name": "call00015_lane04", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.0060950290987001, + "centre_1": -0.0006121094560707545, + "ell_comps_0": 0.009637314264800585, + "ell_comps_1": 0.006641580028105454, + "einstein_radius": -0.03125810931551931 + }, + "log_likelihood_vmap": 24880.545932988694, + "log_likelihood_scalar": 24880.545932988724, + "log_likelihood_library_pdip": 24880.545932988694, + "log_likelihood_library_pdip_scalar": 24880.545932988738, + "rel_diff_vmap_vs_library_pdip": 0.0, + "rel_diff_scalar_vs_library_pdip_scalar": 5.84871218966007e-16, + "abs_diff_nats": 2.9103830456733704e-11, + "rel_diff": 1.1697424379320147e-15, + "rel_diff_scalar_vs_library_pdip": 1.169742437932016e-15, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 4.3655745685100555e-11, + "rel_diff_library_pdip_vmap_vs_scalar": 1.754613656898021e-15, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 10, + "pdip_iter": null + }, + { + "lane": 5, + "draw_name": "call00015_lane05", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.008435952123169364, + "centre_1": -0.007849511137408794, + "ell_comps_0": -0.01598149485178925, + "ell_comps_1": 0.01654417876136871, + "einstein_radius": 0.014294380855379263 + }, + "log_likelihood_vmap": 25472.51918660302, + "log_likelihood_scalar": 25472.519186782392, + "log_likelihood_library_pdip": 25472.519186607446, + "log_likelihood_library_pdip_scalar": 25472.519186788668, + "rel_diff_vmap_vs_library_pdip": 1.73668815283468e-13, + "rel_diff_scalar_vs_library_pdip_scalar": 2.4636406773178535e-13, + "abs_diff_nats": 1.793705450836569e-07, + "rel_diff": 7.041727744648504e-12, + "rel_diff_scalar_vs_library_pdip": 6.868058929413398e-12, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 1.812222762964666e-07, + "rel_diff_library_pdip_vmap_vs_scalar": 7.1144229970963214e-12, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 4, + "pdip_iter": null + }, + { + "lane": 6, + "draw_name": "call00015_lane06", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.0031698313356290646, + "centre_1": -0.0038584140676992847, + "ell_comps_0": 0.01810147576636289, + "ell_comps_1": -0.011577480306416508, + "einstein_radius": 0.016136835525067283 + }, + "log_likelihood_vmap": -83383.91643904251, + "log_likelihood_scalar": -83383.9154726328, + "log_likelihood_library_pdip": -83383.91634310859, + "log_likelihood_library_pdip_scalar": -83383.91559144364, + "rel_diff_vmap_vs_library_pdip": 1.1505087234545408e-09, + "rel_diff_scalar_vs_library_pdip_scalar": 1.424865247898061e-09, + "abs_diff_nats": 0.0009664097160566598, + "rel_diff": 1.1589881700552218e-08, + "rel_diff_scalar_vs_library_pdip": 1.043937285610658e-08, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 0.0007516649493481964, + "rel_diff_library_pdip_vmap_vs_scalar": 9.014507702314328e-09, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": true, + "passes": 0, + "pdip_iter": null + }, + { + "lane": 7, + "draw_name": "call00015_lane07", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.006158729760195174, + "centre_1": 0.004883559265258847, + "ell_comps_0": 0.007613883677130215, + "ell_comps_1": -0.005800175617006949, + "einstein_radius": 0.0662922007765554 + }, + "log_likelihood_vmap": -11960.284433619381, + "log_likelihood_scalar": -11960.28442968028, + "log_likelihood_library_pdip": -11960.284433112196, + "log_likelihood_library_pdip_scalar": -11960.284430403837, + "rel_diff_vmap_vs_library_pdip": 4.240577891339571e-11, + "rel_diff_scalar_vs_library_pdip_scalar": 6.049668878301417e-11, + "abs_diff_nats": 3.939101588912308e-06, + "rel_diff": 3.293484876611423e-10, + "rel_diff_scalar_vs_library_pdip": 2.8694270865324245e-10, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 2.7083588065579534e-06, + "rel_diff_library_pdip_vmap_vs_scalar": 2.2644601993520535e-10, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 1, + "pdip_iter": null + }, + { + "lane": 8, + "draw_name": "call00015_lane08", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.0030335293924908615, + "centre_1": 0.0012117081273721316, + "ell_comps_0": 0.0008852687687036301, + "ell_comps_1": -0.0027113633212058814, + "einstein_radius": -0.03873713959923952 + }, + "log_likelihood_vmap": 23223.550391412664, + "log_likelihood_scalar": 23223.550391492507, + "log_likelihood_library_pdip": 23223.550391416265, + "log_likelihood_library_pdip_scalar": 23223.550391494133, + "rel_diff_vmap_vs_library_pdip": 1.5508391087144e-13, + "rel_diff_scalar_vs_library_pdip_scalar": 7.00227355144457e-14, + "abs_diff_nats": 7.984272087924182e-08, + "rel_diff": 3.4380066584690102e-12, + "rel_diff_scalar_vs_library_pdip": 3.282922747608857e-12, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 7.786729838699102e-08, + "rel_diff_library_pdip_vmap_vs_scalar": 3.352945483112295e-12, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 4, + "pdip_iter": null + }, + { + "lane": 9, + "draw_name": "call00015_lane09", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.0008035510098975272, + "centre_1": 0.005559773241319952, + "ell_comps_0": -0.003701655436278317, + "ell_comps_1": -0.012378591445614512, + "einstein_radius": 0.032284336889985665 + }, + "log_likelihood_vmap": -177119.19820193516, + "log_likelihood_scalar": -177117.8065188944, + "log_likelihood_library_pdip": -177118.66823404492, + "log_likelihood_library_pdip_scalar": -177117.75734277815, + "rel_diff_vmap_vs_library_pdip": 2.992162799785495e-06, + "rel_diff_scalar_vs_library_pdip_scalar": 2.776464482099952e-07, + "abs_diff_nats": 1.3916830407688394, + "rel_diff": 7.857386380969996e-06, + "rel_diff_scalar_vs_library_pdip": 4.8651853535433625e-06, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 0.9108912667725235, + "rel_diff_library_pdip_vmap_vs_scalar": 5.142856822705047e-06, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": true, + "passes": 0, + "pdip_iter": null + }, + { + "lane": 10, + "draw_name": "call00015_lane10", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.008473569241265282, + "centre_1": -0.0051993251621340235, + "ell_comps_0": -0.0031466996514049606, + "ell_comps_1": -0.0076036423480284636, + "einstein_radius": 0.08283321334626792 + }, + "log_likelihood_vmap": -101745.38549198136, + "log_likelihood_scalar": -101745.38336119395, + "log_likelihood_library_pdip": -101745.38555231605, + "log_likelihood_library_pdip_scalar": -101745.38339146243, + "rel_diff_vmap_vs_library_pdip": 5.929967725911666e-10, + "rel_diff_scalar_vs_library_pdip_scalar": 2.9749240143568695e-10, + "abs_diff_nats": 0.0021307874121703207, + "rel_diff": 2.0942349832287432e-08, + "rel_diff_scalar_vs_library_pdip": 2.1535346153877847e-08, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 0.0021608536189887673, + "rel_diff_library_pdip_vmap_vs_scalar": 2.1237854209806704e-08, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 2, + "pdip_iter": null + }, + { + "lane": 11, + "draw_name": "call00015_lane11", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.001017060353322001, + "centre_1": 0.003035861051809724, + "ell_comps_0": 0.0014054844842678396, + "ell_comps_1": -0.00019678252877009805, + "einstein_radius": -0.04179610309843307 + }, + "log_likelihood_vmap": 18957.528349913606, + "log_likelihood_scalar": 18957.528349715554, + "log_likelihood_library_pdip": 18957.5283499144, + "log_likelihood_library_pdip_scalar": 18957.52834974652, + "rel_diff_vmap_vs_library_pdip": 4.1834534824766567e-14, + "rel_diff_scalar_vs_library_pdip_scalar": 1.6334658735392955e-12, + "abs_diff_nats": 1.9805156625807285e-07, + "rel_diff": 1.0447119614147616e-11, + "rel_diff_scalar_vs_library_pdip": 1.0488954148862804e-11, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 1.6787817003205419e-07, + "rel_diff_library_pdip_vmap_vs_scalar": 8.855488275416393e-12, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 12, + "draw_name": "call00015_lane12", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.0012508260776529923, + "centre_1": -0.0075763258203543175, + "ell_comps_0": -0.0003476568325791879, + "ell_comps_1": 0.0070528223693464365, + "einstein_radius": -0.005182936058341969 + }, + "log_likelihood_vmap": 24810.049660195116, + "log_likelihood_scalar": 24810.04966019512, + "log_likelihood_library_pdip": 24810.049660194898, + "log_likelihood_library_pdip_scalar": 24810.049660194905, + "rel_diff_vmap_vs_library_pdip": 8.797996433506053e-15, + "rel_diff_scalar_vs_library_pdip_scalar": 8.651363159614284e-15, + "abs_diff_nats": 3.637978807091713e-12, + "rel_diff": 1.4663327389176625e-16, + "rel_diff_scalar_vs_library_pdip": 8.944629707397821e-15, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 7.275957614183426e-12, + "rel_diff_library_pdip_vmap_vs_scalar": 2.93266547783535e-16, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 9, + "pdip_iter": null + }, + { + "lane": 13, + "draw_name": "call00015_lane13", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.0039046265841316857, + "centre_1": 0.008586063066835778, + "ell_comps_0": 0.01612319103606081, + "ell_comps_1": -0.006478405394829051, + "einstein_radius": -0.06420305523683667 + }, + "log_likelihood_vmap": -3605.7062167846816, + "log_likelihood_scalar": -3605.706215981947, + "log_likelihood_library_pdip": -3605.7062168321354, + "log_likelihood_library_pdip_scalar": -3605.7062159505294, + "rel_diff_vmap_vs_library_pdip": 1.3160749297372256e-11, + "rel_diff_scalar_vs_library_pdip_scalar": 8.713295841758364e-12, + "abs_diff_nats": 8.027345757000148e-07, + "rel_diff": 2.2262894634675748e-10, + "rel_diff_scalar_vs_library_pdip": 2.3578969559163613e-10, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 8.816059562377632e-07, + "rel_diff_library_pdip_vmap_vs_scalar": 2.445029914910458e-10, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 2, + "pdip_iter": null + }, + { + "lane": 14, + "draw_name": "call00015_lane14", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.007195835212073937, + "centre_1": -0.0022675171274400335, + "ell_comps_0": 0.004220685262914858, + "ell_comps_1": 0.006581974817750368, + "einstein_radius": 0.08589577997501685 + }, + "log_likelihood_vmap": 11126.92147574079, + "log_likelihood_scalar": 11126.921475785763, + "log_likelihood_library_pdip": 11126.92147574079, + "log_likelihood_library_pdip_scalar": 11126.921475785763, + "rel_diff_vmap_vs_library_pdip": 0.0, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 4.4972694013267756e-08, + "rel_diff": 4.041791263750414e-12, + "rel_diff_scalar_vs_library_pdip": 4.04179126376675e-12, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 4.4972694013267756e-08, + "rel_diff_library_pdip_vmap_vs_scalar": 4.041791263750414e-12, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 15, + "draw_name": "call00015_lane15", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.0024446743118905125, + "centre_1": 0.0028324231769206983, + "ell_comps_0": -0.017159158004659933, + "ell_comps_1": 0.008265799441903459, + "einstein_radius": -0.03860302877433641 + }, + "log_likelihood_vmap": 20410.34397373377, + "log_likelihood_scalar": 20410.34397372348, + "log_likelihood_library_pdip": 20410.343973733456, + "log_likelihood_library_pdip_scalar": 20410.343973722393, + "rel_diff_vmap_vs_library_pdip": 1.532880473805449e-14, + "rel_diff_scalar_vs_library_pdip_scalar": 5.329433275210206e-14, + "abs_diff_nats": 1.0288204066455364e-08, + "rel_diff": 5.040681372004568e-13, + "rel_diff_scalar_vs_library_pdip": 4.88739332462156e-13, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 1.1063093552365899e-08, + "rel_diff_library_pdip_vmap_vs_scalar": 5.420336652145229e-13, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 16, + "draw_name": "call00015_lane16", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.00546338030193603, + "centre_1": 0.0029217319844296002, + "ell_comps_0": 0.018887239108742314, + "ell_comps_1": 0.01610145140759906, + "einstein_radius": 0.09308737119031596 + }, + "log_likelihood_vmap": 9734.86224168558, + "log_likelihood_scalar": 9734.862241683746, + "log_likelihood_library_pdip": 9734.86224168339, + "log_likelihood_library_pdip_scalar": 9734.862241682975, + "rel_diff_vmap_vs_library_pdip": 2.2497115906701286e-13, + "rel_diff_scalar_vs_library_pdip_scalar": 7.922572379104445e-14, + "abs_diff_nats": 1.8335413187742233e-09, + "rel_diff": 1.8834794712586433e-13, + "rel_diff_scalar_vs_library_pdip": 3.6623211941141626e-14, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 4.147295840084553e-10, + "rel_diff_library_pdip_vmap_vs_scalar": 4.260251184990126e-14, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 17, + "draw_name": "call00015_lane17", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.0033403521024317102, + "centre_1": -0.004078467297591464, + "ell_comps_0": -0.01076606265657356, + "ell_comps_1": 0.014404445881011321, + "einstein_radius": -0.016103243806114165 + }, + "log_likelihood_vmap": 19481.557219621747, + "log_likelihood_scalar": 19481.557217641563, + "log_likelihood_library_pdip": 19481.557219621747, + "log_likelihood_library_pdip_scalar": 19481.557217641563, + "rel_diff_vmap_vs_library_pdip": 0.0, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 1.980184606509283e-06, + "rel_diff": 1.0164406183691123e-10, + "rel_diff_scalar_vs_library_pdip": 1.0164406182657971e-10, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 1.980184606509283e-06, + "rel_diff_library_pdip_vmap_vs_scalar": 1.0164406183691123e-10, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 18, + "draw_name": "call00015_lane18", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.0036504937209151113, + "centre_1": -0.0003963555596475738, + "ell_comps_0": -0.008227000946306733, + "ell_comps_1": -0.02487475830854786, + "einstein_radius": -0.0327871904693704 + }, + "log_likelihood_vmap": 18812.94686042335, + "log_likelihood_scalar": 18812.946857997056, + "log_likelihood_library_pdip": 18812.94686042335, + "log_likelihood_library_pdip_scalar": 18812.946857997056, + "rel_diff_vmap_vs_library_pdip": 0.0, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 2.4262953957077116e-06, + "rel_diff": 1.2896944928520519e-10, + "rel_diff_scalar_vs_library_pdip": 1.2896944926857206e-10, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 2.4262953957077116e-06, + "rel_diff_library_pdip_vmap_vs_scalar": 1.2896944928520519e-10, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 19, + "draw_name": "call00015_lane19", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.00840275144875603, + "centre_1": -0.003628185056462521, + "ell_comps_0": 0.005265994929748281, + "ell_comps_1": 0.009958068668923414, + "einstein_radius": -0.06501253116347949 + }, + "log_likelihood_vmap": 16927.63254956939, + "log_likelihood_scalar": 16927.63254956905, + "log_likelihood_library_pdip": 16927.63254956939, + "log_likelihood_library_pdip_scalar": 16927.63254956903, + "rel_diff_vmap_vs_library_pdip": 0.0, + "rel_diff_scalar_vs_library_pdip_scalar": 1.2894817263212632e-15, + "abs_diff_nats": 3.383320290595293e-10, + "rel_diff": 1.9986966757979556e-14, + "rel_diff_scalar_vs_library_pdip": 1.9986966757979155e-14, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 3.601599019020796e-10, + "rel_diff_library_pdip_vmap_vs_scalar": 2.1276448484300842e-14, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": false, + "passes": 16, + "pdip_iter": null + } + ], + "lane_pins": [ + { + "pin": "lane 0: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 24758.506194309346, + "reference_value": 24758.506194309142, + "rel_diff": 8.228558362861305e-15, + "abs_diff_nats": 2.0372681319713593e-10, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 0: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 24758.506194309346, + "reference_value": 24758.506194309142, + "rel_diff": 8.228558362861305e-15, + "abs_diff_nats": 2.0372681319713593e-10, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 0: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 24758.506194309346, + "reference_value": 24758.506194309346, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 0: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 24758.506194309142, + "reference_value": 24758.506194309142, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 1: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 20551.004887772666, + "reference_value": 20551.004887772702, + "rel_diff": 1.7702194257450706e-15, + "abs_diff_nats": 3.637978807091713e-11, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 1: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 20551.00488777375, + "reference_value": 20551.004887771745, + "rel_diff": 9.753909035855792e-14, + "abs_diff_nats": 2.004526322707534e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 1: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 20551.004887772666, + "reference_value": 20551.00488777375, + "rel_diff": 5.275253888720041e-14, + "abs_diff_nats": 1.0841176845133305e-09, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 1: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 20551.004887772702, + "reference_value": 20551.004887771745, + "rel_diff": 4.655677089709752e-14, + "abs_diff_nats": 9.567884262651205e-10, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 2: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -189709.78523837583, + "reference_value": -189709.75902380055, + "rel_diff": 1.381825342748125e-07, + "abs_diff_nats": 0.026214575278572738, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 2: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -189709.09646469186, + "reference_value": -189709.0875481008, + "rel_diff": 4.7001391322481445e-08, + "abs_diff_nats": 0.008916591061279178, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 2: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -189709.78523837583, + "reference_value": -189709.09646469186, + "rel_diff": 3.6306834875416045e-06, + "abs_diff_nats": 0.6887736839707941, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 2: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -189709.75902380055, + "reference_value": -189709.0875481008, + "rel_diff": 3.539502026139089e-06, + "abs_diff_nats": 0.6714756997535005, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 3: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -141741.97961988975, + "reference_value": -141741.98068412492, + "rel_diff": 7.508256655999751e-09, + "abs_diff_nats": 0.0010642351699061692, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 3: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -141741.96673891594, + "reference_value": -141741.96778345545, + "rel_diff": 7.369302953986941e-09, + "abs_diff_nats": 0.0010445395018905401, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 3: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -141741.97961988975, + "reference_value": -141741.96673891594, + "rel_diff": 9.087621757541563e-08, + "abs_diff_nats": 0.01288097380893305, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 3: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -141741.98068412492, + "reference_value": -141741.96778345545, + "rel_diff": 9.101517129109932e-08, + "abs_diff_nats": 0.012900669476948678, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 4: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 24880.545932988694, + "reference_value": 24880.545932988694, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 4: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 24880.545932988724, + "reference_value": 24880.545932988738, + "rel_diff": 5.84871218966007e-16, + "abs_diff_nats": 1.4551915228366852e-11, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 4: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 24880.545932988694, + "reference_value": 24880.545932988724, + "rel_diff": 1.1697424379320147e-15, + "abs_diff_nats": 2.9103830456733704e-11, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 4: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 24880.545932988694, + "reference_value": 24880.545932988738, + "rel_diff": 1.754613656898021e-15, + "abs_diff_nats": 4.3655745685100555e-11, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 5: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 25472.51918660302, + "reference_value": 25472.519186607446, + "rel_diff": 1.73668815283468e-13, + "abs_diff_nats": 4.423782229423523e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 5: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 25472.519186782392, + "reference_value": 25472.519186788668, + "rel_diff": 2.4636406773178535e-13, + "abs_diff_nats": 6.275513442233205e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 5: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 25472.51918660302, + "reference_value": 25472.519186782392, + "rel_diff": 7.041727744648504e-12, + "abs_diff_nats": 1.793705450836569e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 5: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 25472.519186607446, + "reference_value": 25472.519186788668, + "rel_diff": 7.1144229970963214e-12, + "abs_diff_nats": 1.812222762964666e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 6: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -83383.91643904251, + "reference_value": -83383.91634310859, + "rel_diff": 1.1505087234545408e-09, + "abs_diff_nats": 9.593392314855009e-05, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 6: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -83383.9154726328, + "reference_value": -83383.91559144364, + "rel_diff": 1.424865247898061e-09, + "abs_diff_nats": 0.00011881084355991334, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 6: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -83383.91643904251, + "reference_value": -83383.9154726328, + "rel_diff": 1.1589881700552218e-08, + "abs_diff_nats": 0.0009664097160566598, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 6: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -83383.91634310859, + "reference_value": -83383.91559144364, + "rel_diff": 9.014507702314328e-09, + "abs_diff_nats": 0.0007516649493481964, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 7: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -11960.284433619381, + "reference_value": -11960.284433112196, + "rel_diff": 4.240577891339571e-11, + "abs_diff_nats": 5.071851774118841e-07, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 7: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -11960.28442968028, + "reference_value": -11960.284430403837, + "rel_diff": 6.049668878301417e-11, + "abs_diff_nats": 7.235576049424708e-07, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 7: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -11960.284433619381, + "reference_value": -11960.28442968028, + "rel_diff": 3.293484876611423e-10, + "abs_diff_nats": 3.939101588912308e-06, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 7: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -11960.284433112196, + "reference_value": -11960.284430403837, + "rel_diff": 2.2644601993520535e-10, + "abs_diff_nats": 2.7083588065579534e-06, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 8: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 23223.550391412664, + "reference_value": 23223.550391416265, + "rel_diff": 1.5508391087144e-13, + "abs_diff_nats": 3.601599019020796e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 8: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 23223.550391492507, + "reference_value": 23223.550391494133, + "rel_diff": 7.00227355144457e-14, + "abs_diff_nats": 1.6261765267699957e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 8: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 23223.550391412664, + "reference_value": 23223.550391492507, + "rel_diff": 3.4380066584690102e-12, + "abs_diff_nats": 7.984272087924182e-08, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 8: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 23223.550391416265, + "reference_value": 23223.550391494133, + "rel_diff": 3.352945483112295e-12, + "abs_diff_nats": 7.786729838699102e-08, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 9: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -177119.19820193516, + "reference_value": -177118.66823404492, + "rel_diff": 2.992162799785495e-06, + "abs_diff_nats": 0.529967890237458, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 9: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -177117.8065188944, + "reference_value": -177117.75734277815, + "rel_diff": 2.776464482099952e-07, + "abs_diff_nats": 0.049176116241142154, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 9: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -177119.19820193516, + "reference_value": -177117.8065188944, + "rel_diff": 7.857386380969996e-06, + "abs_diff_nats": 1.3916830407688394, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 9: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -177118.66823404492, + "reference_value": -177117.75734277815, + "rel_diff": 5.142856822705047e-06, + "abs_diff_nats": 0.9108912667725235, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 10: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -101745.38549198136, + "reference_value": -101745.38555231605, + "rel_diff": 5.929967725911666e-10, + "abs_diff_nats": 6.033468525856733e-05, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 10: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -101745.38336119395, + "reference_value": -101745.38339146243, + "rel_diff": 2.9749240143568695e-10, + "abs_diff_nats": 3.0268478440120816e-05, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 10: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -101745.38549198136, + "reference_value": -101745.38336119395, + "rel_diff": 2.0942349832287432e-08, + "abs_diff_nats": 0.0021307874121703207, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 10: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -101745.38555231605, + "reference_value": -101745.38339146243, + "rel_diff": 2.1237854209806704e-08, + "abs_diff_nats": 0.0021608536189887673, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 11: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 18957.528349913606, + "reference_value": 18957.5283499144, + "rel_diff": 4.1834534824766567e-14, + "abs_diff_nats": 7.930793799459934e-10, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 11: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 18957.528349715554, + "reference_value": 18957.52834974652, + "rel_diff": 1.6334658735392955e-12, + "abs_diff_nats": 3.096647560596466e-08, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 11: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 18957.528349913606, + "reference_value": 18957.528349715554, + "rel_diff": 1.0447119614147616e-11, + "abs_diff_nats": 1.9805156625807285e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 11: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 18957.5283499144, + "reference_value": 18957.52834974652, + "rel_diff": 8.855488275416393e-12, + "abs_diff_nats": 1.6787817003205419e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 12: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 24810.049660195116, + "reference_value": 24810.049660194898, + "rel_diff": 8.797996433506053e-15, + "abs_diff_nats": 2.1827872842550278e-10, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 12: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 24810.04966019512, + "reference_value": 24810.049660194905, + "rel_diff": 8.651363159614284e-15, + "abs_diff_nats": 2.1464074961841106e-10, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 12: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 24810.049660195116, + "reference_value": 24810.04966019512, + "rel_diff": 1.4663327389176625e-16, + "abs_diff_nats": 3.637978807091713e-12, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 12: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 24810.049660194898, + "reference_value": 24810.049660194905, + "rel_diff": 2.93266547783535e-16, + "abs_diff_nats": 7.275957614183426e-12, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 13: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -3605.7062167846816, + "reference_value": -3605.7062168321354, + "rel_diff": 1.3160749297372256e-11, + "abs_diff_nats": 4.7453795559704304e-08, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 13: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -3605.706215981947, + "reference_value": -3605.7062159505294, + "rel_diff": 8.713295841758364e-12, + "abs_diff_nats": 3.141758497804403e-08, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 13: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -3605.7062167846816, + "reference_value": -3605.706215981947, + "rel_diff": 2.2262894634675748e-10, + "abs_diff_nats": 8.027345757000148e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 13: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -3605.7062168321354, + "reference_value": -3605.7062159505294, + "rel_diff": 2.445029914910458e-10, + "abs_diff_nats": 8.816059562377632e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 14: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 11126.92147574079, + "reference_value": 11126.92147574079, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 14: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 11126.921475785763, + "reference_value": 11126.921475785763, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 14: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 11126.92147574079, + "reference_value": 11126.921475785763, + "rel_diff": 4.041791263750414e-12, + "abs_diff_nats": 4.4972694013267756e-08, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 14: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 11126.92147574079, + "reference_value": 11126.921475785763, + "rel_diff": 4.041791263750414e-12, + "abs_diff_nats": 4.4972694013267756e-08, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 15: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 20410.34397373377, + "reference_value": 20410.343973733456, + "rel_diff": 1.532880473805449e-14, + "abs_diff_nats": 3.128661774098873e-10, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 15: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 20410.34397372348, + "reference_value": 20410.343973722393, + "rel_diff": 5.329433275210206e-14, + "abs_diff_nats": 1.0877556633204222e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 15: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 20410.34397373377, + "reference_value": 20410.34397372348, + "rel_diff": 5.040681372004568e-13, + "abs_diff_nats": 1.0288204066455364e-08, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 15: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 20410.343973733456, + "reference_value": 20410.343973722393, + "rel_diff": 5.420336652145229e-13, + "abs_diff_nats": 1.1063093552365899e-08, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 16: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 9734.86224168558, + "reference_value": 9734.86224168339, + "rel_diff": 2.2497115906701286e-13, + "abs_diff_nats": 2.190063241869211e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 16: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 9734.862241683746, + "reference_value": 9734.862241682975, + "rel_diff": 7.922572379104445e-14, + "abs_diff_nats": 7.712515071034431e-10, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 16: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 9734.86224168558, + "reference_value": 9734.862241683746, + "rel_diff": 1.8834794712586433e-13, + "abs_diff_nats": 1.8335413187742233e-09, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 16: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 9734.86224168339, + "reference_value": 9734.862241682975, + "rel_diff": 4.260251184990126e-14, + "abs_diff_nats": 4.147295840084553e-10, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 17: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 19481.557219621747, + "reference_value": 19481.557219621747, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 17: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 19481.557217641563, + "reference_value": 19481.557217641563, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 17: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 19481.557219621747, + "reference_value": 19481.557217641563, + "rel_diff": 1.0164406183691123e-10, + "abs_diff_nats": 1.980184606509283e-06, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 17: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 19481.557219621747, + "reference_value": 19481.557217641563, + "rel_diff": 1.0164406183691123e-10, + "abs_diff_nats": 1.980184606509283e-06, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 18: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 18812.94686042335, + "reference_value": 18812.94686042335, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 18: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 18812.946857997056, + "reference_value": 18812.946857997056, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 18: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 18812.94686042335, + "reference_value": 18812.946857997056, + "rel_diff": 1.2896944928520519e-10, + "abs_diff_nats": 2.4262953957077116e-06, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 18: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 18812.94686042335, + "reference_value": 18812.946857997056, + "rel_diff": 1.2896944928520519e-10, + "abs_diff_nats": 2.4262953957077116e-06, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 19: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 16927.63254956939, + "reference_value": 16927.63254956939, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 19: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 16927.63254956905, + "reference_value": 16927.63254956903, + "rel_diff": 1.2894817263212632e-15, + "abs_diff_nats": 2.1827872842550278e-11, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 19: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 16927.63254956939, + "reference_value": 16927.63254956905, + "rel_diff": 1.9986966757979556e-14, + "abs_diff_nats": 3.383320290595293e-10, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 19: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 16927.63254956939, + "reference_value": 16927.63254956903, + "rel_diff": 2.1276448484300842e-14, + "abs_diff_nats": 3.601599019020796e-10, + "within_rtol": true, + "status": "RECORDED" + } + ], + "lanes_failed": 4, + "arm_rows": { + "vmap": { + "arm": "vmap", + "program": "jax.jit(jax.vmap(fn))", + "stands_for": "Nautilus(use_jax_vmap=True) \u2014 Fitness._vmap", + "hlo_source": "jax.jit(jax.vmap(fn)).lower(batched_tree) \u2014 the exact current Fitness._vmap composition (PyAutoFit#1638)", + "batch_wall_ms": 1087.2213063001254, + "wall_production_nesting_ms": 1087.2213063001254, + "wall_aot_command_buffers_on_ms": 1087.965231400085, + "wall_aot_command_buffers_off_ms": 1087.4690682998335, + "command_buffer_delta_ms": -0.4961631002515787, + "production_nesting_vs_aot_on_delta_ms": -0.743925099959597, + "production_nesting_vs_aot_on_delta_pct": -0.06837765385225149, + "wall_per_lane_ms": 54.36106531500627, + "wall_per_lane_command_buffers_off_ms": 54.37345341499167, + "traced_batch_wall_ms": 1104.6436848002486, + "untraced_batch_wall_ms": 1088.6439894999057, + "traced_wall_per_lane_ms": 55.23218424001243, + "callback_count_per_call": 20.0, + "callback_count_per_lane": 1.0, + "callback_expectation": "B per batched call \u2014 the qhull pure_callback is vmap_method='sequential'", + "host_qhull_ms": 89.15744930018263, + "host_tables_ms": 2.2919884027942317, + "host_qhull_ms_per_lane": 4.457872465009132, + "host_tables_ms_per_lane": 0.11459942013971158, + "host_callback_probe": { + "calls": 200, + "qhull_ms_total": 891.5744930018263, + "tables_ms_total": 22.919884027942317, + "total_ms_total": 914.4943770297687, + "qhull_ms_mean": 4.457872465009132, + "tables_ms_mean": 0.11459942013971158, + "total_ms_mean": 4.572471885148843, + "non_finite_calls": 0, + "n_points": [ + 1500 + ] + }, + "host_callback_records_first": [ + { + "n_points": 1500, + "qhull_ms": 4.677154996898025, + "tables_ms": 0.18203800209448673, + "total_ms": 4.859192998992512, + "finite": true + }, + { + "n_points": 1500, + "qhull_ms": 4.4130870010121725, + "tables_ms": 0.10997999925166368, + "total_ms": 4.523067000263836, + "finite": true + }, + { + "n_points": 1500, + "qhull_ms": 4.448677998880157, + "tables_ms": 0.12658800187637098, + "total_ms": 4.575266000756528, + "finite": true + }, + { + "n_points": 1500, + "qhull_ms": 4.559725999570219, + "tables_ms": 0.10892800128203817, + "total_ms": 4.668654000852257, + "finite": true + } + ], + "device_idle_ms": 133.6681006, + "device_idle_ms_per_lane": 6.68340503, + "trace": { + "parser": "ProfileData.from_file(xplane) + as_text() + stack_frame_index(proto field 17)", + "stage_audit": { + "mixed_fusion": [ + { + "instruction": "loop_divide_gather_fusion", + "ms": 21.202663899999997, + "opcode": "fusion", + "shape": "(f64[15361,20,1,1,1500]{4,3,2,1,0}, f64[15361,20,1,1,1500]{4,3,2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_broadcast_fusion.7", + "ms": 5.021317099999999, + "opcode": "fusion", + "shape": "f64[20,1500,180,180]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_reduce_fusion.18", + "ms": 2.6243955999999997, + "opcode": "fusion", + "shape": "f64[92,20,1500]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123 (data_vector_via_blurred_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:67 (InversionImagingMapping.data_vector)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:699 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_reduce_fusion.22", + "ms": 2.1909431, + "opcode": "fusion", + "shape": "f64[15361,20]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163 (mapped_reconstructed_data_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:120 (InversionImagingMapping._mapped_reconstructed_data_dict_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:196 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "loop_broadcast_fusion.8", + "ms": 2.117994, + "opcode": "fusion", + "shape": "f64[15361,20,1500]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:353", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:353 (mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:283 (Mapper.mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:91 (AbstractInversionImaging._mapping_matrix_for_convolution_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:137 (AbstractInversionImaging.operated_mapping_matrix_list)" + ] + }, + { + "instruction": "input_multiply_transpose_fusion", + "ms": 1.8979407, + "opcode": "fusion", + "shape": "(f64[20,1500,1500]{2,1,0}, f64[20,1500,1500]{2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:491", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:491 (reconstruction_positive_only_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:706 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:113 (InversionImagingMapping._mapped_reconstructed_data_dict_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:196 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)" + ] + } + ], + "other": [ + { + "instruction": "copy.138", + "ms": 0.0484356999999999, + "opcode": "copy", + "shape": "f64[1,20,1024,2]{3,2,1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.140", + "ms": 0.04055390000000005, + "opcode": "copy", + "shape": "s32[1,3000,3]{2,1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.141", + "ms": 0.0400260000000001, + "opcode": "copy", + "shape": "s32[1,3000,3]{2,1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.142", + "ms": 0.039894800000000105, + "opcode": "copy", + "shape": "f64[1,1500,2]{2,1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.139", + "ms": 0.03945300000000007, + "opcode": "copy", + "shape": "s32[1,1500]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.122", + "ms": 0.03813460000000002, + "opcode": "copy", + "shape": "s32[20]{0}", + "source": "", + "stack": [] + } + ], + "mesh_qhull_callback": [ + { + "instruction": "pure_callback.0", + "ms": 0.21491770000000038, + "opcode": "custom-call", + "shape": "(s32[3000,3]{1,0}, s32[3000,3]{1,0}, s32[1500]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:161", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:161 (_jax_delaunay_tables)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:405 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + }, + { + "instruction": "loop_add_fusion.1", + "ms": 0.030790499999999964, + "opcode": "fusion", + "shape": "s64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:161", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:161 (_jax_delaunay_tables)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:405 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + }, + { + "instruction": "loop_broadcast_fusion.3", + "ms": 0.0020096, + "opcode": "fusion", + "shape": "s32[20,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:161", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:161 (_jax_delaunay_tables)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:405 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + } + ], + "border_relocator": [ + { + "instruction": "custom-call.2", + "ms": 0.04224010000000001, + "opcode": "custom-call", + "shape": "(f64[20,2,2]{2,1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_add_rsqrt_fusion", + "ms": 0.015219300000000002, + "opcode": "fusion", + "shape": "(f64[20,15361]{1,0}, f64[20,15361]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:311", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:311 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:423 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:208 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "eigh.34", + "ms": 0.014675299999999995, + "opcode": "custom-call", + "shape": "(f64[20,2,2]{1,2,0}, f64[20,2]{1,0}, s32[20]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_add_fusion.4", + "ms": 0.0039041, + "opcode": "fusion", + "shape": "f64[20,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:458 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_reduce_fusion.23", + "ms": 0.0033503999999999995, + "opcode": "fusion", + "shape": "f64[20]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:270", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:270 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_reduce_fusion.24", + "ms": 0.0033312, + "opcode": "fusion", + "shape": "f64[20]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:269", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:269 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + } + ], + "mesh_construction": [ + { + "instruction": "loop_compare_fusion.5", + "ms": 0.0042496, + "opcode": "fusion", + "shape": "pred[20,6000,3]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:736", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:736 (DelaunayInterface.splitted_sizes)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:997 (InterpolatorDelaunay._mappings_sizes_weights_split)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:124 (AdaptSplit.regularization_matrix_from)" + ] + }, + { + "instruction": "loop_multiply_fusion.4", + "ms": 0.0024031999999999994, + "opcode": "fusion", + "shape": "f64[20,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:412", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:412 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_concatenate_fusion.10", + "ms": 0.0023168, + "opcode": "fusion", + "shape": "f64[20,1500,2]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:820", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:820 (InterpolatorDelaunay.mesh_grid_xy)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:847 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + } + ], + "mesh_seed_argmin": [ + { + "instruction": "input_reduce_fusion", + "ms": 1.6258166999999977, + "opcode": "fusion", + "shape": "(f64[20,1024]{1,0}, s64[20,1024]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:191", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:191 (_nearest_vertex_seed_from..argmin_chunk)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)" + ] + }, + { + "instruction": "loop_dynamic_update_slice_fusion", + "ms": 0.047878699999999844, + "opcode": "fusion", + "shape": "s32[21,20,1024]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_add_fusion", + "ms": 0.03184359999999992, + "opcode": "fusion", + "shape": "s64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_broadcast_fusion.4", + "ms": 0.0026527999999999994, + "opcode": "fusion", + "shape": "s32[21,20,1024]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "pdip_solve": [ + { + "instruction": "cholesky.80", + "ms": 214.59929849997786, + "opcode": "custom-call", + "shape": "(f64[20,1500,1500]{1,2,0}, s32[20]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:106", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:106 (factorize_kkt)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:212 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "cholesky.60", + "ms": 113.26437749998553, + "opcode": "custom-call", + "shape": "(f64[20,1500,1500]{1,2,0}, s32[20]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "triangular-solve", + "ms": 55.21126220000091, + "opcode": "custom-call", + "shape": "(f64[20,1500,1]{1,2,0}, s8[320]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:213 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve.2", + "ms": 51.438534200000134, + "opcode": "custom-call", + "shape": "(f64[20,1500,1]{1,2,0}, s8[320]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:217 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve.3", + "ms": 50.28250209999937, + "opcode": "custom-call", + "shape": "(f64[20,1500,1]{1,2,0}, s8[320]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:217 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve.1", + "ms": 50.08614869999917, + "opcode": "custom-call", + "shape": "(f64[20,1500,1]{1,2,0}, s8[320]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:213 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + } + ], + "mesh_dual_areas": [ + { + "instruction": "input_scatter_fusion.9", + "ms": 0.003286400000000001, + "opcode": "fusion", + "shape": "f64[20,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:393", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:393 (_dual_areas_padded_jnp)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:408 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + }, + { + "instruction": "input_scatter_fusion.7", + "ms": 0.0032768000000000007, + "opcode": "fusion", + "shape": "f64[20,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:393", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:393 (_dual_areas_padded_jnp)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:408 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + } + ], + "mesh_locate_walk": [ + { + "instruction": "loop_slice_subtract_fusion", + "ms": 0.322774, + "opcode": "fusion", + "shape": "(f64[20,21361,1]{2,1,0}, f64[20,21361,1]{2,1,0}, f64[20,21361,1]{2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:236", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:236 (_walk_from_seed..cross)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:250 (_walk_from_seed..weights_of)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:262 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)" + ] + }, + { + "instruction": "loop_reduce_fusion", + "ms": 0.15188379999999999, + "opcode": "fusion", + "shape": "(f64[20,21361]{1,0}, s64[20,21361]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:264", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:264 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:264 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)" + ] + }, + { + "instruction": "loop_select_fusion", + "ms": 0.1282284999999999, + "opcode": "fusion", + "shape": "(pred[20,21361]{1,0}, pred[20,21361]{1,0}, s32[20,21361]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_gather_fusion.1", + "ms": 0.0831593, + "opcode": "fusion", + "shape": "s32[427220,1,1,3]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:239", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:239 (_walk_from_seed..weights_of)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:262 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)" + ] + }, + { + "instruction": "loop_gather_fusion", + "ms": 0.06232030000000002, + "opcode": "fusion", + "shape": "s32[427220,1,1,1]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:267", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:267 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)" + ] + }, + { + "instruction": "input_concatenate_fusion.1", + "ms": 0.0454338, + "opcode": "fusion", + "shape": "s32[20,21361,2]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:244", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:244 (_walk_from_seed..weights_of)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:262 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)" + ] + } + ], + "psf_convolution_mapping_matrix": [ + { + "instruction": "input_scatter_fusion", + "ms": 40.4667916, + "opcode": "fusion", + "shape": "f64[20,1500,180,180]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.29.0", + "ms": 35.274714800000005, + "opcode": "fft", + "shape": "f64[20,1500,180,180]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.25.0", + "ms": 26.990960899999994, + "opcode": "fft", + "shape": "c128[20,1500,180,91]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.27.0", + "ms": 19.3955784, + "opcode": "fft", + "shape": "c128[20,1500,91,180]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_transpose_fusion.4", + "ms": 10.5481266, + "opcode": "fusion", + "shape": "c128[20,1500,91,180]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "wrapped_transpose", + "ms": 9.845067199999999, + "opcode": "fusion", + "shape": "c128[20,1500,180,91]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + } + ], + "mapping_matrix": [ + { + "instruction": "input_scatter_fusion.3", + "ms": 0.0593254, + "opcode": "fusion", + "shape": "f64[20,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:71", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:71 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:120 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + }, + { + "instruction": "input_reduce_fusion.46", + "ms": 0.0037279999999999995, + "opcode": "fusion", + "shape": "f64[20]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:120 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + } + ], + "regularization_H": [ + { + "instruction": "input_scatter_fusion.10", + "ms": 0.0036352000000000008, + "opcode": "fusion", + "shape": "f64[20,1500,1500]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:615", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:615 (pixel_splitted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:137 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "curvature_matrix_F": [ + { + "instruction": "cublas-lt-matmul.2", + "ms": 81.49325499999999, + "opcode": "custom-call", + "shape": "(f64[20,1500,1500]{2,1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "inversion_other": [ + { + "instruction": "cholesky.120", + "ms": 7.880166300000053, + "opcode": "custom-call", + "shape": "(f64[20,1500,1500]{1,2,0}, s32[20]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1078 (AbstractInversion.log_det_curvature_reg_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:347 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "cholesky.130", + "ms": 7.803016000000013, + "opcode": "custom-call", + "shape": "(f64[20,1500,1500]{1,2,0}, s32[20]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1157 (AbstractInversion.log_det_regularization_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:348 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "loop_reduce_window_fusion", + "ms": 0.0031297999999999994, + "opcode": "fusion", + "shape": "s64[94,16]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "loop_broadcast_convert_fusion", + "ms": 0.0026209, + "opcode": "fusion", + "shape": "(s32[1500]{0}, s64[1500]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527 (AbstractInversion.zeroed_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:567 (AbstractInversion.solve_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:684 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_scatter_fusion.5", + "ms": 0.0021856, + "opcode": "fusion", + "shape": "s64[1500]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527 (AbstractInversion.zeroed_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:567 (AbstractInversion.solve_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:684 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_reduce_window_fusion.1", + "ms": 0.0020832000000000003, + "opcode": "fusion", + "shape": "s64[6,16]{1,0}", + "source": "", + "stack": [] + } + ], + "chi_squared_evidence": [ + { + "instruction": "loop_divide_fusion", + "ms": 0.005110400000000001, + "opcode": "fusion", + "shape": "f64[15361,20]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:352", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:352 (AbstractNDArray.__truediv__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:57 (unwrap_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:35 (to_new_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:78 (chi_squared_map_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:78 (AbstractFit.chi_squared_map)" + ] + } + ] + }, + "stage_audit_note": "The HLO instructions that contributed most of each stage's milliseconds, with their full source stack. A stage row is only as good as the rules that built it; this is how a reader checks a row against the HLO instead of trusting it.", + "untraced_wall_ms": 1088.6439894999057, + "reconciliation_vs_untraced_pct": 1.4948157301263827, + "wall_basis": "wall_ms is the TRACED run's wall, the run these kernel durations came from. untraced_wall_ms is the same executable without the profiler; the difference is the profiler's overhead and belongs in neither the stages nor the idle row.", + "calls": 10, + "call_split": "per-call (first-instruction recurrence)", + "call_blocks": 10, + "events": 311040, + "streams": [ + "Stream #14(MemcpyD2H,Compute,MemcpyD2D,MemcpyH2D)" + ], + "per_stage_ms": { + "border_relocator": { + "median_ms": 0.09180849999999999, + "min_ms": 0.09110499999999999, + "max_ms": 0.09247999999999999 + }, + "chi_squared_evidence": { + "median_ms": 0.005088, + "min_ms": 0.004992, + "max_ms": 0.005248 + }, + "curvature_matrix_F": { + "median_ms": 81.5326455, + "min_ms": 80.890945, + "max_ms": 82.078981 + }, + "inversion_other": { + "median_ms": 15.674743999999993, + "min_ms": 15.611943000000007, + "max_ms": 15.802664000000023 + }, + "mapping_matrix": { + "median_ms": 0.062673, + "min_ms": 0.060704, + "max_ms": 0.06537599999999999 + }, + "mesh_construction": { + "median_ms": 0.008944, + "min_ms": 0.008896000000000001, + "max_ms": 0.009215999999999998 + }, + "mesh_dual_areas": { + "median_ms": 0.00656, + "min_ms": 0.006528, + "max_ms": 0.006592 + }, + "mesh_locate_walk": { + "median_ms": 1.0010324999999995, + "min_ms": 0.9964599999999998, + "max_ms": 1.0067319999999995 + }, + "mesh_qhull_callback": { + "median_ms": 0.24758800000000003, + "min_ms": 0.24675500000000014, + "max_ms": 0.24854500000000004 + }, + "mesh_seed_argmin": { + "median_ms": 1.7089075, + "min_ms": 1.7009140000000003, + "max_ms": 1.7098409999999997 + }, + "mixed_fusion": { + "median_ms": 38.955133499999995, + "min_ms": 38.739298000000005, + "max_ms": 39.069581 + }, + "other": { + "median_ms": 0.32731399999999994, + "min_ms": 0.326756, + "max_ms": 0.32794000000000006 + }, + "pdip_solve": { + "median_ms": 689.0386290000258, + "min_ms": 686.4094680000115, + "max_ms": 693.0778240000242 + }, + "psf_convolution_mapping_matrix": { + "median_ms": 142.584427, + "min_ms": 142.084308, + "max_ms": 142.692432 + }, + "regularization_H": { + "median_ms": 0.003616, + "min_ms": 0.003552, + "max_ms": 0.00384 + } + }, + "stage_order": [ + "border_relocator", + "mesh_qhull_callback", + "mesh_seed_argmin", + "mesh_locate_walk", + "mesh_dual_areas", + "mesh_construction", + "mapping_matrix", + "psf_convolution_mapping_matrix", + "curvature_matrix_F", + "regularization_H", + "pdip_solve", + "chi_squared_evidence", + "inversion_other", + "mixed_fusion", + "other" + ], + "mixed_fusion": { + "ms": 38.955133499999995, + "constituent_stage_sets": { + "curvature_matrix_F + psf_convolution_mapping_matrix": 21.202663899999997, + "pdip_solve + psf_convolution_mapping_matrix": 5.021317099999999, + "data_vector_D + pdip_solve": 2.6444533, + "pdip_solve + regularization_H": 2.3780223, + "mapped_reconstruction + pdip_solve": 2.1909431, + "mapping_matrix + pdip_solve": 2.1211651999999996, + "curvature_reg_reduce_gather + inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": 1.8979407, + "inversion_other + pdip_solve + regularization_H": 0.5537554, + "inversion_other + pdip_solve": 0.23352859999999995, + "inversion_other + regularization_H": 0.20234119999999986, + "mapping_matrix + mesh_interpolation_weights + pdip_solve": 0.0777736, + "inversion_other + mapping_matrix + mesh_construction + mesh_interpolation_weights + pdip_solve": 0.077732, + "grids_and_structures + mass_profile_deflections + ray_trace_data_grid": 0.03438770000000001, + "inversion_other + mesh_construction + mesh_interpolation_weights": 0.0253027, + "inversion_other + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + pdip_solve + regularization_H": 0.024563400000000003, + "inversion_other + mesh_construction + mesh_dual_areas + mesh_interpolation_weights": 0.024512100000000002, + "grids_and_structures + mass_profile_deflections + pdip_solve + ray_trace_data_grid": 0.024057999999999996, + "border_relocator + pdip_solve": 0.0203298, + "inversion_other + mapping_matrix + mesh_construction + mesh_interpolation_weights": 0.0163201, + "pdip_solve + ray_trace_data_grid": 0.013190399999999993, + "mesh_construction + pdip_solve + regularization_H": 0.012493, + "mesh_dual_areas + mesh_interpolation_weights": 0.0111298, + "mesh_construction + mesh_seed_argmin + pdip_solve + regularization_H": 0.010409700000000001, + "inversion_other + mapped_reconstruction": 0.0096705, + "chi_squared_evidence + pdip_solve": 0.0096001, + "inversion_other + mapped_reconstruction + reconstruction_scatter + regularization_H": 0.009494500000000003, + "inversion_other + mapped_reconstruction + reconstruction_scatter": 0.0090081, + "mesh_locate_walk + mesh_seed_argmin": 0.0088352, + "inversion_other + mesh_dual_areas + mesh_locate_walk": 0.0084674, + "mesh_construction + mesh_dual_areas + mesh_interpolation_weights + pdip_solve + regularization_H": 0.006732799999999999, + "inversion_other + pdip_solve + ray_trace_data_grid": 0.0047072, + "grids_and_structures + mass_profile_deflections + pdip_solve": 0.0044832, + "mapping_matrix + pdip_solve + regularization_H": 0.004259300000000001, + "inversion_other + mesh_locate_walk + mesh_seed_argmin": 0.0038944, + "inversion_other + mesh_dual_areas + mesh_locate_walk + pdip_solve": 0.0038753, + "inversion_other + mesh_interpolation_weights": 0.0037408, + "inversion_other + mesh_construction + mesh_interpolation_weights + pdip_solve + regularization_H": 0.0034593000000000002, + "inversion_other + mesh_construction + regularization_H": 0.0028191999999999996, + "chi_squared_evidence + inversion_other": 0.0023296, + "inversion_other + mapping_matrix": 0.0021024 + }, + "example_kernels": { + "curvature_matrix_F + psf_convolution_mapping_matrix": [ + "loop_divide_gather_fusion" + ], + "pdip_solve + psf_convolution_mapping_matrix": [ + "loop_broadcast_fusion.7" + ], + "data_vector_D + pdip_solve": [ + "input_reduce_fusion.18", + "input_reduce_fusion.44" + ], + "pdip_solve + regularization_H": [ + "loop_broadcast_fusion", + "input_add_transpose_fusion", + "input_transpose_fusion.6" + ], + "mapped_reconstruction + pdip_solve": [ + "input_reduce_fusion.22" + ], + "mapping_matrix + pdip_solve": [ + "loop_broadcast_fusion.8", + "loop_divide_fusion.1" + ], + "curvature_reg_reduce_gather + inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": [ + "input_multiply_transpose_fusion" + ], + "inversion_other + pdip_solve + regularization_H": [ + "input_transpose_fusion.7", + "loop_log_fusion" + ], + "inversion_other + pdip_solve": [ + "input_reduce_fusion.20", + "input_reduce_fusion.21", + "input_transpose_fusion.3", + "input_reduce_fusion.26" + ], + "inversion_other + regularization_H": [ + "input_reduce_fusion.41", + "input_reduce_fusion.34", + "input_reduce_fusion.35", + "input_reduce_fusion.36" + ] + }, + "prorated_estimate_ms": { + "psf_convolution_mapping_matrix": 13.111990499999997, + "curvature_matrix_F": 10.601331949999999, + "pdip_solve": 7.946284793333332, + "regularization_H": 1.4923990866666665, + "mapped_reconstruction": 1.4852712650000002, + "data_vector_D": 1.32222665, + "mapping_matrix": 1.1086045249999998, + "inversion_other": 0.8429788166666664, + "reconstruction_scatter": 0.384964465, + "curvature_reg_reduce_gather": 0.37958813999999996, + "mesh_interpolation_weights": 0.07368083666666667, + "mesh_construction": 0.04802749499999999, + "ray_trace_data_grid": 0.02564133333333333, + "mesh_dual_areas": 0.02092467666666667, + "grids_and_structures": 0.018971466666666666, + "mass_profile_deflections": 0.018971466666666666, + "border_relocator": 0.0101649, + "mesh_locate_walk": 0.009507024999999999, + "mesh_seed_argmin": 0.008318158333333332, + "chi_squared_evidence": 0.00596485 + }, + "prorated_note": "ESTIMATE ONLY \u2014 a mixed fusion's time split equally across the stages its constituents span. Never summed into the measured table, never reconciled." + }, + "other_sources_ms": { + "copy.138": 0.0484356999999999, + "copy.140": 0.04055390000000005, + "copy.141": 0.0400260000000001, + "copy.142": 0.039894800000000105, + "copy.139": 0.03945300000000007, + "copy.122": 0.03813460000000002, + "copy.123": 0.03528999999999997, + "copy.121": 0.03454110000000006, + "loop_broadcast_fusion.2": 0.0028191999999999996, + "copy.137": 0.0023233, + "copy.97": 0.002272, + "copy.58": 0.0021792, + "loop_broadcast_fusion.5": 0.0013984000000000002 + }, + "device_span_ms": 1104.5367216, + "device_busy_ms": 970.868621, + "device_idle_ms": 133.6681006, + "largest_idle_gaps": [ + { + "gap_ms": 5.384581, + "after": "pure_callback.0", + "before": "pure_callback.0" + }, + { + "gap_ms": 5.016546, + "after": "pure_callback.0", + "before": "pure_callback.0" + }, + { + "gap_ms": 4.976545, + "after": "pure_callback.0", + "before": "pure_callback.0" + }, + { + "gap_ms": 4.95725, + "after": "pure_callback.0", + "before": "pure_callback.0" + }, + { + "gap_ms": 4.889409, + "after": "pure_callback.0", + "before": "pure_callback.0" + }, + { + "gap_ms": 4.874305, + "after": "pure_callback.0", + "before": "pure_callback.0" + }, + { + "gap_ms": 4.853824, + "after": "pure_callback.0", + "before": "pure_callback.0" + }, + { + "gap_ms": 4.853281, + "after": "pure_callback.0", + "before": "pure_callback.0" + } + ], + "kernel_ms": 971.2491105000258, + "sum_ms": 1104.9172111000257, + "wall_ms": 1104.6436848002486, + "host_outside_span_ms": 0.10696320024862871, + "reconciliation_pct": 0.024761495814516237, + "unjoined_ms": 0.0, + "unjoined_pct": 0.0, + "other_ms": 0.32731399999999994, + "other_pct": 0.029630731113009328, + "note": "Stage rows attribute the command-buffers-OFF program (see the module docstring): kernel times are the same, the launch overhead the CUDA graphs remove is not. sum_ms = kernel rows + device_idle_ms; the residual against wall_ms is host_outside_span_ms (dispatch before the first kernel, teardown after the last).", + "per_stage_ms_per_lane": { + "border_relocator": 0.0045904249999999995, + "chi_squared_evidence": 0.0002544, + "curvature_matrix_F": 4.076632275, + "inversion_other": 0.7837371999999997, + "mapping_matrix": 0.0031336500000000004, + "mesh_construction": 0.00044720000000000003, + "mesh_dual_areas": 0.000328, + "mesh_locate_walk": 0.050051624999999975, + "mesh_qhull_callback": 0.012379400000000002, + "mesh_seed_argmin": 0.085445375, + "mixed_fusion": 1.9477566749999997, + "other": 0.016365699999999997, + "pdip_solve": 34.45193145000129, + "psf_convolution_mapping_matrix": 7.12922135, + "regularization_H": 0.0001808 + }, + "per_lane_divisor": 20, + "host_callback": { + "pure_callback_span_ms": 104.78720049999998, + "qhull_ms": 91.6190019, + "callback_body_ms_note": "the OUTERMOST matching body event, not a sum: under the probe the body appears twice (the wrapper and the timed re-implementation it calls) and summing them would count the same work twice", + "events_by_name": { + "pure_callback.0": { + "count": 200, + "ms": 104.78720049999998 + }, + "$callback.py:815 _wrapped_callback": { + "count": 200, + "ms": 96.43105349999996 + }, + "$callback.py:224 _callback": { + "count": 200, + "ms": 95.96219969999999 + }, + "$callback.py:74 pure_callback_impl": { + "count": 200, + "ms": 95.79210599999999 + }, + "$callback.py:69 __call__": { + "count": 200, + "ms": 91.92109969999998 + }, + "$delaunay.py:162 ": { + "count": 200, + "ms": 91.79117300000004 + }, + "$host_callback_probe.py:225 wrapped": { + "count": 200, + "ms": 91.6190019 + }, + "$host_callback_probe.py:160 _timed_tri_only": { + "count": 200, + "ms": 91.47305369999998 + }, + "$callback.py:822 ": { + "count": 800, + "ms": 0.28740469999999974 + }, + "ThenExecuteCallback:GetEventForComputeStreamSyncPoint": { + "count": 10, + "ms": 0.027517599999999996 + }, + "$__init__.py:132 _xla_gc_callback": { + "count": 2, + "ms": 0.00047400000000000003 + } + }, + "note": "HOST milliseconds per traced BATCH (the whole invocation), aggregated by name because the events nest. Not a row of the device table: the device pays for them as the idle gaps largest_idle_gaps names." + }, + "host_callback_ms": 104.78720049999998 + }, + "hlo_census": { + "status": "excluded", + "reason": "The legacy census anchors PyAutoArray source line numbers that moved after the phase-1 run. No batched attribution is published from unsupported anchors; the device-event table and wall reconciliation remain valid." + }, + "trace_split": { + "expected_calls": 10, + "executions_per_invocation": 1, + "method": "per-call (first-instruction recurrence)", + "note": "DECIDED IN CODE: the scalar arm's trace is split by trace_calls * B, so every lane's execution is its own block and the per-stage median is taken over all of them. The vmap arm's is split by trace_calls, one block per batched execution, and per_stage_ms_per_lane divides those rows by B." + } + }, + "scalar": { + "arm": "scalar", + "program": "jax.jit(fn), called B times", + "stands_for": "Nautilus(use_jax_vmap=False, use_jax_jit=True). Plain use_jax_vmap=False is UNJITTED and is NOT this arm", + "hlo_source": "jax.jit(fn).lower(lane_trees[0]) \u2014 the same program phase 1 traced", + "batch_wall_ms": 885.5649066001206, + "wall_production_nesting_ms": 885.5649066001206, + "wall_aot_command_buffers_on_ms": 887.3907229000906, + "wall_aot_command_buffers_off_ms": 895.7212022000022, + "command_buffer_delta_ms": 8.33047929991153, + "production_nesting_vs_aot_on_delta_ms": -1.825816299970029, + "production_nesting_vs_aot_on_delta_pct": -0.20575111423331768, + "wall_per_lane_ms": 44.27824533000603, + "wall_per_lane_command_buffers_off_ms": 44.78606011000011, + "traced_batch_wall_ms": 921.1332391001633, + "untraced_batch_wall_ms": 893.5885384998983, + "traced_wall_per_lane_ms": 46.05666195500817, + "callback_count_per_call": 20.0, + "callback_count_per_lane": 1.0, + "callback_expectation": "1 per likelihood evaluation, B per batch", + "host_qhull_ms": 91.44411729830608, + "host_tables_ms": 2.635560899943812, + "host_qhull_ms_per_lane": 4.572205864915304, + "host_tables_ms_per_lane": 0.1317780449971906, + "host_callback_probe": { + "calls": 200, + "qhull_ms_total": 914.4411729830608, + "tables_ms_total": 26.355608999438118, + "total_ms_total": 940.7967819824989, + "qhull_ms_mean": 4.572205864915304, + "tables_ms_mean": 0.1317780449971906, + "total_ms_mean": 4.703983909912495, + "non_finite_calls": 0, + "n_points": [ + 1500 + ] + }, + "host_callback_records_first": [ + { + "n_points": 1500, + "qhull_ms": 4.811684000742389, + "tables_ms": 0.2024770001298748, + "total_ms": 5.014161000872264, + "finite": true + }, + { + "n_points": 1500, + "qhull_ms": 4.4830970000475645, + "tables_ms": 0.14030899910721928, + "total_ms": 4.623405999154784, + "finite": true + }, + { + "n_points": 1500, + "qhull_ms": 4.542815000604605, + "tables_ms": 0.14802999794483185, + "total_ms": 4.690844998549437, + "finite": true + }, + { + "n_points": 1500, + "qhull_ms": 4.565964998619165, + "tables_ms": 0.12157899982412346, + "total_ms": 4.687543998443289, + "finite": true + } + ], + "device_idle_ms": 7.323359934999999, + "device_idle_ms_per_lane": 7.323359934999999, + "trace": { + "parser": "ProfileData.from_file(xplane) + as_text() + stack_frame_index(proto field 17)", + "stage_audit": { + "mixed_fusion": [ + { + "instruction": "loop_divide_gather_fusion", + "ms": 1.02100832, + "opcode": "fusion", + "shape": "(f64[15361,1,1,1500]{3,2,1,0}, f64[15361,1,1,1500]{3,2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_broadcast_fusion.4", + "ms": 0.225944575, + "opcode": "fusion", + "shape": "f64[1500,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_reduce_fusion.13", + "ms": 0.1212174, + "opcode": "fusion", + "shape": "f64[92,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123 (data_vector_via_blurred_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:67 (InversionImagingMapping.data_vector)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:699 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_reduce_fusion.17", + "ms": 0.11455684000000006, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163 (mapped_reconstructed_data_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:120 (InversionImagingMapping._mapped_reconstructed_data_dict_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:196 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "loop_broadcast_fusion.2", + "ms": 0.11049801, + "opcode": "fusion", + "shape": "f64[15361,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:342", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:342 (mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:283 (Mapper.mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:91 (AbstractInversionImaging._mapping_matrix_for_convolution_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:137 (AbstractInversionImaging.operated_mapping_matrix_list)" + ] + }, + { + "instruction": "input_multiply_transpose_fusion", + "ms": 0.10967261499999995, + "opcode": "fusion", + "shape": "(f64[1500,1500]{1,0}, f64[1500,1500]{1,0}, f64[1500,1500]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:237 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:274 (_certified_positive_only_from)" + ] + } + ], + "border_relocator": [ + { + "instruction": "eigh.45", + "ms": 0.07491276499999945, + "opcode": "custom-call", + "shape": "(f64[2,2]{0,1}, f64[2]{0}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "custom-call.2", + "ms": 0.007952945000000019, + "opcode": "custom-call", + "shape": "(f64[2,2]{1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_reduce_fusion.18", + "ms": 0.005679990000000003, + "opcode": "fusion", + "shape": "(f64[], f64[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:269", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:269 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_add_fusion.7", + "ms": 0.0035153400000000018, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:423 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:208 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_add_fusion.9", + "ms": 0.0033790250000000047, + "opcode": "fusion", + "shape": "f64[1500]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:458 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_concatenate_fusion.12", + "ms": 0.002400159999999999, + "opcode": "fusion", + "shape": "f64[392,2]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:238", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:238 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + } + ], + "mesh_construction": [ + { + "instruction": "input_concatenate_fusion.7", + "ms": 0.001950709999999996, + "opcode": "fusion", + "shape": "f64[1500,2]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:820", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:820 (InterpolatorDelaunay.mesh_grid_xy)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:847 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + } + ], + "mesh_qhull_callback": [ + { + "instruction": "pure_callback.4", + "ms": 0.010635229999999964, + "opcode": "custom-call", + "shape": "(s32[3000,3]{1,0}, s32[3000,3]{1,0}, s32[1500]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:161", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:161 (_jax_delaunay_tables)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:405 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + } + ], + "other": [ + { + "instruction": "copy.106", + "ms": 0.04191224999999906, + "opcode": "copy", + "shape": "f64[1,1024,2]{2,1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.70", + "ms": 0.017179350000000006, + "opcode": "copy", + "shape": "s32[21361]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.75", + "ms": 0.0019640150000000043, + "opcode": "copy", + "shape": "s64[1500]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.105", + "ms": 0.0018179299999999986, + "opcode": "copy", + "shape": "s32[]", + "source": "", + "stack": [] + }, + { + "instruction": "copy.104", + "ms": 0.001758395000000002, + "opcode": "copy", + "shape": "s64[]", + "source": "", + "stack": [] + }, + { + "instruction": "copy.61", + "ms": 0.0016627149999999993, + "opcode": "copy", + "shape": "s32[]", + "source": "", + "stack": [] + } + ], + "mesh_seed_argmin": [ + { + "instruction": "input_reduce_fusion", + "ms": 0.1494094300000016, + "opcode": "fusion", + "shape": "(f64[1024]{0}, s64[1024]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:191", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:191 (_nearest_vertex_seed_from..argmin_chunk)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)" + ] + }, + { + "instruction": "loop_dynamic_update_slice_fusion", + "ms": 0.04105313999999861, + "opcode": "fusion", + "shape": "s32[21,1024]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_add_fusion", + "ms": 0.0318532000000001, + "opcode": "fusion", + "shape": "s64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_broadcast_fusion", + "ms": 0.0019633499999999983, + "opcode": "fusion", + "shape": "s32[21,1024]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "pdip_solve": [ + { + "instruction": "cholesky.60", + "ms": 7.598958304999966, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "cholesky.80", + "ms": 5.308138535000001, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:106", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:106 (factorize_kkt)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:212 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve.1", + "ms": 1.3578426950000397, + "opcode": "custom-call", + "shape": "(f64[1500,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "triangular-solve", + "ms": 1.1759390649999863, + "opcode": "custom-call", + "shape": "(f64[1500,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "cholesky.110", + "ms": 0.8948393449999995, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:297 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:274 (_certified_positive_only_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:496 (reconstruction_positive_only_from)" + ] + }, + { + "instruction": "cholesky.100", + "ms": 0.8664200699999989, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:237 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:274 (_certified_positive_only_from)" + ] + } + ], + "regularization_H": [ + { + "instruction": "input_scatter_fusion.10", + "ms": 0.002064634999999996, + "opcode": "fusion", + "shape": "f64[1500,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:615", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:615 (pixel_splitted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:137 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_concatenate_fusion.8", + "ms": 0.001876489999999998, + "opcode": "fusion", + "shape": "pred[3]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:93", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:93 (split_points_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:410 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + }, + { + "instruction": "input_concatenate_fusion.9", + "ms": 0.0018718299999999982, + "opcode": "fusion", + "shape": "pred[3]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:91", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:91 (split_points_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:410 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + }, + { + "instruction": "input_concatenate_fusion.10", + "ms": 0.0018609449999999988, + "opcode": "fusion", + "shape": "pred[3]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:90", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:90 (split_points_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:410 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + }, + { + "instruction": "input_concatenate_fusion", + "ms": 0.0017558350000000003, + "opcode": "fusion", + "shape": "s32[1500,2]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:615", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:615 (pixel_splitted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:137 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_concatenate_fusion.11", + "ms": 0.0015556699999999994, + "opcode": "fusion", + "shape": "pred[3]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:88", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:88 (split_points_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:410 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + } + ], + "mesh_locate_walk": [ + { + "instruction": "loop_reduce_fusion", + "ms": 0.02563361500000045, + "opcode": "fusion", + "shape": "(f64[21361]{0}, s64[21361]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:264", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:264 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:264 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)" + ] + }, + { + "instruction": "input_reduce_fusion.1", + "ms": 0.025435760000000616, + "opcode": "fusion", + "shape": "pred[196]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:288", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:288 (_walk_from_seed..cond)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)" + ] + }, + { + "instruction": "loop_or_select_fusion", + "ms": 0.022603170000000325, + "opcode": "fusion", + "shape": "(s32[21361]{0}, pred[21361]{0}, pred[21361]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:270", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:270 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)" + ] + }, + { + "instruction": "loop_select_fusion", + "ms": 0.020302364999999784, + "opcode": "fusion", + "shape": "s32[21361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:242", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:242 (_walk_from_seed..weights_of)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:262 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)" + ] + }, + { + "instruction": "input_reduce_fusion.2", + "ms": 0.016408779999999915, + "opcode": "fusion", + "shape": "pred[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:288", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:288 (_walk_from_seed..cond)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)" + ] + }, + { + "instruction": "while.34", + "ms": 0.014675164999999662, + "opcode": "while", + "shape": "(s32[], s32[21361]{0}, pred[21361]{0}, pred[21361]{0}, s32[3000,3]{1,0}, /*index=5*/f64[1500,2]{1,0}, f64[21361,2]{1,0}, s32[3000,3]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "psf_convolution_mapping_matrix": [ + { + "instruction": "input_scatter_fusion", + "ms": 1.9909163300000001, + "opcode": "fusion", + "shape": "f64[1500,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.19.0", + "ms": 1.761691964999997, + "opcode": "fft", + "shape": "f64[1500,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.15.0", + "ms": 1.3703491899999993, + "opcode": "fft", + "shape": "c128[1500,180,91]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.17.0", + "ms": 0.9796025600000007, + "opcode": "fft", + "shape": "c128[1500,91,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_transpose_fusion.4", + "ms": 0.5137482899999998, + "opcode": "fusion", + "shape": "c128[1500,91,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "wrapped_transpose", + "ms": 0.49763212999999995, + "opcode": "fusion", + "shape": "c128[1500,180,91]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + } + ], + "inversion_other": [ + { + "instruction": "cholesky.120", + "ms": 0.8974949200000008, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1078 (AbstractInversion.log_det_curvature_reg_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:347 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "cholesky.130", + "ms": 0.8941805499999996, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1157 (AbstractInversion.log_det_regularization_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:348 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "loop_reduce_window_fusion.1", + "ms": 0.0027814400000000035, + "opcode": "fusion", + "shape": "s64[94,16]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "loop_reduce_window_fusion", + "ms": 0.002690549999999995, + "opcode": "fusion", + "shape": "s64[6,16]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "loop_broadcast_convert_fusion", + "ms": 0.002170080000000002, + "opcode": "fusion", + "shape": "(s32[1500]{0}, s64[1500]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527 (AbstractInversion.zeroed_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:567 (AbstractInversion.solve_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:684 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_scatter_fusion.5", + "ms": 0.0019360049999999987, + "opcode": "fusion", + "shape": "s64[1500]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527 (AbstractInversion.zeroed_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:567 (AbstractInversion.solve_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:684 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "mapping_matrix": [ + { + "instruction": "input_reduce_fusion.31", + "ms": 0.0028889249999999927, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:120 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + } + ], + "curvature_matrix_F": [ + { + "instruction": "cublas-lt-matmul.2", + "ms": 4.203954090000001, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "chi_squared_evidence": [ + { + "instruction": "loop_multiply_fusion.2", + "ms": 0.002985745000000001, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:300", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:300 (AbstractNDArray.__pow__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:60 (unwrap_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:35 (to_new_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:78 (chi_squared_map_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:78 (AbstractFit.chi_squared_map)" + ] + } + ] + }, + "stage_audit_note": "The HLO instructions that contributed most of each stage's milliseconds, with their full source stack. A stage row is only as good as the rules that built it; this is how a reader checks a row against the HLO instead of trusting it.", + "untraced_wall_ms": 44.679426924994914, + "reconciliation_vs_untraced_pct": -15.467513720792189, + "wall_basis": "wall_ms is the TRACED run's wall, the run these kernel durations came from. untraced_wall_ms is the same executable without the profiler; the difference is the profiler's overhead and belongs in neither the stages nor the idle row.", + "calls": 200, + "call_split": "per-call (first-instruction recurrence)", + "call_blocks": 200, + "events": 144140, + "streams": [ + "Stream #14(MemcpyD2D,MemcpyH2D,Compute,MemcpyD2H,Memset)" + ], + "per_stage_ms": { + "border_relocator": { + "median_ms": 0.1013135, + "min_ms": 0.10057300000000001, + "max_ms": 0.10214500000000001 + }, + "chi_squared_evidence": { + "median_ms": 0.002976, + "min_ms": 0.002848, + "max_ms": 0.003296 + }, + "curvature_matrix_F": { + "median_ms": 4.202033500000001, + "min_ms": 4.179871, + "max_ms": 4.304915 + }, + "inversion_other": { + "median_ms": 1.803238, + "min_ms": 1.786004, + "max_ms": 1.8153169999999998 + }, + "mapping_matrix": { + "median_ms": 0.00288, + "min_ms": 0.002879, + "max_ms": 0.002913 + }, + "memset": { + "median_ms": 0.034432000000000004, + "min_ms": 0.009984, + "max_ms": 0.09769400000000002 + }, + "mesh_construction": { + "median_ms": 0.001952, + "min_ms": 0.00192, + "max_ms": 0.001984 + }, + "mesh_locate_walk": { + "median_ms": 0.1489275, + "min_ms": 0.130945, + "max_ms": 0.184289 + }, + "mesh_qhull_callback": { + "median_ms": 0.010592, + "min_ms": 0.010176, + "max_ms": 0.011104 + }, + "mesh_seed_argmin": { + "median_ms": 0.22428450000000014, + "min_ms": 0.22387400000000016, + "max_ms": 0.22467400000000018 + }, + "mixed_fusion": { + "median_ms": 1.986319, + "min_ms": 1.9782960000000003, + "max_ms": 1.999138 + }, + "other": { + "median_ms": 0.06702349999999999, + "min_ms": 0.06371199999999999, + "max_ms": 0.07388899999999998 + }, + "pdip_solve": { + "median_ms": 14.734703000000003, + "min_ms": 2.4263630000000003, + "max_ms": 52.05862700000007 + }, + "psf_convolution_mapping_matrix": { + "median_ms": 7.113619999999999, + "min_ms": 7.100212, + "max_ms": 7.1291709999999995 + }, + "regularization_H": { + "median_ms": 0.010976, + "min_ms": 0.010848, + "max_ms": 0.011328 + } + }, + "stage_order": [ + "border_relocator", + "mesh_qhull_callback", + "mesh_seed_argmin", + "mesh_locate_walk", + "mesh_construction", + "mapping_matrix", + "psf_convolution_mapping_matrix", + "curvature_matrix_F", + "regularization_H", + "pdip_solve", + "chi_squared_evidence", + "inversion_other", + "mixed_fusion", + "other", + "memset" + ], + "mixed_fusion": { + "ms": 1.986319, + "constituent_stage_sets": { + "curvature_matrix_F + psf_convolution_mapping_matrix": 1.02100832, + "pdip_solve + psf_convolution_mapping_matrix": 0.225944575, + "data_vector_D + pdip_solve": 0.12488812000000023, + "mapped_reconstruction + pdip_solve": 0.11455684000000006, + "mapping_matrix + pdip_solve": 0.11286072999999995, + "curvature_reg_reduce_gather + inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": 0.10967261499999995, + "pdip_solve + regularization_H": 0.045423489999999955, + "inversion_other + pdip_solve + regularization_H": 0.024202355, + "inversion_other + pdip_solve": 0.02294705499999994, + "inversion_other + mapping_matrix + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin + pdip_solve": 0.02113966000000001, + "inversion_other + mesh_construction + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin + pdip_solve + regularization_H": 0.018736469999999984, + "inversion_other + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + pdip_solve + regularization_H": 0.014469269999999989, + "pdip_solve + ray_trace_data_grid": 0.013680334999999941, + "border_relocator + pdip_solve": 0.013327340000000023, + "inversion_other + mapping_matrix + mesh_construction + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin": 0.011626745, + "grids_and_structures + mass_profile_deflections + pdip_solve": 0.010069740000000006, + "grids_and_structures + mass_profile_deflections + pdip_solve + ray_trace_data_grid": 0.008905150000000004, + "chi_squared_evidence + pdip_solve": 0.00768813999999998, + "inversion_other + mesh_construction + mesh_seed_argmin + pdip_solve + regularization_H": 0.007145729999999994, + "inversion_other + mesh_dual_areas + mesh_locate_walk": 0.006733585000000049, + "inversion_other + mesh_construction + pdip_solve + regularization_H": 0.006547775000000004, + "grids_and_structures + mass_profile_deflections + ray_trace_data_grid": 0.005420630000000002, + "inversion_other + pdip_solve + ray_trace_data_grid": 0.005286555000000029, + "inversion_other + regularization_H": 0.005250225000000012, + "inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": 0.004806700000000002, + "inversion_other + mapped_reconstruction": 0.0037300700000000003, + "mapping_matrix + pdip_solve + regularization_H": 0.0034841699999999948, + "inversion_other + mesh_construction + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin": 0.0031295899999999994, + "inversion_other + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin": 0.0029588600000000054, + "inversion_other + mesh_construction + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin + regularization_H": 0.0027115199999999903, + "inversion_other + mesh_dual_areas + mesh_locate_walk + pdip_solve": 0.002606104999999996, + "inversion_other + mesh_locate_walk + mesh_seed_argmin": 0.0024943900000000047, + "inversion_other + mesh_interpolation_weights": 0.0021585600000000042, + "chi_squared_evidence + inversion_other": 0.0017876849999999987 + }, + "example_kernels": { + "curvature_matrix_F + psf_convolution_mapping_matrix": [ + "loop_divide_gather_fusion" + ], + "pdip_solve + psf_convolution_mapping_matrix": [ + "loop_broadcast_fusion.4" + ], + "data_vector_D + pdip_solve": [ + "input_reduce_fusion.13", + "input_reduce_fusion.29" + ], + "mapped_reconstruction + pdip_solve": [ + "input_reduce_fusion.17" + ], + "mapping_matrix + pdip_solve": [ + "loop_broadcast_fusion.2", + "loop_divide_fusion" + ], + "curvature_reg_reduce_gather + inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": [ + "input_multiply_transpose_fusion" + ], + "pdip_solve + regularization_H": [ + "loop_select_fusion.5", + "input_transpose_fusion.5" + ], + "inversion_other + pdip_solve + regularization_H": [ + "input_transpose_fusion.6" + ], + "inversion_other + pdip_solve": [ + "input_reduce_fusion.15", + "loop_log_fusion", + "input_reduce_fusion.16", + "input_reduce_fusion.20" + ], + "inversion_other + mapping_matrix + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin + pdip_solve": [ + "input_scatter_fusion.6", + "input_scatter_fusion.3" + ] + }, + "prorated_estimate_ms": { + "psf_convolution_mapping_matrix": 0.6234764475, + "curvature_matrix_F": 0.51050416, + "pdip_solve": 0.3918166617380953, + "mapped_reconstruction": 0.08227965300000002, + "inversion_other": 0.06893565307142857, + "data_vector_D": 0.062444060000000114, + "mapping_matrix": 0.06217200333333331, + "regularization_H": 0.04317189248809522, + "reconstruction_scatter": 0.02313619799999999, + "curvature_reg_reduce_gather": 0.02193452299999999, + "mesh_construction": 0.014305502988095234, + "ray_trace_data_grid": 0.012635516666666647, + "mesh_locate_walk": 0.012555386154761919, + "mesh_interpolation_weights": 0.012318693238095237, + "mesh_seed_argmin": 0.011088477571428569, + "mesh_dual_areas": 0.008443200416666682, + "grids_and_structures": 0.00738974416666667, + "mass_profile_deflections": 0.00738974416666667, + "border_relocator": 0.006663670000000011, + "chi_squared_evidence": 0.004737912499999989 + }, + "prorated_note": "ESTIMATE ONLY \u2014 a mixed fusion's time split equally across the stages its constituents span. Never summed into the measured table, never reconciled." + }, + "other_sources_ms": { + "copy.106": 0.04191224999999906, + "copy.70": 0.017179350000000006, + "copy.75": 0.0019640150000000043, + "copy.105": 0.0018179299999999986, + "copy.104": 0.001758395000000002, + "copy.61": 0.0016627149999999993, + "copy.103": 0.0006374550000000004, + "copy.40": 0.0005414449999999996 + }, + "device_span_ms": 46.05030798, + "device_busy_ms": 38.726948045, + "device_idle_ms": 7.323359934999999, + "largest_idle_gaps": [ + { + "gap_ms": 5.59937, + "after": "pure_callback.4", + "before": "pure_callback.4" + }, + { + "gap_ms": 0.035807, + "after": "cholesky.60", + "before": "Memset 3" + }, + { + "gap_ms": 0.035455, + "after": "pure_callback.4", + "before": "copy.105" + }, + { + "gap_ms": 0.034399, + "after": "input_concatenate_fusion.7", + "before": "pure_callback.4" + }, + { + "gap_ms": 0.029407, + "after": "copy.70", + "before": "input_reduce_fusion.1" + }, + { + "gap_ms": 0.022912, + "after": "eigh.45", + "before": "eigh.45" + }, + { + "gap_ms": 0.021888, + "after": "input_reduce_fusion.28", + "before": "loop_broadcast_fusion.4" + }, + { + "gap_ms": 0.021631, + "after": "loop_add_fusion.1", + "before": "loop_select_fusion" + } + ], + "kernel_ms": 30.445270500000003, + "sum_ms": 37.768630435000006, + "wall_ms": 46.05666195500817, + "host_outside_span_ms": 0.006353975008167367, + "reconciliation_pct": -17.99529355406732, + "unjoined_ms": 0.0, + "unjoined_pct": 0.0, + "other_ms": 0.06702349999999999, + "other_pct": 0.14552400707084223, + "note": "Stage rows attribute the command-buffers-OFF program (see the module docstring): kernel times are the same, the launch overhead the CUDA graphs remove is not. sum_ms = kernel rows + device_idle_ms; the residual against wall_ms is host_outside_span_ms (dispatch before the first kernel, teardown after the last).", + "per_stage_ms_per_lane": { + "border_relocator": 0.1013135, + "chi_squared_evidence": 0.002976, + "curvature_matrix_F": 4.202033500000001, + "inversion_other": 1.803238, + "mapping_matrix": 0.00288, + "memset": 0.034432000000000004, + "mesh_construction": 0.001952, + "mesh_locate_walk": 0.1489275, + "mesh_qhull_callback": 0.010592, + "mesh_seed_argmin": 0.22428450000000014, + "mixed_fusion": 1.986319, + "other": 0.06702349999999999, + "pdip_solve": 14.734703000000003, + "psf_convolution_mapping_matrix": 7.113619999999999, + "regularization_H": 0.010976 + }, + "per_lane_divisor": 1, + "host_callback": { + "pure_callback_span_ms": 101.56374749999996, + "qhull_ms": 94.28838409999997, + "callback_body_ms_note": "the OUTERMOST matching body event, not a sum: under the probe the body appears twice (the wrapper and the timed re-implementation it calls) and summing them would count the same work twice", + "events_by_name": { + "pure_callback.4": { + "count": 200, + "ms": 101.56374749999996 + }, + "$callback.py:815 _wrapped_callback": { + "count": 200, + "ms": 99.82454449999999 + }, + "$callback.py:224 _callback": { + "count": 200, + "ms": 99.32401829999998 + }, + "$callback.py:74 pure_callback_impl": { + "count": 200, + "ms": 99.11897000000002 + }, + "$callback.py:69 __call__": { + "count": 200, + "ms": 94.63252060000005 + }, + "$delaunay.py:162 ": { + "count": 200, + "ms": 94.49607710000001 + }, + "$host_callback_probe.py:225 wrapped": { + "count": 200, + "ms": 94.28838409999997 + }, + "$host_callback_probe.py:160 _timed_tri_only": { + "count": 200, + "ms": 94.1085758 + }, + "ThenExecuteCallback:GetEventForComputeStreamSyncPoint": { + "count": 200, + "ms": 0.39008080000000017 + }, + "$callback.py:822 ": { + "count": 800, + "ms": 0.29828569999999965 + }, + "$__init__.py:132 _xla_gc_callback": { + "count": 2, + "ms": 0.000334 + } + }, + "note": "HOST milliseconds per traced BATCH (the whole invocation), aggregated by name because the events nest. Not a row of the device table: the device pays for them as the idle gaps largest_idle_gaps names." + }, + "host_callback_ms": 101.56374749999996 + }, + "hlo_census": { + "status": "excluded", + "reason": "The legacy census anchors PyAutoArray source line numbers that moved after the phase-1 run. No batched attribution is published from unsupported anchors; the device-event table and wall reconciliation remain valid." + }, + "trace_split": { + "expected_calls": 200, + "executions_per_invocation": 20, + "method": "per-call (first-instruction recurrence)", + "note": "DECIDED IN CODE: the scalar arm's trace is split by trace_calls * B, so every lane's execution is its own block and the per-stage median is taken over all of them. The vmap arm's is split by trace_calls, one block per batched execution, and per_stage_ms_per_lane divides those rows by B." + } + } + }, + "certification_report": { + "source": "vmap arm, library solve observed through its stats= out-dict (PyAutoArray #566) and jax.debug.callback(..., ordered=True); ordered because the unordered batching rule returns the lanes permuted. Untimed, separately compiled; max rel diff of its log likelihoods vs the timed arm's: 3.348e-06", + "rows": 20, + "pdip_iter": "NOT AVAILABLE per lane without changing library numerics. The fallback branch calls the library's own reconstruction_positive_only_from, which returns the solution alone \u2014 jax_nnls.solve_nnls' iteration count is discarded inside the library's custom_vjp primal. The PDIP while_loop's cost is in the pdip_solve stage row of each arm's device table instead, which is a max-over-lanes quantity under vmap because every lane runs the same fixed kernel sequence.", + "passes_semantics": "library `passes`: restricted active-set passes run (jax_active_set.solve_certified)" + }, + "lane_construction": { + "draws_sha256": "2ef9de62dd3cb04c203df7c6177baeafe26acbe41f5db2137c5891526b265fcf", + "lane_rows": [ + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319 + ], + "calls": [ + 15 + ], + "stage": "pix1", + "regularization_range": { + "galaxies.source.pixelization.regularization.inner_coefficient": { + "min": 2.161360256524811e-06, + "max": 609.7498208301598 + }, + "galaxies.source.pixelization.regularization.outer_coefficient": { + "min": 3.4330906156470037e-06, + "max": 159.11676392313697 + }, + "galaxies.source.pixelization.regularization.signal_scale": { + "min": 0.12452271846719754, + "max": 0.9404155018121758 + } + }, + "phases": [ + "exploration" + ], + "window_rule": "nautilus_batches.timed_window: consecutive captured calls, in call order, from the FIRST call that is not a prior batch, concatenated and truncated to B; at B == n_batch exactly one real Nautilus batch. Falls back to the latest B lanes if the post-prior lanes run out; never repeats a lane.", + "note": "Lane k is captured lane lane_rows[k]: the mass AND shear of a real Nautilus proposal (nautilus_batch_capture.py), lens light fixed at S3, the S3 light-subtracted dataset shared by every lane. `offsets` in the lane table are the mass offsets from the fiducial; the shear is in the capture file." + }, + "captured": { + "batches_path": "/mnt/ral/jnightin/autolens_profiling_wt/certified-solver-phase-c1-lane-rate/results/breakdown/imaging/nautilus_batches_delaunay_pix1.npz", + "batches_sha256": "e71a5e23026b342d1ff4359b8fb914a87980d8aea0060659d2334dcfa3215c00", + "schema_version": 2, + "n_calls": 932, + "n_lanes": 18640, + "call_sizes_seen": [ + 20 + ], + "calls_by_phase": { + "prior": 15, + "exploration": 917 + }, + "parameter_paths": [ + "galaxies.source.pixelization.regularization.inner_coefficient", + "galaxies.source.pixelization.regularization.outer_coefficient", + "galaxies.source.pixelization.regularization.signal_scale", + "galaxies.lens.mass.centre.centre_0", + "galaxies.lens.mass.centre.centre_1", + "galaxies.lens.mass.einstein_radius", + "galaxies.lens.mass.ell_comps.ell_comps_0", + "galaxies.lens.mass.ell_comps.ell_comps_1", + "galaxies.lens.shear.gamma_1", + "galaxies.lens.shear.gamma_2" + ], + "stage": "pix1", + "regularization": { + "class": "AdaptSplit", + "free": true, + "priors": { + "inner_coefficient": [ + "LogUniform", + 1e-06, + 1000000.0 + ], + "outer_coefficient": [ + "LogUniform", + 1e-06, + 1000000.0 + ], + "signal_scale": [ + "Uniform", + 0.0, + 1.0 + ] + }, + "priors_source": "PyAutoGalaxy packaged config/priors/regularization (adapt_split.yaml / constant.yaml); adapt_split.yaml is identical to euclid_strong_lens_modeling_pipeline/config/priors/regularization/adapt_split.yaml" + }, + "nautilus": { + "departures_from_production": [ + "mass/shear priors are the phase-B cell's Gaussians, not chained from source_lp", + "no positions likelihood", + "the cell's mesh (Hilbert 1500, weight_power 1) in both stages; source_pix_2 redraws a 500-vertex Hilbert grid at weight_power 3.5", + "seeded (production passes no seed)", + "quick updates disabled (iterations_per_quick_update=1e12; render-only)", + "NullPaths: no output directory, so no checkpoint and one Sampler.run call", + "post-fit perform_update skipped (samples / latent variables never built)" + ], + "n_batch": 20, + "n_like_max": 40000, + "n_live": 150, + "number_of_cores": 1, + "production_reference": "euclid_strong_lens_modeling_pipeline/scripts/full_model.py source_pix_1 (n_live=150) / source_pix_2 (n_live=75): af.Nautilus(n_batch=20, **SettingsSearch.search_dict) with use_jax_vmap=True and number_of_cores=1 (SettingsSearch defaults)", + "production_stage": "source_pix_1", + "seed": 1, + "stage": "pix1", + "use_jax_vmap": true, + "version": "1.0.5" + }, + "capture_fit_status": "sampling complete (n_like_max or convergence); post-fit result skipped", + "capture_library_revisions": { + "PyAutoArray": { + "head": "7fa8d2714f7da43fec2b23c31bff580764831670", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoArray" + }, + "PyAutoFit": { + "head": "a736840127be7a3c21e15a5c945e94d8f1082983", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoFit" + }, + "PyAutoGalaxy": { + "head": "70a61e26cd715cefe7012a38285698091246a8a4", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy" + }, + "PyAutoLens": { + "head": "86054bbc19baa2f710a12e04a94fa27ab37cc354", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoLens" + }, + "PyAutoNerves": { + "head": "1fa613aa8d89a79613009fb66f5b4e2d21deb57a", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoNerves" + } + }, + "fingerprint_check": { + "fields": [ + "mesh", + "source_pixels", + "dataset_sha256", + "regularization_class", + "regularization_s0_fiducial", + "border_relocator", + "use_mixed_precision", + "log_evidence_s3_library" + ], + "not_identity": "the regularization coefficients: free per lane since the capture frees them", + "log_evidence_s3_library_rel_diff": 0.0, + "passed": true + }, + "timed_window_vs_capture_pdip": { + "reference": "the capture's own figure of merit (library PDIP, Fitness.call_wrap jax.jit(jax.vmap(call)) over parameter vectors) for the same lanes", + "compared_against": "this cell's jit(vmap) library-PDIP reference", + "n_compared": 20, + "max_rel_diff": 2.381292063833651e-06, + "max_abs_diff_nats": 0.42177228338550776, + "gated": false, + "note": "RECORDED, NOT GATED: proves the lane trees rebuilt here are the models the sampler evaluated (a wrong parameter mapping shows up as nats, not 1e-10)." + } + }, + "matched": { + "vmap_wall_per_lane_ms": 54.36106531500627, + "scalar_wall_per_lane_ms": 44.27824533000603, + "speedup_vmap_over_scalar": 0.8145212952216208, + "note": "Both walls are the PRODUCTION nesting of their arm, measured in one process on the same B lanes with the SAME library Settings (no injection). A speedup below 1 means the batch is slower per lane than B sequential jitted calls." + }, + "solver_source": "library", + "solver": "certified", + "certified_fallback": "pdip", + "certified_pass_budget": 16, + "certified_pass_budget_basis": "config default (Settings().certified_pass_budget)", + "certified_tau_rel": 1e-09, + "solver_used": "certified", + "solver_check": { + "solver_used": "certified", + "solver_used_source": "AbstractInversion.positive_only_solver_used on the fiducial S3 inversion, built eagerly on the JAX backend (AnalysisImaging(use_jax=True).fit_from) with the arms' Settings", + "reference_solver_used": "pdip", + "traced_solver_kwargs_jax": [ + "certified" + ], + "observed_calls_jax": 1, + "report_rows": 20, + "report_vs_timed_arm_max_rel_diff": 3.3480907795757523e-06 + }, + "lanes_certified": [ + true, + false, + true, + true, + true, + true, + true, + true, + true, + true, + true, + false, + true, + true, + false, + false, + true, + false, + false, + false + ], + "lanes_passes": [ + 10, + 16, + 0, + 0, + 10, + 4, + 0, + 1, + 4, + 0, + 2, + 16, + 9, + 2, + 16, + 16, + 16, + 16, + 16, + 16 + ], + "uncertified_lanes": 7, + "per_lane_certification_note": "certified / passes come from the library's own solve through its stats= out-dict (PyAutoArray #566): passes is the number of restricted active-set passes the library ran (0 when the unconstrained solve was already non-negative), certified is its KKT certificate. With certified_fallback=pdip a False lane returned the PDIP solution; with none it returned the last uncertified iterate. null for a library-PDIP row (no certificate).", + "gate": { + "pre_registered": true, + "gated": [ + "per lane: jit(vmap) arm vs jit(vmap) library PDIP <= lane_rtol relative", + "per lane: scalar jit arm vs scalar jit library PDIP <= lane_rtol relative" + ], + "recorded_not_gated": [ + "per lane: jit(vmap) arm vs scalar jit arm (rel_diff, abs_diff_nats)", + "per lane: jit(vmap) library PDIP vs scalar jit library PDIP", + "uncertified_lanes (certified_fallback=none rows)" + ], + "lanes_failed": 4, + "passed": false, + "policy_eligible": false, + "note": "Pre-registered before submission (module docstring; submit header). Phase 3 (results/notes/hst_gpu_residue_phase3_psf_2026_09.md) placed phase 2's ~2.5e-9 certified-vs-PDIP residual BETWEEN the jit(vmap) and scalar-jit compositions, not in the solver \u2014 so each arm is gated against the library-PDIP reference of its OWN composition, and the cross-composition difference is recorded with its nats. A certified_fallback=none row is policy-eligible only if every lane certifies AND passes the gate. Timing is never gated." + }, + "library_revisions": { + "PyAutoArray": { + "head": "3de624b5b91a4efa130dc3cb0a3a0f06f85025a3", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoArray", + "module_file": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/__init__.py" + }, + "PyAutoFit": { + "head": "dd9fbe0aab60c4a57702b1444ca031b317c91331", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoFit", + "module_file": "/mnt/ral/jnightin/PyAuto/PyAutoFit/autofit/__init__.py" + }, + "PyAutoGalaxy": { + "head": "70a61e26cd715cefe7012a38285698091246a8a4", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy", + "module_file": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/__init__.py" + }, + "PyAutoLens": { + "head": "86054bbc19baa2f710a12e04a94fa27ab37cc354", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoLens", + "module_file": "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/__init__.py" + }, + "autoarray_file": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/__init__.py" + } + }, + "headline_arm_note": "`trace`, `hlo_census`, `command_buffers` and `trace_timing` above describe the scalar arm \u2014 the program phase 1 traced. Both arms' full blocks, the lane table and the matched comparison are under `vmap`." +} \ No newline at end of file diff --git a/results/breakdown/imaging/fixed_light_trace_delaunay_jitvmap20_captured_pix1_libcertified_fbon_b16_hpc_a100_fp64_fixed_light_trace.png b/results/breakdown/imaging/fixed_light_trace_delaunay_jitvmap20_captured_pix1_libcertified_fbon_b16_hpc_a100_fp64_fixed_light_trace.png new file mode 100644 index 000000000..03df520e3 Binary files /dev/null and b/results/breakdown/imaging/fixed_light_trace_delaunay_jitvmap20_captured_pix1_libcertified_fbon_b16_hpc_a100_fp64_fixed_light_trace.png differ diff --git a/results/breakdown/imaging/fixed_light_trace_delaunay_jitvmap20_captured_pix1_libpdip_fbon_b16_hpc_a100_fp64_fixed_light_trace.json b/results/breakdown/imaging/fixed_light_trace_delaunay_jitvmap20_captured_pix1_libpdip_fbon_b16_hpc_a100_fp64_fixed_light_trace.json new file mode 100644 index 000000000..389b5d359 --- /dev/null +++ b/results/breakdown/imaging/fixed_light_trace_delaunay_jitvmap20_captured_pix1_libpdip_fbon_b16_hpc_a100_fp64_fixed_light_trace.json @@ -0,0 +1,6726 @@ +{ + "device": { + "backend": "gpu", + "device": "cuda:0", + "hostname": "euclid-ral-gpu-2", + "xla_flags": "--xla_disable_hlo_passes=constant_folding --xla_gpu_autotune_level=0 --xla_gpu_enable_triton_gemm=false", + "omp_num_threads": null, + "cpu_count": 124, + "jax_compilation_cache_dir": "/mnt/ral/jnightin/autolens_profiling_wt/certified-solver-phase-c1-lane-rate/output/jax_cache/fixed_light_lanerate_delaunay_pix1_time_20_pdip_on_350768_11", + "autotune_cache_entries_at_start": 0, + "cache_fresh": true, + "nvidia_smi": "NVIDIA A100 80GB PCIe, 35457 MiB, 81920 MiB" + }, + "machine": { + "cpu_model": "AMD EPYC 7702 64-Core Processor", + "cpu_count_os": 124, + "nproc": 4, + "nproc_all": 124, + "nproc_note": "GNU nproc honours OMP_NUM_THREADS, so `nproc` can print 1 on a multi-core host; `nproc_all` is the core count.", + "ram_total": "928298204 kB", + "kernel": "5.14.0-687.50.1.el9_8.x86_64", + "platform": "Linux-5.14.0-687.50.1.el9_8.x86_64-x86_64-with-glibc2.34", + "python": "3.12.4", + "jax_thread_env": { + "NPROC": null + }, + "blas_thread_env": { + "OMP_NUM_THREADS": null, + "OPENBLAS_NUM_THREADS": null, + "MKL_NUM_THREADS": null, + "VECLIB_MAXIMUM_THREADS": null, + "NUMEXPR_NUM_THREADS": null + }, + "thread_env_note": "NPROC sizes XLA's CPU intra-op pool (the JAX rows); the BLAS knobs pin OpenBLAS/MKL/OpenMP (the numpy/scipy rows) and do not touch JAX. Two disjoint families; both are recorded on every CPU timing.", + "gpu": "NVIDIA A100 80GB PCIe, 81920 MiB, 610.57.04" + }, + "precision": "fp64", + "configuration": { + "pixel_scale_arcsec": 0.05, + "mask_radius_arcsec": 3.5, + "image_pixels_masked": 15361, + "over_sampled_pixels": 62752, + "mesh": "delaunay", + "mesh_shape": null, + "source_pixels": 1500, + "source_pixels_requested": null, + "dataset": "hst", + "dataset_sha256": { + "data.fits": "e4e833a28e9c6f6fb023cd85c0d3dde74068720256bc77a240633500e5b04fac", + "noise_map.fits": "315c6266a0acd3ac9c8da82fcd2b45a08697362481fd7a35072bab1658530ba3", + "psf.fits": "8389ba0e8bf4a09b4a561cfc246181a2fb944ed396754cd0ff76fdd22910d303" + }, + "cell_source_sha256": "06a162fcdae6b329384ec33322f443df07215d86e56f0505ac15b3d3473eb432", + "inversion_path": "dense", + "pass_budget": 7, + "pass_budget_basis": "phase 3 (autolens_profiling#255): the smallest ZERO-fallback budget per mesh, the budget a production run fixes. NOT phase 0's certifying budget (2 for Delaunay), which falls back on 67.5 % of a graded draw set and is not a production cost.", + "border_relocator_mode": "cell", + "border_relocator": true, + "border_relocator_note": "'cell' is use_border_relocator=True, which every profiling cell in this family forces; 'library' passes None and takes the shipped config default, which is what production runs. The resolved boolean is what this leg actually ran.", + "routes_selected": [ + "b", + "d" + ], + "trace_calls": 10, + "command_buffers_traced": "off", + "use_mixed_precision": false, + "tau_rel": 1e-09, + "regularization": { + "scheme": "adapt_split", + "inner_coefficient": 0.1, + "outer_coefficient": 10.0, + "signal_scale": 0.1 + }, + "thread_env": { + "n_threads": null, + "vars": [ + "OPENBLAS_NUM_THREADS", + "MKL_NUM_THREADS", + "OMP_NUM_THREADS", + "VECLIB_MAXIMUM_THREADS", + "NUMEXPR_NUM_THREADS" + ], + "set_to": null, + "preexisting": {}, + "overridden": {}, + "note": "Not pinned (legacy variant): recorded as found." + }, + "over_sample_size_lp_rule": { + "sub_size_list": [ + 4, + 2, + 2 + ], + "radial_list": [ + 0.3, + 0.6 + ], + "centre": [ + 0.0, + 0.0 + ] + }, + "vmap_batch": 20, + "lanes": "captured", + "arms": [ + "vmap", + "scalar" + ], + "fallback": "on", + "draw_seed": 0, + "vmap_composition": "jax.jit(jax.vmap(fn))", + "lane_rtol": 1e-09, + "vmap_flags_note": "Strict ProfileCLI.parse_cell_args rejects unknown flags. These keys record the exact batching program and prevent historical vmap(jit) artifacts from being mistaken for current jit(vmap) measurements.", + "solver_source": "library", + "solver": "pdip", + "certified_fallback": "pdip", + "certified_pass_budget": 16, + "captured_pass": "time", + "batches": "/mnt/ral/jnightin/autolens_profiling_wt/certified-solver-phase-c1-lane-rate/results/breakdown/imaging/nautilus_batches_delaunay_pix1.npz" + }, + "solver_injection": { + "patched": null, + "part_v": "none \u2014 library mode selects the solver through al.Settings", + "part_b_route_d": { + "patched": "autoarray.inversion.inversion.inversion_util.reconstruction_positive_only_from", + "pass_budget": 7, + "fallback": true + }, + "note": "Library mode (phase B, #300): PART V's arms and references run the library's own positive-only solve, selected by Settings(positive_only_solver, certified_fallback, certified_pass_budget); nothing is injected. PART B's single-call route d (the fiducial d == b pin) still uses the phase-1 harness injection at the phase-3 budget and is not a phase-B row. The untimed certification report observes the library solve (library_solver_observed) without changing it." + }, + "routes": { + "b_s3_pdip": { + "label": "S3 PDIP (source-only)", + "status": "ok", + "solver": "library", + "ms": 50.63946449990908, + "log_likelihood": 29155.000174367866 + }, + "d_s3_certified_fallback": { + "label": "S3 certified active set, budget 7, PDIP fallback", + "status": "ok", + "solver": "harness-injected certified active set", + "pass_budget": 7, + "fallback": true, + "injected_solver_calls_jax": 1, + "injected_solver_calls_numpy": 0, + "ms": 31.515598400073937, + "log_likelihood": 29155.000175525754 + } + }, + "equivalence_pins": [ + { + "pin": "route d (certified, fallback) == route b (library PDIP)", + "route": "d_s3_certified_fallback", + "reference": "b_s3_pdip", + "expectation": "the certified active set returns the library's own positive solution", + "rtol": 1e-09, + "got": 29155.000175525754, + "reference_value": 29155.000174367866, + "rel_diff": 3.9714924089814085e-11, + "status": "PASS" + } + ], + "equivalence_rtol": 1e-09, + "reference": { + "log_evidence_s0_library": 29155.00017433923, + "log_evidence_s3_library": 29155.000174339304, + "s3": { + "n_params": 1500, + "n_mapper": 1500, + "n_funcs": 0, + "edge_zeroed_pixels": 0, + "subtracted_light_flux": 5105.448603818575 + } + }, + "command_buffers": { + "wall_on_ms": 1002.0908607999446, + "wall_off_ms": 1012.0101273001638, + "command_buffer_delta_ms": 9.919266500219237, + "command_buffer_delta_pct": 0.9898569968297016, + "traced": "off", + "compiler_option": "xla_gpu_enable_command_buffer", + "probe": { + "note": "Not taken in --vmap-batch mode: the CUPTI-inside-a-CUDA-graph probe is a phase-1 diagnostic about the JOIN, and this mode already compiles and times both the command-buffers ON and OFF executable of every arm." + }, + "note": "ONE lowering, TWO compilations, one process. wall_on_ms is the PRODUCTION program (CUDA graphs as XLA ships them) and is the number comparable to phase 5's row; wall_off_ms is the graph-less program the stage rows attribute. The delta is the launch overhead the graphs remove \u2014 it lands in device_idle and host_outside_span, not in any stage. Reconciliation is computed against wall_off_ms." + }, + "trace": { + "parser": "ProfileData.from_file(xplane) + as_text() + stack_frame_index(proto field 17)", + "stage_audit": { + "chi_squared_evidence": [ + { + "instruction": "input_reduce_fusion.26", + "ms": 0.003904265000000002, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:104", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:104 (noise_normalization_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:98 (AbstractFit.noise_normalization)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:306 (FitDataset.noise_normalization)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:349 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)" + ] + }, + { + "instruction": "input_reduce_fusion.28", + "ms": 0.003783660000000004, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:90", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:90 (chi_squared_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:87 (AbstractFit.chi_squared)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:293 (FitDataset.chi_squared)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:345 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)" + ] + }, + { + "instruction": "loop_multiply_fusion.2", + "ms": 0.003006375000000002, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:300", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:300 (AbstractNDArray.__pow__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:60 (unwrap_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:35 (to_new_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:78 (chi_squared_map_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:78 (AbstractFit.chi_squared_map)" + ] + } + ], + "psf_convolution_mapping_matrix": [ + { + "instruction": "input_scatter_fusion", + "ms": 1.9795207949999998, + "opcode": "fusion", + "shape": "f64[1500,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.19.0", + "ms": 1.7554150700000009, + "opcode": "fft", + "shape": "f64[1500,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.15.0", + "ms": 1.3649168499999986, + "opcode": "fft", + "shape": "c128[1500,180,91]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.17.0", + "ms": 0.9788598, + "opcode": "fft", + "shape": "c128[1500,91,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_transpose_fusion.1", + "ms": 0.5139107350000001, + "opcode": "fusion", + "shape": "c128[1500,91,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "wrapped_transpose", + "ms": 0.5001258199999999, + "opcode": "fusion", + "shape": "c128[1500,180,91]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + } + ], + "mapping_matrix": [ + { + "instruction": "loop_broadcast_fusion.2", + "ms": 0.11094477499999997, + "opcode": "fusion", + "shape": "f64[15361,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:342", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:342 (mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:283 (Mapper.mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:91 (AbstractInversionImaging._mapping_matrix_for_convolution_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:137 (AbstractInversionImaging.operated_mapping_matrix_list)" + ] + }, + { + "instruction": "input_reduce_fusion.29", + "ms": 0.0028802999999999906, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:120 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + }, + { + "instruction": "loop_divide_fusion", + "ms": 0.0023528000000000025, + "opcode": "fusion", + "shape": "f64[1500]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:92", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:92 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:120 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + } + ], + "mixed_fusion": [ + { + "instruction": "loop_divide_gather_fusion", + "ms": 1.0144249650000003, + "opcode": "fusion", + "shape": "(f64[15361,1,1,1500]{3,2,1,0}, f64[15361,1,1,1500]{3,2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_add_multiply_transpose_fusion", + "ms": 0.060890715000000005, + "opcode": "fusion", + "shape": "(f64[1500,1500]{1,0}, f64[1500,1500]{1,0}, f64[1500,1500]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:61", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:61 (initialize)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:72 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:508 (reconstruction_positive_only_from)" + ] + }, + { + "instruction": "input_transpose_fusion.3", + "ms": 0.02419367500000001, + "opcode": "fusion", + "shape": "f64[1500,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1157 (AbstractInversion.log_det_regularization_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:348 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "input_scatter_fusion.2", + "ms": 0.01633987, + "opcode": "fusion", + "shape": "f64[1500,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:579", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:579 (pixel_splitted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:137 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_abs_fusion", + "ms": 0.014803945000000004, + "opcode": "fusion", + "shape": "(f64[6000,1]{1,0}, f64[6000,1]{1,0}, f64[6000,1]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:613", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:613 (triangle_area_xp)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:657 (pixel_weights_delaunay_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:982 (InterpolatorDelaunay._mappings_sizes_weights_split)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:124 (AdaptSplit.regularization_matrix_from)" + ] + }, + { + "instruction": "input_scatter_fusion.3", + "ms": 0.014678229999999999, + "opcode": "fusion", + "shape": "f64[1500]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:70", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:70 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:120 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + } + ], + "ray_trace_data_grid": [ + { + "instruction": "input_reduce_fusion.18", + "ms": 0.003235509999999996, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:506", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:506 (FlatLambdaCDM._simpson_1d)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:644 (FlatLambdaCDM.angular_diameter_distance_kpc_z1z2)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:133 (LensingCosmology.angular_diameter_distance_to_earth_in_kpc_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:362 (LensingCosmology.scaling_factor_between_redshifts_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer_util.py:252 (traced_grid_2d_list_from)" + ] + }, + { + "instruction": "input_reduce_fusion.20", + "ms": 0.0027401349999999908, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:506", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:506 (FlatLambdaCDM._simpson_1d)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:644 (FlatLambdaCDM.angular_diameter_distance_kpc_z1z2)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:151 (LensingCosmology.angular_diameter_distance_between_redshifts_in_kpc_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:355 (LensingCosmology.scaling_factor_between_redshifts_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer_util.py:252 (traced_grid_2d_list_from)" + ] + }, + { + "instruction": "input_reduce_fusion.19", + "ms": 0.0026057449999999966, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:503", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:503 (FlatLambdaCDM._simpson_1d)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:644 (FlatLambdaCDM.angular_diameter_distance_kpc_z1z2)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:133 (LensingCosmology.angular_diameter_distance_to_earth_in_kpc_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:362 (LensingCosmology.scaling_factor_between_redshifts_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer_util.py:252 (traced_grid_2d_list_from)" + ] + }, + { + "instruction": "input_reduce_fusion.21", + "ms": 0.002587044999999994, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:503", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:503 (FlatLambdaCDM._simpson_1d)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:644 (FlatLambdaCDM.angular_diameter_distance_kpc_z1z2)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:151 (LensingCosmology.angular_diameter_distance_between_redshifts_in_kpc_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:355 (LensingCosmology.scaling_factor_between_redshifts_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer_util.py:252 (traced_grid_2d_list_from)" + ] + }, + { + "instruction": "loop_divide_fusion.1", + "ms": 0.002514860000000003, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:380", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:380 (LensingCosmology.scaling_factor_between_redshifts_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer_util.py:252 (traced_grid_2d_list_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer.py:632 (Tracer.traced_grid_2d_list_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/structures/decorators/abstract.py:93 (AbstractMaker.evaluate_func)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/structures/decorators/abstract.py:110 (AbstractMaker.result)" + ] + } + ], + "border_relocator": [ + { + "instruction": "eigh.45", + "ms": 0.07459175499999986, + "opcode": "custom-call", + "shape": "(f64[2,2]{0,1}, f64[2]{0}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "custom-call.2", + "ms": 0.007952110000000021, + "opcode": "custom-call", + "shape": "(f64[2,2]{1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_reduce_fusion.15", + "ms": 0.005806534999999992, + "opcode": "fusion", + "shape": "(f64[], f64[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:269", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:269 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_select_sine_fusion", + "ms": 0.003668455000000008, + "opcode": "fusion", + "shape": "(f64[], f64[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:301", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:301 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:458 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_concatenate_fusion.3", + "ms": 0.0036586900000000087, + "opcode": "fusion", + "shape": "f64[15361,2]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:323", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:323 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:423 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:208 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_add_fusion.5", + "ms": 0.0035801449999999994, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:423 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:208 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + } + ], + "mesh_construction": [ + { + "instruction": "input_concatenate_fusion.7", + "ms": 0.0020396799999999925, + "opcode": "fusion", + "shape": "f64[1500,2]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:820", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:820 (InterpolatorDelaunay.mesh_grid_xy)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:847 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + } + ], + "mesh_qhull_callback": [ + { + "instruction": "pure_callback.4", + "ms": 0.010656254999999965, + "opcode": "custom-call", + "shape": "(s32[3000,3]{1,0}, s32[3000,3]{1,0}, s32[1500]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:161", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:161 (_jax_delaunay_tables)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:405 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + } + ], + "other": [ + { + "instruction": "copy.72", + "ms": 0.04182004999999856, + "opcode": "copy", + "shape": "f64[1,1024,2]{2,1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.35", + "ms": 0.017098710000000218, + "opcode": "copy", + "shape": "s32[21361]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.40", + "ms": 0.002001399999999998, + "opcode": "copy", + "shape": "s64[1500]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "loop_broadcast_fusion.1", + "ms": 0.001965755000000001, + "opcode": "fusion", + "shape": "(pred[21361]{0}, pred[21361]{0})", + "source": "", + "stack": [] + }, + { + "instruction": "copy.71", + "ms": 0.001792784999999997, + "opcode": "copy", + "shape": "s32[]", + "source": "", + "stack": [] + }, + { + "instruction": "loop_broadcast_fusion.4", + "ms": 0.0017787099999999967, + "opcode": "fusion", + "shape": "(f64[1500]{0}, f64[1500]{0}, f64[1500]{0}, f64[1500]{0})", + "source": "", + "stack": [] + } + ], + "mesh_seed_argmin": [ + { + "instruction": "input_reduce_fusion", + "ms": 0.14760173499999826, + "opcode": "fusion", + "shape": "(f64[1024]{0}, s64[1024]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:191", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:191 (_nearest_vertex_seed_from..argmin_chunk)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)" + ] + }, + { + "instruction": "loop_dynamic_update_slice_fusion", + "ms": 0.04108403499999848, + "opcode": "fusion", + "shape": "s32[21,1024]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_add_fusion", + "ms": 0.03194550499999987, + "opcode": "fusion", + "shape": "s64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_broadcast_fusion", + "ms": 0.0019494299999999966, + "opcode": "fusion", + "shape": "s32[21,1024]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "regularization_H": [ + { + "instruction": "loop_select_fusion.3", + "ms": 0.019947874999999997, + "opcode": "fusion", + "shape": "f64[1500,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:549", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:549 (pixel_splitted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:137 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_scatter_fusion.10", + "ms": 0.002060314999999996, + "opcode": "fusion", + "shape": "f64[1500,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:615", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:615 (pixel_splitted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:137 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_concatenate_fusion.8", + "ms": 0.0018707049999999975, + "opcode": "fusion", + "shape": "pred[3]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:93", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:93 (split_points_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:410 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + }, + { + "instruction": "input_concatenate_fusion.9", + "ms": 0.0018577599999999995, + "opcode": "fusion", + "shape": "pred[3]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:91", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:91 (split_points_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:410 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + }, + { + "instruction": "input_concatenate_fusion.10", + "ms": 0.0018564550000000006, + "opcode": "fusion", + "shape": "pred[3]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:90", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:90 (split_points_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:410 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + }, + { + "instruction": "input_concatenate_fusion", + "ms": 0.0017591799999999993, + "opcode": "fusion", + "shape": "s32[1500,2]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:615", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:615 (pixel_splitted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:137 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "mesh_locate_walk": [ + { + "instruction": "input_reduce_fusion.1", + "ms": 0.025403025000000697, + "opcode": "fusion", + "shape": "pred[196]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:288", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:288 (_walk_from_seed..cond)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)" + ] + }, + { + "instruction": "loop_reduce_fusion", + "ms": 0.02537004500000037, + "opcode": "fusion", + "shape": "(f64[21361]{0}, s64[21361]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:264", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:264 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:264 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)" + ] + }, + { + "instruction": "loop_or_select_fusion", + "ms": 0.02246211500000033, + "opcode": "fusion", + "shape": "(s32[21361]{0}, pred[21361]{0}, pred[21361]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:270", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:270 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)" + ] + }, + { + "instruction": "loop_select_fusion", + "ms": 0.020142059999999896, + "opcode": "fusion", + "shape": "s32[21361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:242", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:242 (_walk_from_seed..weights_of)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:262 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)" + ] + }, + { + "instruction": "input_reduce_fusion.2", + "ms": 0.01643097499999993, + "opcode": "fusion", + "shape": "pred[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:288", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:288 (_walk_from_seed..cond)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)" + ] + }, + { + "instruction": "while.22", + "ms": 0.014684064999999785, + "opcode": "while", + "shape": "(s32[], s32[21361]{0}, pred[21361]{0}, pred[21361]{0}, s32[3000,3]{1,0}, /*index=5*/f64[1500,2]{1,0}, f64[21361,2]{1,0}, s32[3000,3]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "data_vector_D": [ + { + "instruction": "input_reduce_fusion.10", + "ms": 0.12202000499999993, + "opcode": "fusion", + "shape": "f64[92,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123 (data_vector_via_blurred_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:67 (InversionImagingMapping.data_vector)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:699 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_reduce_fusion.27", + "ms": 0.0036915050000000038, + "opcode": "fusion", + "shape": "f64[1500]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123 (data_vector_via_blurred_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:67 (InversionImagingMapping.data_vector)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:699 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "inversion_other": [ + { + "instruction": "cholesky.60", + "ms": 0.8941022749999998, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1078 (AbstractInversion.log_det_curvature_reg_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:347 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "cholesky.70", + "ms": 0.8915859899999999, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1157 (AbstractInversion.log_det_regularization_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:348 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "input_reduce_fusion.17", + "ms": 0.013030834999999982, + "opcode": "fusion", + "shape": "f64[1500]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:946", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:946 (AbstractInversion.regularization_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:346 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)", + "/mnt/ral/jnightin/autolens_profiling_wt/certified-solver-phase-c1-lane-rate/scripts/imaging/likelihood_breakdown/fixed_light_trace.py:1195 (_captured_likelihood_fn.._likelihood)" + ] + }, + { + "instruction": "loop_reduce_window_fusion.1", + "ms": 0.002771350000000001, + "opcode": "fusion", + "shape": "s64[94,16]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "loop_reduce_window_fusion", + "ms": 0.0026658950000000028, + "opcode": "fusion", + "shape": "s64[6,16]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "input_reduce_fusion.25", + "ms": 0.002657260000000006, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:944", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:944 (AbstractInversion.regularization_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:346 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)", + "/mnt/ral/jnightin/autolens_profiling_wt/certified-solver-phase-c1-lane-rate/scripts/imaging/likelihood_breakdown/fixed_light_trace.py:1195 (_captured_likelihood_fn.._likelihood)" + ] + } + ], + "curvature_matrix_F": [ + { + "instruction": "cublas-lt-matmul.2", + "ms": 4.218645815000001, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "pdip_solve": [ + { + "instruction": "cholesky.20", + "ms": 15.983820379999766, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:106", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:106 (factorize_kkt)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:212 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve", + "ms": 2.540545144999988, + "opcode": "custom-call", + "shape": "(f64[1500,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:213 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve.2", + "ms": 2.517701315000026, + "opcode": "custom-call", + "shape": "(f64[1500,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:217 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve.3", + "ms": 2.3762399700001886, + "opcode": "custom-call", + "shape": "(f64[1500,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:217 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve.1", + "ms": 2.297555920000129, + "opcode": "custom-call", + "shape": "(f64[1500,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:213 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "cholesky.40", + "ms": 0.8650376099999995, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:62", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:62 (initialize)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:72 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:508 (reconstruction_positive_only_from)" + ] + } + ], + "mapped_reconstruction": [ + { + "instruction": "input_reduce_fusion.14", + "ms": 0.11445830500000001, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163 (mapped_reconstructed_data_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:120 (InversionImagingMapping._mapped_reconstructed_data_dict_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:196 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + } + ] + }, + "stage_audit_note": "The HLO instructions that contributed most of each stage's milliseconds, with their full source stack. A stage row is only as good as the rules that built it; this is how a reader checks a row against the HLO instead of trusting it.", + "untraced_wall_ms": 50.753544429990136, + "reconciliation_vs_untraced_pct": -0.43295179175760246, + "wall_basis": "wall_ms is the TRACED run's wall, the run these kernel durations came from. untraced_wall_ms is the same executable without the profiler; the difference is the profiler's overhead and belongs in neither the stages nor the idle row.", + "calls": 200, + "call_split": "per-call (first-instruction recurrence)", + "call_blocks": 200, + "events": 191310, + "streams": [ + "Stream #14(MemcpyD2D,MemcpyH2D,Compute,MemcpyD2H,Memset)" + ], + "per_stage_ms": { + "border_relocator": { + "median_ms": 0.11491299999999999, + "min_ms": 0.11401599999999998, + "max_ms": 0.11606 + }, + "chi_squared_evidence": { + "median_ms": 0.010688, + "min_ms": 0.010304, + "max_ms": 0.011424 + }, + "curvature_matrix_F": { + "median_ms": 4.218025000000001, + "min_ms": 4.205913, + "max_ms": 4.265434 + }, + "data_vector_D": { + "median_ms": 0.125696, + "min_ms": 0.124924, + "max_ms": 0.126593 + }, + "inversion_other": { + "median_ms": 1.8166664999999997, + "min_ms": 1.80033, + "max_ms": 1.8335469999999998 + }, + "mapped_reconstruction": { + "median_ms": 0.1144465, + "min_ms": 0.113825, + "max_ms": 0.115553 + }, + "mapping_matrix": { + "median_ms": 0.1161285, + "min_ms": 0.11510000000000001, + "max_ms": 0.11724899999999999 + }, + "memset": { + "median_ms": 0.05091200000000001, + "min_ms": 0.04210800000000001, + "max_ms": 0.08470300000000001 + }, + "mesh_construction": { + "median_ms": 0.002048, + "min_ms": 0.002016, + "max_ms": 0.002049 + }, + "mesh_locate_walk": { + "median_ms": 0.14832250000000002, + "min_ms": 0.13049700000000006, + "max_ms": 0.184216 + }, + "mesh_qhull_callback": { + "median_ms": 0.010624, + "min_ms": 0.010464000000000001, + "max_ms": 0.01104 + }, + "mesh_seed_argmin": { + "median_ms": 0.22256200000000015, + "min_ms": 0.2221690000000002, + "max_ms": 0.22293900000000008 + }, + "mixed_fusion": { + "median_ms": 1.2544275, + "min_ms": 1.2487959999999994, + "max_ms": 1.2580559999999994 + }, + "other": { + "median_ms": 0.0711995, + "min_ms": 0.06870099999999998, + "max_ms": 0.07558200000000001 + }, + "pdip_solve": { + "median_ms": 27.262917500000007, + "min_ms": 22.713710000000027, + "max_ms": 47.29580200000003 + }, + "psf_convolution_mapping_matrix": { + "median_ms": 7.320093, + "min_ms": 7.3059970000000005, + "max_ms": 7.335915 + }, + "ray_trace_data_grid": { + "median_ms": 0.013633000000000001, + "min_ms": 0.013535000000000002, + "max_ms": 0.014079999999999999 + }, + "regularization_H": { + "median_ms": 0.03088, + "min_ms": 0.030365999999999997, + "max_ms": 0.031584 + } + }, + "stage_order": [ + "ray_trace_data_grid", + "border_relocator", + "mesh_qhull_callback", + "mesh_seed_argmin", + "mesh_locate_walk", + "mesh_construction", + "mapping_matrix", + "psf_convolution_mapping_matrix", + "data_vector_D", + "curvature_matrix_F", + "regularization_H", + "pdip_solve", + "mapped_reconstruction", + "chi_squared_evidence", + "inversion_other", + "mixed_fusion", + "other", + "memset" + ], + "mixed_fusion": { + "ms": 1.2544275, + "constituent_stage_sets": { + "curvature_matrix_F + psf_convolution_mapping_matrix": 1.0144249650000003, + "curvature_reg_reduce_gather + inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter + regularization_H": 0.060890715000000005, + "inversion_other + regularization_H": 0.029447410000000094, + "inversion_other + mesh_construction + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin + regularization_H": 0.021490085000000013, + "inversion_other + mapping_matrix + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin": 0.021122015000000004, + "inversion_other + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + regularization_H": 0.014803945000000004, + "grids_and_structures + mass_profile_deflections + ray_trace_data_grid": 0.01451463499999999, + "inversion_other + mapping_matrix + mesh_construction + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin": 0.011625870000000002, + "grids_and_structures + mass_profile_deflections": 0.010162915000000007, + "inversion_other + mesh_dual_areas + mesh_locate_walk": 0.00926599500000005, + "inversion_other + mesh_construction + mesh_seed_argmin + regularization_H": 0.007246359999999995, + "inversion_other + mesh_construction + regularization_H": 0.0065065099999999845, + "inversion_other + ray_trace_data_grid": 0.005272445000000013, + "inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": 0.004812449999999998, + "inversion_other + mapped_reconstruction": 0.0037050900000000016, + "mapping_matrix + regularization_H": 0.003474344999999993, + "inversion_other + mesh_construction + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin": 0.003105385000000001, + "inversion_other + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin": 0.0029794900000000056, + "inversion_other + pdip_solve": 0.0028225499999999983, + "inversion_other + mesh_locate_walk + mesh_seed_argmin": 0.002481235000000002, + "inversion_other + mesh_interpolation_weights": 0.002146065000000007, + "chi_squared_evidence + inversion_other": 0.0017820649999999991 + }, + "example_kernels": { + "curvature_matrix_F + psf_convolution_mapping_matrix": [ + "loop_divide_gather_fusion" + ], + "curvature_reg_reduce_gather + inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter + regularization_H": [ + "input_add_multiply_transpose_fusion" + ], + "inversion_other + regularization_H": [ + "loop_reduce_slice_fusion", + "loop_reduce_fusion.1", + "loop_reduce_fusion.2", + "input_transpose_fusion.3" + ], + "inversion_other + mesh_construction + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin + regularization_H": [ + "input_reduce_fusion.24", + "loop_select_fusion.4", + "input_scatter_fusion.2" + ], + "inversion_other + mapping_matrix + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin": [ + "input_scatter_fusion.6", + "input_scatter_fusion.3" + ], + "inversion_other + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + regularization_H": [ + "loop_abs_fusion" + ], + "grids_and_structures + mass_profile_deflections + ray_trace_data_grid": [ + "loop_subtract_fusion.2", + "loop_subtract_fusion.1" + ], + "inversion_other + mapping_matrix + mesh_construction + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin": [ + "input_scatter_fusion.4" + ], + "grids_and_structures + mass_profile_deflections": [ + "loop_divide_minimum_multiply_sine_sqrt_fusion", + "loop_slice_fusion" + ], + "inversion_other + mesh_dual_areas + mesh_locate_walk": [ + "loop_select_fusion.6", + "input_scatter_fusion.9", + "input_scatter_fusion.8", + "input_scatter_fusion.7" + ] + }, + "prorated_estimate_ms": { + "curvature_matrix_F": 0.5072124825000002, + "psf_convolution_mapping_matrix": 0.5072124825000002, + "inversion_other": 0.054450751714285796, + "regularization_H": 0.03713222650000004, + "mesh_construction": 0.016595630880952377, + "mesh_interpolation_weights": 0.013688236714285722, + "mesh_locate_walk": 0.013570158547619067, + "mapped_reconstruction": 0.01320411, + "pdip_solve": 0.012762839999999998, + "mesh_seed_argmin": 0.01229308354761905, + "reconstruction_scatter": 0.011351565, + "curvature_reg_reduce_gather": 0.0101484525, + "grids_and_structures": 0.009919669166666666, + "mass_profile_deflections": 0.009919669166666666, + "mesh_dual_areas": 0.009563466380952401, + "ray_trace_data_grid": 0.0074744341666666695, + "mapping_matrix": 0.006692248214285712, + "chi_squared_evidence": 0.0008910324999999996 + }, + "prorated_note": "ESTIMATE ONLY \u2014 a mixed fusion's time split equally across the stages its constituents span. Never summed into the measured table, never reconciled." + }, + "other_sources_ms": { + "copy.72": 0.04182004999999856, + "copy.35": 0.017098710000000218, + "copy.40": 0.002001399999999998, + "loop_broadcast_fusion.1": 0.001965755000000001, + "copy.71": 0.001792784999999997, + "loop_broadcast_fusion.4": 0.0017787099999999967, + "copy.70": 0.0017457400000000039, + "copy.20": 0.001658219999999997, + "copy.52": 0.0016358150000000016 + }, + "device_span_ms": 52.023427334999994, + "device_busy_ms": 44.393803785, + "device_idle_ms": 7.629623549999991, + "largest_idle_gaps": [ + { + "gap_ms": 5.577245, + "after": "pure_callback.4", + "before": "pure_callback.4" + }, + { + "gap_ms": 0.037183, + "after": "pure_callback.4", + "before": "copy.71" + }, + { + "gap_ms": 0.030879, + "after": "input_concatenate_fusion.7", + "before": "pure_callback.4" + }, + { + "gap_ms": 0.0304, + "after": "copy.35", + "before": "input_reduce_fusion.1" + }, + { + "gap_ms": 0.020352, + "after": "eigh.45", + "before": "eigh.45" + }, + { + "gap_ms": 0.020032, + "after": "input_reduce_fusion.3", + "before": "input_divide_reduce_subtract_fusion" + }, + { + "gap_ms": 0.02, + "after": "while.28", + "before": "input_reduce_fusion.3" + }, + { + "gap_ms": 0.019168, + "after": "input_reduce_fusion.26", + "before": "loop_broadcast_fusion.3" + } + ], + "kernel_ms": 42.90418250000001, + "sum_ms": 50.53380605, + "wall_ms": 52.02925144500114, + "host_outside_span_ms": 0.0058241100011429126, + "reconciliation_pct": -2.8742396891524247, + "unjoined_ms": 0.0, + "unjoined_pct": 0.0, + "other_ms": 0.0711995, + "other_pct": 0.13684513619278815, + "note": "Stage rows attribute the command-buffers-OFF program (see the module docstring): kernel times are the same, the launch overhead the CUDA graphs remove is not. sum_ms = kernel rows + device_idle_ms; the residual against wall_ms is host_outside_span_ms (dispatch before the first kernel, teardown after the last).", + "per_stage_ms_per_lane": { + "border_relocator": 0.11491299999999999, + "chi_squared_evidence": 0.010688, + "curvature_matrix_F": 4.218025000000001, + "data_vector_D": 0.125696, + "inversion_other": 1.8166664999999997, + "mapped_reconstruction": 0.1144465, + "mapping_matrix": 0.1161285, + "memset": 0.05091200000000001, + "mesh_construction": 0.002048, + "mesh_locate_walk": 0.14832250000000002, + "mesh_qhull_callback": 0.010624, + "mesh_seed_argmin": 0.22256200000000015, + "mixed_fusion": 1.2544275, + "other": 0.0711995, + "pdip_solve": 27.262917500000007, + "psf_convolution_mapping_matrix": 7.320093, + "ray_trace_data_grid": 0.013633000000000001, + "regularization_H": 0.03088 + }, + "per_lane_divisor": 1, + "host_callback": { + "pure_callback_span_ms": 101.39265520000001, + "qhull_ms": 94.61371190000001, + "callback_body_ms_note": "the OUTERMOST matching body event, not a sum: under the probe the body appears twice (the wrapper and the timed re-implementation it calls) and summing them would count the same work twice", + "events_by_name": { + "pure_callback.4": { + "count": 200, + "ms": 101.39265520000001 + }, + "$callback.py:815 _wrapped_callback": { + "count": 200, + "ms": 99.64069369999996 + }, + "$callback.py:224 _callback": { + "count": 200, + "ms": 99.16375899999997 + }, + "$callback.py:74 pure_callback_impl": { + "count": 200, + "ms": 98.97832679999995 + }, + "$callback.py:69 __call__": { + "count": 200, + "ms": 94.92798070000003 + }, + "$delaunay.py:162 ": { + "count": 200, + "ms": 94.7946648 + }, + "$host_callback_probe.py:225 wrapped": { + "count": 200, + "ms": 94.61371190000001 + }, + "$host_callback_probe.py:160 _timed_tri_only": { + "count": 200, + "ms": 94.44655579999997 + }, + "ThenExecuteCallback:GetEventForComputeStreamSyncPoint": { + "count": 200, + "ms": 0.3492051999999998 + }, + "$callback.py:822 ": { + "count": 800, + "ms": 0.2878111999999995 + }, + "$__init__.py:132 _xla_gc_callback": { + "count": 2, + "ms": 0.000338 + } + }, + "note": "HOST milliseconds per traced BATCH (the whole invocation), aggregated by name because the events nest. Not a row of the device table: the device pays for them as the idle gaps largest_idle_gaps names." + }, + "host_callback_ms": 101.39265520000001 + }, + "hlo_census": { + "status": "excluded", + "reason": "The legacy census anchors PyAutoArray source line numbers that moved after the phase-1 run. No batched attribution is published from unsupported anchors; the device-event table and wall reconciliation remain valid." + }, + "stage_map_provenance": [ + { + "label": "log_det_curvature_reg", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 850, + 882 + ], + "requires": { + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 884, + 896 + ] + }, + "function": null + }, + { + "label": "log_det_regularization", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 850, + 882 + ], + "requires": { + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 897, + 943 + ] + }, + "function": null + }, + { + "label": "curvature_reg_add", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 359, + 372 + ], + "requires": null, + "function": null + }, + { + "label": "curvature_reg_reduce_gather", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 374, + 398 + ], + "requires": null, + "function": null + }, + { + "label": "edge_subset_gather", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 606, + 614 + ], + "requires": null, + "function": null + }, + { + "label": "regularization_term", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 786, + 849 + ], + "requires": null, + "function": null + }, + { + "label": "mapped_reconstruction", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 722, + 785 + ], + "requires": null, + "function": null + }, + { + "label": "reconstruction_scatter", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 583, + 605 + ], + "requires": null, + "function": null + }, + { + "label": "reconstruction_scatter", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 615, + 721 + ], + "requires": null, + "function": null + }, + { + "label": "certified_active_set_solve", + "path": "likelihood_breakdown/active_set_steps.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "certified_active_set_solve", + "path": "likelihood_breakdown/library_solver_injection.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "pdip_solve", + "path": "PyAutoArray/autoarray/util/jax_nnls.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "pdip_solve", + "path": "PyAutoArray/autoarray/inversion/inversion/inversion_util.py", + "lines": [ + 256, + 488 + ], + "requires": null, + "function": null + }, + { + "label": "mapped_reconstruction", + "path": "PyAutoArray/autoarray/inversion/inversion/inversion_util.py", + "lines": [ + 156, + 200 + ], + "requires": null, + "function": null + }, + { + "label": "curvature_matrix_F", + "path": "PyAutoArray/autoarray/inversion/inversion/inversion_util.py", + "lines": [ + 12, + 155 + ], + "requires": null, + "function": null + }, + { + "label": "reconstruction_scatter", + "path": "PyAutoArray/autoarray/inversion/inversion/inversion_util.py", + "lines": [ + 201, + 255 + ], + "requires": null, + "function": null + }, + { + "label": "data_vector_D", + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py", + "lines": [ + 54, + 73 + ], + "requires": null, + "function": null + }, + { + "label": "curvature_matrix_F", + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py", + "lines": [ + 74, + 110 + ], + "requires": null, + "function": null + }, + { + "label": "data_vector_D", + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py", + "lines": null, + "requires": null, + "function": "data_vector_via_blurred_mapping_matrix_from" + }, + { + "label": "curvature_matrix_F", + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "likelihood_breakdown/psf_cube_injection.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": [ + 1086, + 1300 + ], + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": [ + 632, + 642 + ], + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": [ + 670, + 691 + ], + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": null, + "requires": { + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": [ + 1086, + 1300 + ] + }, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": null, + "requires": { + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py", + "lines": [ + 119, + 150 + ] + }, + "function": null + }, + { + "label": "psf_convolution_image", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py", + "lines": [ + 119, + 150 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_qhull_callback", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 139, + 172 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_seed_argmin", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 173, + 207 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_locate_walk", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 208, + 372 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_dual_areas", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 373, + 396 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_dual_areas", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 437, + 494 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_dual_areas", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 605, + 615 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_interpolation_weights", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 616, + 695 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_interpolation_weights", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 896, + 1000 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_construction", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "border_relocator", + "path": "PyAutoArray/autoarray/inversion/mesh/border_relocator.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "mesh_construction", + "path": "PyAutoArray/autoarray/inversion/mesh/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "mapping_matrix", + "path": "PyAutoArray/autoarray/inversion/mappers/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "mapping_matrix", + "path": "PyAutoArray/autoarray/inversion/mappings/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "mapping_matrix", + "path": "PyAutoArray/autoarray/inversion/linear_obj/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "regularization_H", + "path": "PyAutoArray/autoarray/inversion/regularization/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "chi_squared_evidence", + "path": "PyAutoArray/autoarray/fit/fit_util.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "chi_squared_evidence", + "path": "PyAutoArray/autoarray/fit/fit_dataset.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "ray_trace_mesh_grid", + "path": "PyAutoLens/autolens/lens/to_inversion.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "ray_trace_mesh_grid", + "path": "PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "mass_profile_deflections", + "path": "PyAutoGalaxy/autogalaxy/profiles/mass/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "light_profile_image", + "path": "PyAutoGalaxy/autogalaxy/profiles/light/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "light_profile_image", + "path": "PyAutoGalaxy/autogalaxy/operate/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "ray_trace_data_grid", + "path": "PyAutoLens/autolens/lens/tracer.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "ray_trace_data_grid", + "path": "PyAutoLens/autolens/lens/tracer_util.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "grids_and_structures", + "path": "PyAutoArray/autoarray/structures/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "grids_and_structures", + "path": "PyAutoArray/autoarray/operators/over_sampling/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "grids_and_structures", + "path": "PyAutoArray/autoarray/geometry/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "inversion_other", + "path": "PyAutoArray/autoarray/inversion/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "fit_imaging_other", + "path": "PyAutoLens/autolens/imaging/fit_imaging.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "fit_imaging_other", + "path": "PyAutoGalaxy/autogalaxy/imaging/fit_imaging.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "fit_imaging_other", + "path": "PyAutoArray/autoarray/fit/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "analysis_other", + "path": "PyAutoLens/autolens/analysis/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "analysis_other", + "path": "PyAutoGalaxy/autogalaxy/analysis/", + "lines": null, + "requires": null, + "function": null + } + ], + "trace_timing": { + "traced_wall_ms": 52.02925144500114, + "untraced_wall_ms": 50.753544429990136, + "profiler_overhead_ms": 1.275707015011001, + "profiler_overhead_pct": 2.5135328563519774 + }, + "jit_phases": { + "b_s3_pdip_library_likelihood_jit": { + "lower_s": 1.688098591999733, + "compile_s": 4.548470540998096, + "first_call_s": 1.9206595620016742, + "steady_per_call_s": 0.05063946449990908 + }, + "d_s3_certified_fallback_library_likelihood_jit": { + "lower_s": 0.47995273700144025, + "compile_s": 4.393066720000206, + "first_call_s": 0.04469520799830207, + "steady_per_call_s": 0.03151559840007394 + } + }, + "peak_bytes": { + "after_setup": 85108992, + "after_routes": 1181653248, + "after_all": 23614574336, + "note": "jax.devices()[0].memory_stats()['peak_bytes_in_use']; None on a backend that does not report it (CPU). Process-wide high-water marks." + }, + "note": "Every stage row is a MEASURED sum of GPU kernel durations joined to library source through the optimized HLO of ONE program \u2014 not arithmetic across compilations. The rows attribute the command-buffers-OFF program: kernel time is the same as production, the launch overhead the CUDA graphs remove is not, and command_buffers.* carries both walls and their delta. sum_ms = kernel rows + measured device_idle_ms; the residual against the wall is host_outside_span_ms and is reported, not absorbed. mixed_fusion.prorated_estimate_ms is an ESTIMATE and is never part of the table. No row may be quoted if reconciliation_pct is outside 5 % or unjoined_ms is non-zero.", + "vmap": { + "batch": 20, + "lanes_mode": "captured", + "arms": [ + "vmap", + "scalar" + ], + "draw_seed": 0, + "fallback": true, + "composition": "jax.jit(jax.vmap(fn))", + "composition_provenance": "Current Fitness._vmap after PyAutoFit#1638. Array 343376 used the retired jax.vmap(jax.jit(fn)) composition and is historical evidence only.", + "headline_arm": "scalar", + "lane_rtol": 1e-09, + "lanes": [ + { + "lane": 0, + "draw_name": "call00015_lane00", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.0033655095107821688, + "centre_1": 0.004631951955766499, + "ell_comps_0": 0.000564301988937442, + "ell_comps_1": -0.00879076787683888, + "einstein_radius": 0.018337010967920175 + }, + "log_likelihood_vmap": 24758.506194309146, + "log_likelihood_scalar": 24758.506194309135, + "log_likelihood_library_pdip": 24758.506194309142, + "log_likelihood_library_pdip_scalar": 24758.50619430913, + "rel_diff_vmap_vs_library_pdip": 1.469385421939519e-16, + "rel_diff_scalar_vs_library_pdip_scalar": 1.4693854219395194e-16, + "abs_diff_nats": 1.0913936421275139e-11, + "rel_diff": 4.4081562658185577e-16, + "rel_diff_scalar_vs_library_pdip": 2.938770843879038e-16, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 1.0913936421275139e-11, + "rel_diff_library_pdip_vmap_vs_scalar": 4.408156265818558e-16, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 1, + "draw_name": "call00015_lane01", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.004311760382151672, + "centre_1": 0.0027192789928108052, + "ell_comps_0": 0.0061667694809026535, + "ell_comps_1": 0.003465536775180321, + "einstein_radius": -0.05732579988501185 + }, + "log_likelihood_vmap": 20551.00488777266, + "log_likelihood_scalar": 20551.00488777356, + "log_likelihood_library_pdip": 20551.004887772666, + "log_likelihood_library_pdip_scalar": 20551.00488777308, + "rel_diff_vmap_vs_library_pdip": 3.540438851490147e-16, + "rel_diff_scalar_vs_library_pdip_scalar": 2.33668964198345e-14, + "abs_diff_nats": 9.022187441587448e-10, + "rel_diff": 4.3901441758475915e-14, + "rel_diff_scalar_vs_library_pdip": 4.354739787332881e-14, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 4.147295840084553e-10, + "rel_diff_library_pdip_vmap_vs_scalar": 2.018050145349343e-14, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 2, + "draw_name": "call00015_lane02", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.0002796502552123051, + "centre_1": 0.0016003321376979894, + "ell_comps_0": -0.002094430657472772, + "ell_comps_1": 0.006146479068253558, + "einstein_radius": -0.025968910196758177 + }, + "log_likelihood_vmap": -189709.9713791528, + "log_likelihood_scalar": -189709.05842409882, + "log_likelihood_library_pdip": -189709.70530157938, + "log_likelihood_library_pdip_scalar": -189709.060063124, + "rel_diff_vmap_vs_library_pdip": 1.4025511925612143e-06, + "rel_diff_scalar_vs_library_pdip_scalar": 8.639677877689878e-09, + "abs_diff_nats": 0.9129550539655611, + "rel_diff": 4.812395683945833e-06, + "rel_diff_scalar_vs_library_pdip": 3.4098280819426745e-06, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 0.6452384553849697, + "rel_diff_library_pdip_vmap_vs_scalar": 3.4012000015722623e-06, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 3, + "draw_name": "call00015_lane03", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.004594602299816973, + "centre_1": 0.004924922434755804, + "ell_comps_0": 0.028601845732661953, + "ell_comps_1": 0.003760187047606014, + "einstein_radius": -0.03088526730480501 + }, + "log_likelihood_vmap": -141741.9790338971, + "log_likelihood_scalar": -141741.96576941968, + "log_likelihood_library_pdip": -141741.98123707197, + "log_likelihood_library_pdip_scalar": -141741.9668731601, + "rel_diff_vmap_vs_library_pdip": 1.5543559131228685e-08, + "rel_diff_scalar_vs_library_pdip_scalar": 7.786969820431048e-09, + "abs_diff_nats": 0.013264477427583188, + "rel_diff": 9.358186445051372e-08, + "rel_diff_scalar_vs_library_pdip": 1.0912541336958276e-07, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 0.014363911875989288, + "rel_diff_library_pdip_vmap_vs_scalar": 1.0133845460775246e-07, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 4, + "draw_name": "call00015_lane04", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.0060950290987001, + "centre_1": -0.0006121094560707545, + "ell_comps_0": 0.009637314264800585, + "ell_comps_1": 0.006641580028105454, + "einstein_radius": -0.03125810931551931 + }, + "log_likelihood_vmap": 24880.545932988694, + "log_likelihood_scalar": 24880.54593298874, + "log_likelihood_library_pdip": 24880.545932988694, + "log_likelihood_library_pdip_scalar": 24880.545932988738, + "rel_diff_vmap_vs_library_pdip": 0.0, + "rel_diff_scalar_vs_library_pdip_scalar": 1.4621780474150176e-16, + "abs_diff_nats": 4.729372449219227e-11, + "rel_diff": 1.9008314616395227e-15, + "rel_diff_scalar_vs_library_pdip": 1.9008314616395262e-15, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 4.3655745685100555e-11, + "rel_diff_library_pdip_vmap_vs_scalar": 1.754613656898021e-15, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 5, + "draw_name": "call00015_lane05", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.008435952123169364, + "centre_1": -0.007849511137408794, + "ell_comps_0": -0.01598149485178925, + "ell_comps_1": 0.01654417876136871, + "einstein_radius": 0.014294380855379263 + }, + "log_likelihood_vmap": 25472.519186598707, + "log_likelihood_scalar": 25472.519186795194, + "log_likelihood_library_pdip": 25472.51918660555, + "log_likelihood_library_pdip_scalar": 25472.519186807505, + "rel_diff_vmap_vs_library_pdip": 2.6864394864163455e-13, + "rel_diff_scalar_vs_library_pdip_scalar": 4.833020320021711e-13, + "abs_diff_nats": 1.9648723537102342e-07, + "rel_diff": 7.713694665617574e-12, + "rel_diff_scalar_vs_library_pdip": 7.44505071703337e-12, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 2.0195511751808226e-07, + "rel_diff_library_pdip_vmap_vs_scalar": 7.928352748976514e-12, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 6, + "draw_name": "call00015_lane06", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.0031698313356290646, + "centre_1": -0.0038584140676992847, + "ell_comps_0": 0.01810147576636289, + "ell_comps_1": -0.011577480306416508, + "einstein_radius": 0.016136835525067283 + }, + "log_likelihood_vmap": -83383.91630614897, + "log_likelihood_scalar": -83383.91550142097, + "log_likelihood_library_pdip": -83383.91624192083, + "log_likelihood_library_pdip_scalar": -83383.91543133747, + "rel_diff_vmap_vs_library_pdip": 7.702700998483194e-10, + "rel_diff_scalar_vs_library_pdip_scalar": 8.404917557626939e-10, + "abs_diff_nats": 0.0008047279989114031, + "rel_diff": 9.650878038914946e-09, + "rel_diff_scalar_vs_library_pdip": 8.880607853360962e-09, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 0.0008105833549052477, + "rel_diff_library_pdip_vmap_vs_scalar": 9.72109969545293e-09, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 7, + "draw_name": "call00015_lane07", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.006158729760195174, + "centre_1": 0.004883559265258847, + "ell_comps_0": 0.007613883677130215, + "ell_comps_1": -0.005800175617006949, + "einstein_radius": 0.0662922007765554 + }, + "log_likelihood_vmap": -11960.284433087865, + "log_likelihood_scalar": -11960.284429855652, + "log_likelihood_library_pdip": -11960.284433124725, + "log_likelihood_library_pdip_scalar": -11960.284429733794, + "rel_diff_vmap_vs_library_pdip": 3.0818666127510523e-12, + "rel_diff_scalar_vs_library_pdip_scalar": 1.0188531789377876e-11, + "abs_diff_nats": 3.2322132028639317e-06, + "rel_diff": 2.702455131247193e-10, + "rel_diff_scalar_vs_library_pdip": 2.7332737966360486e-10, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 3.390930942259729e-06, + "rel_diff_library_pdip_vmap_vs_scalar": 2.835159115304754e-10, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 8, + "draw_name": "call00015_lane08", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.0030335293924908615, + "centre_1": 0.0012117081273721316, + "ell_comps_0": 0.0008852687687036301, + "ell_comps_1": -0.0027113633212058814, + "einstein_radius": -0.03873713959923952 + }, + "log_likelihood_vmap": 23223.550391413824, + "log_likelihood_scalar": 23223.55039149861, + "log_likelihood_library_pdip": 23223.550391418405, + "log_likelihood_library_pdip_scalar": 23223.55039149858, + "rel_diff_vmap_vs_library_pdip": 1.9722287251224745e-13, + "rel_diff_scalar_vs_library_pdip_scalar": 1.409853735189912e-15, + "abs_diff_nats": 8.478673407807946e-08, + "rel_diff": 3.650894572481783e-12, + "rel_diff_scalar_vs_library_pdip": 3.4536716999821445e-12, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 8.017377695068717e-08, + "rel_diff_library_pdip_vmap_vs_scalar": 3.4522618462350316e-12, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 9, + "draw_name": "call00015_lane09", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.0008035510098975272, + "centre_1": 0.005559773241319952, + "ell_comps_0": -0.003701655436278317, + "ell_comps_1": -0.012378591445614512, + "einstein_radius": 0.032284336889985665 + }, + "log_likelihood_vmap": NaN, + "log_likelihood_scalar": -177117.6541844139, + "log_likelihood_library_pdip": -177118.70764270367, + "log_likelihood_library_pdip_scalar": -177117.7614297063, + "rel_diff_vmap_vs_library_pdip": NaN, + "rel_diff_scalar_vs_library_pdip_scalar": 6.055027543960367e-07, + "abs_diff_nats": NaN, + "rel_diff": NaN, + "rel_diff_scalar_vs_library_pdip": 5.947752802556916e-06, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 0.9462129973690026, + "rel_diff_library_pdip_vmap_vs_scalar": 5.342281822732562e-06, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 10, + "draw_name": "call00015_lane10", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.008473569241265282, + "centre_1": -0.0051993251621340235, + "ell_comps_0": -0.0031466996514049606, + "ell_comps_1": -0.0076036423480284636, + "einstein_radius": 0.08283321334626792 + }, + "log_likelihood_vmap": -101745.38558917546, + "log_likelihood_scalar": -101745.38333517434, + "log_likelihood_library_pdip": -101745.38578021828, + "log_likelihood_library_pdip_scalar": -101745.3833970182, + "rel_diff_vmap_vs_library_pdip": 1.8776557722626077e-09, + "rel_diff_scalar_vs_library_pdip_scalar": 6.078296854568999e-10, + "abs_diff_nats": 0.0022540011268574744, + "rel_diff": 2.2153350382810392e-08, + "rel_diff_scalar_vs_library_pdip": 2.403100562270571e-08, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 0.002383200073381886, + "rel_diff_library_pdip_vmap_vs_scalar": 2.34231765001313e-08, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 11, + "draw_name": "call00015_lane11", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.001017060353322001, + "centre_1": 0.003035861051809724, + "ell_comps_0": 0.0014054844842678396, + "ell_comps_1": -0.00019678252877009805, + "einstein_radius": -0.04179610309843307 + }, + "log_likelihood_vmap": 18957.528349914093, + "log_likelihood_scalar": 18957.52834977374, + "log_likelihood_library_pdip": 18957.52834991384, + "log_likelihood_library_pdip_scalar": 18957.52834977224, + "rel_diff_vmap_vs_library_pdip": 1.3433107512540121e-14, + "rel_diff_scalar_vs_library_pdip_scalar": 7.906343278868383e-14, + "abs_diff_nats": 1.4035322237759829e-07, + "rel_diff": 7.403561254823254e-12, + "rel_diff_scalar_vs_library_pdip": 7.390128147256e-12, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 1.4159741112962365e-07, + "rel_diff_library_pdip_vmap_vs_scalar": 7.469191580099882e-12, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 12, + "draw_name": "call00015_lane12", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.0012508260776529923, + "centre_1": -0.0075763258203543175, + "ell_comps_0": -0.0003476568325791879, + "ell_comps_1": 0.0070528223693464365, + "einstein_radius": -0.005182936058341969 + }, + "log_likelihood_vmap": 24810.049660194898, + "log_likelihood_scalar": 24810.049660194898, + "log_likelihood_library_pdip": 24810.049660194898, + "log_likelihood_library_pdip_scalar": 24810.049660194905, + "rel_diff_vmap_vs_library_pdip": 0.0, + "rel_diff_scalar_vs_library_pdip_scalar": 2.93266547783535e-16, + "abs_diff_nats": 0.0, + "rel_diff": 0.0, + "rel_diff_scalar_vs_library_pdip": 0.0, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 7.275957614183426e-12, + "rel_diff_library_pdip_vmap_vs_scalar": 2.93266547783535e-16, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 13, + "draw_name": "call00015_lane13", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.0039046265841316857, + "centre_1": 0.008586063066835778, + "ell_comps_0": 0.01612319103606081, + "ell_comps_1": -0.006478405394829051, + "einstein_radius": -0.06420305523683667 + }, + "log_likelihood_vmap": -3605.7062166617106, + "log_likelihood_scalar": -3605.7062159682246, + "log_likelihood_library_pdip": -3605.7062169277124, + "log_likelihood_library_pdip_scalar": -3605.7062158656845, + "rel_diff_vmap_vs_library_pdip": 7.377243691350484e-11, + "rel_diff_scalar_vs_library_pdip_scalar": 2.8438276586565567e-11, + "abs_diff_nats": 6.934860721230507e-07, + "rel_diff": 1.9233016518425141e-10, + "rel_diff_scalar_vs_library_pdip": 2.661026020465767e-10, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 1.0620278771966696e-06, + "rel_diff_library_pdip_vmap_vs_scalar": 2.9454087871152034e-10, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 14, + "draw_name": "call00015_lane14", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.007195835212073937, + "centre_1": -0.0022675171274400335, + "ell_comps_0": 0.004220685262914858, + "ell_comps_1": 0.006581974817750368, + "einstein_radius": 0.08589577997501685 + }, + "log_likelihood_vmap": 11126.92147574079, + "log_likelihood_scalar": 11126.921475785763, + "log_likelihood_library_pdip": 11126.92147574079, + "log_likelihood_library_pdip_scalar": 11126.921475785763, + "rel_diff_vmap_vs_library_pdip": 0.0, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 4.4972694013267756e-08, + "rel_diff": 4.041791263750414e-12, + "rel_diff_scalar_vs_library_pdip": 4.04179126376675e-12, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 4.4972694013267756e-08, + "rel_diff_library_pdip_vmap_vs_scalar": 4.041791263750414e-12, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 15, + "draw_name": "call00015_lane15", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.0024446743118905125, + "centre_1": 0.0028324231769206983, + "ell_comps_0": -0.017159158004659933, + "ell_comps_1": 0.008265799441903459, + "einstein_radius": -0.03860302877433641 + }, + "log_likelihood_vmap": 20410.343973734118, + "log_likelihood_scalar": 20410.3439737228, + "log_likelihood_library_pdip": 20410.34397373382, + "log_likelihood_library_pdip_scalar": 20410.343973724375, + "rel_diff_vmap_vs_library_pdip": 1.4615837075819138e-14, + "rel_diff_scalar_vs_library_pdip_scalar": 7.717874943698311e-14, + "abs_diff_nats": 1.1317752068862319e-08, + "rel_diff": 5.545105993036327e-13, + "rel_diff_scalar_vs_library_pdip": 5.398947622275142e-13, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 9.444192983210087e-09, + "rel_diff_library_pdip_vmap_vs_scalar": 4.627160127907809e-13, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 16, + "draw_name": "call00015_lane16", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.00546338030193603, + "centre_1": 0.0029217319844296002, + "ell_comps_0": 0.018887239108742314, + "ell_comps_1": 0.01610145140759906, + "einstein_radius": 0.09308737119031596 + }, + "log_likelihood_vmap": 9734.862241683652, + "log_likelihood_scalar": 9734.862241683608, + "log_likelihood_library_pdip": 9734.862241683906, + "log_likelihood_library_pdip_scalar": 9734.862241680137, + "rel_diff_vmap_vs_library_pdip": 2.615943710081406e-14, + "rel_diff_scalar_vs_library_pdip_scalar": 3.565157570598039e-13, + "abs_diff_nats": 4.3655745685100555e-11, + "rel_diff": 4.484474931568262e-15, + "rel_diff_scalar_vs_library_pdip": 3.0643912032382183e-14, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 3.768946044147015e-09, + "rel_diff_library_pdip_vmap_vs_scalar": 3.8715966909219796e-13, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 17, + "draw_name": "call00015_lane17", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.0033403521024317102, + "centre_1": -0.004078467297591464, + "ell_comps_0": -0.01076606265657356, + "ell_comps_1": 0.014404445881011321, + "einstein_radius": -0.016103243806114165 + }, + "log_likelihood_vmap": 19481.557219621747, + "log_likelihood_scalar": 19481.557217641563, + "log_likelihood_library_pdip": 19481.557219621747, + "log_likelihood_library_pdip_scalar": 19481.557217641563, + "rel_diff_vmap_vs_library_pdip": 0.0, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 1.980184606509283e-06, + "rel_diff": 1.0164406183691123e-10, + "rel_diff_scalar_vs_library_pdip": 1.0164406182657971e-10, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 1.980184606509283e-06, + "rel_diff_library_pdip_vmap_vs_scalar": 1.0164406183691123e-10, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 18, + "draw_name": "call00015_lane18", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.0036504937209151113, + "centre_1": -0.0003963555596475738, + "ell_comps_0": -0.008227000946306733, + "ell_comps_1": -0.02487475830854786, + "einstein_radius": -0.0327871904693704 + }, + "log_likelihood_vmap": 18812.94686042335, + "log_likelihood_scalar": 18812.946857997056, + "log_likelihood_library_pdip": 18812.94686042335, + "log_likelihood_library_pdip_scalar": 18812.946857997056, + "rel_diff_vmap_vs_library_pdip": 0.0, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 2.4262953957077116e-06, + "rel_diff": 1.2896944928520519e-10, + "rel_diff_scalar_vs_library_pdip": 1.2896944926857206e-10, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 2.4262953957077116e-06, + "rel_diff_library_pdip_vmap_vs_scalar": 1.2896944928520519e-10, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 19, + "draw_name": "call00015_lane19", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.00840275144875603, + "centre_1": -0.003628185056462521, + "ell_comps_0": 0.005265994929748281, + "ell_comps_1": 0.009958068668923414, + "einstein_radius": -0.06501253116347949 + }, + "log_likelihood_vmap": 16927.63254956939, + "log_likelihood_scalar": 16927.632549568436, + "log_likelihood_library_pdip": 16927.632549569375, + "log_likelihood_library_pdip_scalar": 16927.632549568527, + "rel_diff_vmap_vs_library_pdip": 8.596544842141579e-16, + "rel_diff_scalar_vs_library_pdip_scalar": 5.372840526338756e-15, + "abs_diff_nats": 9.531504474580288e-10, + "rel_diff": 5.630736871603047e-14, + "rel_diff_scalar_vs_library_pdip": 5.5447714231813184e-14, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 8.476490620523691e-10, + "rel_diff_library_pdip_vmap_vs_scalar": 5.0074873705477204e-14, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + } + ], + "lane_pins": [ + { + "pin": "lane 0: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 24758.506194309146, + "reference_value": 24758.506194309142, + "rel_diff": 1.469385421939519e-16, + "abs_diff_nats": 3.637978807091713e-12, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 0: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 24758.506194309135, + "reference_value": 24758.50619430913, + "rel_diff": 1.4693854219395194e-16, + "abs_diff_nats": 3.637978807091713e-12, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 0: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 24758.506194309146, + "reference_value": 24758.506194309135, + "rel_diff": 4.4081562658185577e-16, + "abs_diff_nats": 1.0913936421275139e-11, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 0: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 24758.506194309142, + "reference_value": 24758.50619430913, + "rel_diff": 4.408156265818558e-16, + "abs_diff_nats": 1.0913936421275139e-11, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 1: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 20551.00488777266, + "reference_value": 20551.004887772666, + "rel_diff": 3.540438851490147e-16, + "abs_diff_nats": 7.275957614183426e-12, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 1: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 20551.00488777356, + "reference_value": 20551.00488777308, + "rel_diff": 2.33668964198345e-14, + "abs_diff_nats": 4.802132025361061e-10, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 1: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 20551.00488777266, + "reference_value": 20551.00488777356, + "rel_diff": 4.3901441758475915e-14, + "abs_diff_nats": 9.022187441587448e-10, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 1: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 20551.004887772666, + "reference_value": 20551.00488777308, + "rel_diff": 2.018050145349343e-14, + "abs_diff_nats": 4.147295840084553e-10, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 2: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -189709.9713791528, + "reference_value": -189709.70530157938, + "rel_diff": 1.4025511925612143e-06, + "abs_diff_nats": 0.26607757341116667, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 2: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -189709.05842409882, + "reference_value": -189709.060063124, + "rel_diff": 8.639677877689878e-09, + "abs_diff_nats": 0.0016390251694247127, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 2: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -189709.9713791528, + "reference_value": -189709.05842409882, + "rel_diff": 4.812395683945833e-06, + "abs_diff_nats": 0.9129550539655611, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 2: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -189709.70530157938, + "reference_value": -189709.060063124, + "rel_diff": 3.4012000015722623e-06, + "abs_diff_nats": 0.6452384553849697, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 3: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -141741.9790338971, + "reference_value": -141741.98123707197, + "rel_diff": 1.5543559131228685e-08, + "abs_diff_nats": 0.002203174866735935, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 3: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -141741.96576941968, + "reference_value": -141741.9668731601, + "rel_diff": 7.786969820431048e-09, + "abs_diff_nats": 0.001103740418329835, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 3: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -141741.9790338971, + "reference_value": -141741.96576941968, + "rel_diff": 9.358186445051372e-08, + "abs_diff_nats": 0.013264477427583188, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 3: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -141741.98123707197, + "reference_value": -141741.9668731601, + "rel_diff": 1.0133845460775246e-07, + "abs_diff_nats": 0.014363911875989288, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 4: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 24880.545932988694, + "reference_value": 24880.545932988694, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 4: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 24880.54593298874, + "reference_value": 24880.545932988738, + "rel_diff": 1.4621780474150176e-16, + "abs_diff_nats": 3.637978807091713e-12, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 4: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 24880.545932988694, + "reference_value": 24880.54593298874, + "rel_diff": 1.9008314616395227e-15, + "abs_diff_nats": 4.729372449219227e-11, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 4: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 24880.545932988694, + "reference_value": 24880.545932988738, + "rel_diff": 1.754613656898021e-15, + "abs_diff_nats": 4.3655745685100555e-11, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 5: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 25472.519186598707, + "reference_value": 25472.51918660555, + "rel_diff": 2.6864394864163455e-13, + "abs_diff_nats": 6.843038136139512e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 5: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 25472.519186795194, + "reference_value": 25472.519186807505, + "rel_diff": 4.833020320021711e-13, + "abs_diff_nats": 1.2310920283198357e-08, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 5: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 25472.519186598707, + "reference_value": 25472.519186795194, + "rel_diff": 7.713694665617574e-12, + "abs_diff_nats": 1.9648723537102342e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 5: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 25472.51918660555, + "reference_value": 25472.519186807505, + "rel_diff": 7.928352748976514e-12, + "abs_diff_nats": 2.0195511751808226e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 6: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -83383.91630614897, + "reference_value": -83383.91624192083, + "rel_diff": 7.702700998483194e-10, + "abs_diff_nats": 6.422813748940825e-05, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 6: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -83383.91550142097, + "reference_value": -83383.91543133747, + "rel_diff": 8.404917557626939e-10, + "abs_diff_nats": 7.008349348325282e-05, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 6: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -83383.91630614897, + "reference_value": -83383.91550142097, + "rel_diff": 9.650878038914946e-09, + "abs_diff_nats": 0.0008047279989114031, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 6: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -83383.91624192083, + "reference_value": -83383.91543133747, + "rel_diff": 9.72109969545293e-09, + "abs_diff_nats": 0.0008105833549052477, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 7: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -11960.284433087865, + "reference_value": -11960.284433124725, + "rel_diff": 3.0818666127510523e-12, + "abs_diff_nats": 3.6860001273453236e-08, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 7: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -11960.284429855652, + "reference_value": -11960.284429733794, + "rel_diff": 1.0188531789377876e-11, + "abs_diff_nats": 1.2185773812234402e-07, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 7: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -11960.284433087865, + "reference_value": -11960.284429855652, + "rel_diff": 2.702455131247193e-10, + "abs_diff_nats": 3.2322132028639317e-06, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 7: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -11960.284433124725, + "reference_value": -11960.284429733794, + "rel_diff": 2.835159115304754e-10, + "abs_diff_nats": 3.390930942259729e-06, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 8: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 23223.550391413824, + "reference_value": 23223.550391418405, + "rel_diff": 1.9722287251224745e-13, + "abs_diff_nats": 4.580215318128467e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 8: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 23223.55039149861, + "reference_value": 23223.55039149858, + "rel_diff": 1.409853735189912e-15, + "abs_diff_nats": 3.2741809263825417e-11, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 8: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 23223.550391413824, + "reference_value": 23223.55039149861, + "rel_diff": 3.650894572481783e-12, + "abs_diff_nats": 8.478673407807946e-08, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 8: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 23223.550391418405, + "reference_value": 23223.55039149858, + "rel_diff": 3.4522618462350316e-12, + "abs_diff_nats": 8.017377695068717e-08, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 9: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": NaN, + "reference_value": -177118.70764270367, + "rel_diff": NaN, + "abs_diff_nats": NaN, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 9: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -177117.6541844139, + "reference_value": -177117.7614297063, + "rel_diff": 6.055027543960367e-07, + "abs_diff_nats": 0.10724529239814728, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 9: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": NaN, + "reference_value": -177117.6541844139, + "rel_diff": NaN, + "abs_diff_nats": NaN, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 9: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -177118.70764270367, + "reference_value": -177117.7614297063, + "rel_diff": 5.342281822732562e-06, + "abs_diff_nats": 0.9462129973690026, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 10: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -101745.38558917546, + "reference_value": -101745.38578021828, + "rel_diff": 1.8776557722626077e-09, + "abs_diff_nats": 0.0001910428109113127, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 10: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -101745.38333517434, + "reference_value": -101745.3833970182, + "rel_diff": 6.078296854568999e-10, + "abs_diff_nats": 6.184386438690126e-05, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 10: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -101745.38558917546, + "reference_value": -101745.38333517434, + "rel_diff": 2.2153350382810392e-08, + "abs_diff_nats": 0.0022540011268574744, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 10: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -101745.38578021828, + "reference_value": -101745.3833970182, + "rel_diff": 2.34231765001313e-08, + "abs_diff_nats": 0.002383200073381886, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 11: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 18957.528349914093, + "reference_value": 18957.52834991384, + "rel_diff": 1.3433107512540121e-14, + "abs_diff_nats": 2.546585164964199e-10, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 11: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 18957.52834977374, + "reference_value": 18957.52834977224, + "rel_diff": 7.906343278868383e-14, + "abs_diff_nats": 1.4988472685217857e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 11: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 18957.528349914093, + "reference_value": 18957.52834977374, + "rel_diff": 7.403561254823254e-12, + "abs_diff_nats": 1.4035322237759829e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 11: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 18957.52834991384, + "reference_value": 18957.52834977224, + "rel_diff": 7.469191580099882e-12, + "abs_diff_nats": 1.4159741112962365e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 12: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 24810.049660194898, + "reference_value": 24810.049660194898, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 12: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 24810.049660194898, + "reference_value": 24810.049660194905, + "rel_diff": 2.93266547783535e-16, + "abs_diff_nats": 7.275957614183426e-12, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 12: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 24810.049660194898, + "reference_value": 24810.049660194898, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 12: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 24810.049660194898, + "reference_value": 24810.049660194905, + "rel_diff": 2.93266547783535e-16, + "abs_diff_nats": 7.275957614183426e-12, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 13: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -3605.7062166617106, + "reference_value": -3605.7062169277124, + "rel_diff": 7.377243691350484e-11, + "abs_diff_nats": 2.6600173441693187e-07, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 13: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -3605.7062159682246, + "reference_value": -3605.7062158656845, + "rel_diff": 2.8438276586565567e-11, + "abs_diff_nats": 1.0254007065668702e-07, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 13: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -3605.7062166617106, + "reference_value": -3605.7062159682246, + "rel_diff": 1.9233016518425141e-10, + "abs_diff_nats": 6.934860721230507e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 13: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -3605.7062169277124, + "reference_value": -3605.7062158656845, + "rel_diff": 2.9454087871152034e-10, + "abs_diff_nats": 1.0620278771966696e-06, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 14: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 11126.92147574079, + "reference_value": 11126.92147574079, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 14: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 11126.921475785763, + "reference_value": 11126.921475785763, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 14: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 11126.92147574079, + "reference_value": 11126.921475785763, + "rel_diff": 4.041791263750414e-12, + "abs_diff_nats": 4.4972694013267756e-08, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 14: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 11126.92147574079, + "reference_value": 11126.921475785763, + "rel_diff": 4.041791263750414e-12, + "abs_diff_nats": 4.4972694013267756e-08, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 15: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 20410.343973734118, + "reference_value": 20410.34397373382, + "rel_diff": 1.4615837075819138e-14, + "abs_diff_nats": 2.9831426218152046e-10, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 15: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 20410.3439737228, + "reference_value": 20410.343973724375, + "rel_diff": 7.717874943698311e-14, + "abs_diff_nats": 1.5752448234707117e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 15: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 20410.343973734118, + "reference_value": 20410.3439737228, + "rel_diff": 5.545105993036327e-13, + "abs_diff_nats": 1.1317752068862319e-08, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 15: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 20410.34397373382, + "reference_value": 20410.343973724375, + "rel_diff": 4.627160127907809e-13, + "abs_diff_nats": 9.444192983210087e-09, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 16: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 9734.862241683652, + "reference_value": 9734.862241683906, + "rel_diff": 2.615943710081406e-14, + "abs_diff_nats": 2.546585164964199e-10, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 16: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 9734.862241683608, + "reference_value": 9734.862241680137, + "rel_diff": 3.565157570598039e-13, + "abs_diff_nats": 3.470631781965494e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 16: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 9734.862241683652, + "reference_value": 9734.862241683608, + "rel_diff": 4.484474931568262e-15, + "abs_diff_nats": 4.3655745685100555e-11, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 16: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 9734.862241683906, + "reference_value": 9734.862241680137, + "rel_diff": 3.8715966909219796e-13, + "abs_diff_nats": 3.768946044147015e-09, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 17: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 19481.557219621747, + "reference_value": 19481.557219621747, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 17: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 19481.557217641563, + "reference_value": 19481.557217641563, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 17: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 19481.557219621747, + "reference_value": 19481.557217641563, + "rel_diff": 1.0164406183691123e-10, + "abs_diff_nats": 1.980184606509283e-06, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 17: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 19481.557219621747, + "reference_value": 19481.557217641563, + "rel_diff": 1.0164406183691123e-10, + "abs_diff_nats": 1.980184606509283e-06, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 18: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 18812.94686042335, + "reference_value": 18812.94686042335, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 18: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 18812.946857997056, + "reference_value": 18812.946857997056, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 18: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 18812.94686042335, + "reference_value": 18812.946857997056, + "rel_diff": 1.2896944928520519e-10, + "abs_diff_nats": 2.4262953957077116e-06, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 18: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 18812.94686042335, + "reference_value": 18812.946857997056, + "rel_diff": 1.2896944928520519e-10, + "abs_diff_nats": 2.4262953957077116e-06, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 19: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 16927.63254956939, + "reference_value": 16927.632549569375, + "rel_diff": 8.596544842141579e-16, + "abs_diff_nats": 1.4551915228366852e-11, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 19: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 16927.632549568436, + "reference_value": 16927.632549568527, + "rel_diff": 5.372840526338756e-15, + "abs_diff_nats": 9.094947017729282e-11, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 19: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 16927.63254956939, + "reference_value": 16927.632549568436, + "rel_diff": 5.630736871603047e-14, + "abs_diff_nats": 9.531504474580288e-10, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 19: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 16927.632549569375, + "reference_value": 16927.632549568527, + "rel_diff": 5.0074873705477204e-14, + "abs_diff_nats": 8.476490620523691e-10, + "within_rtol": true, + "status": "RECORDED" + } + ], + "lanes_failed": 4, + "arm_rows": { + "vmap": { + "arm": "vmap", + "program": "jax.jit(jax.vmap(fn))", + "stands_for": "Nautilus(use_jax_vmap=True) \u2014 Fitness._vmap", + "hlo_source": "jax.jit(jax.vmap(fn)).lower(batched_tree) \u2014 the exact current Fitness._vmap composition (PyAutoFit#1638)", + "batch_wall_ms": 860.2807180999662, + "wall_production_nesting_ms": 860.2807180999662, + "wall_aot_command_buffers_on_ms": 859.7858360997634, + "wall_aot_command_buffers_off_ms": 861.0063706997607, + "command_buffer_delta_ms": 1.220534599997336, + "production_nesting_vs_aot_on_delta_ms": 0.4948820002027787, + "production_nesting_vs_aot_on_delta_pct": 0.05755875235718074, + "wall_per_lane_ms": 43.01403590499831, + "wall_per_lane_command_buffers_off_ms": 43.05031853498804, + "traced_batch_wall_ms": 874.5379600000888, + "untraced_batch_wall_ms": 861.7021375001059, + "traced_wall_per_lane_ms": 43.72689800000444, + "callback_count_per_call": 20.0, + "callback_count_per_lane": 1.0, + "callback_expectation": "B per batched call \u2014 the qhull pure_callback is vmap_method='sequential'", + "host_qhull_ms": 89.25898770030471, + "host_tables_ms": 2.283171498493175, + "host_qhull_ms_per_lane": 4.462949385015236, + "host_tables_ms_per_lane": 0.11415857492465875, + "host_callback_probe": { + "calls": 200, + "qhull_ms_total": 892.5898770030471, + "tables_ms_total": 22.83171498493175, + "total_ms_total": 915.4215919879789, + "qhull_ms_mean": 4.462949385015236, + "tables_ms_mean": 0.11415857492465875, + "total_ms_mean": 4.5771079599398945, + "non_finite_calls": 0, + "n_points": [ + 1500 + ] + }, + "host_callback_records_first": [ + { + "n_points": 1500, + "qhull_ms": 4.688020999310538, + "tables_ms": 0.1740180014166981, + "total_ms": 4.862039000727236, + "finite": true + }, + { + "n_points": 1500, + "qhull_ms": 4.441242999746464, + "tables_ms": 0.10936900071101263, + "total_ms": 4.550612000457477, + "finite": true + }, + { + "n_points": 1500, + "qhull_ms": 4.439071999513544, + "tables_ms": 0.10838000162038952, + "total_ms": 4.547452001133934, + "finite": true + }, + { + "n_points": 1500, + "qhull_ms": 4.512621999310795, + "tables_ms": 0.10914100130321458, + "total_ms": 4.62176300061401, + "finite": true + } + ], + "device_idle_ms": 126.61401669999998, + "device_idle_ms_per_lane": 6.330700834999999, + "trace": { + "parser": "ProfileData.from_file(xplane) + as_text() + stack_frame_index(proto field 17)", + "stage_audit": { + "chi_squared_evidence": [ + { + "instruction": "loop_divide_fusion", + "ms": 0.005107199999999999, + "opcode": "fusion", + "shape": "f64[15361,20]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:352", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:352 (AbstractNDArray.__truediv__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:57 (unwrap_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:35 (to_new_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:78 (chi_squared_map_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:78 (AbstractFit.chi_squared_map)" + ] + }, + { + "instruction": "input_reduce_fusion.42", + "ms": 0.003955200000000001, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:104", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:104 (noise_normalization_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:98 (AbstractFit.noise_normalization)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:306 (FitDataset.noise_normalization)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:349 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)" + ] + }, + { + "instruction": "input_reduce_fusion.16", + "ms": 0.0035072000000000002, + "opcode": "fusion", + "shape": "f64[92,20]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:90", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:90 (chi_squared_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:87 (AbstractFit.chi_squared)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:293 (FitDataset.chi_squared)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:345 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)" + ] + }, + { + "instruction": "input_reduce_fusion.44", + "ms": 0.0021664, + "opcode": "fusion", + "shape": "f64[20]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:90", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:90 (chi_squared_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:87 (AbstractFit.chi_squared)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:293 (FitDataset.chi_squared)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:345 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)" + ] + } + ], + "psf_convolution_mapping_matrix": [ + { + "instruction": "input_scatter_fusion", + "ms": 40.255740200000005, + "opcode": "fusion", + "shape": "f64[20,1500,180,180]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.29.0", + "ms": 35.26522589999999, + "opcode": "fft", + "shape": "f64[20,1500,180,180]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.25.0", + "ms": 26.872518, + "opcode": "fft", + "shape": "c128[20,1500,180,91]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.27.0", + "ms": 19.394286, + "opcode": "fft", + "shape": "c128[20,1500,91,180]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_transpose_fusion.2", + "ms": 10.5452666, + "opcode": "fusion", + "shape": "c128[20,1500,91,180]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "wrapped_transpose", + "ms": 9.8953514, + "opcode": "fusion", + "shape": "c128[20,1500,180,91]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + } + ], + "mapping_matrix": [ + { + "instruction": "loop_broadcast_fusion.7", + "ms": 2.1304465999999995, + "opcode": "fusion", + "shape": "f64[15361,20,1500]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:353", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:353 (mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:283 (Mapper.mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:91 (AbstractInversionImaging._mapping_matrix_for_convolution_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:137 (AbstractInversionImaging.operated_mapping_matrix_list)" + ] + }, + { + "instruction": "input_scatter_fusion.3", + "ms": 0.0576963, + "opcode": "fusion", + "shape": "f64[20,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:71", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:71 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:120 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + }, + { + "instruction": "input_reduce_fusion.45", + "ms": 0.0037568000000000002, + "opcode": "fusion", + "shape": "f64[20]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:120 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + }, + { + "instruction": "loop_divide_fusion.1", + "ms": 0.0031488, + "opcode": "fusion", + "shape": "f64[20,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:92", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:92 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:120 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + } + ], + "other": [ + { + "instruction": "copy.105", + "ms": 0.04816039999999986, + "opcode": "copy", + "shape": "f64[1,20,1024,2]{3,2,1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.107", + "ms": 0.04019840000000011, + "opcode": "copy", + "shape": "s32[1,3000,3]{2,1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.108", + "ms": 0.03985300000000014, + "opcode": "copy", + "shape": "s32[1,3000,3]{2,1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.109", + "ms": 0.03983050000000011, + "opcode": "copy", + "shape": "f64[1,1500,2]{2,1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.106", + "ms": 0.039318400000000024, + "opcode": "copy", + "shape": "s32[1,1500]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "loop_broadcast_fusion.6", + "ms": 0.0034624000000000005, + "opcode": "fusion", + "shape": "(pred[20,21361]{1,0}, pred[20,21361]{1,0})", + "source": "", + "stack": [] + } + ], + "mesh_qhull_callback": [ + { + "instruction": "pure_callback.0", + "ms": 0.21496360000000034, + "opcode": "custom-call", + "shape": "(s32[3000,3]{1,0}, s32[3000,3]{1,0}, s32[1500]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:161", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:161 (_jax_delaunay_tables)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:405 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + }, + { + "instruction": "loop_add_fusion.1", + "ms": 0.030284799999999893, + "opcode": "fusion", + "shape": "s64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:161", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:161 (_jax_delaunay_tables)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:405 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + }, + { + "instruction": "loop_broadcast_fusion.3", + "ms": 0.0020127999999999995, + "opcode": "fusion", + "shape": "s32[20,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:161", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:161 (_jax_delaunay_tables)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:405 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + } + ], + "mixed_fusion": [ + { + "instruction": "loop_divide_gather_fusion", + "ms": 21.386163000000003, + "opcode": "fusion", + "shape": "(f64[15361,20,1,1,1500]{4,3,2,1,0}, f64[15361,20,1,1,1500]{4,3,2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_add_multiply_transpose_fusion", + "ms": 1.9976687000000002, + "opcode": "fusion", + "shape": "(f64[20,1500,1500]{2,1,0}, f64[20,1500,1500]{2,1,0}, f64[20,1500,1500]{2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:61", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:61 (initialize)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:72 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:508 (reconstruction_positive_only_from)" + ] + }, + { + "instruction": "input_transpose_fusion.3", + "ms": 0.5446319, + "opcode": "fusion", + "shape": "f64[20,1500,1500]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1157 (AbstractInversion.log_det_regularization_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:348 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "input_scatter_fusion.1", + "ms": 0.1771909, + "opcode": "fusion", + "shape": "f64[20,1500,1500]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:579", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:579 (pixel_splitted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:137 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_scatter_fusion.6", + "ms": 0.0780739, + "opcode": "fusion", + "shape": "f64[15361,20,1500]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:353", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:353 (mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:283 (Mapper.mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:91 (AbstractInversionImaging._mapping_matrix_for_convolution_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:137 (AbstractInversionImaging.operated_mapping_matrix_list)" + ] + }, + { + "instruction": "input_scatter_fusion.2", + "ms": 0.0721697, + "opcode": "fusion", + "shape": "f64[20,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:70", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:70 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:120 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + } + ], + "ray_trace_data_grid": [ + { + "instruction": "input_reduce_fusion.29", + "ms": 0.0027648000000000004, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:506", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:506 (FlatLambdaCDM._simpson_1d)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:644 (FlatLambdaCDM.angular_diameter_distance_kpc_z1z2)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:151 (LensingCosmology.angular_diameter_distance_between_redshifts_in_kpc_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:355 (LensingCosmology.scaling_factor_between_redshifts_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer_util.py:252 (traced_grid_2d_list_from)" + ] + }, + { + "instruction": "input_reduce_fusion.27", + "ms": 0.0027424000000000003, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:506", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:506 (FlatLambdaCDM._simpson_1d)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:644 (FlatLambdaCDM.angular_diameter_distance_kpc_z1z2)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:133 (LensingCosmology.angular_diameter_distance_to_earth_in_kpc_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:362 (LensingCosmology.scaling_factor_between_redshifts_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer_util.py:252 (traced_grid_2d_list_from)" + ] + }, + { + "instruction": "input_reduce_fusion.28", + "ms": 0.0025760000000000006, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:503", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:503 (FlatLambdaCDM._simpson_1d)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:644 (FlatLambdaCDM.angular_diameter_distance_kpc_z1z2)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:133 (LensingCosmology.angular_diameter_distance_to_earth_in_kpc_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:362 (LensingCosmology.scaling_factor_between_redshifts_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer_util.py:252 (traced_grid_2d_list_from)" + ] + }, + { + "instruction": "input_reduce_fusion.30", + "ms": 0.0025472000000000008, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:503", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:503 (FlatLambdaCDM._simpson_1d)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:644 (FlatLambdaCDM.angular_diameter_distance_kpc_z1z2)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:151 (LensingCosmology.angular_diameter_distance_between_redshifts_in_kpc_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:355 (LensingCosmology.scaling_factor_between_redshifts_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer_util.py:252 (traced_grid_2d_list_from)" + ] + }, + { + "instruction": "loop_divide_fusion.2", + "ms": 0.0024928, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:380", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:380 (LensingCosmology.scaling_factor_between_redshifts_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer_util.py:252 (traced_grid_2d_list_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer.py:632 (Tracer.traced_grid_2d_list_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/structures/decorators/abstract.py:93 (AbstractMaker.evaluate_func)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/structures/decorators/abstract.py:110 (AbstractMaker.result)" + ] + } + ], + "border_relocator": [ + { + "instruction": "custom-call.2", + "ms": 0.042156900000000004, + "opcode": "custom-call", + "shape": "(f64[20,2,2]{2,1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_add_rsqrt_fusion", + "ms": 0.015168100000000002, + "opcode": "fusion", + "shape": "(f64[20,15361]{1,0}, f64[20,15361]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:311", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:311 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:423 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:208 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "eigh.34", + "ms": 0.014604799999999998, + "opcode": "custom-call", + "shape": "(f64[20,2,2]{1,2,0}, f64[20,2]{1,0}, s32[20]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_concatenate_fusion.7", + "ms": 0.009929499999999999, + "opcode": "fusion", + "shape": "f64[20,15361,2]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:323", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:323 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:423 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:208 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_add_fusion.4", + "ms": 0.0039521, + "opcode": "fusion", + "shape": "f64[20,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:458 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_concatenate_fusion.9", + "ms": 0.0039104, + "opcode": "fusion", + "shape": "f64[20,1500,2]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:323", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:323 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:458 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + } + ], + "mesh_construction": [ + { + "instruction": "loop_compare_fusion.4", + "ms": 0.004796799999999999, + "opcode": "fusion", + "shape": "pred[20,6000,3]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:736", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:736 (DelaunayInterface.splitted_sizes)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:997 (InterpolatorDelaunay._mappings_sizes_weights_split)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:124 (AdaptSplit.regularization_matrix_from)" + ] + }, + { + "instruction": "loop_transpose_fusion.1", + "ms": 0.0025024, + "opcode": "fusion", + "shape": "f64[20,1500,2]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:820", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:820 (InterpolatorDelaunay.mesh_grid_xy)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:847 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + }, + { + "instruction": "loop_multiply_fusion.4", + "ms": 0.0024064000000000004, + "opcode": "fusion", + "shape": "f64[20,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:412", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:412 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "mesh_seed_argmin": [ + { + "instruction": "input_reduce_fusion", + "ms": 1.6113093999999986, + "opcode": "fusion", + "shape": "(f64[20,1024]{1,0}, s64[20,1024]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:191", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:191 (_nearest_vertex_seed_from..argmin_chunk)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)" + ] + }, + { + "instruction": "loop_dynamic_update_slice_fusion", + "ms": 0.04755209999999993, + "opcode": "fusion", + "shape": "s32[21,20,1024]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_add_fusion", + "ms": 0.031497599999999897, + "opcode": "fusion", + "shape": "s64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_broadcast_fusion.4", + "ms": 0.0026912, + "opcode": "fusion", + "shape": "s32[21,20,1024]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "mesh_dual_areas": [ + { + "instruction": "input_scatter_fusion.9", + "ms": 0.0032704000000000006, + "opcode": "fusion", + "shape": "f64[20,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:393", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:393 (_dual_areas_padded_jnp)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:408 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + }, + { + "instruction": "input_scatter_fusion.7", + "ms": 0.0032448000000000004, + "opcode": "fusion", + "shape": "f64[20,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:393", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:393 (_dual_areas_padded_jnp)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:408 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + } + ], + "mesh_locate_walk": [ + { + "instruction": "loop_slice_subtract_fusion", + "ms": 0.36520679999999994, + "opcode": "fusion", + "shape": "(f64[20,21361,1]{2,1,0}, f64[20,21361,1]{2,1,0}, f64[20,21361,1]{2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:236", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:236 (_walk_from_seed..cross)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:250 (_walk_from_seed..weights_of)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:262 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)" + ] + }, + { + "instruction": "loop_reduce_fusion", + "ms": 0.1510532, + "opcode": "fusion", + "shape": "(f64[20,21361]{1,0}, s64[20,21361]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:264", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:264 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:264 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)" + ] + }, + { + "instruction": "loop_select_fusion", + "ms": 0.12782750000000004, + "opcode": "fusion", + "shape": "(pred[20,21361]{1,0}, pred[20,21361]{1,0}, s32[20,21361]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_gather_fusion.1", + "ms": 0.08276500000000005, + "opcode": "fusion", + "shape": "s32[427220,1,1,3]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:239", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:239 (_walk_from_seed..weights_of)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:262 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)" + ] + }, + { + "instruction": "loop_gather_fusion", + "ms": 0.06227250000000001, + "opcode": "fusion", + "shape": "s32[427220,1,1,1]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:267", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:267 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)" + ] + }, + { + "instruction": "input_concatenate_fusion.1", + "ms": 0.04550440000000001, + "opcode": "fusion", + "shape": "s32[20,21361,2]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:244", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:244 (_walk_from_seed..weights_of)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:262 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)" + ] + } + ], + "regularization_H": [ + { + "instruction": "loop_broadcast_fusion", + "ms": 0.3577576, + "opcode": "fusion", + "shape": "f64[20,1500,1500]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:579", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:579 (pixel_splitted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:137 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_scatter_fusion.10", + "ms": 0.0035776000000000002, + "opcode": "fusion", + "shape": "f64[20,1500,1500]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:615", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:615 (pixel_splitted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:137 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "curvature_matrix_F": [ + { + "instruction": "cublas-lt-matmul.2", + "ms": 81.6426088, + "opcode": "custom-call", + "shape": "(f64[20,1500,1500]{2,1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "inversion_other": [ + { + "instruction": "cholesky.60", + "ms": 7.856779799999939, + "opcode": "custom-call", + "shape": "(f64[20,1500,1500]{1,2,0}, s32[20]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1078 (AbstractInversion.log_det_curvature_reg_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:347 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "cholesky.70", + "ms": 7.794712899999928, + "opcode": "custom-call", + "shape": "(f64[20,1500,1500]{1,2,0}, s32[20]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1157 (AbstractInversion.log_det_regularization_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:348 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "input_reduce_fusion.25", + "ms": 0.21310460000000003, + "opcode": "fusion", + "shape": "f64[20,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:946", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:946 (AbstractInversion.regularization_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:346 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)", + "/mnt/ral/jnightin/autolens_profiling_wt/certified-solver-phase-c1-lane-rate/scripts/imaging/likelihood_breakdown/fixed_light_trace.py:1195 (_captured_likelihood_fn.._likelihood)" + ] + }, + { + "instruction": "input_reduce_fusion.20", + "ms": 0.005599999999999999, + "opcode": "fusion", + "shape": "f64[20]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:985", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:985 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1078 (AbstractInversion.log_det_curvature_reg_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:347 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "input_reduce_fusion.19", + "ms": 0.0055072, + "opcode": "fusion", + "shape": "f64[20]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:985", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:985 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1157 (AbstractInversion.log_det_regularization_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:348 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "input_reduce_fusion.41", + "ms": 0.0053504, + "opcode": "fusion", + "shape": "f64[20]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:944", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:944 (AbstractInversion.regularization_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:346 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)", + "/mnt/ral/jnightin/autolens_profiling_wt/certified-solver-phase-c1-lane-rate/scripts/imaging/likelihood_breakdown/fixed_light_trace.py:1195 (_captured_likelihood_fn.._likelihood)" + ] + } + ], + "pdip_solve": [ + { + "instruction": "cholesky.20", + "ms": 214.2975830999601, + "opcode": "custom-call", + "shape": "(f64[20,1500,1500]{1,2,0}, s32[20]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:106", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:106 (factorize_kkt)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:212 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve", + "ms": 55.00485000000313, + "opcode": "custom-call", + "shape": "(f64[20,1500,1]{1,2,0}, s8[320]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:213 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve.2", + "ms": 51.31713090000183, + "opcode": "custom-call", + "shape": "(f64[20,1500,1]{1,2,0}, s8[320]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:217 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve.3", + "ms": 49.98408970000196, + "opcode": "custom-call", + "shape": "(f64[20,1500,1]{1,2,0}, s8[320]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:217 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve.1", + "ms": 49.95325070000221, + "opcode": "custom-call", + "shape": "(f64[20,1500,1]{1,2,0}, s8[320]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:213 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "input_transpose_fusion", + "ms": 13.584215600000006, + "opcode": "fusion", + "shape": "f64[20,1500,1500]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:106", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:106 (factorize_kkt)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:212 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + } + ], + "data_vector_D": [ + { + "instruction": "input_reduce_fusion.17", + "ms": 2.6289981, + "opcode": "fusion", + "shape": "f64[92,20,1500]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123 (data_vector_via_blurred_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:67 (InversionImagingMapping.data_vector)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:699 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_reduce_fusion.43", + "ms": 0.0208513, + "opcode": "fusion", + "shape": "f64[20,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123 (data_vector_via_blurred_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:67 (InversionImagingMapping.data_vector)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:699 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "mapped_reconstruction": [ + { + "instruction": "input_reduce_fusion.21", + "ms": 2.1906368000000005, + "opcode": "fusion", + "shape": "f64[15361,20]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163 (mapped_reconstructed_data_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:120 (InversionImagingMapping._mapped_reconstructed_data_dict_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:196 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + } + ] + }, + "stage_audit_note": "The HLO instructions that contributed most of each stage's milliseconds, with their full source stack. A stage row is only as good as the rules that built it; this is how a reader checks a row against the HLO instead of trusting it.", + "untraced_wall_ms": 861.7021375001059, + "reconciliation_vs_untraced_pct": 1.369145228548512, + "wall_basis": "wall_ms is the TRACED run's wall, the run these kernel durations came from. untraced_wall_ms is the same executable without the profiler; the difference is the profiler's overhead and belongs in neither the stages nor the idle row.", + "calls": 10, + "call_split": "per-call (first-instruction recurrence)", + "call_blocks": 10, + "events": 223360, + "streams": [ + "Stream #14(MemcpyH2D,MemcpyD2D,Compute,MemcpyD2H)" + ], + "per_stage_ms": { + "border_relocator": { + "median_ms": 0.11204899999999998, + "min_ms": 0.111648, + "max_ms": 0.112832 + }, + "chi_squared_evidence": { + "median_ms": 0.014784000000000002, + "min_ms": 0.0144, + "max_ms": 0.015104 + }, + "curvature_matrix_F": { + "median_ms": 81.64039249999999, + "min_ms": 80.682708, + "max_ms": 82.619787 + }, + "data_vector_D": { + "median_ms": 2.646662, + "min_ms": 2.627743, + "max_ms": 2.6833099999999996 + }, + "inversion_other": { + "median_ms": 15.899046000000018, + "min_ms": 15.62062099999996, + "max_ms": 16.167036000000017 + }, + "mapped_reconstruction": { + "median_ms": 2.190389, + "min_ms": 2.185451, + "max_ms": 2.194539 + }, + "mapping_matrix": { + "median_ms": 2.1959565, + "min_ms": 2.1882230000000003, + "max_ms": 2.198988 + }, + "mesh_construction": { + "median_ms": 0.009728, + "min_ms": 0.009503999999999999, + "max_ms": 0.009856 + }, + "mesh_dual_areas": { + "median_ms": 0.006528, + "min_ms": 0.006496, + "max_ms": 0.006528 + }, + "mesh_locate_walk": { + "median_ms": 1.0412659999999998, + "min_ms": 1.0392719999999995, + "max_ms": 1.0442549999999997 + }, + "mesh_qhull_callback": { + "median_ms": 0.24710400000000005, + "min_ms": 0.2460790000000001, + "max_ms": 0.248577 + }, + "mesh_seed_argmin": { + "median_ms": 1.6920950000000006, + "min_ms": 1.6915830000000007, + "max_ms": 1.6974479999999994 + }, + "mixed_fusion": { + "median_ms": 24.4829395, + "min_ms": 24.255803000000004, + "max_ms": 24.889499 + }, + "other": { + "median_ms": 0.22395400000000013, + "min_ms": 0.22355200000000022, + "max_ms": 0.22508900000000004 + }, + "pdip_solve": { + "median_ms": 466.90222299998914, + "min_ms": 466.756562999986, + "max_ms": 471.90234899998467 + }, + "psf_convolution_mapping_matrix": { + "median_ms": 147.20783799999998, + "min_ms": 147.04764400000002, + "max_ms": 147.55634799999999 + }, + "ray_trace_data_grid": { + "median_ms": 0.013104000000000001, + "min_ms": 0.013056000000000002, + "max_ms": 0.013312000000000001 + }, + "regularization_H": { + "median_ms": 0.360016, + "min_ms": 0.359488, + "max_ms": 0.363842 + } + }, + "stage_order": [ + "ray_trace_data_grid", + "border_relocator", + "mesh_qhull_callback", + "mesh_seed_argmin", + "mesh_locate_walk", + "mesh_dual_areas", + "mesh_construction", + "mapping_matrix", + "psf_convolution_mapping_matrix", + "data_vector_D", + "curvature_matrix_F", + "regularization_H", + "pdip_solve", + "mapped_reconstruction", + "chi_squared_evidence", + "inversion_other", + "mixed_fusion", + "other" + ], + "mixed_fusion": { + "ms": 24.4829395, + "constituent_stage_sets": { + "curvature_matrix_F + psf_convolution_mapping_matrix": 21.386163000000003, + "curvature_reg_reduce_gather + inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter + regularization_H": 1.9976687000000002, + "inversion_other + regularization_H": 0.7382899999999999, + "inversion_other + mapping_matrix + mesh_construction + mesh_interpolation_weights": 0.0944003, + "mapping_matrix + mesh_interpolation_weights": 0.0721697, + "grids_and_structures + mass_profile_deflections + ray_trace_data_grid": 0.05911689999999999, + "inversion_other + mesh_construction + mesh_dual_areas + mesh_interpolation_weights": 0.026246500000000002, + "inversion_other + mesh_construction + mesh_interpolation_weights": 0.025251299999999997, + "inversion_other + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + regularization_H": 0.024569600000000007, + "mesh_construction + regularization_H": 0.012208000000000002, + "inversion_other + mesh_dual_areas + mesh_locate_walk": 0.012079999999999999, + "mesh_dual_areas + mesh_interpolation_weights": 0.0112032, + "mesh_seed_argmin + regularization_H": 0.010704, + "inversion_other + mapped_reconstruction": 0.0095968, + "inversion_other + mapped_reconstruction + reconstruction_scatter + regularization_H": 0.0093761, + "inversion_other + mapped_reconstruction + reconstruction_scatter": 0.0089569, + "mesh_locate_walk + mesh_seed_argmin": 0.008688000000000001, + "inversion_other + pdip_solve + regularization_H": 0.008365000000000001, + "mesh_dual_areas + mesh_interpolation_weights + regularization_H": 0.0066656, + "inversion_other + ray_trace_data_grid": 0.0046688, + "grids_and_structures + mass_profile_deflections": 0.004419299999999999, + "mapping_matrix + regularization_H": 0.0042944, + "inversion_other + mesh_locate_walk + mesh_seed_argmin": 0.0038688, + "inversion_other + mesh_interpolation_weights": 0.0036960000000000005, + "inversion_other + mesh_construction + mesh_interpolation_weights + regularization_H": 0.0033247999999999993, + "inversion_other + mesh_construction + regularization_H": 0.0028352, + "chi_squared_evidence + inversion_other": 0.0023103999999999998, + "inversion_other + mapping_matrix": 0.0021248 + }, + "example_kernels": { + "curvature_matrix_F + psf_convolution_mapping_matrix": [ + "loop_divide_gather_fusion" + ], + "curvature_reg_reduce_gather + inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter + regularization_H": [ + "input_add_multiply_transpose_fusion" + ], + "inversion_other + regularization_H": [ + "input_reduce_fusion.40", + "input_reduce_fusion.33", + "input_reduce_fusion.34", + "input_reduce_fusion.35" + ], + "inversion_other + mapping_matrix + mesh_construction + mesh_interpolation_weights": [ + "loop_compare_fusion.3", + "input_scatter_fusion.6", + "input_concatenate_fusion.3" + ], + "mapping_matrix + mesh_interpolation_weights": [ + "input_scatter_fusion.2" + ], + "grids_and_structures + mass_profile_deflections + ray_trace_data_grid": [ + "loop_sqrt_fusion", + "loop_slice_fusion.3", + "loop_subtract_fusion.2", + "loop_sqrt_fusion.1" + ], + "inversion_other + mesh_construction + mesh_dual_areas + mesh_interpolation_weights": [ + "loop_abs_add_fusion" + ], + "inversion_other + mesh_construction + mesh_interpolation_weights": [ + "loop_slice_fusion.1", + "loop_slice_fusion" + ], + "inversion_other + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + regularization_H": [ + "loop_abs_fusion", + "loop_convert_select_fusion" + ], + "mesh_construction + regularization_H": [ + "input_concatenate_fusion.4" + ] + }, + "prorated_estimate_ms": { + "curvature_matrix_F": 10.693081500000002, + "psf_convolution_mapping_matrix": 10.693081500000002, + "inversion_other": 0.7719914283333335, + "regularization_H": 0.729737395, + "mapped_reconstruction": 0.34307284166666674, + "reconstruction_scatter": 0.33827444166666676, + "pdip_solve": 0.3357331166666667, + "curvature_reg_reduce_gather": 0.3329447833333334, + "mesh_interpolation_weights": 0.09008023666666667, + "mapping_matrix": 0.062894525, + "mesh_construction": 0.05137298666666667, + "mesh_dual_areas": 0.023325678333333332, + "ray_trace_data_grid": 0.02204003333333333, + "grids_and_structures": 0.02191528333333333, + "mass_profile_deflections": 0.02191528333333333, + "mesh_seed_argmin": 0.010985600000000002, + "mesh_locate_walk": 0.009660266666666667, + "chi_squared_evidence": 0.0011551999999999999 + }, + "prorated_note": "ESTIMATE ONLY \u2014 a mixed fusion's time split equally across the stages its constituents span. Never summed into the measured table, never reconciled." + }, + "other_sources_ms": { + "copy.105": 0.04816039999999986, + "copy.107": 0.04019840000000011, + "copy.108": 0.03985300000000014, + "copy.109": 0.03983050000000011, + "copy.106": 0.039318400000000024, + "loop_broadcast_fusion.6": 0.0034624000000000005, + "loop_broadcast_fusion.2": 0.0028097, + "loop_broadcast_fusion.9": 0.0023552, + "copy.104": 0.0023455999999999998, + "copy.76": 0.0022752, + "copy.37": 0.0021504, + "loop_broadcast_fusion.5": 0.001392 + }, + "device_span_ms": 874.4342653, + "device_busy_ms": 747.8202486, + "device_idle_ms": 126.61401669999998, + "largest_idle_gaps": [ + { + "gap_ms": 5.402783, + "after": "pure_callback.0", + "before": "pure_callback.0" + }, + { + "gap_ms": 5.054174, + "after": "pure_callback.0", + "before": "pure_callback.0" + }, + { + "gap_ms": 4.914911, + "after": "pure_callback.0", + "before": "pure_callback.0" + }, + { + "gap_ms": 4.897791, + "after": "pure_callback.0", + "before": "pure_callback.0" + }, + { + "gap_ms": 4.855902, + "after": "pure_callback.0", + "before": "pure_callback.0" + }, + { + "gap_ms": 4.855135, + "after": "pure_callback.0", + "before": "pure_callback.0" + }, + { + "gap_ms": 4.838975, + "after": "pure_callback.0", + "before": "pure_callback.0" + }, + { + "gap_ms": 4.836831, + "after": "pure_callback.0", + "before": "pure_callback.0" + } + ], + "kernel_ms": 746.8860744999891, + "sum_ms": 873.5000911999891, + "wall_ms": 874.5379600000888, + "host_outside_span_ms": 0.10369470008879489, + "reconciliation_pct": -0.11867624363607425, + "unjoined_ms": 0.0, + "unjoined_pct": 0.0, + "other_ms": 0.22395400000000013, + "other_pct": 0.02560826519182511, + "note": "Stage rows attribute the command-buffers-OFF program (see the module docstring): kernel times are the same, the launch overhead the CUDA graphs remove is not. sum_ms = kernel rows + device_idle_ms; the residual against wall_ms is host_outside_span_ms (dispatch before the first kernel, teardown after the last).", + "per_stage_ms_per_lane": { + "border_relocator": 0.005602449999999999, + "chi_squared_evidence": 0.0007392000000000001, + "curvature_matrix_F": 4.082019624999999, + "data_vector_D": 0.1323331, + "inversion_other": 0.7949523000000009, + "mapped_reconstruction": 0.10951945, + "mapping_matrix": 0.10979782499999999, + "mesh_construction": 0.0004864, + "mesh_dual_areas": 0.0003264, + "mesh_locate_walk": 0.05206329999999999, + "mesh_qhull_callback": 0.012355200000000002, + "mesh_seed_argmin": 0.08460475000000003, + "mixed_fusion": 1.224146975, + "other": 0.011197700000000007, + "pdip_solve": 23.345111149999457, + "psf_convolution_mapping_matrix": 7.360391899999999, + "ray_trace_data_grid": 0.0006552000000000001, + "regularization_H": 0.0180008 + }, + "per_lane_divisor": 20, + "host_callback": { + "pure_callback_span_ms": 104.96422020000001, + "qhull_ms": 91.71131120000005, + "callback_body_ms_note": "the OUTERMOST matching body event, not a sum: under the probe the body appears twice (the wrapper and the timed re-implementation it calls) and summing them would count the same work twice", + "events_by_name": { + "pure_callback.0": { + "count": 200, + "ms": 104.96422020000001 + }, + "$callback.py:815 _wrapped_callback": { + "count": 200, + "ms": 96.38551020000003 + }, + "$callback.py:224 _callback": { + "count": 200, + "ms": 95.92031260000005 + }, + "$callback.py:74 pure_callback_impl": { + "count": 200, + "ms": 95.75172049999996 + }, + "$callback.py:69 __call__": { + "count": 200, + "ms": 92.01689449999996 + }, + "$delaunay.py:162 ": { + "count": 200, + "ms": 91.88535639999998 + }, + "$host_callback_probe.py:225 wrapped": { + "count": 200, + "ms": 91.71131120000005 + }, + "$host_callback_probe.py:160 _timed_tri_only": { + "count": 200, + "ms": 91.56750510000002 + }, + "$callback.py:822 ": { + "count": 800, + "ms": 0.28596919999999953 + }, + "ThenExecuteCallback:GetEventForComputeStreamSyncPoint": { + "count": 10, + "ms": 0.027870899999999997 + }, + "$__init__.py:132 _xla_gc_callback": { + "count": 2, + "ms": 0.000486 + } + }, + "note": "HOST milliseconds per traced BATCH (the whole invocation), aggregated by name because the events nest. Not a row of the device table: the device pays for them as the idle gaps largest_idle_gaps names." + }, + "host_callback_ms": 104.96422020000001 + }, + "hlo_census": { + "status": "excluded", + "reason": "The legacy census anchors PyAutoArray source line numbers that moved after the phase-1 run. No batched attribution is published from unsupported anchors; the device-event table and wall reconciliation remain valid." + }, + "trace_split": { + "expected_calls": 10, + "executions_per_invocation": 1, + "method": "per-call (first-instruction recurrence)", + "note": "DECIDED IN CODE: the scalar arm's trace is split by trace_calls * B, so every lane's execution is its own block and the per-stage median is taken over all of them. The vmap arm's is split by trace_calls, one block per batched execution, and per_stage_ms_per_lane divides those rows by B." + } + }, + "scalar": { + "arm": "scalar", + "program": "jax.jit(fn), called B times", + "stands_for": "Nautilus(use_jax_vmap=False, use_jax_jit=True). Plain use_jax_vmap=False is UNJITTED and is NOT this arm", + "hlo_source": "jax.jit(fn).lower(lane_trees[0]) \u2014 the same program phase 1 traced", + "batch_wall_ms": 1000.3317177997815, + "wall_production_nesting_ms": 1000.3317177997815, + "wall_aot_command_buffers_on_ms": 1002.0908607999446, + "wall_aot_command_buffers_off_ms": 1012.0101273001638, + "command_buffer_delta_ms": 9.919266500219237, + "production_nesting_vs_aot_on_delta_ms": -1.7591430001631352, + "production_nesting_vs_aot_on_delta_pct": -0.17554725514199923, + "wall_per_lane_ms": 50.016585889989074, + "wall_per_lane_command_buffers_off_ms": 50.600506365008194, + "traced_batch_wall_ms": 1040.5850289000227, + "untraced_batch_wall_ms": 1015.0708885998027, + "traced_wall_per_lane_ms": 52.02925144500114, + "callback_count_per_call": 20.0, + "callback_count_per_lane": 1.0, + "callback_expectation": "1 per likelihood evaluation, B per batch", + "host_qhull_ms": 91.94159770195256, + "host_tables_ms": 2.480280199961271, + "host_qhull_ms_per_lane": 4.597079885097628, + "host_tables_ms_per_lane": 0.12401400999806356, + "host_callback_probe": { + "calls": 200, + "qhull_ms_total": 919.4159770195256, + "tables_ms_total": 24.80280199961271, + "total_ms_total": 944.2187790191383, + "qhull_ms_mean": 4.597079885097628, + "tables_ms_mean": 0.12401400999806356, + "total_ms_mean": 4.7210938950956916, + "non_finite_calls": 0, + "n_points": [ + 1500 + ] + }, + "host_callback_records_first": [ + { + "n_points": 1500, + "qhull_ms": 4.84138100000564, + "tables_ms": 0.1848089996201452, + "total_ms": 5.026189999625785, + "finite": true + }, + { + "n_points": 1500, + "qhull_ms": 4.577702002279693, + "tables_ms": 0.12029899880872108, + "total_ms": 4.698001001088414, + "finite": true + }, + { + "n_points": 1500, + "qhull_ms": 4.575381997710792, + "tables_ms": 0.1305800033151172, + "total_ms": 4.70596200102591, + "finite": true + }, + { + "n_points": 1500, + "qhull_ms": 4.61512099718675, + "tables_ms": 0.1310800034843851, + "total_ms": 4.746201000671135, + "finite": true + } + ], + "device_idle_ms": 7.629623549999991, + "device_idle_ms_per_lane": 7.629623549999991, + "trace": { + "parser": "ProfileData.from_file(xplane) + as_text() + stack_frame_index(proto field 17)", + "stage_audit": { + "chi_squared_evidence": [ + { + "instruction": "input_reduce_fusion.26", + "ms": 0.003904265000000002, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:104", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:104 (noise_normalization_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:98 (AbstractFit.noise_normalization)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:306 (FitDataset.noise_normalization)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:349 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)" + ] + }, + { + "instruction": "input_reduce_fusion.28", + "ms": 0.003783660000000004, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:90", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:90 (chi_squared_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:87 (AbstractFit.chi_squared)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:293 (FitDataset.chi_squared)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:345 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)" + ] + }, + { + "instruction": "loop_multiply_fusion.2", + "ms": 0.003006375000000002, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:300", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:300 (AbstractNDArray.__pow__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:60 (unwrap_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:35 (to_new_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:78 (chi_squared_map_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:78 (AbstractFit.chi_squared_map)" + ] + } + ], + "psf_convolution_mapping_matrix": [ + { + "instruction": "input_scatter_fusion", + "ms": 1.9795207949999998, + "opcode": "fusion", + "shape": "f64[1500,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.19.0", + "ms": 1.7554150700000009, + "opcode": "fft", + "shape": "f64[1500,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.15.0", + "ms": 1.3649168499999986, + "opcode": "fft", + "shape": "c128[1500,180,91]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.17.0", + "ms": 0.9788598, + "opcode": "fft", + "shape": "c128[1500,91,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_transpose_fusion.1", + "ms": 0.5139107350000001, + "opcode": "fusion", + "shape": "c128[1500,91,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "wrapped_transpose", + "ms": 0.5001258199999999, + "opcode": "fusion", + "shape": "c128[1500,180,91]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + } + ], + "mapping_matrix": [ + { + "instruction": "loop_broadcast_fusion.2", + "ms": 0.11094477499999997, + "opcode": "fusion", + "shape": "f64[15361,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:342", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:342 (mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:283 (Mapper.mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:91 (AbstractInversionImaging._mapping_matrix_for_convolution_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:137 (AbstractInversionImaging.operated_mapping_matrix_list)" + ] + }, + { + "instruction": "input_reduce_fusion.29", + "ms": 0.0028802999999999906, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:120 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + }, + { + "instruction": "loop_divide_fusion", + "ms": 0.0023528000000000025, + "opcode": "fusion", + "shape": "f64[1500]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:92", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:92 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:120 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + } + ], + "mixed_fusion": [ + { + "instruction": "loop_divide_gather_fusion", + "ms": 1.0144249650000003, + "opcode": "fusion", + "shape": "(f64[15361,1,1,1500]{3,2,1,0}, f64[15361,1,1,1500]{3,2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_add_multiply_transpose_fusion", + "ms": 0.060890715000000005, + "opcode": "fusion", + "shape": "(f64[1500,1500]{1,0}, f64[1500,1500]{1,0}, f64[1500,1500]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:61", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:61 (initialize)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:72 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:508 (reconstruction_positive_only_from)" + ] + }, + { + "instruction": "input_transpose_fusion.3", + "ms": 0.02419367500000001, + "opcode": "fusion", + "shape": "f64[1500,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1157 (AbstractInversion.log_det_regularization_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:348 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "input_scatter_fusion.2", + "ms": 0.01633987, + "opcode": "fusion", + "shape": "f64[1500,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:579", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:579 (pixel_splitted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:137 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_abs_fusion", + "ms": 0.014803945000000004, + "opcode": "fusion", + "shape": "(f64[6000,1]{1,0}, f64[6000,1]{1,0}, f64[6000,1]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:613", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:613 (triangle_area_xp)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:657 (pixel_weights_delaunay_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:982 (InterpolatorDelaunay._mappings_sizes_weights_split)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:124 (AdaptSplit.regularization_matrix_from)" + ] + }, + { + "instruction": "input_scatter_fusion.3", + "ms": 0.014678229999999999, + "opcode": "fusion", + "shape": "f64[1500]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:70", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:70 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:120 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + } + ], + "ray_trace_data_grid": [ + { + "instruction": "input_reduce_fusion.18", + "ms": 0.003235509999999996, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:506", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:506 (FlatLambdaCDM._simpson_1d)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:644 (FlatLambdaCDM.angular_diameter_distance_kpc_z1z2)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:133 (LensingCosmology.angular_diameter_distance_to_earth_in_kpc_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:362 (LensingCosmology.scaling_factor_between_redshifts_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer_util.py:252 (traced_grid_2d_list_from)" + ] + }, + { + "instruction": "input_reduce_fusion.20", + "ms": 0.0027401349999999908, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:506", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:506 (FlatLambdaCDM._simpson_1d)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:644 (FlatLambdaCDM.angular_diameter_distance_kpc_z1z2)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:151 (LensingCosmology.angular_diameter_distance_between_redshifts_in_kpc_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:355 (LensingCosmology.scaling_factor_between_redshifts_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer_util.py:252 (traced_grid_2d_list_from)" + ] + }, + { + "instruction": "input_reduce_fusion.19", + "ms": 0.0026057449999999966, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:503", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:503 (FlatLambdaCDM._simpson_1d)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:644 (FlatLambdaCDM.angular_diameter_distance_kpc_z1z2)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:133 (LensingCosmology.angular_diameter_distance_to_earth_in_kpc_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:362 (LensingCosmology.scaling_factor_between_redshifts_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer_util.py:252 (traced_grid_2d_list_from)" + ] + }, + { + "instruction": "input_reduce_fusion.21", + "ms": 0.002587044999999994, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:503", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:503 (FlatLambdaCDM._simpson_1d)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:644 (FlatLambdaCDM.angular_diameter_distance_kpc_z1z2)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:151 (LensingCosmology.angular_diameter_distance_between_redshifts_in_kpc_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:355 (LensingCosmology.scaling_factor_between_redshifts_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer_util.py:252 (traced_grid_2d_list_from)" + ] + }, + { + "instruction": "loop_divide_fusion.1", + "ms": 0.002514860000000003, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:380", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:380 (LensingCosmology.scaling_factor_between_redshifts_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer_util.py:252 (traced_grid_2d_list_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer.py:632 (Tracer.traced_grid_2d_list_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/structures/decorators/abstract.py:93 (AbstractMaker.evaluate_func)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/structures/decorators/abstract.py:110 (AbstractMaker.result)" + ] + } + ], + "border_relocator": [ + { + "instruction": "eigh.45", + "ms": 0.07459175499999986, + "opcode": "custom-call", + "shape": "(f64[2,2]{0,1}, f64[2]{0}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "custom-call.2", + "ms": 0.007952110000000021, + "opcode": "custom-call", + "shape": "(f64[2,2]{1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_reduce_fusion.15", + "ms": 0.005806534999999992, + "opcode": "fusion", + "shape": "(f64[], f64[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:269", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:269 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_select_sine_fusion", + "ms": 0.003668455000000008, + "opcode": "fusion", + "shape": "(f64[], f64[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:301", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:301 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:458 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_concatenate_fusion.3", + "ms": 0.0036586900000000087, + "opcode": "fusion", + "shape": "f64[15361,2]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:323", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:323 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:423 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:208 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_add_fusion.5", + "ms": 0.0035801449999999994, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:423 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:208 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + } + ], + "mesh_construction": [ + { + "instruction": "input_concatenate_fusion.7", + "ms": 0.0020396799999999925, + "opcode": "fusion", + "shape": "f64[1500,2]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:820", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:820 (InterpolatorDelaunay.mesh_grid_xy)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:847 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + } + ], + "mesh_qhull_callback": [ + { + "instruction": "pure_callback.4", + "ms": 0.010656254999999965, + "opcode": "custom-call", + "shape": "(s32[3000,3]{1,0}, s32[3000,3]{1,0}, s32[1500]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:161", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:161 (_jax_delaunay_tables)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:405 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + } + ], + "other": [ + { + "instruction": "copy.72", + "ms": 0.04182004999999856, + "opcode": "copy", + "shape": "f64[1,1024,2]{2,1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.35", + "ms": 0.017098710000000218, + "opcode": "copy", + "shape": "s32[21361]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.40", + "ms": 0.002001399999999998, + "opcode": "copy", + "shape": "s64[1500]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "loop_broadcast_fusion.1", + "ms": 0.001965755000000001, + "opcode": "fusion", + "shape": "(pred[21361]{0}, pred[21361]{0})", + "source": "", + "stack": [] + }, + { + "instruction": "copy.71", + "ms": 0.001792784999999997, + "opcode": "copy", + "shape": "s32[]", + "source": "", + "stack": [] + }, + { + "instruction": "loop_broadcast_fusion.4", + "ms": 0.0017787099999999967, + "opcode": "fusion", + "shape": "(f64[1500]{0}, f64[1500]{0}, f64[1500]{0}, f64[1500]{0})", + "source": "", + "stack": [] + } + ], + "mesh_seed_argmin": [ + { + "instruction": "input_reduce_fusion", + "ms": 0.14760173499999826, + "opcode": "fusion", + "shape": "(f64[1024]{0}, s64[1024]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:191", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:191 (_nearest_vertex_seed_from..argmin_chunk)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)" + ] + }, + { + "instruction": "loop_dynamic_update_slice_fusion", + "ms": 0.04108403499999848, + "opcode": "fusion", + "shape": "s32[21,1024]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_add_fusion", + "ms": 0.03194550499999987, + "opcode": "fusion", + "shape": "s64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_broadcast_fusion", + "ms": 0.0019494299999999966, + "opcode": "fusion", + "shape": "s32[21,1024]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "regularization_H": [ + { + "instruction": "loop_select_fusion.3", + "ms": 0.019947874999999997, + "opcode": "fusion", + "shape": "f64[1500,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:549", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:549 (pixel_splitted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:137 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_scatter_fusion.10", + "ms": 0.002060314999999996, + "opcode": "fusion", + "shape": "f64[1500,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:615", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:615 (pixel_splitted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:137 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_concatenate_fusion.8", + "ms": 0.0018707049999999975, + "opcode": "fusion", + "shape": "pred[3]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:93", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:93 (split_points_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:410 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + }, + { + "instruction": "input_concatenate_fusion.9", + "ms": 0.0018577599999999995, + "opcode": "fusion", + "shape": "pred[3]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:91", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:91 (split_points_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:410 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + }, + { + "instruction": "input_concatenate_fusion.10", + "ms": 0.0018564550000000006, + "opcode": "fusion", + "shape": "pred[3]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:90", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:90 (split_points_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:410 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + }, + { + "instruction": "input_concatenate_fusion", + "ms": 0.0017591799999999993, + "opcode": "fusion", + "shape": "s32[1500,2]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:615", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:615 (pixel_splitted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:137 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "mesh_locate_walk": [ + { + "instruction": "input_reduce_fusion.1", + "ms": 0.025403025000000697, + "opcode": "fusion", + "shape": "pred[196]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:288", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:288 (_walk_from_seed..cond)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)" + ] + }, + { + "instruction": "loop_reduce_fusion", + "ms": 0.02537004500000037, + "opcode": "fusion", + "shape": "(f64[21361]{0}, s64[21361]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:264", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:264 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:264 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)" + ] + }, + { + "instruction": "loop_or_select_fusion", + "ms": 0.02246211500000033, + "opcode": "fusion", + "shape": "(s32[21361]{0}, pred[21361]{0}, pred[21361]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:270", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:270 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)" + ] + }, + { + "instruction": "loop_select_fusion", + "ms": 0.020142059999999896, + "opcode": "fusion", + "shape": "s32[21361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:242", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:242 (_walk_from_seed..weights_of)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:262 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)" + ] + }, + { + "instruction": "input_reduce_fusion.2", + "ms": 0.01643097499999993, + "opcode": "fusion", + "shape": "pred[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:288", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:288 (_walk_from_seed..cond)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)" + ] + }, + { + "instruction": "while.22", + "ms": 0.014684064999999785, + "opcode": "while", + "shape": "(s32[], s32[21361]{0}, pred[21361]{0}, pred[21361]{0}, s32[3000,3]{1,0}, /*index=5*/f64[1500,2]{1,0}, f64[21361,2]{1,0}, s32[3000,3]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "data_vector_D": [ + { + "instruction": "input_reduce_fusion.10", + "ms": 0.12202000499999993, + "opcode": "fusion", + "shape": "f64[92,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123 (data_vector_via_blurred_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:67 (InversionImagingMapping.data_vector)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:699 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_reduce_fusion.27", + "ms": 0.0036915050000000038, + "opcode": "fusion", + "shape": "f64[1500]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123 (data_vector_via_blurred_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:67 (InversionImagingMapping.data_vector)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:699 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "inversion_other": [ + { + "instruction": "cholesky.60", + "ms": 0.8941022749999998, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1078 (AbstractInversion.log_det_curvature_reg_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:347 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "cholesky.70", + "ms": 0.8915859899999999, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1157 (AbstractInversion.log_det_regularization_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:348 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "input_reduce_fusion.17", + "ms": 0.013030834999999982, + "opcode": "fusion", + "shape": "f64[1500]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:946", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:946 (AbstractInversion.regularization_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:346 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)", + "/mnt/ral/jnightin/autolens_profiling_wt/certified-solver-phase-c1-lane-rate/scripts/imaging/likelihood_breakdown/fixed_light_trace.py:1195 (_captured_likelihood_fn.._likelihood)" + ] + }, + { + "instruction": "loop_reduce_window_fusion.1", + "ms": 0.002771350000000001, + "opcode": "fusion", + "shape": "s64[94,16]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "loop_reduce_window_fusion", + "ms": 0.0026658950000000028, + "opcode": "fusion", + "shape": "s64[6,16]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "input_reduce_fusion.25", + "ms": 0.002657260000000006, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:944", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:944 (AbstractInversion.regularization_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:346 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)", + "/mnt/ral/jnightin/autolens_profiling_wt/certified-solver-phase-c1-lane-rate/scripts/imaging/likelihood_breakdown/fixed_light_trace.py:1195 (_captured_likelihood_fn.._likelihood)" + ] + } + ], + "curvature_matrix_F": [ + { + "instruction": "cublas-lt-matmul.2", + "ms": 4.218645815000001, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "pdip_solve": [ + { + "instruction": "cholesky.20", + "ms": 15.983820379999766, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:106", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:106 (factorize_kkt)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:212 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve", + "ms": 2.540545144999988, + "opcode": "custom-call", + "shape": "(f64[1500,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:213 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve.2", + "ms": 2.517701315000026, + "opcode": "custom-call", + "shape": "(f64[1500,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:217 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve.3", + "ms": 2.3762399700001886, + "opcode": "custom-call", + "shape": "(f64[1500,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:217 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve.1", + "ms": 2.297555920000129, + "opcode": "custom-call", + "shape": "(f64[1500,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:213 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "cholesky.40", + "ms": 0.8650376099999995, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:62", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:62 (initialize)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:72 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:508 (reconstruction_positive_only_from)" + ] + } + ], + "mapped_reconstruction": [ + { + "instruction": "input_reduce_fusion.14", + "ms": 0.11445830500000001, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163 (mapped_reconstructed_data_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:120 (InversionImagingMapping._mapped_reconstructed_data_dict_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:196 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + } + ] + }, + "stage_audit_note": "The HLO instructions that contributed most of each stage's milliseconds, with their full source stack. A stage row is only as good as the rules that built it; this is how a reader checks a row against the HLO instead of trusting it.", + "untraced_wall_ms": 50.753544429990136, + "reconciliation_vs_untraced_pct": -0.43295179175760246, + "wall_basis": "wall_ms is the TRACED run's wall, the run these kernel durations came from. untraced_wall_ms is the same executable without the profiler; the difference is the profiler's overhead and belongs in neither the stages nor the idle row.", + "calls": 200, + "call_split": "per-call (first-instruction recurrence)", + "call_blocks": 200, + "events": 191310, + "streams": [ + "Stream #14(MemcpyD2D,MemcpyH2D,Compute,MemcpyD2H,Memset)" + ], + "per_stage_ms": { + "border_relocator": { + "median_ms": 0.11491299999999999, + "min_ms": 0.11401599999999998, + "max_ms": 0.11606 + }, + "chi_squared_evidence": { + "median_ms": 0.010688, + "min_ms": 0.010304, + "max_ms": 0.011424 + }, + "curvature_matrix_F": { + "median_ms": 4.218025000000001, + "min_ms": 4.205913, + "max_ms": 4.265434 + }, + "data_vector_D": { + "median_ms": 0.125696, + "min_ms": 0.124924, + "max_ms": 0.126593 + }, + "inversion_other": { + "median_ms": 1.8166664999999997, + "min_ms": 1.80033, + "max_ms": 1.8335469999999998 + }, + "mapped_reconstruction": { + "median_ms": 0.1144465, + "min_ms": 0.113825, + "max_ms": 0.115553 + }, + "mapping_matrix": { + "median_ms": 0.1161285, + "min_ms": 0.11510000000000001, + "max_ms": 0.11724899999999999 + }, + "memset": { + "median_ms": 0.05091200000000001, + "min_ms": 0.04210800000000001, + "max_ms": 0.08470300000000001 + }, + "mesh_construction": { + "median_ms": 0.002048, + "min_ms": 0.002016, + "max_ms": 0.002049 + }, + "mesh_locate_walk": { + "median_ms": 0.14832250000000002, + "min_ms": 0.13049700000000006, + "max_ms": 0.184216 + }, + "mesh_qhull_callback": { + "median_ms": 0.010624, + "min_ms": 0.010464000000000001, + "max_ms": 0.01104 + }, + "mesh_seed_argmin": { + "median_ms": 0.22256200000000015, + "min_ms": 0.2221690000000002, + "max_ms": 0.22293900000000008 + }, + "mixed_fusion": { + "median_ms": 1.2544275, + "min_ms": 1.2487959999999994, + "max_ms": 1.2580559999999994 + }, + "other": { + "median_ms": 0.0711995, + "min_ms": 0.06870099999999998, + "max_ms": 0.07558200000000001 + }, + "pdip_solve": { + "median_ms": 27.262917500000007, + "min_ms": 22.713710000000027, + "max_ms": 47.29580200000003 + }, + "psf_convolution_mapping_matrix": { + "median_ms": 7.320093, + "min_ms": 7.3059970000000005, + "max_ms": 7.335915 + }, + "ray_trace_data_grid": { + "median_ms": 0.013633000000000001, + "min_ms": 0.013535000000000002, + "max_ms": 0.014079999999999999 + }, + "regularization_H": { + "median_ms": 0.03088, + "min_ms": 0.030365999999999997, + "max_ms": 0.031584 + } + }, + "stage_order": [ + "ray_trace_data_grid", + "border_relocator", + "mesh_qhull_callback", + "mesh_seed_argmin", + "mesh_locate_walk", + "mesh_construction", + "mapping_matrix", + "psf_convolution_mapping_matrix", + "data_vector_D", + "curvature_matrix_F", + "regularization_H", + "pdip_solve", + "mapped_reconstruction", + "chi_squared_evidence", + "inversion_other", + "mixed_fusion", + "other", + "memset" + ], + "mixed_fusion": { + "ms": 1.2544275, + "constituent_stage_sets": { + "curvature_matrix_F + psf_convolution_mapping_matrix": 1.0144249650000003, + "curvature_reg_reduce_gather + inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter + regularization_H": 0.060890715000000005, + "inversion_other + regularization_H": 0.029447410000000094, + "inversion_other + mesh_construction + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin + regularization_H": 0.021490085000000013, + "inversion_other + mapping_matrix + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin": 0.021122015000000004, + "inversion_other + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + regularization_H": 0.014803945000000004, + "grids_and_structures + mass_profile_deflections + ray_trace_data_grid": 0.01451463499999999, + "inversion_other + mapping_matrix + mesh_construction + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin": 0.011625870000000002, + "grids_and_structures + mass_profile_deflections": 0.010162915000000007, + "inversion_other + mesh_dual_areas + mesh_locate_walk": 0.00926599500000005, + "inversion_other + mesh_construction + mesh_seed_argmin + regularization_H": 0.007246359999999995, + "inversion_other + mesh_construction + regularization_H": 0.0065065099999999845, + "inversion_other + ray_trace_data_grid": 0.005272445000000013, + "inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": 0.004812449999999998, + "inversion_other + mapped_reconstruction": 0.0037050900000000016, + "mapping_matrix + regularization_H": 0.003474344999999993, + "inversion_other + mesh_construction + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin": 0.003105385000000001, + "inversion_other + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin": 0.0029794900000000056, + "inversion_other + pdip_solve": 0.0028225499999999983, + "inversion_other + mesh_locate_walk + mesh_seed_argmin": 0.002481235000000002, + "inversion_other + mesh_interpolation_weights": 0.002146065000000007, + "chi_squared_evidence + inversion_other": 0.0017820649999999991 + }, + "example_kernels": { + "curvature_matrix_F + psf_convolution_mapping_matrix": [ + "loop_divide_gather_fusion" + ], + "curvature_reg_reduce_gather + inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter + regularization_H": [ + "input_add_multiply_transpose_fusion" + ], + "inversion_other + regularization_H": [ + "loop_reduce_slice_fusion", + "loop_reduce_fusion.1", + "loop_reduce_fusion.2", + "input_transpose_fusion.3" + ], + "inversion_other + mesh_construction + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin + regularization_H": [ + "input_reduce_fusion.24", + "loop_select_fusion.4", + "input_scatter_fusion.2" + ], + "inversion_other + mapping_matrix + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin": [ + "input_scatter_fusion.6", + "input_scatter_fusion.3" + ], + "inversion_other + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + regularization_H": [ + "loop_abs_fusion" + ], + "grids_and_structures + mass_profile_deflections + ray_trace_data_grid": [ + "loop_subtract_fusion.2", + "loop_subtract_fusion.1" + ], + "inversion_other + mapping_matrix + mesh_construction + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin": [ + "input_scatter_fusion.4" + ], + "grids_and_structures + mass_profile_deflections": [ + "loop_divide_minimum_multiply_sine_sqrt_fusion", + "loop_slice_fusion" + ], + "inversion_other + mesh_dual_areas + mesh_locate_walk": [ + "loop_select_fusion.6", + "input_scatter_fusion.9", + "input_scatter_fusion.8", + "input_scatter_fusion.7" + ] + }, + "prorated_estimate_ms": { + "curvature_matrix_F": 0.5072124825000002, + "psf_convolution_mapping_matrix": 0.5072124825000002, + "inversion_other": 0.054450751714285796, + "regularization_H": 0.03713222650000004, + "mesh_construction": 0.016595630880952377, + "mesh_interpolation_weights": 0.013688236714285722, + "mesh_locate_walk": 0.013570158547619067, + "mapped_reconstruction": 0.01320411, + "pdip_solve": 0.012762839999999998, + "mesh_seed_argmin": 0.01229308354761905, + "reconstruction_scatter": 0.011351565, + "curvature_reg_reduce_gather": 0.0101484525, + "grids_and_structures": 0.009919669166666666, + "mass_profile_deflections": 0.009919669166666666, + "mesh_dual_areas": 0.009563466380952401, + "ray_trace_data_grid": 0.0074744341666666695, + "mapping_matrix": 0.006692248214285712, + "chi_squared_evidence": 0.0008910324999999996 + }, + "prorated_note": "ESTIMATE ONLY \u2014 a mixed fusion's time split equally across the stages its constituents span. Never summed into the measured table, never reconciled." + }, + "other_sources_ms": { + "copy.72": 0.04182004999999856, + "copy.35": 0.017098710000000218, + "copy.40": 0.002001399999999998, + "loop_broadcast_fusion.1": 0.001965755000000001, + "copy.71": 0.001792784999999997, + "loop_broadcast_fusion.4": 0.0017787099999999967, + "copy.70": 0.0017457400000000039, + "copy.20": 0.001658219999999997, + "copy.52": 0.0016358150000000016 + }, + "device_span_ms": 52.023427334999994, + "device_busy_ms": 44.393803785, + "device_idle_ms": 7.629623549999991, + "largest_idle_gaps": [ + { + "gap_ms": 5.577245, + "after": "pure_callback.4", + "before": "pure_callback.4" + }, + { + "gap_ms": 0.037183, + "after": "pure_callback.4", + "before": "copy.71" + }, + { + "gap_ms": 0.030879, + "after": "input_concatenate_fusion.7", + "before": "pure_callback.4" + }, + { + "gap_ms": 0.0304, + "after": "copy.35", + "before": "input_reduce_fusion.1" + }, + { + "gap_ms": 0.020352, + "after": "eigh.45", + "before": "eigh.45" + }, + { + "gap_ms": 0.020032, + "after": "input_reduce_fusion.3", + "before": "input_divide_reduce_subtract_fusion" + }, + { + "gap_ms": 0.02, + "after": "while.28", + "before": "input_reduce_fusion.3" + }, + { + "gap_ms": 0.019168, + "after": "input_reduce_fusion.26", + "before": "loop_broadcast_fusion.3" + } + ], + "kernel_ms": 42.90418250000001, + "sum_ms": 50.53380605, + "wall_ms": 52.02925144500114, + "host_outside_span_ms": 0.0058241100011429126, + "reconciliation_pct": -2.8742396891524247, + "unjoined_ms": 0.0, + "unjoined_pct": 0.0, + "other_ms": 0.0711995, + "other_pct": 0.13684513619278815, + "note": "Stage rows attribute the command-buffers-OFF program (see the module docstring): kernel times are the same, the launch overhead the CUDA graphs remove is not. sum_ms = kernel rows + device_idle_ms; the residual against wall_ms is host_outside_span_ms (dispatch before the first kernel, teardown after the last).", + "per_stage_ms_per_lane": { + "border_relocator": 0.11491299999999999, + "chi_squared_evidence": 0.010688, + "curvature_matrix_F": 4.218025000000001, + "data_vector_D": 0.125696, + "inversion_other": 1.8166664999999997, + "mapped_reconstruction": 0.1144465, + "mapping_matrix": 0.1161285, + "memset": 0.05091200000000001, + "mesh_construction": 0.002048, + "mesh_locate_walk": 0.14832250000000002, + "mesh_qhull_callback": 0.010624, + "mesh_seed_argmin": 0.22256200000000015, + "mixed_fusion": 1.2544275, + "other": 0.0711995, + "pdip_solve": 27.262917500000007, + "psf_convolution_mapping_matrix": 7.320093, + "ray_trace_data_grid": 0.013633000000000001, + "regularization_H": 0.03088 + }, + "per_lane_divisor": 1, + "host_callback": { + "pure_callback_span_ms": 101.39265520000001, + "qhull_ms": 94.61371190000001, + "callback_body_ms_note": "the OUTERMOST matching body event, not a sum: under the probe the body appears twice (the wrapper and the timed re-implementation it calls) and summing them would count the same work twice", + "events_by_name": { + "pure_callback.4": { + "count": 200, + "ms": 101.39265520000001 + }, + "$callback.py:815 _wrapped_callback": { + "count": 200, + "ms": 99.64069369999996 + }, + "$callback.py:224 _callback": { + "count": 200, + "ms": 99.16375899999997 + }, + "$callback.py:74 pure_callback_impl": { + "count": 200, + "ms": 98.97832679999995 + }, + "$callback.py:69 __call__": { + "count": 200, + "ms": 94.92798070000003 + }, + "$delaunay.py:162 ": { + "count": 200, + "ms": 94.7946648 + }, + "$host_callback_probe.py:225 wrapped": { + "count": 200, + "ms": 94.61371190000001 + }, + "$host_callback_probe.py:160 _timed_tri_only": { + "count": 200, + "ms": 94.44655579999997 + }, + "ThenExecuteCallback:GetEventForComputeStreamSyncPoint": { + "count": 200, + "ms": 0.3492051999999998 + }, + "$callback.py:822 ": { + "count": 800, + "ms": 0.2878111999999995 + }, + "$__init__.py:132 _xla_gc_callback": { + "count": 2, + "ms": 0.000338 + } + }, + "note": "HOST milliseconds per traced BATCH (the whole invocation), aggregated by name because the events nest. Not a row of the device table: the device pays for them as the idle gaps largest_idle_gaps names." + }, + "host_callback_ms": 101.39265520000001 + }, + "hlo_census": { + "status": "excluded", + "reason": "The legacy census anchors PyAutoArray source line numbers that moved after the phase-1 run. No batched attribution is published from unsupported anchors; the device-event table and wall reconciliation remain valid." + }, + "trace_split": { + "expected_calls": 200, + "executions_per_invocation": 20, + "method": "per-call (first-instruction recurrence)", + "note": "DECIDED IN CODE: the scalar arm's trace is split by trace_calls * B, so every lane's execution is its own block and the per-stage median is taken over all of them. The vmap arm's is split by trace_calls, one block per batched execution, and per_stage_ms_per_lane divides those rows by B." + } + } + }, + "certification_report": { + "source": "vmap arm, library solve observed through its stats= out-dict (PyAutoArray #566) and jax.debug.callback(..., ordered=True); ordered because the unordered batching rule returns the lanes permuted. Untimed, separately compiled; max rel diff of its log likelihoods vs the timed arm's: nan", + "rows": 0, + "pdip_iter": "NOT AVAILABLE per lane without changing library numerics. The fallback branch calls the library's own reconstruction_positive_only_from, which returns the solution alone \u2014 jax_nnls.solve_nnls' iteration count is discarded inside the library's custom_vjp primal. The PDIP while_loop's cost is in the pdip_solve stage row of each arm's device table instead, which is a max-over-lanes quantity under vmap because every lane runs the same fixed kernel sequence.", + "passes_semantics": "library `passes`: restricted active-set passes run (jax_active_set.solve_certified)" + }, + "lane_construction": { + "draws_sha256": "2ef9de62dd3cb04c203df7c6177baeafe26acbe41f5db2137c5891526b265fcf", + "lane_rows": [ + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319 + ], + "calls": [ + 15 + ], + "stage": "pix1", + "regularization_range": { + "galaxies.source.pixelization.regularization.inner_coefficient": { + "min": 2.161360256524811e-06, + "max": 609.7498208301598 + }, + "galaxies.source.pixelization.regularization.outer_coefficient": { + "min": 3.4330906156470037e-06, + "max": 159.11676392313697 + }, + "galaxies.source.pixelization.regularization.signal_scale": { + "min": 0.12452271846719754, + "max": 0.9404155018121758 + } + }, + "phases": [ + "exploration" + ], + "window_rule": "nautilus_batches.timed_window: consecutive captured calls, in call order, from the FIRST call that is not a prior batch, concatenated and truncated to B; at B == n_batch exactly one real Nautilus batch. Falls back to the latest B lanes if the post-prior lanes run out; never repeats a lane.", + "note": "Lane k is captured lane lane_rows[k]: the mass AND shear of a real Nautilus proposal (nautilus_batch_capture.py), lens light fixed at S3, the S3 light-subtracted dataset shared by every lane. `offsets` in the lane table are the mass offsets from the fiducial; the shear is in the capture file." + }, + "captured": { + "batches_path": "/mnt/ral/jnightin/autolens_profiling_wt/certified-solver-phase-c1-lane-rate/results/breakdown/imaging/nautilus_batches_delaunay_pix1.npz", + "batches_sha256": "e71a5e23026b342d1ff4359b8fb914a87980d8aea0060659d2334dcfa3215c00", + "schema_version": 2, + "n_calls": 932, + "n_lanes": 18640, + "call_sizes_seen": [ + 20 + ], + "calls_by_phase": { + "prior": 15, + "exploration": 917 + }, + "parameter_paths": [ + "galaxies.source.pixelization.regularization.inner_coefficient", + "galaxies.source.pixelization.regularization.outer_coefficient", + "galaxies.source.pixelization.regularization.signal_scale", + "galaxies.lens.mass.centre.centre_0", + "galaxies.lens.mass.centre.centre_1", + "galaxies.lens.mass.einstein_radius", + "galaxies.lens.mass.ell_comps.ell_comps_0", + "galaxies.lens.mass.ell_comps.ell_comps_1", + "galaxies.lens.shear.gamma_1", + "galaxies.lens.shear.gamma_2" + ], + "stage": "pix1", + "regularization": { + "class": "AdaptSplit", + "free": true, + "priors": { + "inner_coefficient": [ + "LogUniform", + 1e-06, + 1000000.0 + ], + "outer_coefficient": [ + "LogUniform", + 1e-06, + 1000000.0 + ], + "signal_scale": [ + "Uniform", + 0.0, + 1.0 + ] + }, + "priors_source": "PyAutoGalaxy packaged config/priors/regularization (adapt_split.yaml / constant.yaml); adapt_split.yaml is identical to euclid_strong_lens_modeling_pipeline/config/priors/regularization/adapt_split.yaml" + }, + "nautilus": { + "departures_from_production": [ + "mass/shear priors are the phase-B cell's Gaussians, not chained from source_lp", + "no positions likelihood", + "the cell's mesh (Hilbert 1500, weight_power 1) in both stages; source_pix_2 redraws a 500-vertex Hilbert grid at weight_power 3.5", + "seeded (production passes no seed)", + "quick updates disabled (iterations_per_quick_update=1e12; render-only)", + "NullPaths: no output directory, so no checkpoint and one Sampler.run call", + "post-fit perform_update skipped (samples / latent variables never built)" + ], + "n_batch": 20, + "n_like_max": 40000, + "n_live": 150, + "number_of_cores": 1, + "production_reference": "euclid_strong_lens_modeling_pipeline/scripts/full_model.py source_pix_1 (n_live=150) / source_pix_2 (n_live=75): af.Nautilus(n_batch=20, **SettingsSearch.search_dict) with use_jax_vmap=True and number_of_cores=1 (SettingsSearch defaults)", + "production_stage": "source_pix_1", + "seed": 1, + "stage": "pix1", + "use_jax_vmap": true, + "version": "1.0.5" + }, + "capture_fit_status": "sampling complete (n_like_max or convergence); post-fit result skipped", + "capture_library_revisions": { + "PyAutoArray": { + "head": "7fa8d2714f7da43fec2b23c31bff580764831670", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoArray" + }, + "PyAutoFit": { + "head": "a736840127be7a3c21e15a5c945e94d8f1082983", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoFit" + }, + "PyAutoGalaxy": { + "head": "70a61e26cd715cefe7012a38285698091246a8a4", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy" + }, + "PyAutoLens": { + "head": "86054bbc19baa2f710a12e04a94fa27ab37cc354", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoLens" + }, + "PyAutoNerves": { + "head": "1fa613aa8d89a79613009fb66f5b4e2d21deb57a", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoNerves" + } + }, + "fingerprint_check": { + "fields": [ + "mesh", + "source_pixels", + "dataset_sha256", + "regularization_class", + "regularization_s0_fiducial", + "border_relocator", + "use_mixed_precision", + "log_evidence_s3_library" + ], + "not_identity": "the regularization coefficients: free per lane since the capture frees them", + "log_evidence_s3_library_rel_diff": 0.0, + "passed": true + }, + "timed_window_vs_capture_pdip": { + "reference": "the capture's own figure of merit (library PDIP, Fitness.call_wrap jax.jit(jax.vmap(call)) over parameter vectors) for the same lanes", + "compared_against": "this cell's jit(vmap) library-PDIP reference", + "n_compared": 20, + "max_rel_diff": 2.158793976551511e-06, + "max_abs_diff_nats": 0.3823636246379465, + "gated": false, + "note": "RECORDED, NOT GATED: proves the lane trees rebuilt here are the models the sampler evaluated (a wrong parameter mapping shows up as nats, not 1e-10)." + } + }, + "matched": { + "vmap_wall_per_lane_ms": 43.01403590499831, + "scalar_wall_per_lane_ms": 50.016585889989074, + "speedup_vmap_over_scalar": 1.162796860086711, + "note": "Both walls are the PRODUCTION nesting of their arm, measured in one process on the same B lanes with the SAME library Settings (no injection). A speedup below 1 means the batch is slower per lane than B sequential jitted calls." + }, + "solver_source": "library", + "solver": "pdip", + "certified_fallback": "pdip", + "certified_pass_budget": 16, + "certified_pass_budget_basis": "config default (Settings().certified_pass_budget)", + "certified_tau_rel": 1e-09, + "solver_used": "pdip", + "solver_check": { + "solver_used": "pdip", + "solver_used_source": "AbstractInversion.positive_only_solver_used on the fiducial S3 inversion, built eagerly on the JAX backend (AnalysisImaging(use_jax=True).fit_from) with the arms' Settings", + "reference_solver_used": "pdip", + "traced_solver_kwargs_jax": [ + "pdip" + ], + "observed_calls_jax": 1, + "report_rows": 0, + "report_vs_timed_arm_max_rel_diff": NaN + }, + "lanes_certified": [ + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null + ], + "lanes_passes": [ + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null + ], + "uncertified_lanes": null, + "per_lane_certification_note": "Not applicable: a library-PDIP row has no certificate or pass count.", + "gate": { + "pre_registered": true, + "gated": [ + "per lane: jit(vmap) arm vs jit(vmap) library PDIP <= lane_rtol relative", + "per lane: scalar jit arm vs scalar jit library PDIP <= lane_rtol relative" + ], + "recorded_not_gated": [ + "per lane: jit(vmap) arm vs scalar jit arm (rel_diff, abs_diff_nats)", + "per lane: jit(vmap) library PDIP vs scalar jit library PDIP", + "uncertified_lanes (certified_fallback=none rows)" + ], + "lanes_failed": 4, + "passed": false, + "policy_eligible": false, + "note": "Pre-registered before submission (module docstring; submit header). Phase 3 (results/notes/hst_gpu_residue_phase3_psf_2026_09.md) placed phase 2's ~2.5e-9 certified-vs-PDIP residual BETWEEN the jit(vmap) and scalar-jit compositions, not in the solver \u2014 so each arm is gated against the library-PDIP reference of its OWN composition, and the cross-composition difference is recorded with its nats. A certified_fallback=none row is policy-eligible only if every lane certifies AND passes the gate. Timing is never gated." + }, + "library_revisions": { + "PyAutoArray": { + "head": "3de624b5b91a4efa130dc3cb0a3a0f06f85025a3", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoArray", + "module_file": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/__init__.py" + }, + "PyAutoFit": { + "head": "dd9fbe0aab60c4a57702b1444ca031b317c91331", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoFit", + "module_file": "/mnt/ral/jnightin/PyAuto/PyAutoFit/autofit/__init__.py" + }, + "PyAutoGalaxy": { + "head": "70a61e26cd715cefe7012a38285698091246a8a4", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy", + "module_file": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/__init__.py" + }, + "PyAutoLens": { + "head": "86054bbc19baa2f710a12e04a94fa27ab37cc354", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoLens", + "module_file": "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/__init__.py" + }, + "autoarray_file": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/__init__.py" + } + }, + "headline_arm_note": "`trace`, `hlo_census`, `command_buffers` and `trace_timing` above describe the scalar arm \u2014 the program phase 1 traced. Both arms' full blocks, the lane table and the matched comparison are under `vmap`." +} \ No newline at end of file diff --git a/results/breakdown/imaging/fixed_light_trace_delaunay_jitvmap20_captured_pix1_libpdip_fbon_b16_hpc_a100_fp64_fixed_light_trace.png b/results/breakdown/imaging/fixed_light_trace_delaunay_jitvmap20_captured_pix1_libpdip_fbon_b16_hpc_a100_fp64_fixed_light_trace.png new file mode 100644 index 000000000..e1036147f Binary files /dev/null and b/results/breakdown/imaging/fixed_light_trace_delaunay_jitvmap20_captured_pix1_libpdip_fbon_b16_hpc_a100_fp64_fixed_light_trace.png differ diff --git a/results/breakdown/imaging/fixed_light_trace_delaunay_jitvmap20_captured_pix2_libcertified_fboff_b16_hpc_a100_fp64_fixed_light_trace.json b/results/breakdown/imaging/fixed_light_trace_delaunay_jitvmap20_captured_pix2_libcertified_fboff_b16_hpc_a100_fp64_fixed_light_trace.json new file mode 100644 index 000000000..af7f07f91 --- /dev/null +++ b/results/breakdown/imaging/fixed_light_trace_delaunay_jitvmap20_captured_pix2_libcertified_fboff_b16_hpc_a100_fp64_fixed_light_trace.json @@ -0,0 +1,6009 @@ +{ + "device": { + "backend": "gpu", + "device": "cuda:0", + "hostname": "euclid-ral-gpu-2", + "xla_flags": "--xla_disable_hlo_passes=constant_folding --xla_gpu_autotune_level=0 --xla_gpu_enable_triton_gemm=false", + "omp_num_threads": null, + "cpu_count": 124, + "jax_compilation_cache_dir": "/mnt/ral/jnightin/autolens_profiling_wt/certified-solver-phase-c1-lane-rate/output/jax_cache/fixed_light_lanerate_delaunay_pix2_time_20_certified_off_350768_34", + "autotune_cache_entries_at_start": 0, + "cache_fresh": true, + "nvidia_smi": "NVIDIA A100 80GB PCIe, 4737 MiB, 81920 MiB" + }, + "machine": { + "cpu_model": "AMD EPYC 7702 64-Core Processor", + "cpu_count_os": 124, + "nproc": 4, + "nproc_all": 124, + "nproc_note": "GNU nproc honours OMP_NUM_THREADS, so `nproc` can print 1 on a multi-core host; `nproc_all` is the core count.", + "ram_total": "928298204 kB", + "kernel": "5.14.0-687.50.1.el9_8.x86_64", + "platform": "Linux-5.14.0-687.50.1.el9_8.x86_64-x86_64-with-glibc2.34", + "python": "3.12.4", + "jax_thread_env": { + "NPROC": null + }, + "blas_thread_env": { + "OMP_NUM_THREADS": null, + "OPENBLAS_NUM_THREADS": null, + "MKL_NUM_THREADS": null, + "VECLIB_MAXIMUM_THREADS": null, + "NUMEXPR_NUM_THREADS": null + }, + "thread_env_note": "NPROC sizes XLA's CPU intra-op pool (the JAX rows); the BLAS knobs pin OpenBLAS/MKL/OpenMP (the numpy/scipy rows) and do not touch JAX. Two disjoint families; both are recorded on every CPU timing.", + "gpu": "NVIDIA A100 80GB PCIe, 81920 MiB, 610.57.04" + }, + "precision": "fp64", + "configuration": { + "pixel_scale_arcsec": 0.05, + "mask_radius_arcsec": 3.5, + "image_pixels_masked": 15361, + "over_sampled_pixels": 62752, + "mesh": "delaunay", + "mesh_shape": null, + "source_pixels": 1500, + "source_pixels_requested": null, + "dataset": "hst", + "dataset_sha256": { + "data.fits": "e4e833a28e9c6f6fb023cd85c0d3dde74068720256bc77a240633500e5b04fac", + "noise_map.fits": "315c6266a0acd3ac9c8da82fcd2b45a08697362481fd7a35072bab1658530ba3", + "psf.fits": "8389ba0e8bf4a09b4a561cfc246181a2fb944ed396754cd0ff76fdd22910d303" + }, + "cell_source_sha256": "06a162fcdae6b329384ec33322f443df07215d86e56f0505ac15b3d3473eb432", + "inversion_path": "dense", + "pass_budget": 7, + "pass_budget_basis": "phase 3 (autolens_profiling#255): the smallest ZERO-fallback budget per mesh, the budget a production run fixes. NOT phase 0's certifying budget (2 for Delaunay), which falls back on 67.5 % of a graded draw set and is not a production cost.", + "border_relocator_mode": "cell", + "border_relocator": true, + "border_relocator_note": "'cell' is use_border_relocator=True, which every profiling cell in this family forces; 'library' passes None and takes the shipped config default, which is what production runs. The resolved boolean is what this leg actually ran.", + "routes_selected": [ + "b", + "d" + ], + "trace_calls": 10, + "command_buffers_traced": "off", + "use_mixed_precision": false, + "tau_rel": 1e-09, + "regularization": { + "scheme": "adapt_split", + "inner_coefficient": 0.1, + "outer_coefficient": 10.0, + "signal_scale": 0.1 + }, + "thread_env": { + "n_threads": null, + "vars": [ + "OPENBLAS_NUM_THREADS", + "MKL_NUM_THREADS", + "OMP_NUM_THREADS", + "VECLIB_MAXIMUM_THREADS", + "NUMEXPR_NUM_THREADS" + ], + "set_to": null, + "preexisting": {}, + "overridden": {}, + "note": "Not pinned (legacy variant): recorded as found." + }, + "over_sample_size_lp_rule": { + "sub_size_list": [ + 4, + 2, + 2 + ], + "radial_list": [ + 0.3, + 0.6 + ], + "centre": [ + 0.0, + 0.0 + ] + }, + "vmap_batch": 20, + "lanes": "captured", + "arms": [ + "vmap", + "scalar" + ], + "fallback": "off", + "draw_seed": 0, + "vmap_composition": "jax.jit(jax.vmap(fn))", + "lane_rtol": 1e-09, + "vmap_flags_note": "Strict ProfileCLI.parse_cell_args rejects unknown flags. These keys record the exact batching program and prevent historical vmap(jit) artifacts from being mistaken for current jit(vmap) measurements.", + "solver_source": "library", + "solver": "certified", + "certified_fallback": "none", + "certified_pass_budget": 16, + "captured_pass": "time", + "batches": "/mnt/ral/jnightin/autolens_profiling_wt/certified-solver-phase-c1-lane-rate/results/breakdown/imaging/nautilus_batches_delaunay_pix2.npz" + }, + "solver_injection": { + "patched": null, + "part_v": "none \u2014 library mode selects the solver through al.Settings", + "part_b_route_d": { + "patched": "autoarray.inversion.inversion.inversion_util.reconstruction_positive_only_from", + "pass_budget": 7, + "fallback": true + }, + "note": "Library mode (phase B, #300): PART V's arms and references run the library's own positive-only solve, selected by Settings(positive_only_solver, certified_fallback, certified_pass_budget); nothing is injected. PART B's single-call route d (the fiducial d == b pin) still uses the phase-1 harness injection at the phase-3 budget and is not a phase-B row. The untimed certification report observes the library solve (library_solver_observed) without changing it." + }, + "routes": { + "b_s3_pdip": { + "label": "S3 PDIP (source-only)", + "status": "ok", + "solver": "library", + "ms": 50.90835499977402, + "log_likelihood": 29155.000175203175 + }, + "d_s3_certified_fallback": { + "label": "S3 certified active set, budget 7, PDIP fallback", + "status": "ok", + "solver": "harness-injected certified active set", + "pass_budget": 7, + "fallback": true, + "injected_solver_calls_jax": 1, + "injected_solver_calls_numpy": 0, + "ms": 31.573666099939146, + "log_likelihood": 29155.00017574728 + } + }, + "equivalence_pins": [ + { + "pin": "route d (certified, fallback) == route b (library PDIP)", + "route": "d_s3_certified_fallback", + "reference": "b_s3_pdip", + "expectation": "the certified active set returns the library's own positive solution", + "rtol": 1e-09, + "got": 29155.00017574728, + "reference_value": 29155.000175203175, + "rel_diff": 1.8662438109296258e-11, + "status": "PASS" + } + ], + "equivalence_rtol": 1e-09, + "reference": { + "log_evidence_s0_library": 29155.00017433923, + "log_evidence_s3_library": 29155.000174339304, + "s3": { + "n_params": 1500, + "n_mapper": 1500, + "n_funcs": 0, + "edge_zeroed_pixels": 0, + "subtracted_light_flux": 5105.448603818575 + } + }, + "command_buffers": { + "wall_on_ms": 663.5241425999993, + "wall_off_ms": 668.1186625999544, + "command_buffer_delta_ms": 4.594519999955082, + "command_buffer_delta_pct": 0.6924420235790659, + "traced": "off", + "compiler_option": "xla_gpu_enable_command_buffer", + "probe": { + "note": "Not taken in --vmap-batch mode: the CUPTI-inside-a-CUDA-graph probe is a phase-1 diagnostic about the JOIN, and this mode already compiles and times both the command-buffers ON and OFF executable of every arm." + }, + "note": "ONE lowering, TWO compilations, one process. wall_on_ms is the PRODUCTION program (CUDA graphs as XLA ships them) and is the number comparable to phase 5's row; wall_off_ms is the graph-less program the stage rows attribute. The delta is the launch overhead the graphs remove \u2014 it lands in device_idle and host_outside_span, not in any stage. Reconciliation is computed against wall_off_ms." + }, + "trace": { + "parser": "ProfileData.from_file(xplane) + as_text() + stack_frame_index(proto field 17)", + "stage_audit": { + "mixed_fusion": [ + { + "instruction": "loop_divide_gather_fusion", + "ms": 1.0171146450000002, + "opcode": "fusion", + "shape": "(f64[15361,1,1,1500]{3,2,1,0}, f64[15361,1,1,1500]{3,2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_broadcast_fusion.2", + "ms": 0.22679108500000003, + "opcode": "fusion", + "shape": "f64[1500,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_reduce_fusion.5", + "ms": 0.12210502000000002, + "opcode": "fusion", + "shape": "f64[92,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123 (data_vector_via_blurred_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:67 (InversionImagingMapping.data_vector)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:699 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_reduce_fusion.9", + "ms": 0.11475695499999994, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163 (mapped_reconstructed_data_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:120 (InversionImagingMapping._mapped_reconstructed_data_dict_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:196 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "loop_broadcast_fusion.3", + "ms": 0.110802515, + "opcode": "fusion", + "shape": "f64[15361,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:342", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:342 (mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:283 (Mapper.mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:91 (AbstractInversionImaging._mapping_matrix_for_convolution_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:137 (AbstractInversionImaging.operated_mapping_matrix_list)" + ] + }, + { + "instruction": "input_multiply_transpose_fusion", + "ms": 0.10967575499999999, + "opcode": "fusion", + "shape": "(f64[1500,1500]{1,0}, f64[1500,1500]{1,0}, f64[1500,1500]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:237 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:274 (_certified_positive_only_from)" + ] + } + ], + "grids_and_structures": [ + { + "instruction": "loop_multiply_sine_fusion", + "ms": 0.0013459050000000012, + "opcode": "fusion", + "shape": "(f64[], f64[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/geometry/geometry_util.py:527", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/geometry/geometry_util.py:527 (transform_grid_2d_to_reference_frame)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/profiles/geometry_profiles.py:418 (EllProfile.transformed_to_reference_frame_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/structures/decorators/abstract.py:93 (AbstractMaker.evaluate_func)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/structures/decorators/abstract.py:112 (AbstractMaker.result)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/structures/decorators/to_grid.py:70 (to_grid..wrapper)" + ] + } + ], + "border_relocator": [ + { + "instruction": "eigh.45", + "ms": 0.07452502000000018, + "opcode": "custom-call", + "shape": "(f64[2,2]{0,1}, f64[2]{0}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "custom-call.2", + "ms": 0.007958630000000019, + "opcode": "custom-call", + "shape": "(f64[2,2]{1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_add_fusion.5", + "ms": 0.0033700850000000027, + "opcode": "fusion", + "shape": "f64[1500]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:458 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_reduce_fusion.17", + "ms": 0.0019246300000000038, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:256", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:256 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_multiply_fusion.2", + "ms": 0.001547344999999998, + "opcode": "fusion", + "shape": "f64[2,2]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + } + ], + "mesh_construction": [ + { + "instruction": "input_concatenate_fusion.7", + "ms": 0.0020690949999999982, + "opcode": "fusion", + "shape": "f64[1500,2]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:820", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:820 (InterpolatorDelaunay.mesh_grid_xy)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:847 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + } + ], + "mesh_qhull_callback": [ + { + "instruction": "pure_callback.4", + "ms": 0.01063330499999998, + "opcode": "custom-call", + "shape": "(s32[3000,3]{1,0}, s32[3000,3]{1,0}, s32[1500]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:161", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:161 (_jax_delaunay_tables)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:405 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + } + ], + "other": [ + { + "instruction": "copy.80", + "ms": 0.04202898499999959, + "opcode": "copy", + "shape": "f64[1,1024,2]{2,1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.48", + "ms": 0.014758169999999984, + "opcode": "copy", + "shape": "s32[21361]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.53", + "ms": 0.001986385000000001, + "opcode": "copy", + "shape": "s64[1500]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.78", + "ms": 0.0016490849999999948, + "opcode": "copy", + "shape": "s64[]", + "source": "", + "stack": [] + }, + { + "instruction": "copy.79", + "ms": 0.001626270000000001, + "opcode": "copy", + "shape": "s32[]", + "source": "", + "stack": [] + }, + { + "instruction": "copy.39", + "ms": 0.0016023799999999964, + "opcode": "copy", + "shape": "s32[]", + "source": "", + "stack": [] + } + ], + "mesh_seed_argmin": [ + { + "instruction": "input_reduce_fusion", + "ms": 0.1460623799999981, + "opcode": "fusion", + "shape": "(f64[1024]{0}, s64[1024]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:191", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:191 (_nearest_vertex_seed_from..argmin_chunk)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)" + ] + }, + { + "instruction": "loop_dynamic_update_slice_fusion", + "ms": 0.04125969999999815, + "opcode": "fusion", + "shape": "s32[21,1024]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_add_fusion", + "ms": 0.03194319999999978, + "opcode": "fusion", + "shape": "s64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_broadcast_fusion", + "ms": 0.0019674850000000006, + "opcode": "fusion", + "shape": "s32[21,1024]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "pdip_solve": [ + { + "instruction": "cholesky.50", + "ms": 6.764367869999967, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "triangular-solve.1", + "ms": 1.2165340000000164, + "opcode": "custom-call", + "shape": "(f64[1500,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "triangular-solve", + "ms": 1.0496069599999889, + "opcode": "custom-call", + "shape": "(f64[1500,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "cholesky.70", + "ms": 0.890877969999999, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:297 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:274 (_certified_positive_only_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:496 (reconstruction_positive_only_from)" + ] + }, + { + "instruction": "cholesky.60", + "ms": 0.8628572700000018, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:237 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:274 (_certified_positive_only_from)" + ] + }, + { + "instruction": "input_transpose_fusion", + "ms": 0.2675752200000003, + "opcode": "fusion", + "shape": "f64[1500,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + } + ], + "regularization_H": [ + { + "instruction": "input_scatter_fusion.10", + "ms": 0.0020737399999999997, + "opcode": "fusion", + "shape": "f64[1500,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:615", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:615 (pixel_splitted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:137 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_concatenate_fusion.9", + "ms": 0.0018556500000000014, + "opcode": "fusion", + "shape": "pred[3]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:91", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:91 (split_points_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:410 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + }, + { + "instruction": "input_concatenate_fusion.8", + "ms": 0.001854400000000002, + "opcode": "fusion", + "shape": "pred[3]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:93", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:93 (split_points_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:410 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + }, + { + "instruction": "input_concatenate_fusion.10", + "ms": 0.0018524550000000024, + "opcode": "fusion", + "shape": "pred[3]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:90", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:90 (split_points_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:410 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + }, + { + "instruction": "input_concatenate_fusion", + "ms": 0.0017614349999999991, + "opcode": "fusion", + "shape": "s32[1500,2]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:615", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:615 (pixel_splitted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:137 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_concatenate_fusion.11", + "ms": 0.0014899199999999974, + "opcode": "fusion", + "shape": "pred[3]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:88", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:88 (split_points_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:410 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + } + ], + "mesh_locate_walk": [ + { + "instruction": "loop_reduce_fusion", + "ms": 0.02256263499999989, + "opcode": "fusion", + "shape": "(f64[21361]{0}, s64[21361]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:264", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:264 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:264 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)" + ] + }, + { + "instruction": "input_reduce_fusion.1", + "ms": 0.020915064999999518, + "opcode": "fusion", + "shape": "pred[196]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:288", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:288 (_walk_from_seed..cond)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)" + ] + }, + { + "instruction": "loop_or_select_fusion", + "ms": 0.019592430000000067, + "opcode": "fusion", + "shape": "(s32[21361]{0}, pred[21361]{0}, pred[21361]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:270", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:270 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)" + ] + }, + { + "instruction": "loop_select_fusion", + "ms": 0.017461094999999923, + "opcode": "fusion", + "shape": "s32[21361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:242", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:242 (_walk_from_seed..weights_of)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:262 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)" + ] + }, + { + "instruction": "input_reduce_fusion.2", + "ms": 0.014385254999999984, + "opcode": "fusion", + "shape": "pred[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:288", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:288 (_walk_from_seed..cond)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)" + ] + }, + { + "instruction": "while.20", + "ms": 0.012820884999999917, + "opcode": "while", + "shape": "(s32[], s32[21361]{0}, pred[21361]{0}, pred[21361]{0}, s32[3000,3]{1,0}, /*index=5*/f64[1500,2]{1,0}, f64[21361,2]{1,0}, s32[3000,3]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "psf_convolution_mapping_matrix": [ + { + "instruction": "input_scatter_fusion", + "ms": 1.9828163449999996, + "opcode": "fusion", + "shape": "f64[1500,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.19.0", + "ms": 1.7580253299999993, + "opcode": "fft", + "shape": "f64[1500,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.15.0", + "ms": 1.3677472200000003, + "opcode": "fft", + "shape": "c128[1500,180,91]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.17.0", + "ms": 0.979285875, + "opcode": "fft", + "shape": "c128[1500,91,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_transpose_fusion.2", + "ms": 0.5135930400000001, + "opcode": "fusion", + "shape": "c128[1500,91,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "wrapped_transpose", + "ms": 0.49977109499999994, + "opcode": "fusion", + "shape": "c128[1500,180,91]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + } + ], + "inversion_other": [ + { + "instruction": "cholesky.80", + "ms": 0.8955378100000003, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1078 (AbstractInversion.log_det_curvature_reg_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:347 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "cholesky.90", + "ms": 0.8903301400000003, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1157 (AbstractInversion.log_det_regularization_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:348 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "loop_reduce_window_fusion", + "ms": 0.0028718299999999967, + "opcode": "fusion", + "shape": "s64[6,16]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "loop_reduce_window_fusion.1", + "ms": 0.0027892500000000053, + "opcode": "fusion", + "shape": "s64[94,16]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "loop_broadcast_convert_fusion", + "ms": 0.0021918099999999967, + "opcode": "fusion", + "shape": "(s32[1500]{0}, s64[1500]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527 (AbstractInversion.zeroed_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:567 (AbstractInversion.solve_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:684 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_scatter_fusion.5", + "ms": 0.001951324999999996, + "opcode": "fusion", + "shape": "s64[1500]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527 (AbstractInversion.zeroed_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:567 (AbstractInversion.solve_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:684 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "mapping_matrix": [ + { + "instruction": "input_reduce_fusion.23", + "ms": 0.0028889349999999922, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:120 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + } + ], + "curvature_matrix_F": [ + { + "instruction": "cublas-lt-matmul.2", + "ms": 4.20931259, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "chi_squared_evidence": [ + { + "instruction": "loop_multiply_fusion", + "ms": 0.0029892350000000007, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:300", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:300 (AbstractNDArray.__pow__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:60 (unwrap_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:35 (to_new_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:78 (chi_squared_map_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:78 (AbstractFit.chi_squared_map)" + ] + } + ] + }, + "stage_audit_note": "The HLO instructions that contributed most of each stage's milliseconds, with their full source stack. A stage row is only as good as the rules that built it; this is how a reader checks a row against the HLO instead of trusting it.", + "untraced_wall_ms": 33.41252448501109, + "reconciliation_vs_untraced_pct": -11.077245589962654, + "wall_basis": "wall_ms is the TRACED run's wall, the run these kernel durations came from. untraced_wall_ms is the same executable without the profiler; the difference is the profiler's overhead and belongs in neither the stages nor the idle row.", + "calls": 200, + "call_split": "per-call (first-instruction recurrence)", + "call_blocks": 200, + "events": 93720, + "streams": [ + "Stream #14(MemcpyD2D,MemcpyD2H,Compute,MemcpyH2D,Memset)" + ], + "per_stage_ms": { + "border_relocator": { + "median_ms": 0.089342, + "min_ms": 0.08876700000000001, + "max_ms": 0.090048 + }, + "chi_squared_evidence": { + "median_ms": 0.002976, + "min_ms": 0.002848, + "max_ms": 0.003424 + }, + "curvature_matrix_F": { + "median_ms": 4.2077935, + "min_ms": 4.197525, + "max_ms": 4.283758 + }, + "grids_and_structures": { + "median_ms": 0.001312, + "min_ms": 0.001279, + "max_ms": 0.001408 + }, + "inversion_other": { + "median_ms": 1.7971385, + "min_ms": 1.783251, + "max_ms": 1.8153160000000002 + }, + "mapping_matrix": { + "median_ms": 0.00288, + "min_ms": 0.002879, + "max_ms": 0.002912 + }, + "memset": { + "median_ms": 0.021167999999999996, + "min_ms": 0.010048000000000001, + "max_ms": 0.05571100000000001 + }, + "mesh_construction": { + "median_ms": 0.00208, + "min_ms": 0.002047, + "max_ms": 0.002112 + }, + "mesh_locate_walk": { + "median_ms": 0.13025399999999995, + "min_ms": 0.12953799999999996, + "max_ms": 0.131037 + }, + "mesh_qhull_callback": { + "median_ms": 0.010591999999999999, + "min_ms": 0.010432, + "max_ms": 0.0112 + }, + "mesh_seed_argmin": { + "median_ms": 0.22123950000000026, + "min_ms": 0.2209210000000002, + "max_ms": 0.22160300000000024 + }, + "mixed_fusion": { + "median_ms": 1.9846054999999998, + "min_ms": 1.9805250000000005, + "max_ms": 1.9978459999999993 + }, + "other": { + "median_ms": 0.063648, + "min_ms": 0.0632, + "max_ms": 0.06412899999999998 + }, + "pdip_solve": { + "median_ms": 7.6036825000000015, + "min_ms": 2.432922, + "max_ms": 23.139356999999997 + }, + "psf_convolution_mapping_matrix": { + "median_ms": 7.100987999999999, + "min_ms": 7.088909, + "max_ms": 7.1149580000000014 + }, + "regularization_H": { + "median_ms": 0.01088, + "min_ms": 0.010719, + "max_ms": 0.011231000000000001 + } + }, + "stage_order": [ + "border_relocator", + "mesh_qhull_callback", + "mesh_seed_argmin", + "mesh_locate_walk", + "mesh_construction", + "mapping_matrix", + "psf_convolution_mapping_matrix", + "curvature_matrix_F", + "regularization_H", + "pdip_solve", + "chi_squared_evidence", + "grids_and_structures", + "inversion_other", + "mixed_fusion", + "other", + "memset" + ], + "mixed_fusion": { + "ms": 1.9846054999999998, + "constituent_stage_sets": { + "curvature_matrix_F + psf_convolution_mapping_matrix": 1.0171146450000002, + "pdip_solve + psf_convolution_mapping_matrix": 0.22679108500000003, + "data_vector_D + pdip_solve": 0.12580931000000017, + "mapped_reconstruction + pdip_solve": 0.11475695499999994, + "mapping_matrix + pdip_solve": 0.11315047499999997, + "curvature_reg_reduce_gather + inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": 0.10967575499999999, + "pdip_solve + regularization_H": 0.04405461000000002, + "inversion_other + pdip_solve + regularization_H": 0.024096890000000003, + "inversion_other + pdip_solve": 0.022986635000000033, + "inversion_other + mapping_matrix + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin + pdip_solve": 0.021017250000000015, + "inversion_other + mesh_construction + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin + pdip_solve + regularization_H": 0.01916010500000003, + "inversion_other + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + pdip_solve + regularization_H": 0.014659999999999998, + "pdip_solve + ray_trace_data_grid": 0.013721134999999936, + "border_relocator + ray_trace_data_grid": 0.012399254999999996, + "inversion_other + mapping_matrix + mesh_construction + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin": 0.011660539999999997, + "grids_and_structures + mass_profile_deflections + pdip_solve + ray_trace_data_grid": 0.009410924999999997, + "border_relocator + pdip_solve + ray_trace_data_grid": 0.00867048499999998, + "chi_squared_evidence + pdip_solve": 0.007627724999999989, + "inversion_other + mesh_construction + mesh_seed_argmin + pdip_solve + regularization_H": 0.007248719999999993, + "border_relocator + pdip_solve": 0.006865055000000029, + "inversion_other + mesh_dual_areas + mesh_locate_walk": 0.0067850600000000615, + "inversion_other + mesh_construction + pdip_solve + regularization_H": 0.006344695000000006, + "inversion_other + pdip_solve + ray_trace_data_grid": 0.005274520000000025, + "inversion_other + regularization_H": 0.004843810000000002, + "inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": 0.004793240000000001, + "inversion_other + mapped_reconstruction + pdip_solve": 0.003802355000000001, + "mapping_matrix + pdip_solve + regularization_H": 0.003430859999999997, + "inversion_other + mesh_construction + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin": 0.0031577149999999993, + "inversion_other + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin": 0.0029710200000000004, + "inversion_other + mesh_construction + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin + regularization_H": 0.002703179999999992, + "inversion_other + mesh_dual_areas + mesh_locate_walk + pdip_solve": 0.0026049199999999954, + "inversion_other + mesh_locate_walk + mesh_seed_argmin": 0.002504130000000003, + "inversion_other + mesh_interpolation_weights": 0.0021409050000000054, + "chi_squared_evidence + inversion_other": 0.0019523150000000026, + "grids_and_structures + mass_profile_deflections + pdip_solve": 0.0013377399999999987 + }, + "example_kernels": { + "curvature_matrix_F + psf_convolution_mapping_matrix": [ + "loop_divide_gather_fusion" + ], + "pdip_solve + psf_convolution_mapping_matrix": [ + "loop_broadcast_fusion.2" + ], + "data_vector_D + pdip_solve": [ + "input_reduce_fusion.5", + "input_reduce_fusion.21" + ], + "mapped_reconstruction + pdip_solve": [ + "input_reduce_fusion.9" + ], + "mapping_matrix + pdip_solve": [ + "loop_broadcast_fusion.3", + "loop_divide_fusion" + ], + "curvature_reg_reduce_gather + inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": [ + "input_multiply_transpose_fusion" + ], + "pdip_solve + regularization_H": [ + "loop_select_fusion.2", + "input_transpose_fusion.3" + ], + "inversion_other + pdip_solve + regularization_H": [ + "input_transpose_fusion.4" + ], + "inversion_other + pdip_solve": [ + "input_reduce_fusion.7", + "loop_log_fusion", + "input_reduce_fusion.8", + "input_reduce_fusion.12" + ], + "inversion_other + mapping_matrix + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin + pdip_solve": [ + "input_scatter_fusion.6", + "input_scatter_fusion.3" + ] + }, + "prorated_estimate_ms": { + "psf_convolution_mapping_matrix": 0.6219528650000001, + "curvature_matrix_F": 0.5085573225000001, + "pdip_solve": 0.39040009660714287, + "mapped_reconstruction": 0.08177939016666663, + "inversion_other": 0.06826507335714291, + "data_vector_D": 0.06290465500000009, + "mapping_matrix": 0.062289437083333316, + "regularization_H": 0.04229206560714287, + "reconstruction_scatter": 0.023133460999999998, + "curvature_reg_reduce_gather": 0.021935150999999996, + "ray_trace_data_grid": 0.020061261249999966, + "mesh_construction": 0.014364231523809527, + "mesh_locate_walk": 0.012632607107142884, + "border_relocator": 0.012522316666666672, + "mesh_interpolation_weights": 0.012398766273809531, + "mesh_seed_argmin": 0.011169434440476194, + "mesh_dual_areas": 0.008478576250000022, + "chi_squared_evidence": 0.0047900199999999955, + "grids_and_structures": 0.002798644583333332, + "mass_profile_deflections": 0.002798644583333332 + }, + "prorated_note": "ESTIMATE ONLY \u2014 a mixed fusion's time split equally across the stages its constituents span. Never summed into the measured table, never reconciled." + }, + "other_sources_ms": { + "copy.80": 0.04202898499999959, + "copy.48": 0.014758169999999984, + "copy.53": 0.001986385000000001, + "copy.78": 0.0016490849999999948, + "copy.79": 0.001626270000000001, + "copy.39": 0.0016023799999999964 + }, + "device_span_ms": 34.338307730000004, + "device_busy_ms": 27.877550139999997, + "device_idle_ms": 6.460757590000007, + "largest_idle_gaps": [ + { + "gap_ms": 5.386263, + "after": "pure_callback.4", + "before": "pure_callback.4" + }, + { + "gap_ms": 0.054718, + "after": "input_concatenate_fusion.7", + "before": "pure_callback.4" + }, + { + "gap_ms": 0.034976, + "after": "input_reduce_fusion.1", + "before": "input_reduce_fusion.2" + }, + { + "gap_ms": 0.034687, + "after": "pure_callback.4", + "before": "copy.79" + }, + { + "gap_ms": 0.024704, + "after": "while.26", + "before": "input_reduce_select_fusion" + }, + { + "gap_ms": 0.0216, + "after": "while.26", + "before": "input_reduce_select_fusion" + }, + { + "gap_ms": 0.020735, + "after": "while.26", + "before": "input_reduce_select_fusion" + }, + { + "gap_ms": 0.020607, + "after": "loop_dynamic_update_slice_fusion", + "before": "loop_add_fusion" + } + ], + "kernel_ms": 23.2505795, + "sum_ms": 29.711337090000008, + "wall_ms": 34.34299495498635, + "host_outside_span_ms": 0.004687224986348326, + "reconciliation_pct": -13.486470446322743, + "unjoined_ms": 0.0, + "unjoined_pct": 0.0, + "other_ms": 0.063648, + "other_pct": 0.18533037110893782, + "note": "Stage rows attribute the command-buffers-OFF program (see the module docstring): kernel times are the same, the launch overhead the CUDA graphs remove is not. sum_ms = kernel rows + device_idle_ms; the residual against wall_ms is host_outside_span_ms (dispatch before the first kernel, teardown after the last).", + "per_stage_ms_per_lane": { + "border_relocator": 0.089342, + "chi_squared_evidence": 0.002976, + "curvature_matrix_F": 4.2077935, + "grids_and_structures": 0.001312, + "inversion_other": 1.7971385, + "mapping_matrix": 0.00288, + "memset": 0.021167999999999996, + "mesh_construction": 0.00208, + "mesh_locate_walk": 0.13025399999999995, + "mesh_qhull_callback": 0.010591999999999999, + "mesh_seed_argmin": 0.22123950000000026, + "mixed_fusion": 1.9846054999999998, + "other": 0.063648, + "pdip_solve": 7.6036825000000015, + "psf_convolution_mapping_matrix": 7.100987999999999, + "regularization_H": 0.01088 + }, + "per_lane_divisor": 1, + "host_callback": { + "pure_callback_span_ms": 99.06805499999997, + "qhull_ms": 92.29713190000005, + "callback_body_ms_note": "the OUTERMOST matching body event, not a sum: under the probe the body appears twice (the wrapper and the timed re-implementation it calls) and summing them would count the same work twice", + "events_by_name": { + "pure_callback.4": { + "count": 200, + "ms": 99.06805499999997 + }, + "$callback.py:815 _wrapped_callback": { + "count": 200, + "ms": 97.33393749999995 + }, + "$callback.py:224 _callback": { + "count": 200, + "ms": 96.86582529999997 + }, + "$callback.py:74 pure_callback_impl": { + "count": 200, + "ms": 96.69217809999999 + }, + "$callback.py:69 __call__": { + "count": 200, + "ms": 92.60040819999999 + }, + "$delaunay.py:162 ": { + "count": 200, + "ms": 92.47195890000008 + }, + "$host_callback_probe.py:225 wrapped": { + "count": 200, + "ms": 92.29713190000005 + }, + "$host_callback_probe.py:160 _timed_tri_only": { + "count": 200, + "ms": 92.14158769999999 + }, + "ThenExecuteCallback:GetEventForComputeStreamSyncPoint": { + "count": 200, + "ms": 0.3772671000000001 + }, + "$callback.py:822 ": { + "count": 800, + "ms": 0.28150809999999954 + }, + "$__init__.py:132 _xla_gc_callback": { + "count": 2, + "ms": 0.000368 + } + }, + "note": "HOST milliseconds per traced BATCH (the whole invocation), aggregated by name because the events nest. Not a row of the device table: the device pays for them as the idle gaps largest_idle_gaps names." + }, + "host_callback_ms": 99.06805499999997 + }, + "hlo_census": { + "status": "excluded", + "reason": "The legacy census anchors PyAutoArray source line numbers that moved after the phase-1 run. No batched attribution is published from unsupported anchors; the device-event table and wall reconciliation remain valid." + }, + "stage_map_provenance": [ + { + "label": "log_det_curvature_reg", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 850, + 882 + ], + "requires": { + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 884, + 896 + ] + }, + "function": null + }, + { + "label": "log_det_regularization", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 850, + 882 + ], + "requires": { + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 897, + 943 + ] + }, + "function": null + }, + { + "label": "curvature_reg_add", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 359, + 372 + ], + "requires": null, + "function": null + }, + { + "label": "curvature_reg_reduce_gather", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 374, + 398 + ], + "requires": null, + "function": null + }, + { + "label": "edge_subset_gather", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 606, + 614 + ], + "requires": null, + "function": null + }, + { + "label": "regularization_term", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 786, + 849 + ], + "requires": null, + "function": null + }, + { + "label": "mapped_reconstruction", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 722, + 785 + ], + "requires": null, + "function": null + }, + { + "label": "reconstruction_scatter", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 583, + 605 + ], + "requires": null, + "function": null + }, + { + "label": "reconstruction_scatter", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 615, + 721 + ], + "requires": null, + "function": null + }, + { + "label": "certified_active_set_solve", + "path": "likelihood_breakdown/active_set_steps.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "certified_active_set_solve", + "path": "likelihood_breakdown/library_solver_injection.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "pdip_solve", + "path": "PyAutoArray/autoarray/util/jax_nnls.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "pdip_solve", + "path": "PyAutoArray/autoarray/inversion/inversion/inversion_util.py", + "lines": [ + 256, + 488 + ], + "requires": null, + "function": null + }, + { + "label": "mapped_reconstruction", + "path": "PyAutoArray/autoarray/inversion/inversion/inversion_util.py", + "lines": [ + 156, + 200 + ], + "requires": null, + "function": null + }, + { + "label": "curvature_matrix_F", + "path": "PyAutoArray/autoarray/inversion/inversion/inversion_util.py", + "lines": [ + 12, + 155 + ], + "requires": null, + "function": null + }, + { + "label": "reconstruction_scatter", + "path": "PyAutoArray/autoarray/inversion/inversion/inversion_util.py", + "lines": [ + 201, + 255 + ], + "requires": null, + "function": null + }, + { + "label": "data_vector_D", + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py", + "lines": [ + 54, + 73 + ], + "requires": null, + "function": null + }, + { + "label": "curvature_matrix_F", + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py", + "lines": [ + 74, + 110 + ], + "requires": null, + "function": null + }, + { + "label": "data_vector_D", + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py", + "lines": null, + "requires": null, + "function": "data_vector_via_blurred_mapping_matrix_from" + }, + { + "label": "curvature_matrix_F", + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "likelihood_breakdown/psf_cube_injection.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": [ + 1086, + 1300 + ], + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": [ + 632, + 642 + ], + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": [ + 670, + 691 + ], + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": null, + "requires": { + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": [ + 1086, + 1300 + ] + }, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": null, + "requires": { + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py", + "lines": [ + 119, + 150 + ] + }, + "function": null + }, + { + "label": "psf_convolution_image", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py", + "lines": [ + 119, + 150 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_qhull_callback", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 139, + 172 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_seed_argmin", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 173, + 207 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_locate_walk", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 208, + 372 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_dual_areas", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 373, + 396 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_dual_areas", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 437, + 494 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_dual_areas", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 605, + 615 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_interpolation_weights", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 616, + 695 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_interpolation_weights", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 896, + 1000 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_construction", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "border_relocator", + "path": "PyAutoArray/autoarray/inversion/mesh/border_relocator.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "mesh_construction", + "path": "PyAutoArray/autoarray/inversion/mesh/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "mapping_matrix", + "path": "PyAutoArray/autoarray/inversion/mappers/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "mapping_matrix", + "path": "PyAutoArray/autoarray/inversion/mappings/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "mapping_matrix", + "path": "PyAutoArray/autoarray/inversion/linear_obj/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "regularization_H", + "path": "PyAutoArray/autoarray/inversion/regularization/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "chi_squared_evidence", + "path": "PyAutoArray/autoarray/fit/fit_util.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "chi_squared_evidence", + "path": "PyAutoArray/autoarray/fit/fit_dataset.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "ray_trace_mesh_grid", + "path": "PyAutoLens/autolens/lens/to_inversion.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "ray_trace_mesh_grid", + "path": "PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "mass_profile_deflections", + "path": "PyAutoGalaxy/autogalaxy/profiles/mass/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "light_profile_image", + "path": "PyAutoGalaxy/autogalaxy/profiles/light/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "light_profile_image", + "path": "PyAutoGalaxy/autogalaxy/operate/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "ray_trace_data_grid", + "path": "PyAutoLens/autolens/lens/tracer.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "ray_trace_data_grid", + "path": "PyAutoLens/autolens/lens/tracer_util.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "grids_and_structures", + "path": "PyAutoArray/autoarray/structures/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "grids_and_structures", + "path": "PyAutoArray/autoarray/operators/over_sampling/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "grids_and_structures", + "path": "PyAutoArray/autoarray/geometry/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "inversion_other", + "path": "PyAutoArray/autoarray/inversion/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "fit_imaging_other", + "path": "PyAutoLens/autolens/imaging/fit_imaging.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "fit_imaging_other", + "path": "PyAutoGalaxy/autogalaxy/imaging/fit_imaging.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "fit_imaging_other", + "path": "PyAutoArray/autoarray/fit/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "analysis_other", + "path": "PyAutoLens/autolens/analysis/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "analysis_other", + "path": "PyAutoGalaxy/autogalaxy/analysis/", + "lines": null, + "requires": null, + "function": null + } + ], + "trace_timing": { + "traced_wall_ms": 34.34299495498635, + "untraced_wall_ms": 33.41252448501109, + "profiler_overhead_ms": 0.930470469975262, + "profiler_overhead_pct": 2.7847954750999806 + }, + "jit_phases": { + "b_s3_pdip_library_likelihood_jit": { + "lower_s": 1.532768313998531, + "compile_s": 4.60332732200186, + "first_call_s": 0.12092058099733549, + "steady_per_call_s": 0.050908354999774016 + }, + "d_s3_certified_fallback_library_likelihood_jit": { + "lower_s": 0.49471232699943357, + "compile_s": 4.309052829998109, + "first_call_s": 0.05113923599856207, + "steady_per_call_s": 0.03157366609993915 + } + }, + "peak_bytes": { + "after_setup": 85108992, + "after_routes": 1181653248, + "after_all": 2399160064, + "note": "jax.devices()[0].memory_stats()['peak_bytes_in_use']; None on a backend that does not report it (CPU). Process-wide high-water marks." + }, + "note": "Every stage row is a MEASURED sum of GPU kernel durations joined to library source through the optimized HLO of ONE program \u2014 not arithmetic across compilations. The rows attribute the command-buffers-OFF program: kernel time is the same as production, the launch overhead the CUDA graphs remove is not, and command_buffers.* carries both walls and their delta. sum_ms = kernel rows + measured device_idle_ms; the residual against the wall is host_outside_span_ms and is reported, not absorbed. mixed_fusion.prorated_estimate_ms is an ESTIMATE and is never part of the table. No row may be quoted if reconciliation_pct is outside 5 % or unjoined_ms is non-zero.", + "vmap": { + "batch": 20, + "lanes_mode": "captured", + "arms": [ + "vmap", + "scalar" + ], + "draw_seed": 0, + "fallback": false, + "composition": "jax.jit(jax.vmap(fn))", + "composition_provenance": "Current Fitness._vmap after PyAutoFit#1638. Array 343376 used the retired jax.vmap(jax.jit(fn)) composition and is historical evidence only.", + "headline_arm": "scalar", + "lane_rtol": 1e-09, + "lanes": [ + { + "lane": 0, + "draw_name": "call00008_lane00", + "draw_kind": "captured", + "offsets": {}, + "log_likelihood_vmap": 19852.25135590449, + "log_likelihood_scalar": 19852.251354046493, + "log_likelihood_library_pdip": 19851.594186484792, + "log_likelihood_library_pdip_scalar": 19851.594184287453, + "rel_diff_vmap_vs_library_pdip": 3.31041131268299e-05, + "rel_diff_scalar_vs_library_pdip_scalar": 3.310413022450603e-05, + "abs_diff_nats": 1.8579958123154938e-06, + "rel_diff": 9.359118918957158e-11, + "rel_diff_scalar_vs_library_pdip": 3.310401953254246e-05, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 2.1973391994833946e-06, + "rel_diff_library_pdip_vmap_vs_scalar": 1.1068829934185285e-10, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 1, + "draw_name": "call00008_lane01", + "draw_kind": "captured", + "offsets": {}, + "log_likelihood_vmap": -10958.375795077343, + "log_likelihood_scalar": -10958.37431027089, + "log_likelihood_library_pdip": -10958.375982893973, + "log_likelihood_library_pdip_scalar": -10958.374399828957, + "rel_diff_vmap_vs_library_pdip": 1.713909339946838e-08, + "rel_diff_scalar_vs_library_pdip_scalar": 8.172568640861326e-09, + "abs_diff_nats": 0.0014848064529360272, + "rel_diff": 1.35495139232867e-07, + "rel_diff_scalar_vs_library_pdip": 1.526342119511416e-07, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 0.0015830650154384784, + "rel_diff_library_pdip_vmap_vs_scalar": 1.4446166536007272e-07, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": true, + "passes": 0, + "pdip_iter": null + }, + { + "lane": 2, + "draw_name": "call00008_lane02", + "draw_kind": "captured", + "offsets": {}, + "log_likelihood_vmap": 25613.440564826713, + "log_likelihood_scalar": 25613.440570642913, + "log_likelihood_library_pdip": 25613.440564330856, + "log_likelihood_library_pdip_scalar": 25613.440570722487, + "rel_diff_vmap_vs_library_pdip": 1.9359230953811324e-11, + "rel_diff_scalar_vs_library_pdip_scalar": 3.1067091602864846e-12, + "abs_diff_nats": 5.816200427943841e-06, + "rel_diff": 2.2707610919753334e-10, + "rel_diff_scalar_vs_library_pdip": 2.4643534020730423e-10, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6.391630449797958e-06, + "rel_diff_library_pdip_vmap_vs_scalar": 2.4954204930609476e-10, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 2, + "pdip_iter": null + }, + { + "lane": 3, + "draw_name": "call00008_lane03", + "draw_kind": "captured", + "offsets": {}, + "log_likelihood_vmap": 27440.97784675171, + "log_likelihood_scalar": 27440.977846751804, + "log_likelihood_library_pdip": 27440.97784675171, + "log_likelihood_library_pdip_scalar": 27440.9778467518, + "rel_diff_vmap_vs_library_pdip": 0.0, + "rel_diff_scalar_vs_library_pdip_scalar": 1.3257467818415742e-16, + "abs_diff_nats": 9.458744898438454e-11, + "rel_diff": 3.4469416327880925e-15, + "rel_diff_scalar_vs_library_pdip": 3.4469416327881043e-15, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 9.094947017729282e-11, + "rel_diff_library_pdip_vmap_vs_scalar": 3.3143669546039354e-15, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 4, + "pdip_iter": null + }, + { + "lane": 4, + "draw_name": "call00008_lane04", + "draw_kind": "captured", + "offsets": {}, + "log_likelihood_vmap": 19664.90800009171, + "log_likelihood_scalar": 19664.907997955226, + "log_likelihood_library_pdip": 19664.888364316696, + "log_likelihood_library_pdip_scalar": 19664.888362180216, + "rel_diff_vmap_vs_library_pdip": 9.985195262725188e-07, + "rel_diff_scalar_vs_library_pdip_scalar": 9.985195261960038e-07, + "abs_diff_nats": 2.1364830899983644e-06, + "rel_diff": 1.0864444879276922e-10, + "rel_diff_scalar_vs_library_pdip": 9.984108817152543e-07, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 2.1364794520195574e-06, + "rel_diff_library_pdip_vmap_vs_scalar": 1.086443722776715e-10, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 5, + "draw_name": "call00008_lane05", + "draw_kind": "captured", + "offsets": {}, + "log_likelihood_vmap": 19661.61183973046, + "log_likelihood_scalar": 19661.61183717844, + "log_likelihood_library_pdip": 19661.77570330541, + "log_likelihood_library_pdip_scalar": 19661.775700753395, + "rel_diff_vmap_vs_library_pdip": 8.33411882141676e-06, + "rel_diff_scalar_vs_library_pdip_scalar": 8.334118822683521e-06, + "abs_diff_nats": 2.552020305301994e-06, + "rel_diff": 1.2979710546804408e-10, + "rel_diff_scalar_vs_library_pdip": 8.334248617440466e-06, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 2.552016667323187e-06, + "rel_diff_library_pdip_vmap_vs_scalar": 1.2979583869555583e-10, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 6, + "draw_name": "call00008_lane06", + "draw_kind": "captured", + "offsets": {}, + "log_likelihood_vmap": 19673.735940325118, + "log_likelihood_scalar": 19673.735939245904, + "log_likelihood_library_pdip": 19673.099043038375, + "log_likelihood_library_pdip_scalar": 19673.099041959198, + "rel_diff_vmap_vs_library_pdip": 3.23740192304651e-05, + "rel_diff_scalar_vs_library_pdip_scalar": 3.237401923039178e-05, + "abs_diff_nats": 1.0792136890813708e-06, + "rel_diff": 5.485555424826634e-11, + "rel_diff_scalar_vs_library_pdip": 3.237396437313496e-05, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 1.0791773092933e-06, + "rel_diff_library_pdip_vmap_vs_scalar": 5.485548092812464e-11, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 7, + "draw_name": "call00008_lane07", + "draw_kind": "captured", + "offsets": {}, + "log_likelihood_vmap": -138594.97140857653, + "log_likelihood_scalar": -138594.48732518905, + "log_likelihood_library_pdip": -138595.14906317642, + "log_likelihood_library_pdip_scalar": -138594.4617615121, + "rel_diff_vmap_vs_library_pdip": 1.2818240832248599e-06, + "rel_diff_scalar_vs_library_pdip_scalar": 1.8444948400579902e-07, + "abs_diff_nats": 0.48408338747685775, + "rel_diff": 3.4928040560591425e-06, + "rel_diff_scalar_vs_library_pdip": 4.77461146250172e-06, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 0.687301664322149, + "rel_diff_library_pdip_vmap_vs_scalar": 4.959084624209809e-06, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": true, + "passes": 1, + "pdip_iter": null + }, + { + "lane": 8, + "draw_name": "call00008_lane08", + "draw_kind": "captured", + "offsets": {}, + "log_likelihood_vmap": 29346.07130081181, + "log_likelihood_scalar": 29346.07130093639, + "log_likelihood_library_pdip": 29346.071300805423, + "log_likelihood_library_pdip_scalar": 29346.07130092734, + "rel_diff_vmap_vs_library_pdip": 2.1768810958616178e-13, + "rel_diff_scalar_vs_library_pdip_scalar": 3.0843281130302986e-13, + "abs_diff_nats": 1.2457894627004862e-07, + "rel_diff": 4.245166073254701e-12, + "rel_diff_scalar_vs_library_pdip": 4.4628541828598085e-12, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 1.2191594578325748e-07, + "rel_diff_library_pdip_vmap_vs_scalar": 4.154421371538238e-12, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 2, + "pdip_iter": null + }, + { + "lane": 9, + "draw_name": "call00008_lane09", + "draw_kind": "captured", + "offsets": {}, + "log_likelihood_vmap": 19678.02975001747, + "log_likelihood_scalar": 19678.029748169214, + "log_likelihood_library_pdip": 19677.044941109525, + "log_likelihood_library_pdip_scalar": 19677.04493926127, + "rel_diff_vmap_vs_library_pdip": 5.004861811788185e-05, + "rel_diff_scalar_vs_library_pdip_scalar": 5.0048618122398006e-05, + "abs_diff_nats": 1.8482569430489093e-06, + "rel_diff": 9.392489831055702e-11, + "rel_diff_scalar_vs_library_pdip": 5.004852418828274e-05, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 1.8482533050701022e-06, + "rel_diff_library_pdip_vmap_vs_scalar": 9.392941423751663e-11, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 10, + "draw_name": "call00008_lane10", + "draw_kind": "captured", + "offsets": {}, + "log_likelihood_vmap": 28165.25603001419, + "log_likelihood_scalar": 28165.256030015546, + "log_likelihood_library_pdip": 28165.25603001418, + "log_likelihood_library_pdip_scalar": 28165.256030015516, + "rel_diff_vmap_vs_library_pdip": 2.58330959478225e-16, + "rel_diff_scalar_vs_library_pdip_scalar": 1.033323837912851e-15, + "abs_diff_nats": 1.356966095045209e-09, + "rel_diff": 4.817872394268663e-14, + "rel_diff_scalar_vs_library_pdip": 4.843705490216719e-14, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 1.3351382222026587e-09, + "rel_diff_library_pdip_vmap_vs_scalar": 4.740373106425204e-14, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 4, + "pdip_iter": null + }, + { + "lane": 11, + "draw_name": "call00008_lane11", + "draw_kind": "captured", + "offsets": {}, + "log_likelihood_vmap": 19840.56831757005, + "log_likelihood_scalar": 19840.568316419573, + "log_likelihood_library_pdip": 19843.379608087962, + "log_likelihood_library_pdip_scalar": 19843.379606936483, + "rel_diff_vmap_vs_library_pdip": 0.00014167397759026634, + "rel_diff_scalar_vs_library_pdip_scalar": 0.00014167397754807044, + "abs_diff_nats": 1.1504780559334904e-06, + "rel_diff": 5.7986144226593684e-11, + "rel_diff_scalar_vs_library_pdip": 0.00014167403556819544, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 1.1514785001054406e-06, + "rel_diff_library_pdip_vmap_vs_scalar": 5.8028346124212026e-11, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 12, + "draw_name": "call00008_lane12", + "draw_kind": "captured", + "offsets": {}, + "log_likelihood_vmap": 27027.609847821266, + "log_likelihood_scalar": 27027.609847821306, + "log_likelihood_library_pdip": 27027.609847821266, + "log_likelihood_library_pdip_scalar": 27027.609847821303, + "rel_diff_vmap_vs_library_pdip": 0.0, + "rel_diff_scalar_vs_library_pdip_scalar": 1.3460231324838998e-16, + "abs_diff_nats": 4.001776687800884e-11, + "rel_diff": 1.4806254457322897e-15, + "rel_diff_scalar_vs_library_pdip": 1.4806254457322919e-15, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 3.637978807091713e-11, + "rel_diff_library_pdip_vmap_vs_scalar": 1.3460231324838999e-15, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 5, + "pdip_iter": null + }, + { + "lane": 13, + "draw_name": "call00008_lane13", + "draw_kind": "captured", + "offsets": {}, + "log_likelihood_vmap": 19663.530670551172, + "log_likelihood_scalar": 19663.530668672454, + "log_likelihood_library_pdip": 19663.70492707598, + "log_likelihood_library_pdip_scalar": 19663.704925197264, + "rel_diff_vmap_vs_library_pdip": 8.861835826760407e-06, + "rel_diff_scalar_vs_library_pdip_scalar": 8.861835827607088e-06, + "abs_diff_nats": 1.8787177396006882e-06, + "rel_diff": 9.554325574876662e-11, + "rel_diff_scalar_vs_library_pdip": 8.861931369169458e-06, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 1.8787177396006882e-06, + "rel_diff_library_pdip_vmap_vs_scalar": 9.554240906011973e-11, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 14, + "draw_name": "call00008_lane14", + "draw_kind": "captured", + "offsets": {}, + "log_likelihood_vmap": 29194.371369654586, + "log_likelihood_scalar": 29194.371404864632, + "log_likelihood_library_pdip": 29194.371374830112, + "log_likelihood_library_pdip_scalar": 29194.371403214776, + "rel_diff_vmap_vs_library_pdip": 1.7727824407363037e-10, + "rel_diff_scalar_vs_library_pdip_scalar": 5.651281570815666e-11, + "abs_diff_nats": 3.521004691720009e-05, + "rel_diff": 1.2060560040464878e-09, + "rel_diff_scalar_vs_library_pdip": 1.0287777612136212e-09, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 2.8384663892211393e-05, + "rel_diff_library_pdip_vmap_vs_scalar": 9.7226494450522e-10, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 2, + "pdip_iter": null + }, + { + "lane": 15, + "draw_name": "call00008_lane15", + "draw_kind": "captured", + "offsets": {}, + "log_likelihood_vmap": -101907.25054610982, + "log_likelihood_scalar": -101907.2231845403, + "log_likelihood_library_pdip": -101907.25177512052, + "log_likelihood_library_pdip_scalar": -101907.22167418922, + "rel_diff_vmap_vs_library_pdip": 1.2060090676379144e-08, + "rel_diff_scalar_vs_library_pdip_scalar": 1.4820844456024411e-08, + "abs_diff_nats": 0.027361569518689066, + "rel_diff": 2.684948982383804e-07, + "rel_diff_scalar_vs_library_pdip": 2.805549135871966e-07, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 0.030100931297056377, + "rel_diff_library_pdip_vmap_vs_scalar": 2.953758409123645e-07, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": true, + "passes": 1, + "pdip_iter": null + }, + { + "lane": 16, + "draw_name": "call00008_lane16", + "draw_kind": "captured", + "offsets": {}, + "log_likelihood_vmap": -31483.763498118482, + "log_likelihood_scalar": -31483.760786620915, + "log_likelihood_library_pdip": -31483.763218991982, + "log_likelihood_library_pdip_scalar": -31483.760507525396, + "rel_diff_vmap_vs_library_pdip": 8.865728589101107e-09, + "rel_diff_scalar_vs_library_pdip_scalar": 8.864745320651108e-09, + "abs_diff_nats": 0.0027114975673612207, + "rel_diff": 8.612368724747384e-08, + "rel_diff_scalar_vs_library_pdip": 7.725795200463305e-08, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 0.0027114665863336995, + "rel_diff_library_pdip_vmap_vs_scalar": 8.612270397894788e-08, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": true, + "passes": 2, + "pdip_iter": null + }, + { + "lane": 17, + "draw_name": "call00008_lane17", + "draw_kind": "captured", + "offsets": {}, + "log_likelihood_vmap": -171697.76617092814, + "log_likelihood_scalar": -171697.72996317444, + "log_likelihood_library_pdip": -171697.77004656236, + "log_likelihood_library_pdip_scalar": -171697.73109022458, + "rel_diff_vmap_vs_library_pdip": 2.257242027371709e-08, + "rel_diff_scalar_vs_library_pdip_scalar": 6.564152797171631e-09, + "abs_diff_nats": 0.03620775369927287, + "rel_diff": 2.1088079444637198e-07, + "rel_diff_scalar_vs_library_pdip": 2.3345316548930005e-07, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 0.03895633778301999, + "rel_diff_library_pdip_vmap_vs_scalar": 2.26889065660099e-07, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": true, + "passes": 0, + "pdip_iter": null + }, + { + "lane": 18, + "draw_name": "call00008_lane18", + "draw_kind": "captured", + "offsets": {}, + "log_likelihood_vmap": 21885.39202787087, + "log_likelihood_scalar": 21885.392027844493, + "log_likelihood_library_pdip": 21885.392028055794, + "log_likelihood_library_pdip_scalar": 21885.392028030154, + "rel_diff_vmap_vs_library_pdip": 8.44973389030555e-12, + "rel_diff_scalar_vs_library_pdip_scalar": 8.483312074251625e-12, + "abs_diff_nats": 2.637534635141492e-08, + "rel_diff": 1.2051575917789325e-12, + "rel_diff_scalar_vs_library_pdip": 9.654891482072847e-12, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 2.5640474632382393e-08, + "rel_diff_library_pdip_vmap_vs_scalar": 1.1715794078325324e-12, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 19, + "draw_name": "call00008_lane19", + "draw_kind": "captured", + "offsets": {}, + "log_likelihood_vmap": 17967.171624424118, + "log_likelihood_scalar": 17967.171648665033, + "log_likelihood_library_pdip": 17967.171622452668, + "log_likelihood_library_pdip_scalar": 17967.171650215292, + "rel_diff_vmap_vs_library_pdip": 1.0972510647863099e-10, + "rel_diff_scalar_vs_library_pdip_scalar": 8.628287274168886e-11, + "abs_diff_nats": 2.4240915081463754e-05, + "rel_diff": 1.3491781319551686e-09, + "rel_diff_scalar_vs_library_pdip": 1.4589032404021197e-09, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 2.7762624085880816e-05, + "rel_diff_library_pdip_vmap_vs_scalar": 1.5451861108895316e-09, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 1, + "pdip_iter": null + } + ], + "lane_pins": [ + { + "pin": "lane 0: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 19852.25135590449, + "reference_value": 19851.594186484792, + "rel_diff": 3.31041131268299e-05, + "abs_diff_nats": 0.6571694196973112, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 0: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 19852.251354046493, + "reference_value": 19851.594184287453, + "rel_diff": 3.310413022450603e-05, + "abs_diff_nats": 0.6571697590406984, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 0: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 19852.25135590449, + "reference_value": 19852.251354046493, + "rel_diff": 9.359118918957158e-11, + "abs_diff_nats": 1.8579958123154938e-06, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 0: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 19851.594186484792, + "reference_value": 19851.594184287453, + "rel_diff": 1.1068829934185285e-10, + "abs_diff_nats": 2.1973391994833946e-06, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 1: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -10958.375795077343, + "reference_value": -10958.375982893973, + "rel_diff": 1.713909339946838e-08, + "abs_diff_nats": 0.00018781662947731093, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 1: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -10958.37431027089, + "reference_value": -10958.374399828957, + "rel_diff": 8.172568640861326e-09, + "abs_diff_nats": 8.955806697485968e-05, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 1: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -10958.375795077343, + "reference_value": -10958.37431027089, + "rel_diff": 1.35495139232867e-07, + "abs_diff_nats": 0.0014848064529360272, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 1: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -10958.375982893973, + "reference_value": -10958.374399828957, + "rel_diff": 1.4446166536007272e-07, + "abs_diff_nats": 0.0015830650154384784, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 2: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 25613.440564826713, + "reference_value": 25613.440564330856, + "rel_diff": 1.9359230953811324e-11, + "abs_diff_nats": 4.958565114066005e-07, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 2: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 25613.440570642913, + "reference_value": 25613.440570722487, + "rel_diff": 3.1067091602864846e-12, + "abs_diff_nats": 7.957351044751704e-08, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 2: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 25613.440564826713, + "reference_value": 25613.440570642913, + "rel_diff": 2.2707610919753334e-10, + "abs_diff_nats": 5.816200427943841e-06, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 2: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 25613.440564330856, + "reference_value": 25613.440570722487, + "rel_diff": 2.4954204930609476e-10, + "abs_diff_nats": 6.391630449797958e-06, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 3: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 27440.97784675171, + "reference_value": 27440.97784675171, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 3: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 27440.977846751804, + "reference_value": 27440.9778467518, + "rel_diff": 1.3257467818415742e-16, + "abs_diff_nats": 3.637978807091713e-12, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 3: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 27440.97784675171, + "reference_value": 27440.977846751804, + "rel_diff": 3.4469416327880925e-15, + "abs_diff_nats": 9.458744898438454e-11, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 3: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 27440.97784675171, + "reference_value": 27440.9778467518, + "rel_diff": 3.3143669546039354e-15, + "abs_diff_nats": 9.094947017729282e-11, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 4: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 19664.90800009171, + "reference_value": 19664.888364316696, + "rel_diff": 9.985195262725188e-07, + "abs_diff_nats": 0.019635775013739476, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 4: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 19664.907997955226, + "reference_value": 19664.888362180216, + "rel_diff": 9.985195261960038e-07, + "abs_diff_nats": 0.019635775010101497, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 4: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 19664.90800009171, + "reference_value": 19664.907997955226, + "rel_diff": 1.0864444879276922e-10, + "abs_diff_nats": 2.1364830899983644e-06, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 4: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 19664.888364316696, + "reference_value": 19664.888362180216, + "rel_diff": 1.086443722776715e-10, + "abs_diff_nats": 2.1364794520195574e-06, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 5: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 19661.61183973046, + "reference_value": 19661.77570330541, + "rel_diff": 8.33411882141676e-06, + "abs_diff_nats": 0.16386357495139237, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 5: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 19661.61183717844, + "reference_value": 19661.775700753395, + "rel_diff": 8.334118822683521e-06, + "abs_diff_nats": 0.16386357495503034, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 5: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 19661.61183973046, + "reference_value": 19661.61183717844, + "rel_diff": 1.2979710546804408e-10, + "abs_diff_nats": 2.552020305301994e-06, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 5: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 19661.77570330541, + "reference_value": 19661.775700753395, + "rel_diff": 1.2979583869555583e-10, + "abs_diff_nats": 2.552016667323187e-06, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 6: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 19673.735940325118, + "reference_value": 19673.099043038375, + "rel_diff": 3.23740192304651e-05, + "abs_diff_nats": 0.6368972867421689, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 6: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 19673.735939245904, + "reference_value": 19673.099041959198, + "rel_diff": 3.237401923039178e-05, + "abs_diff_nats": 0.6368972867057892, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 6: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 19673.735940325118, + "reference_value": 19673.735939245904, + "rel_diff": 5.485555424826634e-11, + "abs_diff_nats": 1.0792136890813708e-06, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 6: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 19673.099043038375, + "reference_value": 19673.099041959198, + "rel_diff": 5.485548092812464e-11, + "abs_diff_nats": 1.0791773092933e-06, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 7: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -138594.97140857653, + "reference_value": -138595.14906317642, + "rel_diff": 1.2818240832248599e-06, + "abs_diff_nats": 0.1776545998873189, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 7: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -138594.48732518905, + "reference_value": -138594.4617615121, + "rel_diff": 1.8444948400579902e-07, + "abs_diff_nats": 0.025563676957972348, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 7: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -138594.97140857653, + "reference_value": -138594.48732518905, + "rel_diff": 3.4928040560591425e-06, + "abs_diff_nats": 0.48408338747685775, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 7: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -138595.14906317642, + "reference_value": -138594.4617615121, + "rel_diff": 4.959084624209809e-06, + "abs_diff_nats": 0.687301664322149, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 8: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 29346.07130081181, + "reference_value": 29346.071300805423, + "rel_diff": 2.1768810958616178e-13, + "abs_diff_nats": 6.388290785253048e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 8: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 29346.07130093639, + "reference_value": 29346.07130092734, + "rel_diff": 3.0843281130302986e-13, + "abs_diff_nats": 9.051291272044182e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 8: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 29346.07130081181, + "reference_value": 29346.07130093639, + "rel_diff": 4.245166073254701e-12, + "abs_diff_nats": 1.2457894627004862e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 8: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 29346.071300805423, + "reference_value": 29346.07130092734, + "rel_diff": 4.154421371538238e-12, + "abs_diff_nats": 1.2191594578325748e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 9: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 19678.02975001747, + "reference_value": 19677.044941109525, + "rel_diff": 5.004861811788185e-05, + "abs_diff_nats": 0.9848089079459896, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 9: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 19678.029748169214, + "reference_value": 19677.04493926127, + "rel_diff": 5.0048618122398006e-05, + "abs_diff_nats": 0.9848089079423517, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 9: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 19678.02975001747, + "reference_value": 19678.029748169214, + "rel_diff": 9.392489831055702e-11, + "abs_diff_nats": 1.8482569430489093e-06, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 9: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 19677.044941109525, + "reference_value": 19677.04493926127, + "rel_diff": 9.392941423751663e-11, + "abs_diff_nats": 1.8482533050701022e-06, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 10: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 28165.25603001419, + "reference_value": 28165.25603001418, + "rel_diff": 2.58330959478225e-16, + "abs_diff_nats": 7.275957614183426e-12, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 10: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 28165.256030015546, + "reference_value": 28165.256030015516, + "rel_diff": 1.033323837912851e-15, + "abs_diff_nats": 2.9103830456733704e-11, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 10: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 28165.25603001419, + "reference_value": 28165.256030015546, + "rel_diff": 4.817872394268663e-14, + "abs_diff_nats": 1.356966095045209e-09, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 10: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 28165.25603001418, + "reference_value": 28165.256030015516, + "rel_diff": 4.740373106425204e-14, + "abs_diff_nats": 1.3351382222026587e-09, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 11: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 19840.56831757005, + "reference_value": 19843.379608087962, + "rel_diff": 0.00014167397759026634, + "abs_diff_nats": 2.8112905179114023, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 11: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 19840.568316419573, + "reference_value": 19843.379606936483, + "rel_diff": 0.00014167397754807044, + "abs_diff_nats": 2.811290516910958, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 11: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 19840.56831757005, + "reference_value": 19840.568316419573, + "rel_diff": 5.7986144226593684e-11, + "abs_diff_nats": 1.1504780559334904e-06, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 11: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 19843.379608087962, + "reference_value": 19843.379606936483, + "rel_diff": 5.8028346124212026e-11, + "abs_diff_nats": 1.1514785001054406e-06, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 12: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 27027.609847821266, + "reference_value": 27027.609847821266, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 12: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 27027.609847821306, + "reference_value": 27027.609847821303, + "rel_diff": 1.3460231324838998e-16, + "abs_diff_nats": 3.637978807091713e-12, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 12: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 27027.609847821266, + "reference_value": 27027.609847821306, + "rel_diff": 1.4806254457322897e-15, + "abs_diff_nats": 4.001776687800884e-11, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 12: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 27027.609847821266, + "reference_value": 27027.609847821303, + "rel_diff": 1.3460231324838999e-15, + "abs_diff_nats": 3.637978807091713e-11, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 13: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 19663.530670551172, + "reference_value": 19663.70492707598, + "rel_diff": 8.861835826760407e-06, + "abs_diff_nats": 0.17425652480960707, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 13: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 19663.530668672454, + "reference_value": 19663.704925197264, + "rel_diff": 8.861835827607088e-06, + "abs_diff_nats": 0.17425652480960707, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 13: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 19663.530670551172, + "reference_value": 19663.530668672454, + "rel_diff": 9.554325574876662e-11, + "abs_diff_nats": 1.8787177396006882e-06, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 13: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 19663.70492707598, + "reference_value": 19663.704925197264, + "rel_diff": 9.554240906011973e-11, + "abs_diff_nats": 1.8787177396006882e-06, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 14: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 29194.371369654586, + "reference_value": 29194.371374830112, + "rel_diff": 1.7727824407363037e-10, + "abs_diff_nats": 5.17552689416334e-06, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 14: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 29194.371404864632, + "reference_value": 29194.371403214776, + "rel_diff": 5.651281570815666e-11, + "abs_diff_nats": 1.6498561308253556e-06, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 14: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 29194.371369654586, + "reference_value": 29194.371404864632, + "rel_diff": 1.2060560040464878e-09, + "abs_diff_nats": 3.521004691720009e-05, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 14: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 29194.371374830112, + "reference_value": 29194.371403214776, + "rel_diff": 9.7226494450522e-10, + "abs_diff_nats": 2.8384663892211393e-05, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 15: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -101907.25054610982, + "reference_value": -101907.25177512052, + "rel_diff": 1.2060090676379144e-08, + "abs_diff_nats": 0.0012290106969885528, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 15: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -101907.2231845403, + "reference_value": -101907.22167418922, + "rel_diff": 1.4820844456024411e-08, + "abs_diff_nats": 0.001510351081378758, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 15: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -101907.25054610982, + "reference_value": -101907.2231845403, + "rel_diff": 2.684948982383804e-07, + "abs_diff_nats": 0.027361569518689066, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 15: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -101907.25177512052, + "reference_value": -101907.22167418922, + "rel_diff": 2.953758409123645e-07, + "abs_diff_nats": 0.030100931297056377, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 16: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -31483.763498118482, + "reference_value": -31483.763218991982, + "rel_diff": 8.865728589101107e-09, + "abs_diff_nats": 0.0002791264996631071, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 16: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -31483.760786620915, + "reference_value": -31483.760507525396, + "rel_diff": 8.864745320651108e-09, + "abs_diff_nats": 0.0002790955186355859, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 16: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -31483.763498118482, + "reference_value": -31483.760786620915, + "rel_diff": 8.612368724747384e-08, + "abs_diff_nats": 0.0027114975673612207, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 16: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -31483.763218991982, + "reference_value": -31483.760507525396, + "rel_diff": 8.612270397894788e-08, + "abs_diff_nats": 0.0027114665863336995, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 17: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -171697.76617092814, + "reference_value": -171697.77004656236, + "rel_diff": 2.257242027371709e-08, + "abs_diff_nats": 0.003875634225551039, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 17: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -171697.72996317444, + "reference_value": -171697.73109022458, + "rel_diff": 6.564152797171631e-09, + "abs_diff_nats": 0.0011270501418039203, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 17: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -171697.76617092814, + "reference_value": -171697.72996317444, + "rel_diff": 2.1088079444637198e-07, + "abs_diff_nats": 0.03620775369927287, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 17: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -171697.77004656236, + "reference_value": -171697.73109022458, + "rel_diff": 2.26889065660099e-07, + "abs_diff_nats": 0.03895633778301999, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 18: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 21885.39202787087, + "reference_value": 21885.392028055794, + "rel_diff": 8.44973389030555e-12, + "abs_diff_nats": 1.8492573872208595e-07, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 18: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 21885.392027844493, + "reference_value": 21885.392028030154, + "rel_diff": 8.483312074251625e-12, + "abs_diff_nats": 1.8566061044111848e-07, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 18: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 21885.39202787087, + "reference_value": 21885.392027844493, + "rel_diff": 1.2051575917789325e-12, + "abs_diff_nats": 2.637534635141492e-08, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 18: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 21885.392028055794, + "reference_value": 21885.392028030154, + "rel_diff": 1.1715794078325324e-12, + "abs_diff_nats": 2.5640474632382393e-08, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 19: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 17967.171624424118, + "reference_value": 17967.171622452668, + "rel_diff": 1.0972510647863099e-10, + "abs_diff_nats": 1.971449819393456e-06, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 19: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 17967.171648665033, + "reference_value": 17967.171650215292, + "rel_diff": 8.628287274168886e-11, + "abs_diff_nats": 1.5502591850236058e-06, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 19: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 17967.171624424118, + "reference_value": 17967.171648665033, + "rel_diff": 1.3491781319551686e-09, + "abs_diff_nats": 2.4240915081463754e-05, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 19: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 17967.171622452668, + "reference_value": 17967.171650215292, + "rel_diff": 1.5451861108895316e-09, + "abs_diff_nats": 2.7762624085880816e-05, + "within_rtol": false, + "status": "RECORDED" + } + ], + "lanes_failed": 12, + "arm_rows": { + "vmap": { + "arm": "vmap", + "program": "jax.jit(jax.vmap(fn))", + "stands_for": "Nautilus(use_jax_vmap=True) \u2014 Fitness._vmap", + "hlo_source": "jax.jit(jax.vmap(fn)).lower(batched_tree) \u2014 the exact current Fitness._vmap composition (PyAutoFit#1638)", + "batch_wall_ms": 264.23781140001665, + "wall_production_nesting_ms": 264.23781140001665, + "wall_aot_command_buffers_on_ms": 264.33929079976224, + "wall_aot_command_buffers_off_ms": 264.37640950025525, + "command_buffer_delta_ms": 0.03711870049301069, + "production_nesting_vs_aot_on_delta_ms": -0.1014793997455854, + "production_nesting_vs_aot_on_delta_pct": -0.0383898282538922, + "wall_per_lane_ms": 13.211890570000833, + "wall_per_lane_command_buffers_off_ms": 13.218820475012762, + "traced_batch_wall_ms": 269.8956337997515, + "untraced_batch_wall_ms": 264.49379679979756, + "traced_wall_per_lane_ms": 13.494781689987576, + "callback_count_per_call": 1.0, + "callback_count_per_lane": 0.05, + "callback_expectation": "B per batched call \u2014 the qhull pure_callback is vmap_method='sequential'", + "host_qhull_ms": 4.8631183002726175, + "host_tables_ms": 0.1748994993249653, + "host_qhull_ms_per_lane": 0.24315591501363087, + "host_tables_ms_per_lane": 0.008744974966248265, + "host_callback_probe": { + "calls": 10, + "qhull_ms_total": 48.631183002726175, + "tables_ms_total": 1.748994993249653, + "total_ms_total": 50.38017799597583, + "qhull_ms_mean": 4.8631183002726175, + "tables_ms_mean": 0.1748994993249653, + "total_ms_mean": 5.038017799597583, + "non_finite_calls": 0, + "n_points": [ + 1500 + ] + }, + "host_callback_records_first": [ + { + "n_points": 1500, + "qhull_ms": 4.685350999352522, + "tables_ms": 0.1956590022018645, + "total_ms": 4.881010001554387, + "finite": true + }, + { + "n_points": 1500, + "qhull_ms": 4.587711999192834, + "tables_ms": 0.17454800035920925, + "total_ms": 4.762259999552043, + "finite": true + }, + { + "n_points": 1500, + "qhull_ms": 4.908710001473082, + "tables_ms": 0.17608899725019, + "total_ms": 5.084798998723272, + "finite": true + }, + { + "n_points": 1500, + "qhull_ms": 4.993530001229374, + "tables_ms": 0.18240799909108318, + "total_ms": 5.175938000320457, + "finite": true + } + ], + "device_idle_ms": 17.68949599999999, + "device_idle_ms_per_lane": 0.8844747999999996, + "trace": { + "parser": "ProfileData.from_file(xplane) + as_text() + stack_frame_index(proto field 17)", + "stage_audit": { + "mixed_fusion": [ + { + "instruction": "input_multiply_transpose_fusion", + "ms": 1.6239525, + "opcode": "fusion", + "shape": "(f64[20,1500,1500]{2,1,0}, f64[20,1500,1500]{2,1,0}, f64[20,1500,1500]{2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1078 (AbstractInversion.log_det_curvature_reg_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:347 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "loop_divide_gather_fusion", + "ms": 1.0188186000000001, + "opcode": "fusion", + "shape": "(f64[15361,1500]{1,0}, f64[15361,1,1,1500]{3,2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_transpose_fusion.4", + "ms": 0.5908464, + "opcode": "fusion", + "shape": "f64[20,1500,1500]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:297 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:274 (_certified_positive_only_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:496 (reconstruction_positive_only_from)" + ] + }, + { + "instruction": "loop_broadcast_fusion", + "ms": 0.34363069999999996, + "opcode": "fusion", + "shape": "f64[20,1500,1500]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:579", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:579 (pixel_splitted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:137 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_broadcast_fusion.4", + "ms": 0.2298658, + "opcode": "fusion", + "shape": "f64[1500,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:303 (AbstractInversion.operated_mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:68 (InversionImagingMapping.data_vector)" + ] + }, + { + "instruction": "input_reduce_fusion.10", + "ms": 0.2058885, + "opcode": "fusion", + "shape": "f64[20,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:946", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:946 (AbstractInversion.regularization_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:346 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)", + "/mnt/ral/jnightin/autolens_profiling_wt/certified-solver-phase-c1-lane-rate/scripts/imaging/likelihood_breakdown/fixed_light_trace.py:1195 (_captured_likelihood_fn.._likelihood)" + ] + } + ], + "pdip_solve": [ + { + "instruction": "cholesky.50", + "ms": 113.18424869999059, + "opcode": "custom-call", + "shape": "(f64[20,1500,1500]{1,2,0}, s32[20]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "triangular-solve", + "ms": 29.062185600000326, + "opcode": "custom-call", + "shape": "(f64[20,1500,1]{1,2,0}, s8[320]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "triangular-solve.1", + "ms": 27.35376440000053, + "opcode": "custom-call", + "shape": "(f64[20,1500,1]{1,2,0}, s8[320]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "input_transpose_fusion", + "ms": 14.266777999999997, + "opcode": "fusion", + "shape": "f64[20,1500,1500]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "input_transpose_fusion.1", + "ms": 9.470944499999996, + "opcode": "fusion", + "shape": "f64[20,1500,1500]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "cholesky.60", + "ms": 7.099412499999965, + "opcode": "custom-call", + "shape": "(f64[20,1500,1500]{1,2,0}, s32[20]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:237 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:274 (_certified_positive_only_from)" + ] + } + ], + "other": [ + { + "instruction": "copy.82", + "ms": 0.04195490000000013, + "opcode": "copy", + "shape": "f64[1,1024,2]{2,1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.68", + "ms": 0.035717900000000025, + "opcode": "copy", + "shape": "s32[20]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.69", + "ms": 0.034546699999999986, + "opcode": "copy", + "shape": "pred[20,1500]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.67", + "ms": 0.0323582, + "opcode": "copy", + "shape": "pred[20]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.50", + "ms": 0.014662099999999994, + "opcode": "copy", + "shape": "s32[21361]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.80", + "ms": 0.0021151, + "opcode": "copy", + "shape": "s64[]", + "source": "", + "stack": [] + } + ], + "mesh_seed_argmin": [ + { + "instruction": "input_reduce_fusion", + "ms": 0.14568060000000024, + "opcode": "fusion", + "shape": "(f64[1024]{0}, s64[1024]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:191", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:191 (_nearest_vertex_seed_from..argmin_chunk)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)" + ] + }, + { + "instruction": "loop_dynamic_update_slice_fusion", + "ms": 0.038537099999999984, + "opcode": "fusion", + "shape": "s32[21,1024]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_add_fusion", + "ms": 0.03182649999999993, + "opcode": "fusion", + "shape": "s64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_broadcast_fusion.1", + "ms": 0.001968, + "opcode": "fusion", + "shape": "s32[21,1024]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "border_relocator": [ + { + "instruction": "eigh.45", + "ms": 0.07446929999999999, + "opcode": "custom-call", + "shape": "(f64[2,2]{0,1}, f64[2]{0}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "custom-call.3", + "ms": 0.007999899999999999, + "opcode": "custom-call", + "shape": "(f64[2,2]{1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_add_fusion.4", + "ms": 0.003232, + "opcode": "fusion", + "shape": "f64[1500]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:458 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_reduce_fusion.17", + "ms": 0.0016064, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:256", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:256 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_multiply_fusion.2", + "ms": 0.001552, + "opcode": "fusion", + "shape": "f64[2,2]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + } + ], + "regularization_H": [ + { + "instruction": "input_scatter_fusion.10", + "ms": 0.0036256000000000005, + "opcode": "fusion", + "shape": "f64[20,1500,1500]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:615", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:615 (pixel_splitted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:137 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_concatenate_fusion.7", + "ms": 0.0017472, + "opcode": "fusion", + "shape": "pred[3]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:94", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:94 (split_points_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:410 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + }, + { + "instruction": "wrapped_slice", + "ms": 0.0016127999999999997, + "opcode": "fusion", + "shape": "s32[1]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:94", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:94 (split_points_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:410 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + }, + { + "instruction": "wrapped_slice.1", + "ms": 0.0015680000000000002, + "opcode": "fusion", + "shape": "s32[1]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:90", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:90 (split_points_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:410 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + }, + { + "instruction": "loop_slice_fusion", + "ms": 0.0014719, + "opcode": "fusion", + "shape": "s32[1,1]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:94", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:94 (split_points_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:410 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + }, + { + "instruction": "loop_slice_fusion.1", + "ms": 0.0014688, + "opcode": "fusion", + "shape": "s32[1,1]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:90", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:90 (split_points_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:410 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + } + ], + "grids_and_structures": [ + { + "instruction": "loop_multiply_sine_fusion", + "ms": 0.0013312000000000003, + "opcode": "fusion", + "shape": "(f64[], f64[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/geometry/geometry_util.py:527", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/geometry/geometry_util.py:527 (transform_grid_2d_to_reference_frame)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/profiles/geometry_profiles.py:418 (EllProfile.transformed_to_reference_frame_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/structures/decorators/abstract.py:93 (AbstractMaker.evaluate_func)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/structures/decorators/abstract.py:112 (AbstractMaker.result)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/structures/decorators/to_grid.py:70 (to_grid..wrapper)" + ] + } + ], + "mesh_construction": [ + { + "instruction": "input_concatenate_fusion.6", + "ms": 0.0020543999999999996, + "opcode": "fusion", + "shape": "f64[1500,2]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:820", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:820 (InterpolatorDelaunay.mesh_grid_xy)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:847 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + } + ], + "mesh_qhull_callback": [ + { + "instruction": "pure_callback.4", + "ms": 0.010774299999999997, + "opcode": "custom-call", + "shape": "(s32[3000,3]{1,0}, s32[3000,3]{1,0}, s32[1500]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:161", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:161 (_jax_delaunay_tables)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:405 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + } + ], + "mesh_locate_walk": [ + { + "instruction": "loop_reduce_fusion", + "ms": 0.023209199999999992, + "opcode": "fusion", + "shape": "(f64[21361]{0}, s64[21361]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:264", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:264 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:264 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)" + ] + }, + { + "instruction": "input_reduce_fusion.1", + "ms": 0.021452699999999998, + "opcode": "fusion", + "shape": "pred[196]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:288", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:288 (_walk_from_seed..cond)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)" + ] + }, + { + "instruction": "loop_or_select_fusion", + "ms": 0.019353299999999997, + "opcode": "fusion", + "shape": "(s32[21361]{0}, pred[21361]{0}, pred[21361]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:270", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:270 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)" + ] + }, + { + "instruction": "loop_select_fusion", + "ms": 0.017551699999999983, + "opcode": "fusion", + "shape": "s32[21361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:242", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:242 (_walk_from_seed..weights_of)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:262 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)" + ] + }, + { + "instruction": "input_reduce_fusion.2", + "ms": 0.014121500000000018, + "opcode": "fusion", + "shape": "pred[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:288", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:288 (_walk_from_seed..cond)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)" + ] + }, + { + "instruction": "while.36", + "ms": 0.012806400000000022, + "opcode": "while", + "shape": "(s32[], s32[21361]{0}, pred[21361]{0}, pred[21361]{0}, s32[3000,3]{1,0}, /*index=5*/f64[1500,2]{1,0}, f64[21361,2]{1,0}, s32[3000,3]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "mapping_matrix": [ + { + "instruction": "input_reduce_fusion.21", + "ms": 0.0028415999999999997, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:120 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + } + ], + "psf_convolution_mapping_matrix": [ + { + "instruction": "input_scatter_fusion", + "ms": 1.9846547, + "opcode": "fusion", + "shape": "f64[1500,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:303 (AbstractInversion.operated_mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:68 (InversionImagingMapping.data_vector)" + ] + }, + { + "instruction": "fft.14.0", + "ms": 1.7616402000000002, + "opcode": "fft", + "shape": "f64[1500,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:303 (AbstractInversion.operated_mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:68 (InversionImagingMapping.data_vector)" + ] + }, + { + "instruction": "fft.10.0", + "ms": 1.3667979000000001, + "opcode": "fft", + "shape": "c128[1500,180,91]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:303 (AbstractInversion.operated_mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:68 (InversionImagingMapping.data_vector)" + ] + }, + { + "instruction": "fft.12.0", + "ms": 0.9807644999999998, + "opcode": "fft", + "shape": "c128[1500,91,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:303 (AbstractInversion.operated_mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:68 (InversionImagingMapping.data_vector)" + ] + }, + { + "instruction": "input_transpose_fusion.5", + "ms": 0.5136603, + "opcode": "fusion", + "shape": "c128[1500,91,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:303 (AbstractInversion.operated_mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:68 (InversionImagingMapping.data_vector)" + ] + }, + { + "instruction": "wrapped_transpose", + "ms": 0.5003963, + "opcode": "fusion", + "shape": "c128[1500,180,91]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:303 (AbstractInversion.operated_mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:68 (InversionImagingMapping.data_vector)" + ] + } + ], + "curvature_matrix_F": [ + { + "instruction": "custom-call.4", + "ms": 4.207507799999999, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "inversion_other": [ + { + "instruction": "cholesky.80", + "ms": 7.097033899999952, + "opcode": "custom-call", + "shape": "(f64[20,1500,1500]{1,2,0}, s32[20]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1078 (AbstractInversion.log_det_curvature_reg_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:347 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "cholesky.90", + "ms": 7.071148899999997, + "opcode": "custom-call", + "shape": "(f64[20,1500,1500]{1,2,0}, s32[20]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1157 (AbstractInversion.log_det_regularization_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:348 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "loop_reduce_window_fusion", + "ms": 0.0027808, + "opcode": "fusion", + "shape": "s64[6,16]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "loop_reduce_window_fusion.1", + "ms": 0.0025856000000000004, + "opcode": "fusion", + "shape": "s64[94,16]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "loop_broadcast_convert_fusion", + "ms": 0.0023424, + "opcode": "fusion", + "shape": "(s32[1500]{0}, s64[1500]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527 (AbstractInversion.zeroed_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:567 (AbstractInversion.solve_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:684 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_scatter_fusion.9", + "ms": 0.0019456, + "opcode": "fusion", + "shape": "s64[1500]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527 (AbstractInversion.zeroed_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:567 (AbstractInversion.solve_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:684 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "fit_imaging_other": [ + { + "instruction": "custom-call.5", + "ms": 0.1991013, + "opcode": "custom-call", + "shape": "(f64[20,15361]{1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:305", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:305 (AbstractNDArray.__add__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:57 (unwrap_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:35 (to_new_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:58 (AbstractFit.residual_map)" + ] + } + ], + "chi_squared_evidence": [ + { + "instruction": "loop_divide_fusion", + "ms": 0.0100926, + "opcode": "fusion", + "shape": "f64[20,15361]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:352", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:352 (AbstractNDArray.__truediv__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:57 (unwrap_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:35 (to_new_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:78 (chi_squared_map_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:78 (AbstractFit.chi_squared_map)" + ] + } + ] + }, + "stage_audit_note": "The HLO instructions that contributed most of each stage's milliseconds, with their full source stack. A stage row is only as good as the rules that built it; this is how a reader checks a row against the HLO instead of trusting it.", + "untraced_wall_ms": 264.49379679979756, + "reconciliation_vs_untraced_pct": 1.9923600341322207, + "wall_basis": "wall_ms is the TRACED run's wall, the run these kernel durations came from. untraced_wall_ms is the same executable without the profiler; the difference is the profiler's overhead and belongs in neither the stages nor the idle row.", + "calls": 10, + "call_split": "per-call (first-instruction recurrence)", + "call_blocks": 10, + "events": 96180, + "streams": [ + "Stream #14(MemcpyH2D,MemcpyD2D,Compute,MemcpyD2H)" + ], + "per_stage_ms": { + "border_relocator": { + "median_ms": 0.08878250000000003, + "min_ms": 0.08854300000000002, + "max_ms": 0.08934100000000002 + }, + "chi_squared_evidence": { + "median_ms": 0.01008, + "min_ms": 0.00992, + "max_ms": 0.010272 + }, + "curvature_matrix_F": { + "median_ms": 4.198583, + "min_ms": 4.189575, + "max_ms": 4.248743 + }, + "fit_imaging_other": { + "median_ms": 0.198845, + "min_ms": 0.198429, + "max_ms": 0.200573 + }, + "grids_and_structures": { + "median_ms": 0.001312, + "min_ms": 0.00128, + "max_ms": 0.001408 + }, + "inversion_other": { + "median_ms": 14.1783035, + "min_ms": 14.163237999999998, + "max_ms": 14.192514000000015 + }, + "mapping_matrix": { + "median_ms": 0.002848, + "min_ms": 0.002816, + "max_ms": 0.002848 + }, + "mesh_construction": { + "median_ms": 0.002048, + "min_ms": 0.002048, + "max_ms": 0.00208 + }, + "mesh_locate_walk": { + "median_ms": 0.1333415, + "min_ms": 0.13305399999999998, + "max_ms": 0.133664 + }, + "mesh_qhull_callback": { + "median_ms": 0.0106875, + "min_ms": 0.01056, + "max_ms": 0.011392000000000001 + }, + "mesh_seed_argmin": { + "median_ms": 0.21802700000000014, + "min_ms": 0.21769200000000008, + "max_ms": 0.2182390000000001 + }, + "mixed_fusion": { + "median_ms": 4.54693, + "min_ms": 4.539423999999999, + "max_ms": 4.556482999999999 + }, + "other": { + "median_ms": 0.16678300000000001, + "min_ms": 0.1654670000000001, + "max_ms": 0.16780700000000004 + }, + "pdip_solve": { + "median_ms": 221.19712649999565, + "min_ms": 221.12503399999545, + "max_ms": 221.30660799999552 + }, + "psf_convolution_mapping_matrix": { + "median_ms": 7.106288, + "min_ms": 7.100065, + "max_ms": 7.124704000000001 + }, + "regularization_H": { + "median_ms": 0.013984, + "min_ms": 0.013887000000000002, + "max_ms": 0.01456 + } + }, + "stage_order": [ + "border_relocator", + "mesh_qhull_callback", + "mesh_seed_argmin", + "mesh_locate_walk", + "mesh_construction", + "mapping_matrix", + "psf_convolution_mapping_matrix", + "curvature_matrix_F", + "regularization_H", + "pdip_solve", + "chi_squared_evidence", + "grids_and_structures", + "inversion_other", + "fit_imaging_other", + "mixed_fusion", + "other" + ], + "mixed_fusion": { + "ms": 4.54693, + "constituent_stage_sets": { + "curvature_reg_reduce_gather + inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter + regularization_H": 1.6239525, + "curvature_matrix_F + psf_convolution_mapping_matrix": 1.0188186000000001, + "pdip_solve + regularization_H": 0.9344771000000001, + "pdip_solve + psf_convolution_mapping_matrix": 0.2298658, + "inversion_other + pdip_solve": 0.22410910000000003, + "data_vector_D + pdip_solve + psf_convolution_mapping_matrix": 0.12079529999999998, + "mapping_matrix + pdip_solve": 0.110974, + "inversion_other + mesh_construction + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin + regularization_H": 0.07265830000000001, + "inversion_other + mapping_matrix + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin + pdip_solve": 0.0218494, + "inversion_other + regularization_H": 0.0188511, + "inversion_other + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin + pdip_solve + regularization_H": 0.017344000000000002, + "pdip_solve + ray_trace_data_grid": 0.013110299999999995, + "border_relocator + ray_trace_data_grid": 0.012505399999999998, + "inversion_other + mapping_matrix + mesh_construction + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin": 0.010847299999999999, + "grids_and_structures + mass_profile_deflections + pdip_solve + ray_trace_data_grid": 0.0092126, + "border_relocator + pdip_solve + ray_trace_data_grid": 0.0085501, + "chi_squared_evidence + pdip_solve": 0.008371100000000001, + "inversion_other + mesh_construction + pdip_solve + regularization_H": 0.0082495, + "inversion_other + pdip_solve + regularization_H": 0.0081534, + "inversion_other + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + pdip_solve + regularization_H": 0.007001499999999999, + "inversion_other + mesh_dual_areas + mesh_locate_walk": 0.006790400000000003, + "border_relocator + pdip_solve": 0.006691100000000001, + "inversion_other + mesh_construction + mesh_seed_argmin + pdip_solve + regularization_H": 0.005433500000000001, + "curvature_reg_reduce_gather + inversion_other + mapped_reconstruction + reconstruction_scatter + regularization_H": 0.005427199999999999, + "inversion_other + mapped_reconstruction": 0.0049440000000000005, + "inversion_other + pdip_solve + ray_trace_data_grid": 0.004905399999999999, + "inversion_other + mapped_reconstruction + reconstruction_scatter": 0.0039807, + "mapping_matrix + pdip_solve + regularization_H": 0.00376, + "data_vector_D + pdip_solve": 0.0037277999999999994, + "inversion_other + mesh_construction + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin + pdip_solve + regularization_H": 0.0030173, + "inversion_other + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin": 0.0028928000000000005, + "inversion_other + mesh_construction + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin": 0.0026367999999999995, + "inversion_other + mesh_dual_areas + mesh_locate_walk + pdip_solve": 0.0025984000000000007, + "inversion_other + mesh_locate_walk + mesh_seed_argmin": 0.0024895, + "inversion_other + mesh_construction + mesh_locate_walk + mesh_seed_argmin": 0.0024384000000000003, + "chi_squared_evidence + inversion_other": 0.0024159999999999997, + "inversion_other + mesh_interpolation_weights": 0.0021632, + "grids_and_structures + mass_profile_deflections + pdip_solve": 0.001328 + }, + "example_kernels": { + "curvature_reg_reduce_gather + inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter + regularization_H": [ + "input_multiply_transpose_fusion" + ], + "curvature_matrix_F + psf_convolution_mapping_matrix": [ + "loop_divide_gather_fusion" + ], + "pdip_solve + regularization_H": [ + "loop_broadcast_fusion", + "input_transpose_fusion.4" + ], + "pdip_solve + psf_convolution_mapping_matrix": [ + "loop_broadcast_fusion.4" + ], + "inversion_other + pdip_solve": [ + "input_reduce_fusion.6", + "input_reduce_fusion.7", + "input_transpose_fusion.2", + "input_reduce_fusion.10" + ], + "data_vector_D + pdip_solve + psf_convolution_mapping_matrix": [ + "input_reduce_fusion.4" + ], + "mapping_matrix + pdip_solve": [ + "loop_divide_fusion.2", + "loop_divide_fusion.1", + "loop_broadcast_fusion.3" + ], + "inversion_other + mesh_construction + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin + regularization_H": [ + "input_scatter_fusion.3" + ], + "inversion_other + mapping_matrix + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin + pdip_solve": [ + "input_scatter_fusion.1", + "input_scatter_fusion.4" + ], + "inversion_other + regularization_H": [ + "loop_reduce_slice_fusion.2", + "loop_reduce_slice_fusion.1", + "loop_reduce_slice_fusion", + "loop_reduce_fusion.3" + ] + }, + "prorated_estimate_ms": { + "pdip_solve": 1.0980849261904762, + "regularization_H": 0.7714041745238095, + "psf_convolution_mapping_matrix": 0.6646073, + "curvature_matrix_F": 0.5094093000000001, + "inversion_other": 0.4325915261904762, + "mapped_reconstruction": 0.27554309, + "reconstruction_scatter": 0.27307109, + "curvature_reg_reduce_gather": 0.27174419, + "mapping_matrix": 0.06127939166666667, + "data_vector_D": 0.04212899999999999, + "mesh_construction": 0.025182902857142857, + "mesh_locate_walk": 0.024609811190476193, + "mesh_seed_argmin": 0.022783444523809527, + "mesh_interpolation_weights": 0.022505827857142856, + "ray_trace_data_grid": 0.019596166666666665, + "border_relocator": 0.012448283333333332, + "mesh_dual_areas": 0.009461291666666668, + "chi_squared_evidence": 0.00539355, + "grids_and_structures": 0.0027458166666666666, + "mass_profile_deflections": 0.0027458166666666666 + }, + "prorated_note": "ESTIMATE ONLY \u2014 a mixed fusion's time split equally across the stages its constituents span. Never summed into the measured table, never reconciled." + }, + "other_sources_ms": { + "copy.82": 0.04195490000000013, + "copy.68": 0.035717900000000025, + "copy.69": 0.034546699999999986, + "copy.67": 0.0323582, + "copy.50": 0.014662099999999994, + "copy.80": 0.0021151, + "copy.59": 0.0020223999999999997, + "copy.65": 0.0016736, + "copy.81": 0.0016511000000000002 + }, + "device_span_ms": 269.7817207, + "device_busy_ms": 252.0922247, + "device_idle_ms": 17.68949599999999, + "largest_idle_gaps": [ + { + "gap_ms": 5.473302, + "after": "pure_callback.4", + "before": "pure_callback.4" + }, + { + "gap_ms": 0.052895, + "after": "input_reduce_fusion.19", + "before": "loop_broadcast_fusion" + }, + { + "gap_ms": 0.037088, + "after": "while.42", + "before": "loop_not_select_fusion.1" + }, + { + "gap_ms": 0.032895, + "after": "loop_reduce_fusion", + "before": "loop_or_select_fusion" + }, + { + "gap_ms": 0.028736, + "after": "input_concatenate_fusion.6", + "before": "pure_callback.4" + }, + { + "gap_ms": 0.028512, + "after": "while.42", + "before": "loop_not_select_fusion" + }, + { + "gap_ms": 0.026208, + "after": "pure_callback.4", + "before": "loop_select_fusion.4" + }, + { + "gap_ms": 0.02496, + "after": "while.36", + "before": "loop_add_fusion.1" + } + ], + "kernel_ms": 252.07396949999566, + "sum_ms": 269.7634654999956, + "wall_ms": 269.8956337997515, + "host_outside_span_ms": 0.11391309975152808, + "reconciliation_pct": -0.048970151126626116, + "unjoined_ms": 0.0, + "unjoined_pct": 0.0, + "other_ms": 0.16678300000000001, + "other_pct": 0.06179536795461622, + "note": "Stage rows attribute the command-buffers-OFF program (see the module docstring): kernel times are the same, the launch overhead the CUDA graphs remove is not. sum_ms = kernel rows + device_idle_ms; the residual against wall_ms is host_outside_span_ms (dispatch before the first kernel, teardown after the last).", + "per_stage_ms_per_lane": { + "border_relocator": 0.004439125000000001, + "chi_squared_evidence": 0.000504, + "curvature_matrix_F": 0.20992915, + "fit_imaging_other": 0.00994225, + "grids_and_structures": 6.56e-05, + "inversion_other": 0.708915175, + "mapping_matrix": 0.0001424, + "mesh_construction": 0.0001024, + "mesh_locate_walk": 0.006667075, + "mesh_qhull_callback": 0.000534375, + "mesh_seed_argmin": 0.010901350000000008, + "mixed_fusion": 0.22734649999999998, + "other": 0.00833915, + "pdip_solve": 11.059856324999782, + "psf_convolution_mapping_matrix": 0.35531440000000003, + "regularization_H": 0.0006992 + }, + "per_lane_divisor": 20, + "host_callback": { + "pure_callback_span_ms": 5.4927965, + "qhull_ms": 5.050177700000001, + "callback_body_ms_note": "the OUTERMOST matching body event, not a sum: under the probe the body appears twice (the wrapper and the timed re-implementation it calls) and summing them would count the same work twice", + "events_by_name": { + "pure_callback.4": { + "count": 10, + "ms": 5.4927965 + }, + "$callback.py:815 _wrapped_callback": { + "count": 10, + "ms": 5.3925152 + }, + "$callback.py:224 _callback": { + "count": 10, + "ms": 5.3665582999999994 + }, + "$callback.py:74 pure_callback_impl": { + "count": 10, + "ms": 5.355929300000001 + }, + "$callback.py:69 __call__": { + "count": 10, + "ms": 5.070614700000001 + }, + "$delaunay.py:162 ": { + "count": 10, + "ms": 5.0631347 + }, + "$host_callback_probe.py:225 wrapped": { + "count": 10, + "ms": 5.050177700000001 + }, + "$host_callback_probe.py:160 _timed_tri_only": { + "count": 10, + "ms": 5.0397848 + }, + "ThenExecuteCallback:GetEventForComputeStreamSyncPoint": { + "count": 10, + "ms": 0.025372 + }, + "$callback.py:822 ": { + "count": 40, + "ms": 0.015303 + } + }, + "note": "HOST milliseconds per traced BATCH (the whole invocation), aggregated by name because the events nest. Not a row of the device table: the device pays for them as the idle gaps largest_idle_gaps names." + }, + "host_callback_ms": 5.4927965 + }, + "hlo_census": { + "status": "excluded", + "reason": "The legacy census anchors PyAutoArray source line numbers that moved after the phase-1 run. No batched attribution is published from unsupported anchors; the device-event table and wall reconciliation remain valid." + }, + "trace_split": { + "expected_calls": 10, + "executions_per_invocation": 1, + "method": "per-call (first-instruction recurrence)", + "note": "DECIDED IN CODE: the scalar arm's trace is split by trace_calls * B, so every lane's execution is its own block and the per-stage median is taken over all of them. The vmap arm's is split by trace_calls, one block per batched execution, and per_stage_ms_per_lane divides those rows by B." + } + }, + "scalar": { + "arm": "scalar", + "program": "jax.jit(fn), called B times", + "stands_for": "Nautilus(use_jax_vmap=False, use_jax_jit=True). Plain use_jax_vmap=False is UNJITTED and is NOT this arm", + "hlo_source": "jax.jit(fn).lower(lane_trees[0]) \u2014 the same program phase 1 traced", + "batch_wall_ms": 662.8212979998352, + "wall_production_nesting_ms": 662.8212979998352, + "wall_aot_command_buffers_on_ms": 663.5241425999993, + "wall_aot_command_buffers_off_ms": 668.1186625999544, + "command_buffer_delta_ms": 4.594519999955082, + "production_nesting_vs_aot_on_delta_ms": -0.7028446001640987, + "production_nesting_vs_aot_on_delta_pct": -0.1059260025430308, + "wall_per_lane_ms": 33.14106489999176, + "wall_per_lane_command_buffers_off_ms": 33.40593312999772, + "traced_batch_wall_ms": 686.859899099727, + "untraced_batch_wall_ms": 668.2504897002218, + "traced_wall_per_lane_ms": 34.34299495498635, + "callback_count_per_call": 20.0, + "callback_count_per_lane": 1.0, + "callback_expectation": "1 per likelihood evaluation, B per batch", + "host_qhull_ms": 89.79388419938914, + "host_tables_ms": 2.300742802253808, + "host_qhull_ms_per_lane": 4.489694209969457, + "host_tables_ms_per_lane": 0.1150371401126904, + "host_callback_probe": { + "calls": 200, + "qhull_ms_total": 897.9388419938914, + "tables_ms_total": 23.00742802253808, + "total_ms_total": 920.9462700164295, + "qhull_ms_mean": 4.489694209969457, + "tables_ms_mean": 0.1150371401126904, + "total_ms_mean": 4.604731350082147, + "non_finite_calls": 0, + "n_points": [ + 1500 + ] + }, + "host_callback_records_first": [ + { + "n_points": 1500, + "qhull_ms": 4.679141002270626, + "tables_ms": 0.17886899877339602, + "total_ms": 4.858010001044022, + "finite": true + }, + { + "n_points": 1500, + "qhull_ms": 4.487923000851879, + "tables_ms": 0.11339800039422698, + "total_ms": 4.601321001246106, + "finite": true + }, + { + "n_points": 1500, + "qhull_ms": 4.545391999272397, + "tables_ms": 0.12810900079784915, + "total_ms": 4.673501000070246, + "finite": true + }, + { + "n_points": 1500, + "qhull_ms": 4.477353002585005, + "tables_ms": 0.12131999756093137, + "total_ms": 4.598673000145936, + "finite": true + } + ], + "device_idle_ms": 6.460757590000007, + "device_idle_ms_per_lane": 6.460757590000007, + "trace": { + "parser": "ProfileData.from_file(xplane) + as_text() + stack_frame_index(proto field 17)", + "stage_audit": { + "mixed_fusion": [ + { + "instruction": "loop_divide_gather_fusion", + "ms": 1.0171146450000002, + "opcode": "fusion", + "shape": "(f64[15361,1,1,1500]{3,2,1,0}, f64[15361,1,1,1500]{3,2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_broadcast_fusion.2", + "ms": 0.22679108500000003, + "opcode": "fusion", + "shape": "f64[1500,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_reduce_fusion.5", + "ms": 0.12210502000000002, + "opcode": "fusion", + "shape": "f64[92,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123 (data_vector_via_blurred_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:67 (InversionImagingMapping.data_vector)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:699 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_reduce_fusion.9", + "ms": 0.11475695499999994, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163 (mapped_reconstructed_data_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:120 (InversionImagingMapping._mapped_reconstructed_data_dict_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:196 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "loop_broadcast_fusion.3", + "ms": 0.110802515, + "opcode": "fusion", + "shape": "f64[15361,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:342", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:342 (mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:283 (Mapper.mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:91 (AbstractInversionImaging._mapping_matrix_for_convolution_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:137 (AbstractInversionImaging.operated_mapping_matrix_list)" + ] + }, + { + "instruction": "input_multiply_transpose_fusion", + "ms": 0.10967575499999999, + "opcode": "fusion", + "shape": "(f64[1500,1500]{1,0}, f64[1500,1500]{1,0}, f64[1500,1500]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:237 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:274 (_certified_positive_only_from)" + ] + } + ], + "grids_and_structures": [ + { + "instruction": "loop_multiply_sine_fusion", + "ms": 0.0013459050000000012, + "opcode": "fusion", + "shape": "(f64[], f64[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/geometry/geometry_util.py:527", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/geometry/geometry_util.py:527 (transform_grid_2d_to_reference_frame)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/profiles/geometry_profiles.py:418 (EllProfile.transformed_to_reference_frame_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/structures/decorators/abstract.py:93 (AbstractMaker.evaluate_func)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/structures/decorators/abstract.py:112 (AbstractMaker.result)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/structures/decorators/to_grid.py:70 (to_grid..wrapper)" + ] + } + ], + "border_relocator": [ + { + "instruction": "eigh.45", + "ms": 0.07452502000000018, + "opcode": "custom-call", + "shape": "(f64[2,2]{0,1}, f64[2]{0}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "custom-call.2", + "ms": 0.007958630000000019, + "opcode": "custom-call", + "shape": "(f64[2,2]{1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_add_fusion.5", + "ms": 0.0033700850000000027, + "opcode": "fusion", + "shape": "f64[1500]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:458 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_reduce_fusion.17", + "ms": 0.0019246300000000038, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:256", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:256 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_multiply_fusion.2", + "ms": 0.001547344999999998, + "opcode": "fusion", + "shape": "f64[2,2]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + } + ], + "mesh_construction": [ + { + "instruction": "input_concatenate_fusion.7", + "ms": 0.0020690949999999982, + "opcode": "fusion", + "shape": "f64[1500,2]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:820", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:820 (InterpolatorDelaunay.mesh_grid_xy)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:847 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + } + ], + "mesh_qhull_callback": [ + { + "instruction": "pure_callback.4", + "ms": 0.01063330499999998, + "opcode": "custom-call", + "shape": "(s32[3000,3]{1,0}, s32[3000,3]{1,0}, s32[1500]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:161", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:161 (_jax_delaunay_tables)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:405 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + } + ], + "other": [ + { + "instruction": "copy.80", + "ms": 0.04202898499999959, + "opcode": "copy", + "shape": "f64[1,1024,2]{2,1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.48", + "ms": 0.014758169999999984, + "opcode": "copy", + "shape": "s32[21361]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.53", + "ms": 0.001986385000000001, + "opcode": "copy", + "shape": "s64[1500]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.78", + "ms": 0.0016490849999999948, + "opcode": "copy", + "shape": "s64[]", + "source": "", + "stack": [] + }, + { + "instruction": "copy.79", + "ms": 0.001626270000000001, + "opcode": "copy", + "shape": "s32[]", + "source": "", + "stack": [] + }, + { + "instruction": "copy.39", + "ms": 0.0016023799999999964, + "opcode": "copy", + "shape": "s32[]", + "source": "", + "stack": [] + } + ], + "mesh_seed_argmin": [ + { + "instruction": "input_reduce_fusion", + "ms": 0.1460623799999981, + "opcode": "fusion", + "shape": "(f64[1024]{0}, s64[1024]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:191", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:191 (_nearest_vertex_seed_from..argmin_chunk)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)" + ] + }, + { + "instruction": "loop_dynamic_update_slice_fusion", + "ms": 0.04125969999999815, + "opcode": "fusion", + "shape": "s32[21,1024]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_add_fusion", + "ms": 0.03194319999999978, + "opcode": "fusion", + "shape": "s64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_broadcast_fusion", + "ms": 0.0019674850000000006, + "opcode": "fusion", + "shape": "s32[21,1024]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "pdip_solve": [ + { + "instruction": "cholesky.50", + "ms": 6.764367869999967, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "triangular-solve.1", + "ms": 1.2165340000000164, + "opcode": "custom-call", + "shape": "(f64[1500,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "triangular-solve", + "ms": 1.0496069599999889, + "opcode": "custom-call", + "shape": "(f64[1500,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "cholesky.70", + "ms": 0.890877969999999, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:297 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:274 (_certified_positive_only_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:496 (reconstruction_positive_only_from)" + ] + }, + { + "instruction": "cholesky.60", + "ms": 0.8628572700000018, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:237 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:274 (_certified_positive_only_from)" + ] + }, + { + "instruction": "input_transpose_fusion", + "ms": 0.2675752200000003, + "opcode": "fusion", + "shape": "f64[1500,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + } + ], + "regularization_H": [ + { + "instruction": "input_scatter_fusion.10", + "ms": 0.0020737399999999997, + "opcode": "fusion", + "shape": "f64[1500,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:615", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:615 (pixel_splitted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:137 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_concatenate_fusion.9", + "ms": 0.0018556500000000014, + "opcode": "fusion", + "shape": "pred[3]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:91", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:91 (split_points_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:410 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + }, + { + "instruction": "input_concatenate_fusion.8", + "ms": 0.001854400000000002, + "opcode": "fusion", + "shape": "pred[3]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:93", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:93 (split_points_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:410 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + }, + { + "instruction": "input_concatenate_fusion.10", + "ms": 0.0018524550000000024, + "opcode": "fusion", + "shape": "pred[3]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:90", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:90 (split_points_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:410 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + }, + { + "instruction": "input_concatenate_fusion", + "ms": 0.0017614349999999991, + "opcode": "fusion", + "shape": "s32[1500,2]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:615", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:615 (pixel_splitted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:137 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_concatenate_fusion.11", + "ms": 0.0014899199999999974, + "opcode": "fusion", + "shape": "pred[3]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:88", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:88 (split_points_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:410 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + } + ], + "mesh_locate_walk": [ + { + "instruction": "loop_reduce_fusion", + "ms": 0.02256263499999989, + "opcode": "fusion", + "shape": "(f64[21361]{0}, s64[21361]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:264", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:264 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:264 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)" + ] + }, + { + "instruction": "input_reduce_fusion.1", + "ms": 0.020915064999999518, + "opcode": "fusion", + "shape": "pred[196]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:288", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:288 (_walk_from_seed..cond)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)" + ] + }, + { + "instruction": "loop_or_select_fusion", + "ms": 0.019592430000000067, + "opcode": "fusion", + "shape": "(s32[21361]{0}, pred[21361]{0}, pred[21361]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:270", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:270 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)" + ] + }, + { + "instruction": "loop_select_fusion", + "ms": 0.017461094999999923, + "opcode": "fusion", + "shape": "s32[21361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:242", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:242 (_walk_from_seed..weights_of)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:262 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)" + ] + }, + { + "instruction": "input_reduce_fusion.2", + "ms": 0.014385254999999984, + "opcode": "fusion", + "shape": "pred[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:288", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:288 (_walk_from_seed..cond)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)" + ] + }, + { + "instruction": "while.20", + "ms": 0.012820884999999917, + "opcode": "while", + "shape": "(s32[], s32[21361]{0}, pred[21361]{0}, pred[21361]{0}, s32[3000,3]{1,0}, /*index=5*/f64[1500,2]{1,0}, f64[21361,2]{1,0}, s32[3000,3]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "psf_convolution_mapping_matrix": [ + { + "instruction": "input_scatter_fusion", + "ms": 1.9828163449999996, + "opcode": "fusion", + "shape": "f64[1500,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.19.0", + "ms": 1.7580253299999993, + "opcode": "fft", + "shape": "f64[1500,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.15.0", + "ms": 1.3677472200000003, + "opcode": "fft", + "shape": "c128[1500,180,91]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.17.0", + "ms": 0.979285875, + "opcode": "fft", + "shape": "c128[1500,91,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_transpose_fusion.2", + "ms": 0.5135930400000001, + "opcode": "fusion", + "shape": "c128[1500,91,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "wrapped_transpose", + "ms": 0.49977109499999994, + "opcode": "fusion", + "shape": "c128[1500,180,91]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + } + ], + "inversion_other": [ + { + "instruction": "cholesky.80", + "ms": 0.8955378100000003, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1078 (AbstractInversion.log_det_curvature_reg_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:347 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "cholesky.90", + "ms": 0.8903301400000003, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1157 (AbstractInversion.log_det_regularization_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:348 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "loop_reduce_window_fusion", + "ms": 0.0028718299999999967, + "opcode": "fusion", + "shape": "s64[6,16]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "loop_reduce_window_fusion.1", + "ms": 0.0027892500000000053, + "opcode": "fusion", + "shape": "s64[94,16]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "loop_broadcast_convert_fusion", + "ms": 0.0021918099999999967, + "opcode": "fusion", + "shape": "(s32[1500]{0}, s64[1500]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527 (AbstractInversion.zeroed_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:567 (AbstractInversion.solve_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:684 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_scatter_fusion.5", + "ms": 0.001951324999999996, + "opcode": "fusion", + "shape": "s64[1500]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527 (AbstractInversion.zeroed_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:567 (AbstractInversion.solve_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:684 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "mapping_matrix": [ + { + "instruction": "input_reduce_fusion.23", + "ms": 0.0028889349999999922, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:120 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + } + ], + "curvature_matrix_F": [ + { + "instruction": "cublas-lt-matmul.2", + "ms": 4.20931259, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "chi_squared_evidence": [ + { + "instruction": "loop_multiply_fusion", + "ms": 0.0029892350000000007, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:300", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:300 (AbstractNDArray.__pow__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:60 (unwrap_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:35 (to_new_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:78 (chi_squared_map_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:78 (AbstractFit.chi_squared_map)" + ] + } + ] + }, + "stage_audit_note": "The HLO instructions that contributed most of each stage's milliseconds, with their full source stack. A stage row is only as good as the rules that built it; this is how a reader checks a row against the HLO instead of trusting it.", + "untraced_wall_ms": 33.41252448501109, + "reconciliation_vs_untraced_pct": -11.077245589962654, + "wall_basis": "wall_ms is the TRACED run's wall, the run these kernel durations came from. untraced_wall_ms is the same executable without the profiler; the difference is the profiler's overhead and belongs in neither the stages nor the idle row.", + "calls": 200, + "call_split": "per-call (first-instruction recurrence)", + "call_blocks": 200, + "events": 93720, + "streams": [ + "Stream #14(MemcpyD2D,MemcpyD2H,Compute,MemcpyH2D,Memset)" + ], + "per_stage_ms": { + "border_relocator": { + "median_ms": 0.089342, + "min_ms": 0.08876700000000001, + "max_ms": 0.090048 + }, + "chi_squared_evidence": { + "median_ms": 0.002976, + "min_ms": 0.002848, + "max_ms": 0.003424 + }, + "curvature_matrix_F": { + "median_ms": 4.2077935, + "min_ms": 4.197525, + "max_ms": 4.283758 + }, + "grids_and_structures": { + "median_ms": 0.001312, + "min_ms": 0.001279, + "max_ms": 0.001408 + }, + "inversion_other": { + "median_ms": 1.7971385, + "min_ms": 1.783251, + "max_ms": 1.8153160000000002 + }, + "mapping_matrix": { + "median_ms": 0.00288, + "min_ms": 0.002879, + "max_ms": 0.002912 + }, + "memset": { + "median_ms": 0.021167999999999996, + "min_ms": 0.010048000000000001, + "max_ms": 0.05571100000000001 + }, + "mesh_construction": { + "median_ms": 0.00208, + "min_ms": 0.002047, + "max_ms": 0.002112 + }, + "mesh_locate_walk": { + "median_ms": 0.13025399999999995, + "min_ms": 0.12953799999999996, + "max_ms": 0.131037 + }, + "mesh_qhull_callback": { + "median_ms": 0.010591999999999999, + "min_ms": 0.010432, + "max_ms": 0.0112 + }, + "mesh_seed_argmin": { + "median_ms": 0.22123950000000026, + "min_ms": 0.2209210000000002, + "max_ms": 0.22160300000000024 + }, + "mixed_fusion": { + "median_ms": 1.9846054999999998, + "min_ms": 1.9805250000000005, + "max_ms": 1.9978459999999993 + }, + "other": { + "median_ms": 0.063648, + "min_ms": 0.0632, + "max_ms": 0.06412899999999998 + }, + "pdip_solve": { + "median_ms": 7.6036825000000015, + "min_ms": 2.432922, + "max_ms": 23.139356999999997 + }, + "psf_convolution_mapping_matrix": { + "median_ms": 7.100987999999999, + "min_ms": 7.088909, + "max_ms": 7.1149580000000014 + }, + "regularization_H": { + "median_ms": 0.01088, + "min_ms": 0.010719, + "max_ms": 0.011231000000000001 + } + }, + "stage_order": [ + "border_relocator", + "mesh_qhull_callback", + "mesh_seed_argmin", + "mesh_locate_walk", + "mesh_construction", + "mapping_matrix", + "psf_convolution_mapping_matrix", + "curvature_matrix_F", + "regularization_H", + "pdip_solve", + "chi_squared_evidence", + "grids_and_structures", + "inversion_other", + "mixed_fusion", + "other", + "memset" + ], + "mixed_fusion": { + "ms": 1.9846054999999998, + "constituent_stage_sets": { + "curvature_matrix_F + psf_convolution_mapping_matrix": 1.0171146450000002, + "pdip_solve + psf_convolution_mapping_matrix": 0.22679108500000003, + "data_vector_D + pdip_solve": 0.12580931000000017, + "mapped_reconstruction + pdip_solve": 0.11475695499999994, + "mapping_matrix + pdip_solve": 0.11315047499999997, + "curvature_reg_reduce_gather + inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": 0.10967575499999999, + "pdip_solve + regularization_H": 0.04405461000000002, + "inversion_other + pdip_solve + regularization_H": 0.024096890000000003, + "inversion_other + pdip_solve": 0.022986635000000033, + "inversion_other + mapping_matrix + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin + pdip_solve": 0.021017250000000015, + "inversion_other + mesh_construction + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin + pdip_solve + regularization_H": 0.01916010500000003, + "inversion_other + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + pdip_solve + regularization_H": 0.014659999999999998, + "pdip_solve + ray_trace_data_grid": 0.013721134999999936, + "border_relocator + ray_trace_data_grid": 0.012399254999999996, + "inversion_other + mapping_matrix + mesh_construction + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin": 0.011660539999999997, + "grids_and_structures + mass_profile_deflections + pdip_solve + ray_trace_data_grid": 0.009410924999999997, + "border_relocator + pdip_solve + ray_trace_data_grid": 0.00867048499999998, + "chi_squared_evidence + pdip_solve": 0.007627724999999989, + "inversion_other + mesh_construction + mesh_seed_argmin + pdip_solve + regularization_H": 0.007248719999999993, + "border_relocator + pdip_solve": 0.006865055000000029, + "inversion_other + mesh_dual_areas + mesh_locate_walk": 0.0067850600000000615, + "inversion_other + mesh_construction + pdip_solve + regularization_H": 0.006344695000000006, + "inversion_other + pdip_solve + ray_trace_data_grid": 0.005274520000000025, + "inversion_other + regularization_H": 0.004843810000000002, + "inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": 0.004793240000000001, + "inversion_other + mapped_reconstruction + pdip_solve": 0.003802355000000001, + "mapping_matrix + pdip_solve + regularization_H": 0.003430859999999997, + "inversion_other + mesh_construction + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin": 0.0031577149999999993, + "inversion_other + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin": 0.0029710200000000004, + "inversion_other + mesh_construction + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin + regularization_H": 0.002703179999999992, + "inversion_other + mesh_dual_areas + mesh_locate_walk + pdip_solve": 0.0026049199999999954, + "inversion_other + mesh_locate_walk + mesh_seed_argmin": 0.002504130000000003, + "inversion_other + mesh_interpolation_weights": 0.0021409050000000054, + "chi_squared_evidence + inversion_other": 0.0019523150000000026, + "grids_and_structures + mass_profile_deflections + pdip_solve": 0.0013377399999999987 + }, + "example_kernels": { + "curvature_matrix_F + psf_convolution_mapping_matrix": [ + "loop_divide_gather_fusion" + ], + "pdip_solve + psf_convolution_mapping_matrix": [ + "loop_broadcast_fusion.2" + ], + "data_vector_D + pdip_solve": [ + "input_reduce_fusion.5", + "input_reduce_fusion.21" + ], + "mapped_reconstruction + pdip_solve": [ + "input_reduce_fusion.9" + ], + "mapping_matrix + pdip_solve": [ + "loop_broadcast_fusion.3", + "loop_divide_fusion" + ], + "curvature_reg_reduce_gather + inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": [ + "input_multiply_transpose_fusion" + ], + "pdip_solve + regularization_H": [ + "loop_select_fusion.2", + "input_transpose_fusion.3" + ], + "inversion_other + pdip_solve + regularization_H": [ + "input_transpose_fusion.4" + ], + "inversion_other + pdip_solve": [ + "input_reduce_fusion.7", + "loop_log_fusion", + "input_reduce_fusion.8", + "input_reduce_fusion.12" + ], + "inversion_other + mapping_matrix + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin + pdip_solve": [ + "input_scatter_fusion.6", + "input_scatter_fusion.3" + ] + }, + "prorated_estimate_ms": { + "psf_convolution_mapping_matrix": 0.6219528650000001, + "curvature_matrix_F": 0.5085573225000001, + "pdip_solve": 0.39040009660714287, + "mapped_reconstruction": 0.08177939016666663, + "inversion_other": 0.06826507335714291, + "data_vector_D": 0.06290465500000009, + "mapping_matrix": 0.062289437083333316, + "regularization_H": 0.04229206560714287, + "reconstruction_scatter": 0.023133460999999998, + "curvature_reg_reduce_gather": 0.021935150999999996, + "ray_trace_data_grid": 0.020061261249999966, + "mesh_construction": 0.014364231523809527, + "mesh_locate_walk": 0.012632607107142884, + "border_relocator": 0.012522316666666672, + "mesh_interpolation_weights": 0.012398766273809531, + "mesh_seed_argmin": 0.011169434440476194, + "mesh_dual_areas": 0.008478576250000022, + "chi_squared_evidence": 0.0047900199999999955, + "grids_and_structures": 0.002798644583333332, + "mass_profile_deflections": 0.002798644583333332 + }, + "prorated_note": "ESTIMATE ONLY \u2014 a mixed fusion's time split equally across the stages its constituents span. Never summed into the measured table, never reconciled." + }, + "other_sources_ms": { + "copy.80": 0.04202898499999959, + "copy.48": 0.014758169999999984, + "copy.53": 0.001986385000000001, + "copy.78": 0.0016490849999999948, + "copy.79": 0.001626270000000001, + "copy.39": 0.0016023799999999964 + }, + "device_span_ms": 34.338307730000004, + "device_busy_ms": 27.877550139999997, + "device_idle_ms": 6.460757590000007, + "largest_idle_gaps": [ + { + "gap_ms": 5.386263, + "after": "pure_callback.4", + "before": "pure_callback.4" + }, + { + "gap_ms": 0.054718, + "after": "input_concatenate_fusion.7", + "before": "pure_callback.4" + }, + { + "gap_ms": 0.034976, + "after": "input_reduce_fusion.1", + "before": "input_reduce_fusion.2" + }, + { + "gap_ms": 0.034687, + "after": "pure_callback.4", + "before": "copy.79" + }, + { + "gap_ms": 0.024704, + "after": "while.26", + "before": "input_reduce_select_fusion" + }, + { + "gap_ms": 0.0216, + "after": "while.26", + "before": "input_reduce_select_fusion" + }, + { + "gap_ms": 0.020735, + "after": "while.26", + "before": "input_reduce_select_fusion" + }, + { + "gap_ms": 0.020607, + "after": "loop_dynamic_update_slice_fusion", + "before": "loop_add_fusion" + } + ], + "kernel_ms": 23.2505795, + "sum_ms": 29.711337090000008, + "wall_ms": 34.34299495498635, + "host_outside_span_ms": 0.004687224986348326, + "reconciliation_pct": -13.486470446322743, + "unjoined_ms": 0.0, + "unjoined_pct": 0.0, + "other_ms": 0.063648, + "other_pct": 0.18533037110893782, + "note": "Stage rows attribute the command-buffers-OFF program (see the module docstring): kernel times are the same, the launch overhead the CUDA graphs remove is not. sum_ms = kernel rows + device_idle_ms; the residual against wall_ms is host_outside_span_ms (dispatch before the first kernel, teardown after the last).", + "per_stage_ms_per_lane": { + "border_relocator": 0.089342, + "chi_squared_evidence": 0.002976, + "curvature_matrix_F": 4.2077935, + "grids_and_structures": 0.001312, + "inversion_other": 1.7971385, + "mapping_matrix": 0.00288, + "memset": 0.021167999999999996, + "mesh_construction": 0.00208, + "mesh_locate_walk": 0.13025399999999995, + "mesh_qhull_callback": 0.010591999999999999, + "mesh_seed_argmin": 0.22123950000000026, + "mixed_fusion": 1.9846054999999998, + "other": 0.063648, + "pdip_solve": 7.6036825000000015, + "psf_convolution_mapping_matrix": 7.100987999999999, + "regularization_H": 0.01088 + }, + "per_lane_divisor": 1, + "host_callback": { + "pure_callback_span_ms": 99.06805499999997, + "qhull_ms": 92.29713190000005, + "callback_body_ms_note": "the OUTERMOST matching body event, not a sum: under the probe the body appears twice (the wrapper and the timed re-implementation it calls) and summing them would count the same work twice", + "events_by_name": { + "pure_callback.4": { + "count": 200, + "ms": 99.06805499999997 + }, + "$callback.py:815 _wrapped_callback": { + "count": 200, + "ms": 97.33393749999995 + }, + "$callback.py:224 _callback": { + "count": 200, + "ms": 96.86582529999997 + }, + "$callback.py:74 pure_callback_impl": { + "count": 200, + "ms": 96.69217809999999 + }, + "$callback.py:69 __call__": { + "count": 200, + "ms": 92.60040819999999 + }, + "$delaunay.py:162 ": { + "count": 200, + "ms": 92.47195890000008 + }, + "$host_callback_probe.py:225 wrapped": { + "count": 200, + "ms": 92.29713190000005 + }, + "$host_callback_probe.py:160 _timed_tri_only": { + "count": 200, + "ms": 92.14158769999999 + }, + "ThenExecuteCallback:GetEventForComputeStreamSyncPoint": { + "count": 200, + "ms": 0.3772671000000001 + }, + "$callback.py:822 ": { + "count": 800, + "ms": 0.28150809999999954 + }, + "$__init__.py:132 _xla_gc_callback": { + "count": 2, + "ms": 0.000368 + } + }, + "note": "HOST milliseconds per traced BATCH (the whole invocation), aggregated by name because the events nest. Not a row of the device table: the device pays for them as the idle gaps largest_idle_gaps names." + }, + "host_callback_ms": 99.06805499999997 + }, + "hlo_census": { + "status": "excluded", + "reason": "The legacy census anchors PyAutoArray source line numbers that moved after the phase-1 run. No batched attribution is published from unsupported anchors; the device-event table and wall reconciliation remain valid." + }, + "trace_split": { + "expected_calls": 200, + "executions_per_invocation": 20, + "method": "per-call (first-instruction recurrence)", + "note": "DECIDED IN CODE: the scalar arm's trace is split by trace_calls * B, so every lane's execution is its own block and the per-stage median is taken over all of them. The vmap arm's is split by trace_calls, one block per batched execution, and per_stage_ms_per_lane divides those rows by B." + } + } + }, + "certification_report": { + "source": "vmap arm, library solve observed through its stats= out-dict (PyAutoArray #566) and jax.debug.callback(..., ordered=True); ordered because the unordered batching rule returns the lanes permuted. Untimed, separately compiled; max rel diff of its log likelihoods vs the timed arm's: 1.924e-07", + "rows": 20, + "pdip_iter": "NOT AVAILABLE per lane without changing library numerics. The fallback branch calls the library's own reconstruction_positive_only_from, which returns the solution alone \u2014 jax_nnls.solve_nnls' iteration count is discarded inside the library's custom_vjp primal. The PDIP while_loop's cost is in the pdip_solve stage row of each arm's device table instead, which is a max-over-lanes quantity under vmap because every lane runs the same fixed kernel sequence.", + "passes_semantics": "library `passes`: restricted active-set passes run (jax_active_set.solve_certified)" + }, + "lane_construction": { + "draws_sha256": "8793f501adc86a80ee673986f87d36fdfb1b77bce5635352ee2c467783acb150", + "lane_rows": [ + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179 + ], + "calls": [ + 8 + ], + "stage": "pix2", + "regularization_range": { + "galaxies.source.pixelization.regularization.inner_coefficient": { + "min": 1.0566389768329418e-06, + "max": 229.37837836630266 + }, + "galaxies.source.pixelization.regularization.outer_coefficient": { + "min": 2.4574595034239785e-06, + "max": 30.026999055831187 + }, + "galaxies.source.pixelization.regularization.signal_scale": { + "min": 0.07341166691553269, + "max": 0.8809562507227594 + } + }, + "phases": [ + "exploration" + ], + "window_rule": "nautilus_batches.timed_window: consecutive captured calls, in call order, from the FIRST call that is not a prior batch, concatenated and truncated to B; at B == n_batch exactly one real Nautilus batch. Falls back to the latest B lanes if the post-prior lanes run out; never repeats a lane.", + "note": "Lane k is captured lane lane_rows[k]: the mass AND shear of a real Nautilus proposal (nautilus_batch_capture.py), lens light fixed at S3, the S3 light-subtracted dataset shared by every lane. `offsets` in the lane table are the mass offsets from the fiducial; the shear is in the capture file." + }, + "captured": { + "batches_path": "/mnt/ral/jnightin/autolens_profiling_wt/certified-solver-phase-c1-lane-rate/results/breakdown/imaging/nautilus_batches_delaunay_pix2.npz", + "batches_sha256": "90f4640a92f9b1c60ca3fceca7b484aa8215970489f8e7daf5430b8460d171d5", + "schema_version": 2, + "n_calls": 84, + "n_lanes": 1680, + "call_sizes_seen": [ + 20 + ], + "calls_by_phase": { + "prior": 8, + "exploration": 72, + "sampling": 4 + }, + "parameter_paths": [ + "galaxies.source.pixelization.regularization.inner_coefficient", + "galaxies.source.pixelization.regularization.outer_coefficient", + "galaxies.source.pixelization.regularization.signal_scale" + ], + "stage": "pix2", + "regularization": { + "class": "AdaptSplit", + "free": true, + "priors": { + "inner_coefficient": [ + "LogUniform", + 1e-06, + 1000000.0 + ], + "outer_coefficient": [ + "LogUniform", + 1e-06, + 1000000.0 + ], + "signal_scale": [ + "Uniform", + 0.0, + 1.0 + ] + }, + "priors_source": "PyAutoGalaxy packaged config/priors/regularization (adapt_split.yaml / constant.yaml); adapt_split.yaml is identical to euclid_strong_lens_modeling_pipeline/config/priors/regularization/adapt_split.yaml" + }, + "nautilus": { + "departures_from_production": [ + "mass/shear fixed at the S3 fiducial, not at a source_pix_1 result", + "no positions likelihood", + "the cell's mesh (Hilbert 1500, weight_power 1) in both stages; source_pix_2 redraws a 500-vertex Hilbert grid at weight_power 3.5", + "seeded (production passes no seed)", + "quick updates disabled (iterations_per_quick_update=1e12; render-only)", + "NullPaths: no output directory, so no checkpoint and one Sampler.run call", + "post-fit perform_update skipped (samples / latent variables never built)" + ], + "n_batch": 20, + "n_like_max": 40000, + "n_live": 75, + "number_of_cores": 1, + "production_reference": "euclid_strong_lens_modeling_pipeline/scripts/full_model.py source_pix_1 (n_live=150) / source_pix_2 (n_live=75): af.Nautilus(n_batch=20, **SettingsSearch.search_dict) with use_jax_vmap=True and number_of_cores=1 (SettingsSearch defaults)", + "production_stage": "source_pix_2", + "seed": 1, + "stage": "pix2", + "use_jax_vmap": true, + "version": "1.0.5" + }, + "capture_fit_status": "sampling complete (n_like_max or convergence); post-fit result skipped", + "capture_library_revisions": { + "PyAutoArray": { + "head": "7fa8d2714f7da43fec2b23c31bff580764831670", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoArray" + }, + "PyAutoFit": { + "head": "a736840127be7a3c21e15a5c945e94d8f1082983", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoFit" + }, + "PyAutoGalaxy": { + "head": "70a61e26cd715cefe7012a38285698091246a8a4", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy" + }, + "PyAutoLens": { + "head": "86054bbc19baa2f710a12e04a94fa27ab37cc354", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoLens" + }, + "PyAutoNerves": { + "head": "1fa613aa8d89a79613009fb66f5b4e2d21deb57a", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoNerves" + } + }, + "fingerprint_check": { + "fields": [ + "mesh", + "source_pixels", + "dataset_sha256", + "regularization_class", + "regularization_s0_fiducial", + "border_relocator", + "use_mixed_precision", + "log_evidence_s3_library" + ], + "not_identity": "the regularization coefficients: free per lane since the capture frees them", + "log_evidence_s3_library_rel_diff": 0.0, + "passed": true + }, + "timed_window_vs_capture_pdip": { + "reference": "the capture's own figure of merit (library PDIP, Fitness.call_wrap jax.jit(jax.vmap(call)) over parameter vectors) for the same lanes", + "compared_against": "this cell's jit(vmap) library-PDIP reference", + "n_compared": 20, + "max_rel_diff": 1.6296173197847013e-06, + "max_abs_diff_nats": 0.2258566872915253, + "gated": false, + "note": "RECORDED, NOT GATED: proves the lane trees rebuilt here are the models the sampler evaluated (a wrong parameter mapping shows up as nats, not 1e-10)." + } + }, + "matched": { + "vmap_wall_per_lane_ms": 13.211890570000833, + "scalar_wall_per_lane_ms": 33.14106489999176, + "speedup_vmap_over_scalar": 2.508427141778065, + "note": "Both walls are the PRODUCTION nesting of their arm, measured in one process on the same B lanes with the SAME library Settings (no injection). A speedup below 1 means the batch is slower per lane than B sequential jitted calls." + }, + "solver_source": "library", + "solver": "certified", + "certified_fallback": "none", + "certified_pass_budget": 16, + "certified_pass_budget_basis": "config default (Settings().certified_pass_budget)", + "certified_tau_rel": 1e-09, + "solver_used": "certified", + "solver_check": { + "solver_used": "certified", + "solver_used_source": "AbstractInversion.positive_only_solver_used on the fiducial S3 inversion, built eagerly on the JAX backend (AnalysisImaging(use_jax=True).fit_from) with the arms' Settings", + "reference_solver_used": "pdip", + "traced_solver_kwargs_jax": [ + "certified" + ], + "observed_calls_jax": 1, + "report_rows": 20, + "report_vs_timed_arm_max_rel_diff": 1.9237039733334527e-07 + }, + "lanes_certified": [ + false, + true, + true, + true, + false, + false, + false, + true, + true, + false, + true, + false, + true, + false, + true, + true, + true, + true, + false, + true + ], + "lanes_passes": [ + 16, + 0, + 2, + 4, + 16, + 16, + 16, + 1, + 2, + 16, + 4, + 16, + 5, + 16, + 2, + 1, + 2, + 0, + 16, + 1 + ], + "uncertified_lanes": 8, + "per_lane_certification_note": "certified / passes come from the library's own solve through its stats= out-dict (PyAutoArray #566): passes is the number of restricted active-set passes the library ran (0 when the unconstrained solve was already non-negative), certified is its KKT certificate. With certified_fallback=pdip a False lane returned the PDIP solution; with none it returned the last uncertified iterate. null for a library-PDIP row (no certificate).", + "gate": { + "pre_registered": true, + "gated": [ + "per lane: jit(vmap) arm vs jit(vmap) library PDIP <= lane_rtol relative", + "per lane: scalar jit arm vs scalar jit library PDIP <= lane_rtol relative" + ], + "recorded_not_gated": [ + "per lane: jit(vmap) arm vs scalar jit arm (rel_diff, abs_diff_nats)", + "per lane: jit(vmap) library PDIP vs scalar jit library PDIP", + "uncertified_lanes (certified_fallback=none rows)" + ], + "lanes_failed": 12, + "passed": false, + "policy_eligible": false, + "note": "Pre-registered before submission (module docstring; submit header). Phase 3 (results/notes/hst_gpu_residue_phase3_psf_2026_09.md) placed phase 2's ~2.5e-9 certified-vs-PDIP residual BETWEEN the jit(vmap) and scalar-jit compositions, not in the solver \u2014 so each arm is gated against the library-PDIP reference of its OWN composition, and the cross-composition difference is recorded with its nats. A certified_fallback=none row is policy-eligible only if every lane certifies AND passes the gate. Timing is never gated." + }, + "library_revisions": { + "PyAutoArray": { + "head": "3de624b5b91a4efa130dc3cb0a3a0f06f85025a3", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoArray", + "module_file": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/__init__.py" + }, + "PyAutoFit": { + "head": "dd9fbe0aab60c4a57702b1444ca031b317c91331", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoFit", + "module_file": "/mnt/ral/jnightin/PyAuto/PyAutoFit/autofit/__init__.py" + }, + "PyAutoGalaxy": { + "head": "70a61e26cd715cefe7012a38285698091246a8a4", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy", + "module_file": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/__init__.py" + }, + "PyAutoLens": { + "head": "86054bbc19baa2f710a12e04a94fa27ab37cc354", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoLens", + "module_file": "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/__init__.py" + }, + "autoarray_file": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/__init__.py" + } + }, + "headline_arm_note": "`trace`, `hlo_census`, `command_buffers` and `trace_timing` above describe the scalar arm \u2014 the program phase 1 traced. Both arms' full blocks, the lane table and the matched comparison are under `vmap`." +} \ No newline at end of file diff --git a/results/breakdown/imaging/fixed_light_trace_delaunay_jitvmap20_captured_pix2_libcertified_fboff_b16_hpc_a100_fp64_fixed_light_trace.png b/results/breakdown/imaging/fixed_light_trace_delaunay_jitvmap20_captured_pix2_libcertified_fboff_b16_hpc_a100_fp64_fixed_light_trace.png new file mode 100644 index 000000000..459e37445 Binary files /dev/null and b/results/breakdown/imaging/fixed_light_trace_delaunay_jitvmap20_captured_pix2_libcertified_fboff_b16_hpc_a100_fp64_fixed_light_trace.png differ diff --git a/results/breakdown/imaging/fixed_light_trace_delaunay_jitvmap20_captured_pix2_libcertified_fbon_b16_hpc_a100_fp64_fixed_light_trace.json b/results/breakdown/imaging/fixed_light_trace_delaunay_jitvmap20_captured_pix2_libcertified_fbon_b16_hpc_a100_fp64_fixed_light_trace.json new file mode 100644 index 000000000..0fa994ac9 --- /dev/null +++ b/results/breakdown/imaging/fixed_light_trace_delaunay_jitvmap20_captured_pix2_libcertified_fbon_b16_hpc_a100_fp64_fixed_light_trace.json @@ -0,0 +1,6008 @@ +{ + "device": { + "backend": "gpu", + "device": "cuda:0", + "hostname": "euclid-ral-gpu-2", + "xla_flags": "--xla_disable_hlo_passes=constant_folding --xla_gpu_autotune_level=0 --xla_gpu_enable_triton_gemm=false", + "omp_num_threads": null, + "cpu_count": 124, + "jax_compilation_cache_dir": "/mnt/ral/jnightin/autolens_profiling_wt/certified-solver-phase-c1-lane-rate/output/jax_cache/fixed_light_lanerate_delaunay_pix2_time_20_certified_on_350768_33", + "autotune_cache_entries_at_start": 0, + "cache_fresh": true, + "nvidia_smi": "NVIDIA A100 80GB PCIe, 8833 MiB, 81920 MiB" + }, + "machine": { + "cpu_model": "AMD EPYC 7702 64-Core Processor", + "cpu_count_os": 124, + "nproc": 4, + "nproc_all": 124, + "nproc_note": "GNU nproc honours OMP_NUM_THREADS, so `nproc` can print 1 on a multi-core host; `nproc_all` is the core count.", + "ram_total": "928298204 kB", + "kernel": "5.14.0-687.50.1.el9_8.x86_64", + "platform": "Linux-5.14.0-687.50.1.el9_8.x86_64-x86_64-with-glibc2.34", + "python": "3.12.4", + "jax_thread_env": { + "NPROC": null + }, + "blas_thread_env": { + "OMP_NUM_THREADS": null, + "OPENBLAS_NUM_THREADS": null, + "MKL_NUM_THREADS": null, + "VECLIB_MAXIMUM_THREADS": null, + "NUMEXPR_NUM_THREADS": null + }, + "thread_env_note": "NPROC sizes XLA's CPU intra-op pool (the JAX rows); the BLAS knobs pin OpenBLAS/MKL/OpenMP (the numpy/scipy rows) and do not touch JAX. Two disjoint families; both are recorded on every CPU timing.", + "gpu": "NVIDIA A100 80GB PCIe, 81920 MiB, 610.57.04" + }, + "precision": "fp64", + "configuration": { + "pixel_scale_arcsec": 0.05, + "mask_radius_arcsec": 3.5, + "image_pixels_masked": 15361, + "over_sampled_pixels": 62752, + "mesh": "delaunay", + "mesh_shape": null, + "source_pixels": 1500, + "source_pixels_requested": null, + "dataset": "hst", + "dataset_sha256": { + "data.fits": "e4e833a28e9c6f6fb023cd85c0d3dde74068720256bc77a240633500e5b04fac", + "noise_map.fits": "315c6266a0acd3ac9c8da82fcd2b45a08697362481fd7a35072bab1658530ba3", + "psf.fits": "8389ba0e8bf4a09b4a561cfc246181a2fb944ed396754cd0ff76fdd22910d303" + }, + "cell_source_sha256": "06a162fcdae6b329384ec33322f443df07215d86e56f0505ac15b3d3473eb432", + "inversion_path": "dense", + "pass_budget": 7, + "pass_budget_basis": "phase 3 (autolens_profiling#255): the smallest ZERO-fallback budget per mesh, the budget a production run fixes. NOT phase 0's certifying budget (2 for Delaunay), which falls back on 67.5 % of a graded draw set and is not a production cost.", + "border_relocator_mode": "cell", + "border_relocator": true, + "border_relocator_note": "'cell' is use_border_relocator=True, which every profiling cell in this family forces; 'library' passes None and takes the shipped config default, which is what production runs. The resolved boolean is what this leg actually ran.", + "routes_selected": [ + "b", + "d" + ], + "trace_calls": 10, + "command_buffers_traced": "off", + "use_mixed_precision": false, + "tau_rel": 1e-09, + "regularization": { + "scheme": "adapt_split", + "inner_coefficient": 0.1, + "outer_coefficient": 10.0, + "signal_scale": 0.1 + }, + "thread_env": { + "n_threads": null, + "vars": [ + "OPENBLAS_NUM_THREADS", + "MKL_NUM_THREADS", + "OMP_NUM_THREADS", + "VECLIB_MAXIMUM_THREADS", + "NUMEXPR_NUM_THREADS" + ], + "set_to": null, + "preexisting": {}, + "overridden": {}, + "note": "Not pinned (legacy variant): recorded as found." + }, + "over_sample_size_lp_rule": { + "sub_size_list": [ + 4, + 2, + 2 + ], + "radial_list": [ + 0.3, + 0.6 + ], + "centre": [ + 0.0, + 0.0 + ] + }, + "vmap_batch": 20, + "lanes": "captured", + "arms": [ + "vmap", + "scalar" + ], + "fallback": "on", + "draw_seed": 0, + "vmap_composition": "jax.jit(jax.vmap(fn))", + "lane_rtol": 1e-09, + "vmap_flags_note": "Strict ProfileCLI.parse_cell_args rejects unknown flags. These keys record the exact batching program and prevent historical vmap(jit) artifacts from being mistaken for current jit(vmap) measurements.", + "solver_source": "library", + "solver": "certified", + "certified_fallback": "pdip", + "certified_pass_budget": 16, + "captured_pass": "time", + "batches": "/mnt/ral/jnightin/autolens_profiling_wt/certified-solver-phase-c1-lane-rate/results/breakdown/imaging/nautilus_batches_delaunay_pix2.npz" + }, + "solver_injection": { + "patched": null, + "part_v": "none \u2014 library mode selects the solver through al.Settings", + "part_b_route_d": { + "patched": "autoarray.inversion.inversion.inversion_util.reconstruction_positive_only_from", + "pass_budget": 7, + "fallback": true + }, + "note": "Library mode (phase B, #300): PART V's arms and references run the library's own positive-only solve, selected by Settings(positive_only_solver, certified_fallback, certified_pass_budget); nothing is injected. PART B's single-call route d (the fiducial d == b pin) still uses the phase-1 harness injection at the phase-3 budget and is not a phase-B row. The untimed certification report observes the library solve (library_solver_observed) without changing it." + }, + "routes": { + "b_s3_pdip": { + "label": "S3 PDIP (source-only)", + "status": "ok", + "solver": "library", + "ms": 50.84114830024191, + "log_likelihood": 29155.000174925866 + }, + "d_s3_certified_fallback": { + "label": "S3 certified active set, budget 7, PDIP fallback", + "status": "ok", + "solver": "harness-injected certified active set", + "pass_budget": 7, + "fallback": true, + "injected_solver_calls_jax": 1, + "injected_solver_calls_numpy": 0, + "ms": 31.498834599915426, + "log_likelihood": 29155.000174536726 + } + }, + "equivalence_pins": [ + { + "pin": "route d (certified, fallback) == route b (library PDIP)", + "route": "d_s3_certified_fallback", + "reference": "b_s3_pdip", + "expectation": "the certified active set returns the library's own positive solution", + "rtol": 1e-09, + "got": 29155.000174536726, + "reference_value": 29155.000174925866, + "rel_diff": 1.3347283098768208e-11, + "status": "PASS" + } + ], + "equivalence_rtol": 1e-09, + "reference": { + "log_evidence_s0_library": 29155.00017433923, + "log_evidence_s3_library": 29155.000174339304, + "s3": { + "n_params": 1500, + "n_mapper": 1500, + "n_funcs": 0, + "edge_zeroed_pixels": 0, + "subtracted_light_flux": 5105.448603818575 + } + }, + "command_buffers": { + "wall_on_ms": 875.6381604998751, + "wall_off_ms": 882.5437281997438, + "command_buffer_delta_ms": 6.905567699868698, + "command_buffer_delta_pct": 0.788632566667323, + "traced": "off", + "compiler_option": "xla_gpu_enable_command_buffer", + "probe": { + "note": "Not taken in --vmap-batch mode: the CUPTI-inside-a-CUDA-graph probe is a phase-1 diagnostic about the JOIN, and this mode already compiles and times both the command-buffers ON and OFF executable of every arm." + }, + "note": "ONE lowering, TWO compilations, one process. wall_on_ms is the PRODUCTION program (CUDA graphs as XLA ships them) and is the number comparable to phase 5's row; wall_off_ms is the graph-less program the stage rows attribute. The delta is the launch overhead the graphs remove \u2014 it lands in device_idle and host_outside_span, not in any stage. Reconciliation is computed against wall_off_ms." + }, + "trace": { + "parser": "ProfileData.from_file(xplane) + as_text() + stack_frame_index(proto field 17)", + "stage_audit": { + "mixed_fusion": [ + { + "instruction": "loop_divide_gather_fusion", + "ms": 1.0147837900000003, + "opcode": "fusion", + "shape": "(f64[15361,1,1,1500]{3,2,1,0}, f64[15361,1,1,1500]{3,2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_broadcast_fusion.2", + "ms": 0.22702425500000015, + "opcode": "fusion", + "shape": "f64[1500,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_reduce_fusion.13", + "ms": 0.12207924499999988, + "opcode": "fusion", + "shape": "f64[92,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123 (data_vector_via_blurred_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:67 (InversionImagingMapping.data_vector)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:699 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_reduce_fusion.17", + "ms": 0.11460218000000005, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163 (mapped_reconstructed_data_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:120 (InversionImagingMapping._mapped_reconstructed_data_dict_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:196 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "loop_broadcast_fusion.3", + "ms": 0.11095099000000008, + "opcode": "fusion", + "shape": "f64[15361,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:342", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:342 (mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:283 (Mapper.mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:91 (AbstractInversionImaging._mapping_matrix_for_convolution_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:137 (AbstractInversionImaging.operated_mapping_matrix_list)" + ] + }, + { + "instruction": "input_multiply_transpose_fusion", + "ms": 0.10946254999999998, + "opcode": "fusion", + "shape": "(f64[1500,1500]{1,0}, f64[1500,1500]{1,0}, f64[1500,1500]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:237 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:274 (_certified_positive_only_from)" + ] + } + ], + "grids_and_structures": [ + { + "instruction": "loop_multiply_sine_fusion", + "ms": 0.0013491050000000013, + "opcode": "fusion", + "shape": "(f64[], f64[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/geometry/geometry_util.py:527", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/geometry/geometry_util.py:527 (transform_grid_2d_to_reference_frame)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/profiles/geometry_profiles.py:418 (EllProfile.transformed_to_reference_frame_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/structures/decorators/abstract.py:93 (AbstractMaker.evaluate_func)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/structures/decorators/abstract.py:112 (AbstractMaker.result)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/structures/decorators/to_grid.py:70 (to_grid..wrapper)" + ] + } + ], + "border_relocator": [ + { + "instruction": "eigh.45", + "ms": 0.07454366500000005, + "opcode": "custom-call", + "shape": "(f64[2,2]{0,1}, f64[2]{0}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "custom-call.2", + "ms": 0.007953390000000022, + "opcode": "custom-call", + "shape": "(f64[2,2]{1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_add_fusion.9", + "ms": 0.003369750000000004, + "opcode": "fusion", + "shape": "f64[1500]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:458 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_reduce_fusion.25", + "ms": 0.001925390000000003, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:256", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:256 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_multiply_fusion.4", + "ms": 0.0015465549999999976, + "opcode": "fusion", + "shape": "f64[2,2]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + } + ], + "mesh_construction": [ + { + "instruction": "input_concatenate_fusion.7", + "ms": 0.002044314999999992, + "opcode": "fusion", + "shape": "f64[1500,2]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:820", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:820 (InterpolatorDelaunay.mesh_grid_xy)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:847 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + } + ], + "mesh_qhull_callback": [ + { + "instruction": "pure_callback.4", + "ms": 0.010624294999999992, + "opcode": "custom-call", + "shape": "(s32[3000,3]{1,0}, s32[3000,3]{1,0}, s32[1500]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:161", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:161 (_jax_delaunay_tables)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:405 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + } + ], + "other": [ + { + "instruction": "copy.106", + "ms": 0.04187694999999879, + "opcode": "copy", + "shape": "f64[1,1024,2]{2,1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.70", + "ms": 0.014690620000000149, + "opcode": "copy", + "shape": "s32[21361]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.75", + "ms": 0.001968135000000004, + "opcode": "copy", + "shape": "s64[1500]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.104", + "ms": 0.0016524649999999945, + "opcode": "copy", + "shape": "s64[]", + "source": "", + "stack": [] + }, + { + "instruction": "copy.105", + "ms": 0.001634235000000002, + "opcode": "copy", + "shape": "s32[]", + "source": "", + "stack": [] + }, + { + "instruction": "copy.61", + "ms": 0.0016041399999999959, + "opcode": "copy", + "shape": "s32[]", + "source": "", + "stack": [] + } + ], + "mesh_seed_argmin": [ + { + "instruction": "input_reduce_fusion", + "ms": 0.14478561999999937, + "opcode": "fusion", + "shape": "(f64[1024]{0}, s64[1024]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:191", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:191 (_nearest_vertex_seed_from..argmin_chunk)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)" + ] + }, + { + "instruction": "loop_dynamic_update_slice_fusion", + "ms": 0.04105780499999848, + "opcode": "fusion", + "shape": "s32[21,1024]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_add_fusion", + "ms": 0.03196771499999974, + "opcode": "fusion", + "shape": "s64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_broadcast_fusion", + "ms": 0.0019505399999999967, + "opcode": "fusion", + "shape": "s32[21,1024]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "pdip_solve": [ + { + "instruction": "cholesky.60", + "ms": 6.754088089999978, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "cholesky.80", + "ms": 5.67523822999999, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:106", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:106 (factorize_kkt)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:212 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve.1", + "ms": 1.209065825000019, + "opcode": "custom-call", + "shape": "(f64[1500,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "triangular-solve", + "ms": 1.0477539799999835, + "opcode": "custom-call", + "shape": "(f64[1500,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "triangular-solve.2", + "ms": 0.90566888999999, + "opcode": "custom-call", + "shape": "(f64[1500,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:213 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve.4", + "ms": 0.8971959699999926, + "opcode": "custom-call", + "shape": "(f64[1500,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:217 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + } + ], + "regularization_H": [ + { + "instruction": "input_scatter_fusion.10", + "ms": 0.0020577249999999946, + "opcode": "fusion", + "shape": "f64[1500,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:615", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:615 (pixel_splitted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:137 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_concatenate_fusion.10", + "ms": 0.0018569600000000008, + "opcode": "fusion", + "shape": "pred[3]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:90", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:90 (split_points_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:410 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + }, + { + "instruction": "input_concatenate_fusion.9", + "ms": 0.0018511900000000017, + "opcode": "fusion", + "shape": "pred[3]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:91", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:91 (split_points_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:410 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + }, + { + "instruction": "input_concatenate_fusion.8", + "ms": 0.0018500700000000016, + "opcode": "fusion", + "shape": "pred[3]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:93", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:93 (split_points_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:410 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + }, + { + "instruction": "input_concatenate_fusion", + "ms": 0.0017531150000000013, + "opcode": "fusion", + "shape": "s32[1500,2]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:615", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:615 (pixel_splitted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:137 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_concatenate_fusion.11", + "ms": 0.0014912049999999974, + "opcode": "fusion", + "shape": "pred[3]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:88", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:88 (split_points_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:410 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + } + ], + "mesh_locate_walk": [ + { + "instruction": "input_reduce_fusion.1", + "ms": 0.022754409999999718, + "opcode": "fusion", + "shape": "pred[196]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:288", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:288 (_walk_from_seed..cond)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)" + ] + }, + { + "instruction": "loop_reduce_fusion", + "ms": 0.02235456499999971, + "opcode": "fusion", + "shape": "(f64[21361]{0}, s64[21361]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:264", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:264 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:264 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)" + ] + }, + { + "instruction": "loop_or_select_fusion", + "ms": 0.019306895000000247, + "opcode": "fusion", + "shape": "(s32[21361]{0}, pred[21361]{0}, pred[21361]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:270", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:270 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)" + ] + }, + { + "instruction": "loop_select_fusion", + "ms": 0.01731259500000002, + "opcode": "fusion", + "shape": "s32[21361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:242", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:242 (_walk_from_seed..weights_of)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:262 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)" + ] + }, + { + "instruction": "input_reduce_fusion.2", + "ms": 0.014390094999999985, + "opcode": "fusion", + "shape": "pred[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:288", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:288 (_walk_from_seed..cond)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)" + ] + }, + { + "instruction": "while.34", + "ms": 0.012851719999999872, + "opcode": "while", + "shape": "(s32[], s32[21361]{0}, pred[21361]{0}, pred[21361]{0}, s32[3000,3]{1,0}, /*index=5*/f64[1500,2]{1,0}, f64[21361,2]{1,0}, s32[3000,3]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "psf_convolution_mapping_matrix": [ + { + "instruction": "input_scatter_fusion", + "ms": 1.9795794700000002, + "opcode": "fusion", + "shape": "f64[1500,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.19.0", + "ms": 1.7556014649999998, + "opcode": "fft", + "shape": "f64[1500,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.15.0", + "ms": 1.364779719999999, + "opcode": "fft", + "shape": "c128[1500,180,91]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.17.0", + "ms": 0.979255055, + "opcode": "fft", + "shape": "c128[1500,91,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_transpose_fusion.4", + "ms": 0.513519525, + "opcode": "fusion", + "shape": "c128[1500,91,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "wrapped_transpose", + "ms": 0.5002328650000002, + "opcode": "fusion", + "shape": "c128[1500,180,91]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + } + ], + "inversion_other": [ + { + "instruction": "cholesky.120", + "ms": 0.8939710999999999, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1078 (AbstractInversion.log_det_curvature_reg_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:347 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "cholesky.130", + "ms": 0.8894467799999997, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1157 (AbstractInversion.log_det_regularization_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:348 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "loop_reduce_window_fusion.1", + "ms": 0.002773885000000001, + "opcode": "fusion", + "shape": "s64[94,16]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "loop_reduce_window_fusion", + "ms": 0.0026655950000000032, + "opcode": "fusion", + "shape": "s64[6,16]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "loop_broadcast_convert_fusion", + "ms": 0.00217664, + "opcode": "fusion", + "shape": "(s32[1500]{0}, s64[1500]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527 (AbstractInversion.zeroed_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:567 (AbstractInversion.solve_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:684 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_scatter_fusion.5", + "ms": 0.0019308600000000002, + "opcode": "fusion", + "shape": "s64[1500]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527 (AbstractInversion.zeroed_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:567 (AbstractInversion.solve_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:684 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "mapping_matrix": [ + { + "instruction": "input_reduce_fusion.31", + "ms": 0.002879989999999991, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:120 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + } + ], + "curvature_matrix_F": [ + { + "instruction": "cublas-lt-matmul.2", + "ms": 4.205149959999999, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "chi_squared_evidence": [ + { + "instruction": "loop_multiply_fusion.2", + "ms": 0.003019990000000005, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:300", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:300 (AbstractNDArray.__pow__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:60 (unwrap_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:35 (to_new_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:78 (chi_squared_map_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:78 (AbstractFit.chi_squared_map)" + ] + } + ] + }, + "stage_audit_note": "The HLO instructions that contributed most of each stage's milliseconds, with their full source stack. A stage row is only as good as the rules that built it; this is how a reader checks a row against the HLO instead of trusting it.", + "untraced_wall_ms": 44.026208385002974, + "reconciliation_vs_untraced_pct": -31.141085600896776, + "wall_basis": "wall_ms is the TRACED run's wall, the run these kernel durations came from. untraced_wall_ms is the same executable without the profiler; the difference is the profiler's overhead and belongs in neither the stages nor the idle row.", + "calls": 200, + "call_split": "per-call (first-instruction recurrence)", + "call_blocks": 200, + "events": 141520, + "streams": [ + "Stream #14(MemcpyD2H,Compute,MemcpyH2D,Memset,MemcpyD2D)" + ], + "per_stage_ms": { + "border_relocator": { + "median_ms": 0.08934100000000002, + "min_ms": 0.08876800000000001, + "max_ms": 0.09017100000000003 + }, + "chi_squared_evidence": { + "median_ms": 0.0029925, + "min_ms": 0.00288, + "max_ms": 0.003296 + }, + "curvature_matrix_F": { + "median_ms": 4.204302, + "min_ms": 4.188499, + "max_ms": 4.267967 + }, + "grids_and_structures": { + "median_ms": 0.001376, + "min_ms": 0.001279, + "max_ms": 0.001408 + }, + "inversion_other": { + "median_ms": 1.794877, + "min_ms": 1.778573, + "max_ms": 1.813453 + }, + "mapping_matrix": { + "median_ms": 0.00288, + "min_ms": 0.002848, + "max_ms": 0.002912 + }, + "memset": { + "median_ms": 0.021502499999999997, + "min_ms": 0.010048, + "max_ms": 0.096384 + }, + "mesh_construction": { + "median_ms": 0.002048, + "min_ms": 0.002015, + "max_ms": 0.00208 + }, + "mesh_locate_walk": { + "median_ms": 0.13138900000000003, + "min_ms": 0.13056200000000007, + "max_ms": 0.13273700000000005 + }, + "mesh_qhull_callback": { + "median_ms": 0.0105605, + "min_ms": 0.010400000000000001, + "max_ms": 0.011103 + }, + "mesh_seed_argmin": { + "median_ms": 0.2197770000000001, + "min_ms": 0.21939200000000011, + "max_ms": 0.22009800000000013 + }, + "mixed_fusion": { + "median_ms": 1.9815474999999996, + "min_ms": 1.9770350000000003, + "max_ms": 1.9940639999999994 + }, + "other": { + "median_ms": 0.063583, + "min_ms": 0.06304099999999999, + "max_ms": 0.067202 + }, + "pdip_solve": { + "median_ms": 7.581224, + "min_ms": 2.424595, + "max_ms": 48.89660700000005 + }, + "psf_convolution_mapping_matrix": { + "median_ms": 7.0925095, + "min_ms": 7.078738999999999, + "max_ms": 7.106948999999999 + }, + "regularization_H": { + "median_ms": 0.010848, + "min_ms": 0.010656, + "max_ms": 0.0112 + } + }, + "stage_order": [ + "border_relocator", + "mesh_qhull_callback", + "mesh_seed_argmin", + "mesh_locate_walk", + "mesh_construction", + "mapping_matrix", + "psf_convolution_mapping_matrix", + "curvature_matrix_F", + "regularization_H", + "pdip_solve", + "chi_squared_evidence", + "grids_and_structures", + "inversion_other", + "mixed_fusion", + "other", + "memset" + ], + "mixed_fusion": { + "ms": 1.9815474999999996, + "constituent_stage_sets": { + "curvature_matrix_F + psf_convolution_mapping_matrix": 1.0147837900000003, + "pdip_solve + psf_convolution_mapping_matrix": 0.22702425500000015, + "data_vector_D + pdip_solve": 0.125767375, + "mapped_reconstruction + pdip_solve": 0.11460218000000005, + "mapping_matrix + pdip_solve": 0.11328746500000009, + "curvature_reg_reduce_gather + inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": 0.10946254999999998, + "pdip_solve + regularization_H": 0.04431791999999995, + "inversion_other + pdip_solve + regularization_H": 0.024252115000000008, + "inversion_other + pdip_solve": 0.02287350499999999, + "inversion_other + mapping_matrix + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin + pdip_solve": 0.020975820000000023, + "inversion_other + mesh_construction + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin + pdip_solve + regularization_H": 0.01878552, + "inversion_other + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + pdip_solve + regularization_H": 0.01464035, + "pdip_solve + ray_trace_data_grid": 0.013579279999999994, + "border_relocator + ray_trace_data_grid": 0.012405385000000005, + "inversion_other + mapping_matrix + mesh_construction + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin": 0.011634304999999996, + "grids_and_structures + mass_profile_deflections + pdip_solve + ray_trace_data_grid": 0.009508225, + "border_relocator + pdip_solve + ray_trace_data_grid": 0.008618339999999995, + "chi_squared_evidence + pdip_solve": 0.00765336999999998, + "inversion_other + mesh_construction + mesh_seed_argmin + pdip_solve + regularization_H": 0.007190479999999996, + "inversion_other + mesh_dual_areas + mesh_locate_walk": 0.006666690000000056, + "border_relocator + pdip_solve": 0.006664104999999977, + "inversion_other + mesh_construction + pdip_solve + regularization_H": 0.006280445000000016, + "inversion_other + pdip_solve + ray_trace_data_grid": 0.0053433349999999925, + "inversion_other + regularization_H": 0.005017064999999995, + "inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": 0.004781205, + "inversion_other + mapped_reconstruction": 0.003705425000000002, + "mapping_matrix + pdip_solve + regularization_H": 0.003411649999999997, + "inversion_other + mesh_construction + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin": 0.0031199699999999993, + "inversion_other + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin": 0.002990545000000002, + "inversion_other + mesh_construction + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin + regularization_H": 0.0026927449999999955, + "inversion_other + mesh_dual_areas + mesh_locate_walk + pdip_solve": 0.002580274999999995, + "inversion_other + mesh_locate_walk + mesh_seed_argmin": 0.0024767750000000027, + "inversion_other + mesh_interpolation_weights": 0.002146860000000007, + "chi_squared_evidence + inversion_other": 0.0019062150000000034, + "grids_and_structures + mass_profile_deflections + pdip_solve": 0.0013418999999999994 + }, + "example_kernels": { + "curvature_matrix_F + psf_convolution_mapping_matrix": [ + "loop_divide_gather_fusion" + ], + "pdip_solve + psf_convolution_mapping_matrix": [ + "loop_broadcast_fusion.2" + ], + "data_vector_D + pdip_solve": [ + "input_reduce_fusion.13", + "input_reduce_fusion.29" + ], + "mapped_reconstruction + pdip_solve": [ + "input_reduce_fusion.17" + ], + "mapping_matrix + pdip_solve": [ + "loop_broadcast_fusion.3", + "loop_divide_fusion" + ], + "curvature_reg_reduce_gather + inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": [ + "input_multiply_transpose_fusion" + ], + "pdip_solve + regularization_H": [ + "loop_select_fusion.5", + "input_transpose_fusion.5" + ], + "inversion_other + pdip_solve + regularization_H": [ + "input_transpose_fusion.6" + ], + "inversion_other + pdip_solve": [ + "input_reduce_fusion.15", + "loop_log_fusion", + "input_reduce_fusion.16", + "input_reduce_fusion.20" + ], + "inversion_other + mapping_matrix + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin + pdip_solve": [ + "input_scatter_fusion.6", + "input_scatter_fusion.3" + ] + }, + "prorated_estimate_ms": { + "psf_convolution_mapping_matrix": 0.6209040225000002, + "curvature_matrix_F": 0.5073918950000001, + "pdip_solve": 0.3890709992142857, + "mapped_reconstruction": 0.08224161375000003, + "inversion_other": 0.06873453529761908, + "data_vector_D": 0.0628836875, + "mapping_matrix": 0.06234197750000004, + "regularization_H": 0.04246944963095235, + "reconstruction_scatter": 0.023087811249999996, + "curvature_reg_reduce_gather": 0.021892509999999997, + "ray_trace_data_grid": 0.020023280416666664, + "mesh_construction": 0.014264148630952385, + "mesh_locate_walk": 0.012508773464285734, + "border_relocator": 0.012407524999999989, + "mesh_interpolation_weights": 0.012329371380952386, + "mesh_seed_argmin": 0.011079570714285716, + "mesh_dual_areas": 0.008427758750000021, + "chi_squared_evidence": 0.004779792499999992, + "grids_and_structures": 0.00282435625, + "mass_profile_deflections": 0.00282435625 + }, + "prorated_note": "ESTIMATE ONLY \u2014 a mixed fusion's time split equally across the stages its constituents span. Never summed into the measured table, never reconciled." + }, + "other_sources_ms": { + "copy.106": 0.04187694999999879, + "copy.70": 0.014690620000000149, + "copy.75": 0.001968135000000004, + "copy.104": 0.0016524649999999945, + "copy.105": 0.001634235000000002, + "copy.61": 0.0016041399999999959, + "copy.103": 0.0007132700000000001, + "copy.40": 0.0006169449999999998 + }, + "device_span_ms": 45.249957665000004, + "device_busy_ms": 38.14474602, + "device_idle_ms": 7.105211645000004, + "largest_idle_gaps": [ + { + "gap_ms": 5.383379, + "after": "pure_callback.4", + "before": "pure_callback.4" + }, + { + "gap_ms": 0.073567, + "after": "input_reduce_fusion.3", + "before": "input_reduce_fusion.4" + }, + { + "gap_ms": 0.033919, + "after": "pure_callback.4", + "before": "copy.105" + }, + { + "gap_ms": 0.029472, + "after": "input_reduce_fusion.1", + "before": "input_reduce_fusion.2" + }, + { + "gap_ms": 0.027647, + "after": "while.40", + "before": "input_reduce_select_fusion" + }, + { + "gap_ms": 0.027584, + "after": "input_reduce_fusion.28", + "before": "loop_broadcast_fusion.2" + }, + { + "gap_ms": 0.027007, + "after": "input_concatenate_fusion.7", + "before": "pure_callback.4" + }, + { + "gap_ms": 0.024383, + "after": "copy.106", + "before": "input_reduce_fusion" + } + ], + "kernel_ms": 23.2107575, + "sum_ms": 30.315969145000004, + "wall_ms": 45.255061330008175, + "host_outside_span_ms": 0.0051036650081712764, + "reconciliation_pct": -33.01087601245214, + "unjoined_ms": 0.0, + "unjoined_pct": 0.0, + "other_ms": 0.063583, + "other_pct": 0.14049920192647877, + "note": "Stage rows attribute the command-buffers-OFF program (see the module docstring): kernel times are the same, the launch overhead the CUDA graphs remove is not. sum_ms = kernel rows + device_idle_ms; the residual against wall_ms is host_outside_span_ms (dispatch before the first kernel, teardown after the last).", + "per_stage_ms_per_lane": { + "border_relocator": 0.08934100000000002, + "chi_squared_evidence": 0.0029925, + "curvature_matrix_F": 4.204302, + "grids_and_structures": 0.001376, + "inversion_other": 1.794877, + "mapping_matrix": 0.00288, + "memset": 0.021502499999999997, + "mesh_construction": 0.002048, + "mesh_locate_walk": 0.13138900000000003, + "mesh_qhull_callback": 0.0105605, + "mesh_seed_argmin": 0.2197770000000001, + "mixed_fusion": 1.9815474999999996, + "other": 0.063583, + "pdip_solve": 7.581224, + "psf_convolution_mapping_matrix": 7.0925095, + "regularization_H": 0.010848 + }, + "per_lane_divisor": 1, + "host_callback": { + "pure_callback_span_ms": 99.45982540000001, + "qhull_ms": 92.7068144, + "callback_body_ms_note": "the OUTERMOST matching body event, not a sum: under the probe the body appears twice (the wrapper and the timed re-implementation it calls) and summing them would count the same work twice", + "events_by_name": { + "pure_callback.4": { + "count": 200, + "ms": 99.45982540000001 + }, + "$callback.py:815 _wrapped_callback": { + "count": 200, + "ms": 97.69207749999998 + }, + "$callback.py:224 _callback": { + "count": 200, + "ms": 97.22190960000005 + }, + "$callback.py:74 pure_callback_impl": { + "count": 200, + "ms": 97.04335109999998 + }, + "$callback.py:69 __call__": { + "count": 200, + "ms": 93.02880579999997 + }, + "$delaunay.py:162 ": { + "count": 200, + "ms": 92.89173760000001 + }, + "$host_callback_probe.py:225 wrapped": { + "count": 200, + "ms": 92.7068144 + }, + "$host_callback_probe.py:160 _timed_tri_only": { + "count": 200, + "ms": 92.54951359999995 + }, + "ThenExecuteCallback:GetEventForComputeStreamSyncPoint": { + "count": 200, + "ms": 0.3692834000000001 + }, + "$callback.py:822 ": { + "count": 800, + "ms": 0.2856913999999997 + }, + "$__init__.py:132 _xla_gc_callback": { + "count": 2, + "ms": 0.000327 + } + }, + "note": "HOST milliseconds per traced BATCH (the whole invocation), aggregated by name because the events nest. Not a row of the device table: the device pays for them as the idle gaps largest_idle_gaps names." + }, + "host_callback_ms": 99.45982540000001 + }, + "hlo_census": { + "status": "excluded", + "reason": "The legacy census anchors PyAutoArray source line numbers that moved after the phase-1 run. No batched attribution is published from unsupported anchors; the device-event table and wall reconciliation remain valid." + }, + "stage_map_provenance": [ + { + "label": "log_det_curvature_reg", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 850, + 882 + ], + "requires": { + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 884, + 896 + ] + }, + "function": null + }, + { + "label": "log_det_regularization", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 850, + 882 + ], + "requires": { + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 897, + 943 + ] + }, + "function": null + }, + { + "label": "curvature_reg_add", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 359, + 372 + ], + "requires": null, + "function": null + }, + { + "label": "curvature_reg_reduce_gather", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 374, + 398 + ], + "requires": null, + "function": null + }, + { + "label": "edge_subset_gather", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 606, + 614 + ], + "requires": null, + "function": null + }, + { + "label": "regularization_term", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 786, + 849 + ], + "requires": null, + "function": null + }, + { + "label": "mapped_reconstruction", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 722, + 785 + ], + "requires": null, + "function": null + }, + { + "label": "reconstruction_scatter", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 583, + 605 + ], + "requires": null, + "function": null + }, + { + "label": "reconstruction_scatter", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 615, + 721 + ], + "requires": null, + "function": null + }, + { + "label": "certified_active_set_solve", + "path": "likelihood_breakdown/active_set_steps.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "certified_active_set_solve", + "path": "likelihood_breakdown/library_solver_injection.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "pdip_solve", + "path": "PyAutoArray/autoarray/util/jax_nnls.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "pdip_solve", + "path": "PyAutoArray/autoarray/inversion/inversion/inversion_util.py", + "lines": [ + 256, + 488 + ], + "requires": null, + "function": null + }, + { + "label": "mapped_reconstruction", + "path": "PyAutoArray/autoarray/inversion/inversion/inversion_util.py", + "lines": [ + 156, + 200 + ], + "requires": null, + "function": null + }, + { + "label": "curvature_matrix_F", + "path": "PyAutoArray/autoarray/inversion/inversion/inversion_util.py", + "lines": [ + 12, + 155 + ], + "requires": null, + "function": null + }, + { + "label": "reconstruction_scatter", + "path": "PyAutoArray/autoarray/inversion/inversion/inversion_util.py", + "lines": [ + 201, + 255 + ], + "requires": null, + "function": null + }, + { + "label": "data_vector_D", + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py", + "lines": [ + 54, + 73 + ], + "requires": null, + "function": null + }, + { + "label": "curvature_matrix_F", + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py", + "lines": [ + 74, + 110 + ], + "requires": null, + "function": null + }, + { + "label": "data_vector_D", + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py", + "lines": null, + "requires": null, + "function": "data_vector_via_blurred_mapping_matrix_from" + }, + { + "label": "curvature_matrix_F", + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "likelihood_breakdown/psf_cube_injection.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": [ + 1086, + 1300 + ], + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": [ + 632, + 642 + ], + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": [ + 670, + 691 + ], + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": null, + "requires": { + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": [ + 1086, + 1300 + ] + }, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": null, + "requires": { + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py", + "lines": [ + 119, + 150 + ] + }, + "function": null + }, + { + "label": "psf_convolution_image", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py", + "lines": [ + 119, + 150 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_qhull_callback", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 139, + 172 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_seed_argmin", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 173, + 207 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_locate_walk", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 208, + 372 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_dual_areas", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 373, + 396 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_dual_areas", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 437, + 494 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_dual_areas", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 605, + 615 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_interpolation_weights", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 616, + 695 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_interpolation_weights", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 896, + 1000 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_construction", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "border_relocator", + "path": "PyAutoArray/autoarray/inversion/mesh/border_relocator.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "mesh_construction", + "path": "PyAutoArray/autoarray/inversion/mesh/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "mapping_matrix", + "path": "PyAutoArray/autoarray/inversion/mappers/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "mapping_matrix", + "path": "PyAutoArray/autoarray/inversion/mappings/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "mapping_matrix", + "path": "PyAutoArray/autoarray/inversion/linear_obj/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "regularization_H", + "path": "PyAutoArray/autoarray/inversion/regularization/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "chi_squared_evidence", + "path": "PyAutoArray/autoarray/fit/fit_util.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "chi_squared_evidence", + "path": "PyAutoArray/autoarray/fit/fit_dataset.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "ray_trace_mesh_grid", + "path": "PyAutoLens/autolens/lens/to_inversion.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "ray_trace_mesh_grid", + "path": "PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "mass_profile_deflections", + "path": "PyAutoGalaxy/autogalaxy/profiles/mass/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "light_profile_image", + "path": "PyAutoGalaxy/autogalaxy/profiles/light/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "light_profile_image", + "path": "PyAutoGalaxy/autogalaxy/operate/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "ray_trace_data_grid", + "path": "PyAutoLens/autolens/lens/tracer.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "ray_trace_data_grid", + "path": "PyAutoLens/autolens/lens/tracer_util.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "grids_and_structures", + "path": "PyAutoArray/autoarray/structures/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "grids_and_structures", + "path": "PyAutoArray/autoarray/operators/over_sampling/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "grids_and_structures", + "path": "PyAutoArray/autoarray/geometry/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "inversion_other", + "path": "PyAutoArray/autoarray/inversion/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "fit_imaging_other", + "path": "PyAutoLens/autolens/imaging/fit_imaging.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "fit_imaging_other", + "path": "PyAutoGalaxy/autogalaxy/imaging/fit_imaging.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "fit_imaging_other", + "path": "PyAutoArray/autoarray/fit/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "analysis_other", + "path": "PyAutoLens/autolens/analysis/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "analysis_other", + "path": "PyAutoGalaxy/autogalaxy/analysis/", + "lines": null, + "requires": null, + "function": null + } + ], + "trace_timing": { + "traced_wall_ms": 45.255061330008175, + "untraced_wall_ms": 44.026208385002974, + "profiler_overhead_ms": 1.228852945005201, + "profiler_overhead_pct": 2.791185046550127 + }, + "jit_phases": { + "b_s3_pdip_library_likelihood_jit": { + "lower_s": 1.5454883960010193, + "compile_s": 4.5070553999976255, + "first_call_s": 0.1545916059985757, + "steady_per_call_s": 0.05084114830024191 + }, + "d_s3_certified_fallback_library_likelihood_jit": { + "lower_s": 0.48696191500130226, + "compile_s": 4.264618340999732, + "first_call_s": 0.041661073999421205, + "steady_per_call_s": 0.031498834599915426 + } + }, + "peak_bytes": { + "after_setup": 85108992, + "after_routes": 1181653248, + "after_all": 2748252160, + "note": "jax.devices()[0].memory_stats()['peak_bytes_in_use']; None on a backend that does not report it (CPU). Process-wide high-water marks." + }, + "note": "Every stage row is a MEASURED sum of GPU kernel durations joined to library source through the optimized HLO of ONE program \u2014 not arithmetic across compilations. The rows attribute the command-buffers-OFF program: kernel time is the same as production, the launch overhead the CUDA graphs remove is not, and command_buffers.* carries both walls and their delta. sum_ms = kernel rows + measured device_idle_ms; the residual against the wall is host_outside_span_ms and is reported, not absorbed. mixed_fusion.prorated_estimate_ms is an ESTIMATE and is never part of the table. No row may be quoted if reconciliation_pct is outside 5 % or unjoined_ms is non-zero.", + "vmap": { + "batch": 20, + "lanes_mode": "captured", + "arms": [ + "vmap", + "scalar" + ], + "draw_seed": 0, + "fallback": true, + "composition": "jax.jit(jax.vmap(fn))", + "composition_provenance": "Current Fitness._vmap after PyAutoFit#1638. Array 343376 used the retired jax.vmap(jax.jit(fn)) composition and is historical evidence only.", + "headline_arm": "scalar", + "lane_rtol": 1e-09, + "lanes": [ + { + "lane": 0, + "draw_name": "call00008_lane00", + "draw_kind": "captured", + "offsets": {}, + "log_likelihood_vmap": 19851.594186486334, + "log_likelihood_scalar": 19851.594184618338, + "log_likelihood_library_pdip": 19851.59418648492, + "log_likelihood_library_pdip_scalar": 19851.59418458838, + "rel_diff_vmap_vs_library_pdip": 7.128766297883194e-14, + "rel_diff_scalar_vs_library_pdip_scalar": 1.5091360017654646e-12, + "abs_diff_nats": 1.867996616056189e-06, + "rel_diff": 9.409806581194237e-11, + "rel_diff_scalar_vs_library_pdip": 9.402677814011581e-11, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 1.8965401977766305e-06, + "rel_diff_library_pdip_vmap_vs_scalar": 9.55359141508642e-11, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 1, + "draw_name": "call00008_lane01", + "draw_kind": "captured", + "offsets": {}, + "log_likelihood_vmap": -10958.375812184677, + "log_likelihood_scalar": -10958.374356418622, + "log_likelihood_library_pdip": -10958.375876322658, + "log_likelihood_library_pdip_scalar": -10958.37431769741, + "rel_diff_vmap_vs_library_pdip": 5.852872891245808e-09, + "rel_diff_scalar_vs_library_pdip_scalar": 3.5334815125361e-09, + "abs_diff_nats": 0.001455766054277774, + "rel_diff": 1.3284507418065085e-07, + "rel_diff_scalar_vs_library_pdip": 1.3869792864656004e-07, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 0.001558625248435419, + "rel_diff_library_pdip_vmap_vs_scalar": 1.4223142988630086e-07, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": true, + "passes": 0, + "pdip_iter": null + }, + { + "lane": 2, + "draw_name": "call00008_lane02", + "draw_kind": "captured", + "offsets": {}, + "log_likelihood_vmap": 25613.440565270328, + "log_likelihood_scalar": 25613.440570503117, + "log_likelihood_library_pdip": 25613.440565365403, + "log_likelihood_library_pdip_scalar": 25613.4405711944, + "rel_diff_vmap_vs_library_pdip": 3.711915933429714e-12, + "rel_diff_scalar_vs_library_pdip_scalar": 2.6989012079204534e-11, + "abs_diff_nats": 5.232788680586964e-06, + "rel_diff": 2.0429854654564192e-10, + "rel_diff_scalar_vs_library_pdip": 2.0058663065319176e-10, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 5.828995199408382e-06, + "rel_diff_library_pdip_vmap_vs_scalar": 2.2757564268674766e-10, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 2, + "pdip_iter": null + }, + { + "lane": 3, + "draw_name": "call00008_lane03", + "draw_kind": "captured", + "offsets": {}, + "log_likelihood_vmap": 27440.977846751717, + "log_likelihood_scalar": 27440.977846751804, + "log_likelihood_library_pdip": 27440.977846751717, + "log_likelihood_library_pdip_scalar": 27440.977846751797, + "rel_diff_vmap_vs_library_pdip": 0.0, + "rel_diff_scalar_vs_library_pdip_scalar": 2.651493563683149e-16, + "abs_diff_nats": 8.731149137020111e-11, + "rel_diff": 3.1817922764197776e-15, + "rel_diff_scalar_vs_library_pdip": 3.181792276419788e-15, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 8.003553375601768e-11, + "rel_diff_library_pdip_vmap_vs_scalar": 2.9166429200514636e-15, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 4, + "pdip_iter": null + }, + { + "lane": 4, + "draw_name": "call00008_lane04", + "draw_kind": "captured", + "offsets": {}, + "log_likelihood_vmap": 19664.888364316696, + "log_likelihood_scalar": 19664.888362180212, + "log_likelihood_library_pdip": 19664.888364316696, + "log_likelihood_library_pdip_scalar": 19664.888362180212, + "rel_diff_vmap_vs_library_pdip": 0.0, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 2.1364830899983644e-06, + "rel_diff": 1.0864455727637278e-10, + "rel_diff_scalar_vs_library_pdip": 1.0864455726456913e-10, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 2.1364830899983644e-06, + "rel_diff_library_pdip_vmap_vs_scalar": 1.0864455727637278e-10, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 5, + "draw_name": "call00008_lane05", + "draw_kind": "captured", + "offsets": {}, + "log_likelihood_vmap": 19661.77570330541, + "log_likelihood_scalar": 19661.775700753395, + "log_likelihood_library_pdip": 19661.77570330541, + "log_likelihood_library_pdip_scalar": 19661.775700753395, + "rel_diff_vmap_vs_library_pdip": 0.0, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 2.552016667323187e-06, + "rel_diff": 1.2979583869555583e-10, + "rel_diff_scalar_vs_library_pdip": 1.2979583867870887e-10, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 2.552016667323187e-06, + "rel_diff_library_pdip_vmap_vs_scalar": 1.2979583869555583e-10, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 6, + "draw_name": "call00008_lane06", + "draw_kind": "captured", + "offsets": {}, + "log_likelihood_vmap": 19673.09904303837, + "log_likelihood_scalar": 19673.0990419592, + "log_likelihood_library_pdip": 19673.09904303841, + "log_likelihood_library_pdip_scalar": 19673.099041959198, + "rel_diff_vmap_vs_library_pdip": 2.0341364006993936e-15, + "rel_diff_scalar_vs_library_pdip_scalar": 1.8492149098281647e-16, + "abs_diff_nats": 1.0791700333356857e-06, + "rel_diff": 5.4855111085142664e-11, + "rel_diff_scalar_vs_library_pdip": 5.485714521853417e-11, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 1.0792136890813708e-06, + "rel_diff_library_pdip_vmap_vs_scalar": 5.485733014303447e-11, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 7, + "draw_name": "call00008_lane07", + "draw_kind": "captured", + "offsets": {}, + "log_likelihood_vmap": -138594.96847595746, + "log_likelihood_scalar": -138594.4868841463, + "log_likelihood_library_pdip": -138594.87238496228, + "log_likelihood_library_pdip_scalar": -138594.49976829393, + "rel_diff_vmap_vs_library_pdip": 6.933228735609044e-07, + "rel_diff_scalar_vs_library_pdip_scalar": 9.296290734042179e-08, + "abs_diff_nats": 0.4815918111708015, + "rel_diff": 3.474826611056853e-06, + "rel_diff_scalar_vs_library_pdip": 2.7814940722863277e-06, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 0.3726166683482006, + "rel_diff_library_pdip_vmap_vs_scalar": 2.6885386431002047e-06, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": true, + "passes": 1, + "pdip_iter": null + }, + { + "lane": 8, + "draw_name": "call00008_lane08", + "draw_kind": "captured", + "offsets": {}, + "log_likelihood_vmap": 29346.07130080086, + "log_likelihood_scalar": 29346.071300927597, + "log_likelihood_library_pdip": 29346.071300804884, + "log_likelihood_library_pdip_scalar": 29346.071300937972, + "rel_diff_vmap_vs_library_pdip": 1.3710879795119552e-13, + "rel_diff_scalar_vs_library_pdip_scalar": 3.535572258182968e-13, + "abs_diff_nats": 1.26736267702654e-07, + "rel_diff": 4.318679199101108e-12, + "rel_diff_scalar_vs_library_pdip": 4.1815704011679715e-12, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 1.3308817869983613e-07, + "rel_diff_library_pdip_vmap_vs_scalar": 4.535127626967304e-12, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 2, + "pdip_iter": null + }, + { + "lane": 9, + "draw_name": "call00008_lane09", + "draw_kind": "captured", + "offsets": {}, + "log_likelihood_vmap": 19677.044941109525, + "log_likelihood_scalar": 19677.04493926127, + "log_likelihood_library_pdip": 19677.044941109525, + "log_likelihood_library_pdip_scalar": 19677.044939261974, + "rel_diff_vmap_vs_library_pdip": 0.0, + "rel_diff_scalar_vs_library_pdip_scalar": 3.5682690766626634e-14, + "abs_diff_nats": 1.8482533050701022e-06, + "rel_diff": 9.392941423751663e-11, + "rel_diff_scalar_vs_library_pdip": 9.39294142286939e-11, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 1.8475511751603335e-06, + "rel_diff_library_pdip_vmap_vs_scalar": 9.389373154674665e-11, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 10, + "draw_name": "call00008_lane10", + "draw_kind": "captured", + "offsets": {}, + "log_likelihood_vmap": 28165.25603001419, + "log_likelihood_scalar": 28165.256030015575, + "log_likelihood_library_pdip": 28165.25603001424, + "log_likelihood_library_pdip_scalar": 28165.256030015487, + "rel_diff_vmap_vs_library_pdip": 1.8083167163475712e-15, + "rel_diff_scalar_vs_library_pdip_scalar": 3.0999715137385565e-15, + "abs_diff_nats": 1.3860699255019426e-09, + "rel_diff": 4.9212047780599427e-14, + "rel_diff_scalar_vs_library_pdip": 4.740373106425419e-14, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 1.2478267308324575e-09, + "rel_diff_library_pdip_vmap_vs_scalar": 4.4303759550513534e-14, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 4, + "pdip_iter": null + }, + { + "lane": 11, + "draw_name": "call00008_lane11", + "draw_kind": "captured", + "offsets": {}, + "log_likelihood_vmap": 19843.379608088013, + "log_likelihood_scalar": 19843.379606979215, + "log_likelihood_library_pdip": 19843.379608088027, + "log_likelihood_library_pdip_scalar": 19843.37960675095, + "rel_diff_vmap_vs_library_pdip": 7.333385499733921e-16, + "rel_diff_scalar_vs_library_pdip_scalar": 1.1503331830295235e-11, + "abs_diff_nats": 1.1087977327406406e-06, + "rel_diff": 5.5877464156894916e-11, + "rel_diff_scalar_vs_library_pdip": 5.587819749232256e-11, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 1.3370772649068385e-06, + "rel_diff_library_pdip_vmap_vs_scalar": 6.738152932638296e-11, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 12, + "draw_name": "call00008_lane12", + "draw_kind": "captured", + "offsets": {}, + "log_likelihood_vmap": 27027.609847821266, + "log_likelihood_scalar": 27027.609847821303, + "log_likelihood_library_pdip": 27027.60984782127, + "log_likelihood_library_pdip_scalar": 27027.609847821303, + "rel_diff_vmap_vs_library_pdip": 1.3460231324839016e-16, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 3.637978807091713e-11, + "rel_diff": 1.3460231324838999e-15, + "rel_diff_scalar_vs_library_pdip": 1.2114208192355113e-15, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 3.2741809263825417e-11, + "rel_diff_library_pdip_vmap_vs_scalar": 1.2114208192355099e-15, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 5, + "pdip_iter": null + }, + { + "lane": 13, + "draw_name": "call00008_lane13", + "draw_kind": "captured", + "offsets": {}, + "log_likelihood_vmap": 19663.70492707598, + "log_likelihood_scalar": 19663.704925197264, + "log_likelihood_library_pdip": 19663.70492707598, + "log_likelihood_library_pdip_scalar": 19663.704925197264, + "rel_diff_vmap_vs_library_pdip": 0.0, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 1.8787177396006882e-06, + "rel_diff": 9.554240906011973e-11, + "rel_diff_scalar_vs_library_pdip": 9.554240905099138e-11, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 1.8787177396006882e-06, + "rel_diff_library_pdip_vmap_vs_scalar": 9.554240906011973e-11, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 14, + "draw_name": "call00008_lane14", + "draw_kind": "captured", + "offsets": {}, + "log_likelihood_vmap": 29194.371371494042, + "log_likelihood_scalar": 29194.371405171616, + "log_likelihood_library_pdip": 29194.371375409144, + "log_likelihood_library_pdip_scalar": 29194.371408436054, + "rel_diff_vmap_vs_library_pdip": 1.3410468039807402e-10, + "rel_diff_scalar_vs_library_pdip_scalar": 1.1181739019028348e-10, + "abs_diff_nats": 3.3677573810564354e-05, + "rel_diff": 1.1535639299498179e-09, + "rel_diff_scalar_vs_library_pdip": 1.0194592507277552e-09, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 3.302691038697958e-05, + "rel_diff_library_pdip_vmap_vs_scalar": 1.1312766397647481e-09, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 2, + "pdip_iter": null + }, + { + "lane": 15, + "draw_name": "call00008_lane15", + "draw_kind": "captured", + "offsets": {}, + "log_likelihood_vmap": -101907.24804153161, + "log_likelihood_scalar": -101907.22229733448, + "log_likelihood_library_pdip": -101907.247822813, + "log_likelihood_library_pdip_scalar": -101907.22432394432, + "rel_diff_vmap_vs_library_pdip": 2.146251698400429e-09, + "rel_diff_scalar_vs_library_pdip_scalar": 1.9886812314253562e-08, + "abs_diff_nats": 0.025744197133462876, + "rel_diff": 2.526238725097333e-07, + "rel_diff_scalar_vs_library_pdip": 2.504775575347223e-07, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 0.023498868686147034, + "rel_diff_library_pdip_vmap_vs_scalar": 2.305908029782899e-07, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": true, + "passes": 1, + "pdip_iter": null + }, + { + "lane": 16, + "draw_name": "call00008_lane16", + "draw_kind": "captured", + "offsets": {}, + "log_likelihood_vmap": -31483.763420418487, + "log_likelihood_scalar": -31483.76057136085, + "log_likelihood_library_pdip": -31483.763487254226, + "log_likelihood_library_pdip_scalar": -31483.760853352404, + "rel_diff_vmap_vs_library_pdip": 2.122863705985548e-09, + "rel_diff_scalar_vs_library_pdip_scalar": 8.956730258698351e-09, + "abs_diff_nats": 0.0028490576369222254, + "rel_diff": 9.049292667769383e-08, + "rel_diff_scalar_vs_library_pdip": 9.26157820026062e-08, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 0.0026339018222643062, + "rel_diff_library_pdip_vmap_vs_scalar": 8.365905949205707e-08, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": true, + "passes": 2, + "pdip_iter": null + }, + { + "lane": 17, + "draw_name": "call00008_lane17", + "draw_kind": "captured", + "offsets": {}, + "log_likelihood_vmap": -171697.7673404122, + "log_likelihood_scalar": -171697.7278754632, + "log_likelihood_library_pdip": -171697.76693512418, + "log_likelihood_library_pdip_scalar": -171697.7290058413, + "rel_diff_vmap_vs_library_pdip": 2.3604733923133895e-09, + "rel_diff_scalar_vs_library_pdip_scalar": 6.583535572392634e-09, + "abs_diff_nats": 0.03946494898991659, + "rel_diff": 2.2985131765134096e-07, + "rel_diff_scalar_vs_library_pdip": 2.274907919699693e-07, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 0.03792928287293762, + "rel_diff_library_pdip_vmap_vs_scalar": 2.209073066519548e-07, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": true, + "passes": 0, + "pdip_iter": null + }, + { + "lane": 18, + "draw_name": "call00008_lane18", + "draw_kind": "captured", + "offsets": {}, + "log_likelihood_vmap": 21885.39202805571, + "log_likelihood_scalar": 21885.392028027192, + "log_likelihood_library_pdip": 21885.392028055823, + "log_likelihood_library_pdip_scalar": 21885.39202803019, + "rel_diff_vmap_vs_library_pdip": 5.153087633763607e-15, + "rel_diff_scalar_vs_library_pdip_scalar": 1.3697239387826405e-13, + "abs_diff_nats": 2.8518115868791938e-08, + "rel_diff": 1.3030662568105084e-12, + "rel_diff_scalar_vs_library_pdip": 1.3082193444425675e-12, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 2.563319867476821e-08, + "rel_diff_library_pdip_vmap_vs_scalar": 1.1712469505658357e-12, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 19, + "draw_name": "call00008_lane19", + "draw_kind": "captured", + "offsets": {}, + "log_likelihood_vmap": 17967.17162258647, + "log_likelihood_scalar": 17967.17164893869, + "log_likelihood_library_pdip": 17967.171622357222, + "log_likelihood_library_pdip_scalar": 17967.17165006061, + "rel_diff_vmap_vs_library_pdip": 1.2759227737526779e-11, + "rel_diff_scalar_vs_library_pdip_scalar": 6.244276751783778e-11, + "abs_diff_nats": 2.6352219720138237e-05, + "rel_diff": 1.4666871467048542e-09, + "rel_diff_scalar_vs_library_pdip": 1.479446376612266e-09, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 2.770338687696494e-05, + "rel_diff_library_pdip_vmap_vs_scalar": 1.5418891418489615e-09, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 1, + "pdip_iter": null + } + ], + "lane_pins": [ + { + "pin": "lane 0: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 19851.594186486334, + "reference_value": 19851.59418648492, + "rel_diff": 7.128766297883194e-14, + "abs_diff_nats": 1.4151737559586763e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 0: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 19851.594184618338, + "reference_value": 19851.59418458838, + "rel_diff": 1.5091360017654646e-12, + "abs_diff_nats": 2.9958755476400256e-08, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 0: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 19851.594186486334, + "reference_value": 19851.594184618338, + "rel_diff": 9.409806581194237e-11, + "abs_diff_nats": 1.867996616056189e-06, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 0: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 19851.59418648492, + "reference_value": 19851.59418458838, + "rel_diff": 9.55359141508642e-11, + "abs_diff_nats": 1.8965401977766305e-06, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 1: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -10958.375812184677, + "reference_value": -10958.375876322658, + "rel_diff": 5.852872891245808e-09, + "abs_diff_nats": 6.413798109861091e-05, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 1: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -10958.374356418622, + "reference_value": -10958.37431769741, + "rel_diff": 3.5334815125361e-09, + "abs_diff_nats": 3.87212130590342e-05, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 1: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -10958.375812184677, + "reference_value": -10958.374356418622, + "rel_diff": 1.3284507418065085e-07, + "abs_diff_nats": 0.001455766054277774, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 1: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -10958.375876322658, + "reference_value": -10958.37431769741, + "rel_diff": 1.4223142988630086e-07, + "abs_diff_nats": 0.001558625248435419, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 2: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 25613.440565270328, + "reference_value": 25613.440565365403, + "rel_diff": 3.711915933429714e-12, + "abs_diff_nats": 9.507493814453483e-08, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 2: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 25613.440570503117, + "reference_value": 25613.4405711944, + "rel_diff": 2.6989012079204534e-11, + "abs_diff_nats": 6.912814569659531e-07, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 2: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 25613.440565270328, + "reference_value": 25613.440570503117, + "rel_diff": 2.0429854654564192e-10, + "abs_diff_nats": 5.232788680586964e-06, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 2: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 25613.440565365403, + "reference_value": 25613.4405711944, + "rel_diff": 2.2757564268674766e-10, + "abs_diff_nats": 5.828995199408382e-06, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 3: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 27440.977846751717, + "reference_value": 27440.977846751717, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 3: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 27440.977846751804, + "reference_value": 27440.977846751797, + "rel_diff": 2.651493563683149e-16, + "abs_diff_nats": 7.275957614183426e-12, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 3: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 27440.977846751717, + "reference_value": 27440.977846751804, + "rel_diff": 3.1817922764197776e-15, + "abs_diff_nats": 8.731149137020111e-11, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 3: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 27440.977846751717, + "reference_value": 27440.977846751797, + "rel_diff": 2.9166429200514636e-15, + "abs_diff_nats": 8.003553375601768e-11, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 4: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 19664.888364316696, + "reference_value": 19664.888364316696, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 4: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 19664.888362180212, + "reference_value": 19664.888362180212, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 4: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 19664.888364316696, + "reference_value": 19664.888362180212, + "rel_diff": 1.0864455727637278e-10, + "abs_diff_nats": 2.1364830899983644e-06, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 4: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 19664.888364316696, + "reference_value": 19664.888362180212, + "rel_diff": 1.0864455727637278e-10, + "abs_diff_nats": 2.1364830899983644e-06, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 5: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 19661.77570330541, + "reference_value": 19661.77570330541, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 5: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 19661.775700753395, + "reference_value": 19661.775700753395, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 5: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 19661.77570330541, + "reference_value": 19661.775700753395, + "rel_diff": 1.2979583869555583e-10, + "abs_diff_nats": 2.552016667323187e-06, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 5: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 19661.77570330541, + "reference_value": 19661.775700753395, + "rel_diff": 1.2979583869555583e-10, + "abs_diff_nats": 2.552016667323187e-06, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 6: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 19673.09904303837, + "reference_value": 19673.09904303841, + "rel_diff": 2.0341364006993936e-15, + "abs_diff_nats": 4.001776687800884e-11, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 6: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 19673.0990419592, + "reference_value": 19673.099041959198, + "rel_diff": 1.8492149098281647e-16, + "abs_diff_nats": 3.637978807091713e-12, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 6: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 19673.09904303837, + "reference_value": 19673.0990419592, + "rel_diff": 5.4855111085142664e-11, + "abs_diff_nats": 1.0791700333356857e-06, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 6: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 19673.09904303841, + "reference_value": 19673.099041959198, + "rel_diff": 5.485733014303447e-11, + "abs_diff_nats": 1.0792136890813708e-06, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 7: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -138594.96847595746, + "reference_value": -138594.87238496228, + "rel_diff": 6.933228735609044e-07, + "abs_diff_nats": 0.09609099518274888, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 7: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -138594.4868841463, + "reference_value": -138594.49976829393, + "rel_diff": 9.296290734042179e-08, + "abs_diff_nats": 0.012884147639852017, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 7: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -138594.96847595746, + "reference_value": -138594.4868841463, + "rel_diff": 3.474826611056853e-06, + "abs_diff_nats": 0.4815918111708015, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 7: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -138594.87238496228, + "reference_value": -138594.49976829393, + "rel_diff": 2.6885386431002047e-06, + "abs_diff_nats": 0.3726166683482006, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 8: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 29346.07130080086, + "reference_value": 29346.071300804884, + "rel_diff": 1.3710879795119552e-13, + "abs_diff_nats": 4.0236045606434345e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 8: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 29346.071300927597, + "reference_value": 29346.071300937972, + "rel_diff": 3.535572258182968e-13, + "abs_diff_nats": 1.0375515557825565e-08, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 8: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 29346.07130080086, + "reference_value": 29346.071300927597, + "rel_diff": 4.318679199101108e-12, + "abs_diff_nats": 1.26736267702654e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 8: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 29346.071300804884, + "reference_value": 29346.071300937972, + "rel_diff": 4.535127626967304e-12, + "abs_diff_nats": 1.3308817869983613e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 9: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 19677.044941109525, + "reference_value": 19677.044941109525, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 9: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 19677.04493926127, + "reference_value": 19677.044939261974, + "rel_diff": 3.5682690766626634e-14, + "abs_diff_nats": 7.021299097687006e-10, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 9: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 19677.044941109525, + "reference_value": 19677.04493926127, + "rel_diff": 9.392941423751663e-11, + "abs_diff_nats": 1.8482533050701022e-06, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 9: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 19677.044941109525, + "reference_value": 19677.044939261974, + "rel_diff": 9.389373154674665e-11, + "abs_diff_nats": 1.8475511751603335e-06, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 10: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 28165.25603001419, + "reference_value": 28165.25603001424, + "rel_diff": 1.8083167163475712e-15, + "abs_diff_nats": 5.093170329928398e-11, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 10: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 28165.256030015575, + "reference_value": 28165.256030015487, + "rel_diff": 3.0999715137385565e-15, + "abs_diff_nats": 8.731149137020111e-11, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 10: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 28165.25603001419, + "reference_value": 28165.256030015575, + "rel_diff": 4.9212047780599427e-14, + "abs_diff_nats": 1.3860699255019426e-09, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 10: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 28165.25603001424, + "reference_value": 28165.256030015487, + "rel_diff": 4.4303759550513534e-14, + "abs_diff_nats": 1.2478267308324575e-09, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 11: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 19843.379608088013, + "reference_value": 19843.379608088027, + "rel_diff": 7.333385499733921e-16, + "abs_diff_nats": 1.4551915228366852e-11, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 11: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 19843.379606979215, + "reference_value": 19843.37960675095, + "rel_diff": 1.1503331830295235e-11, + "abs_diff_nats": 2.2826498025096953e-07, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 11: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 19843.379608088013, + "reference_value": 19843.379606979215, + "rel_diff": 5.5877464156894916e-11, + "abs_diff_nats": 1.1087977327406406e-06, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 11: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 19843.379608088027, + "reference_value": 19843.37960675095, + "rel_diff": 6.738152932638296e-11, + "abs_diff_nats": 1.3370772649068385e-06, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 12: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 27027.609847821266, + "reference_value": 27027.60984782127, + "rel_diff": 1.3460231324839016e-16, + "abs_diff_nats": 3.637978807091713e-12, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 12: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 27027.609847821303, + "reference_value": 27027.609847821303, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 12: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 27027.609847821266, + "reference_value": 27027.609847821303, + "rel_diff": 1.3460231324838999e-15, + "abs_diff_nats": 3.637978807091713e-11, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 12: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 27027.60984782127, + "reference_value": 27027.609847821303, + "rel_diff": 1.2114208192355099e-15, + "abs_diff_nats": 3.2741809263825417e-11, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 13: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 19663.70492707598, + "reference_value": 19663.70492707598, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 13: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 19663.704925197264, + "reference_value": 19663.704925197264, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 13: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 19663.70492707598, + "reference_value": 19663.704925197264, + "rel_diff": 9.554240906011973e-11, + "abs_diff_nats": 1.8787177396006882e-06, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 13: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 19663.70492707598, + "reference_value": 19663.704925197264, + "rel_diff": 9.554240906011973e-11, + "abs_diff_nats": 1.8787177396006882e-06, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 14: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 29194.371371494042, + "reference_value": 29194.371375409144, + "rel_diff": 1.3410468039807402e-10, + "abs_diff_nats": 3.915101842721924e-06, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 14: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 29194.371405171616, + "reference_value": 29194.371408436054, + "rel_diff": 1.1181739019028348e-10, + "abs_diff_nats": 3.26443841913715e-06, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 14: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 29194.371371494042, + "reference_value": 29194.371405171616, + "rel_diff": 1.1535639299498179e-09, + "abs_diff_nats": 3.3677573810564354e-05, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 14: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 29194.371375409144, + "reference_value": 29194.371408436054, + "rel_diff": 1.1312766397647481e-09, + "abs_diff_nats": 3.302691038697958e-05, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 15: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -101907.24804153161, + "reference_value": -101907.247822813, + "rel_diff": 2.146251698400429e-09, + "abs_diff_nats": 0.00021871860371902585, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 15: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -101907.22229733448, + "reference_value": -101907.22432394432, + "rel_diff": 1.9886812314253562e-08, + "abs_diff_nats": 0.002026609843596816, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 15: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -101907.24804153161, + "reference_value": -101907.22229733448, + "rel_diff": 2.526238725097333e-07, + "abs_diff_nats": 0.025744197133462876, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 15: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -101907.247822813, + "reference_value": -101907.22432394432, + "rel_diff": 2.305908029782899e-07, + "abs_diff_nats": 0.023498868686147034, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 16: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -31483.763420418487, + "reference_value": -31483.763487254226, + "rel_diff": 2.122863705985548e-09, + "abs_diff_nats": 6.6835738834925e-05, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 16: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -31483.76057136085, + "reference_value": -31483.760853352404, + "rel_diff": 8.956730258698351e-09, + "abs_diff_nats": 0.0002819915534928441, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 16: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -31483.763420418487, + "reference_value": -31483.76057136085, + "rel_diff": 9.049292667769383e-08, + "abs_diff_nats": 0.0028490576369222254, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 16: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -31483.763487254226, + "reference_value": -31483.760853352404, + "rel_diff": 8.365905949205707e-08, + "abs_diff_nats": 0.0026339018222643062, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 17: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -171697.7673404122, + "reference_value": -171697.76693512418, + "rel_diff": 2.3604733923133895e-09, + "abs_diff_nats": 0.0004052880103699863, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 17: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -171697.7278754632, + "reference_value": -171697.7290058413, + "rel_diff": 6.583535572392634e-09, + "abs_diff_nats": 0.0011303781066089869, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 17: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -171697.7673404122, + "reference_value": -171697.7278754632, + "rel_diff": 2.2985131765134096e-07, + "abs_diff_nats": 0.03946494898991659, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 17: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -171697.76693512418, + "reference_value": -171697.7290058413, + "rel_diff": 2.209073066519548e-07, + "abs_diff_nats": 0.03792928287293762, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 18: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 21885.39202805571, + "reference_value": 21885.392028055823, + "rel_diff": 5.153087633763607e-15, + "abs_diff_nats": 1.127773430198431e-10, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 18: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 21885.392028027192, + "reference_value": 21885.39202803019, + "rel_diff": 1.3697239387826405e-13, + "abs_diff_nats": 2.9976945370435715e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 18: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 21885.39202805571, + "reference_value": 21885.392028027192, + "rel_diff": 1.3030662568105084e-12, + "abs_diff_nats": 2.8518115868791938e-08, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 18: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 21885.392028055823, + "reference_value": 21885.39202803019, + "rel_diff": 1.1712469505658357e-12, + "abs_diff_nats": 2.563319867476821e-08, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 19: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 17967.17162258647, + "reference_value": 17967.171622357222, + "rel_diff": 1.2759227737526779e-11, + "abs_diff_nats": 2.292472345288843e-07, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 19: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 17967.17164893869, + "reference_value": 17967.17165006061, + "rel_diff": 6.244276751783778e-11, + "abs_diff_nats": 1.1219199222978204e-06, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 19: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 17967.17162258647, + "reference_value": 17967.17164893869, + "rel_diff": 1.4666871467048542e-09, + "abs_diff_nats": 2.6352219720138237e-05, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 19: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 17967.171622357222, + "reference_value": 17967.17165006061, + "rel_diff": 1.5418891418489615e-09, + "abs_diff_nats": 2.770338687696494e-05, + "within_rtol": false, + "status": "RECORDED" + } + ], + "lanes_failed": 5, + "arm_rows": { + "vmap": { + "arm": "vmap", + "program": "jax.jit(jax.vmap(fn))", + "stands_for": "Nautilus(use_jax_vmap=True) \u2014 Fitness._vmap", + "hlo_source": "jax.jit(jax.vmap(fn)).lower(batched_tree) \u2014 the exact current Fitness._vmap composition (PyAutoFit#1638)", + "batch_wall_ms": 681.3387948001036, + "wall_production_nesting_ms": 681.3387948001036, + "wall_aot_command_buffers_on_ms": 680.8388437999383, + "wall_aot_command_buffers_off_ms": 681.9248232000973, + "command_buffer_delta_ms": 1.0859794001589762, + "production_nesting_vs_aot_on_delta_ms": 0.4999510001653107, + "production_nesting_vs_aot_on_delta_pct": 0.07343162111241397, + "wall_per_lane_ms": 34.06693974000518, + "wall_per_lane_command_buffers_off_ms": 34.096241160004865, + "traced_batch_wall_ms": 694.4553516001179, + "untraced_batch_wall_ms": 682.3508086999936, + "traced_wall_per_lane_ms": 34.72276758000589, + "callback_count_per_call": 1.0, + "callback_count_per_lane": 0.05, + "callback_expectation": "B per batched call \u2014 the qhull pure_callback is vmap_method='sequential'", + "host_qhull_ms": 4.979791300866054, + "host_tables_ms": 0.19874719946528785, + "host_qhull_ms_per_lane": 0.24898956504330272, + "host_tables_ms_per_lane": 0.009937359973264392, + "host_callback_probe": { + "calls": 10, + "qhull_ms_total": 49.797913008660544, + "tables_ms_total": 1.9874719946528785, + "total_ms_total": 51.78538500331342, + "qhull_ms_mean": 4.979791300866054, + "tables_ms_mean": 0.19874719946528785, + "total_ms_mean": 5.178538500331342, + "non_finite_calls": 0, + "n_points": [ + 1500 + ] + }, + "host_callback_records_first": [ + { + "n_points": 1500, + "qhull_ms": 4.746190999867395, + "tables_ms": 0.1888879996840842, + "total_ms": 4.935078999551479, + "finite": true + }, + { + "n_points": 1500, + "qhull_ms": 5.062188000010792, + "tables_ms": 0.2048499991360586, + "total_ms": 5.267037999146851, + "finite": true + }, + { + "n_points": 1500, + "qhull_ms": 4.9739800015231594, + "tables_ms": 0.19955899915657938, + "total_ms": 5.173539000679739, + "finite": true + }, + { + "n_points": 1500, + "qhull_ms": 5.075878998468397, + "tables_ms": 0.2410790002613794, + "total_ms": 5.316957998729777, + "finite": true + } + ], + "device_idle_ms": 37.888499199999956, + "device_idle_ms_per_lane": 1.8944249599999978, + "trace": { + "parser": "ProfileData.from_file(xplane) + as_text() + stack_frame_index(proto field 17)", + "stage_audit": { + "mixed_fusion": [ + { + "instruction": "input_multiply_transpose_fusion", + "ms": 1.6149656000000001, + "opcode": "fusion", + "shape": "(f64[20,1500,1500]{2,1,0}, f64[20,1500,1500]{2,1,0}, f64[20,1500,1500]{2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1078 (AbstractInversion.log_det_curvature_reg_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:347 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "input_add_transpose_fusion", + "ms": 1.3402835, + "opcode": "fusion", + "shape": "(f64[20,1500,1500]{2,1,0}, f64[20,1500,1500]{2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:237 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:274 (_certified_positive_only_from)" + ] + }, + { + "instruction": "loop_divide_gather_fusion", + "ms": 1.0153548, + "opcode": "fusion", + "shape": "(f64[15361,1500]{1,0}, f64[15361,1,1,1500]{3,2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_transpose_fusion.6", + "ms": 0.5903727, + "opcode": "fusion", + "shape": "f64[20,1500,1500]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:297 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:274 (_certified_positive_only_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:496 (reconstruction_positive_only_from)" + ] + }, + { + "instruction": "loop_broadcast_fusion", + "ms": 0.34369320000000003, + "opcode": "fusion", + "shape": "f64[20,1500,1500]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:579", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:579 (pixel_splitted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:137 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_broadcast_fusion.6", + "ms": 0.23001630000000003, + "opcode": "fusion", + "shape": "f64[1500,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:303 (AbstractInversion.operated_mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:68 (InversionImagingMapping.data_vector)" + ] + } + ], + "pdip_solve": [ + { + "instruction": "cholesky.80", + "ms": 184.57365099994976, + "opcode": "custom-call", + "shape": "(f64[20,1500,1500]{1,2,0}, s32[20]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:106", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:106 (factorize_kkt)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:212 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "cholesky.60", + "ms": 113.14958399997901, + "opcode": "custom-call", + "shape": "(f64[20,1500,1500]{1,2,0}, s32[20]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "triangular-solve", + "ms": 47.45080380000236, + "opcode": "custom-call", + "shape": "(f64[20,1500,1]{1,2,0}, s8[320]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:213 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve.2", + "ms": 44.236492400003094, + "opcode": "custom-call", + "shape": "(f64[20,1500,1]{1,2,0}, s8[320]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:217 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve.3", + "ms": 43.190664000000254, + "opcode": "custom-call", + "shape": "(f64[20,1500,1]{1,2,0}, s8[320]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:217 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve.1", + "ms": 43.065406500001316, + "opcode": "custom-call", + "shape": "(f64[20,1500,1]{1,2,0}, s8[320]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:213 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + } + ], + "other": [ + { + "instruction": "copy.107", + "ms": 0.04176340000000012, + "opcode": "copy", + "shape": "f64[1,1024,2]{2,1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.92", + "ms": 0.037878699999999946, + "opcode": "copy", + "shape": "s32[20]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.91", + "ms": 0.034768100000000045, + "opcode": "copy", + "shape": "pred[20]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.93", + "ms": 0.033184200000000046, + "opcode": "copy", + "shape": "pred[20,1500]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.58", + "ms": 0.014691099999999993, + "opcode": "copy", + "shape": "s32[21361]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.105", + "ms": 0.0020832000000000003, + "opcode": "copy", + "shape": "s64[]", + "source": "", + "stack": [] + } + ], + "mesh_seed_argmin": [ + { + "instruction": "input_reduce_fusion", + "ms": 0.14378880000000016, + "opcode": "fusion", + "shape": "(f64[1024]{0}, s64[1024]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:191", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:191 (_nearest_vertex_seed_from..argmin_chunk)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)" + ] + }, + { + "instruction": "loop_dynamic_update_slice_fusion", + "ms": 0.04071049999999997, + "opcode": "fusion", + "shape": "s32[21,1024]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_add_fusion", + "ms": 0.03130249999999994, + "opcode": "fusion", + "shape": "s64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_broadcast_fusion.2", + "ms": 0.0019456, + "opcode": "fusion", + "shape": "s32[21,1024]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "border_relocator": [ + { + "instruction": "eigh.45", + "ms": 0.07453439999999996, + "opcode": "custom-call", + "shape": "(f64[2,2]{0,1}, f64[2]{0}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "custom-call.3", + "ms": 0.0079328, + "opcode": "custom-call", + "shape": "(f64[2,2]{1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_add_fusion.5", + "ms": 0.0028094999999999995, + "opcode": "fusion", + "shape": "f64[1500]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:458 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_reduce_fusion.29", + "ms": 0.0016032, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:256", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:256 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_multiply_fusion.4", + "ms": 0.0015456, + "opcode": "fusion", + "shape": "f64[2,2]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + } + ], + "regularization_H": [ + { + "instruction": "input_scatter_fusion.10", + "ms": 0.0036576000000000004, + "opcode": "fusion", + "shape": "f64[20,1500,1500]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:615", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:615 (pixel_splitted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:137 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_concatenate_fusion.8", + "ms": 0.0017504000000000003, + "opcode": "fusion", + "shape": "pred[3]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:94", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:94 (split_points_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:410 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + }, + { + "instruction": "wrapped_slice", + "ms": 0.0016415999999999998, + "opcode": "fusion", + "shape": "s32[1]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:94", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:94 (split_points_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:410 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + }, + { + "instruction": "wrapped_slice.1", + "ms": 0.0016127999999999997, + "opcode": "fusion", + "shape": "s32[1]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:90", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:90 (split_points_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:410 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + }, + { + "instruction": "loop_slice_fusion", + "ms": 0.0014944000000000001, + "opcode": "fusion", + "shape": "s32[1,1]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:94", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:94 (split_points_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:410 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + }, + { + "instruction": "loop_slice_fusion.1", + "ms": 0.0014944000000000001, + "opcode": "fusion", + "shape": "s32[1,1]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:90", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:90 (split_points_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:410 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + } + ], + "grids_and_structures": [ + { + "instruction": "loop_multiply_sine_fusion", + "ms": 0.0013568, + "opcode": "fusion", + "shape": "(f64[], f64[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/geometry/geometry_util.py:527", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/geometry/geometry_util.py:527 (transform_grid_2d_to_reference_frame)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/profiles/geometry_profiles.py:418 (EllProfile.transformed_to_reference_frame_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/structures/decorators/abstract.py:93 (AbstractMaker.evaluate_func)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/structures/decorators/abstract.py:112 (AbstractMaker.result)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/structures/decorators/to_grid.py:70 (to_grid..wrapper)" + ] + } + ], + "mesh_construction": [ + { + "instruction": "input_concatenate_fusion.7", + "ms": 0.0020448, + "opcode": "fusion", + "shape": "f64[1500,2]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:820", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:820 (InterpolatorDelaunay.mesh_grid_xy)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:847 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + } + ], + "mesh_qhull_callback": [ + { + "instruction": "pure_callback.4", + "ms": 0.0107361, + "opcode": "custom-call", + "shape": "(s32[3000,3]{1,0}, s32[3000,3]{1,0}, s32[1500]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:161", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:161 (_jax_delaunay_tables)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:405 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + } + ], + "mesh_locate_walk": [ + { + "instruction": "loop_reduce_fusion", + "ms": 0.022582399999999985, + "opcode": "fusion", + "shape": "(f64[21361]{0}, s64[21361]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:264", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:264 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:264 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)" + ] + }, + { + "instruction": "input_reduce_fusion.1", + "ms": 0.02226550000000002, + "opcode": "fusion", + "shape": "pred[196]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:288", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:288 (_walk_from_seed..cond)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)" + ] + }, + { + "instruction": "loop_or_select_fusion", + "ms": 0.019187199999999998, + "opcode": "fusion", + "shape": "(s32[21361]{0}, pred[21361]{0}, pred[21361]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:270", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:270 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)" + ] + }, + { + "instruction": "loop_select_fusion", + "ms": 0.017280000000000004, + "opcode": "fusion", + "shape": "s32[21361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:242", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:242 (_walk_from_seed..weights_of)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:262 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)" + ] + }, + { + "instruction": "input_reduce_fusion.2", + "ms": 0.014038600000000017, + "opcode": "fusion", + "shape": "pred[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:288", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:288 (_walk_from_seed..cond)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)" + ] + }, + { + "instruction": "while.67", + "ms": 0.01277440000000002, + "opcode": "while", + "shape": "(s32[], s32[21361]{0}, pred[21361]{0}, pred[21361]{0}, s32[3000,3]{1,0}, /*index=5*/f64[1500,2]{1,0}, f64[21361,2]{1,0}, s32[3000,3]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "mapping_matrix": [ + { + "instruction": "input_reduce_fusion.33", + "ms": 0.0028288, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:120 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + } + ], + "psf_convolution_mapping_matrix": [ + { + "instruction": "input_scatter_fusion", + "ms": 1.9807390000000002, + "opcode": "fusion", + "shape": "f64[1500,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:303 (AbstractInversion.operated_mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:68 (InversionImagingMapping.data_vector)" + ] + }, + { + "instruction": "fft.14.0", + "ms": 1.7599258999999998, + "opcode": "fft", + "shape": "f64[1500,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:303 (AbstractInversion.operated_mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:68 (InversionImagingMapping.data_vector)" + ] + }, + { + "instruction": "fft.10.0", + "ms": 1.3619858000000002, + "opcode": "fft", + "shape": "c128[1500,180,91]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:303 (AbstractInversion.operated_mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:68 (InversionImagingMapping.data_vector)" + ] + }, + { + "instruction": "fft.12.0", + "ms": 0.9813963000000001, + "opcode": "fft", + "shape": "c128[1500,91,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:303 (AbstractInversion.operated_mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:68 (InversionImagingMapping.data_vector)" + ] + }, + { + "instruction": "input_transpose_fusion.7", + "ms": 0.5144231, + "opcode": "fusion", + "shape": "c128[1500,91,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:303 (AbstractInversion.operated_mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:68 (InversionImagingMapping.data_vector)" + ] + }, + { + "instruction": "wrapped_transpose", + "ms": 0.4998599, + "opcode": "fusion", + "shape": "c128[1500,180,91]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:303 (AbstractInversion.operated_mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:68 (InversionImagingMapping.data_vector)" + ] + } + ], + "curvature_matrix_F": [ + { + "instruction": "custom-call.4", + "ms": 4.203084199999999, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "inversion_other": [ + { + "instruction": "cholesky.120", + "ms": 7.094396699999969, + "opcode": "custom-call", + "shape": "(f64[20,1500,1500]{1,2,0}, s32[20]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1078 (AbstractInversion.log_det_curvature_reg_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:347 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "cholesky.130", + "ms": 7.04603189999994, + "opcode": "custom-call", + "shape": "(f64[20,1500,1500]{1,2,0}, s32[20]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1157 (AbstractInversion.log_det_regularization_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:348 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "loop_reduce_window_fusion", + "ms": 0.002803199999999999, + "opcode": "fusion", + "shape": "s64[6,16]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "loop_reduce_window_fusion.1", + "ms": 0.0025792000000000002, + "opcode": "fusion", + "shape": "s64[94,16]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "loop_broadcast_convert_fusion", + "ms": 0.0023137, + "opcode": "fusion", + "shape": "(s32[1500]{0}, s64[1500]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527 (AbstractInversion.zeroed_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:567 (AbstractInversion.solve_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:684 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_reduce_window_fusion.2", + "ms": 0.0019424, + "opcode": "fusion", + "shape": "s64[6,16]{1,0}", + "source": "", + "stack": [] + } + ], + "fit_imaging_other": [ + { + "instruction": "custom-call.5", + "ms": 0.19922620000000002, + "opcode": "custom-call", + "shape": "(f64[20,15361]{1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:305", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:305 (AbstractNDArray.__add__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:57 (unwrap_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:35 (to_new_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:58 (AbstractFit.residual_map)" + ] + } + ], + "chi_squared_evidence": [ + { + "instruction": "loop_divide_fusion", + "ms": 0.00992, + "opcode": "fusion", + "shape": "f64[20,15361]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:352", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:352 (AbstractNDArray.__truediv__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:57 (unwrap_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:35 (to_new_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:78 (chi_squared_map_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:78 (AbstractFit.chi_squared_map)" + ] + } + ] + }, + "stage_audit_note": "The HLO instructions that contributed most of each stage's milliseconds, with their full source stack. A stage row is only as good as the rules that built it; this is how a reader checks a row against the HLO instead of trusting it.", + "untraced_wall_ms": 682.3508086999936, + "reconciliation_vs_untraced_pct": 1.7533787382472545, + "wall_basis": "wall_ms is the TRACED run's wall, the run these kernel durations came from. untraced_wall_ms is the same executable without the profiler; the difference is the profiler's overhead and belongs in neither the stages nor the idle row.", + "calls": 10, + "call_split": "per-call (first-instruction recurrence)", + "call_blocks": 10, + "events": 280930, + "streams": [ + "Stream #14(MemcpyD2H,Compute,MemcpyD2D,MemcpyH2D)" + ], + "per_stage_ms": { + "border_relocator": { + "median_ms": 0.08843150000000002, + "min_ms": 0.088065, + "max_ms": 0.088864 + }, + "chi_squared_evidence": { + "median_ms": 0.009904, + "min_ms": 0.009664, + "max_ms": 0.010208 + }, + "curvature_matrix_F": { + "median_ms": 4.200502999999999, + "min_ms": 4.197623, + "max_ms": 4.227127 + }, + "fit_imaging_other": { + "median_ms": 0.19910450000000002, + "min_ms": 0.198817, + "max_ms": 0.200162 + }, + "grids_and_structures": { + "median_ms": 0.001376, + "min_ms": 0.00128, + "max_ms": 0.001408 + }, + "inversion_other": { + "median_ms": 14.152702500000013, + "min_ms": 14.145536000000016, + "max_ms": 14.165342000000019 + }, + "mapping_matrix": { + "median_ms": 0.002816, + "min_ms": 0.002816, + "max_ms": 0.002848 + }, + "mesh_construction": { + "median_ms": 0.002048, + "min_ms": 0.002016, + "max_ms": 0.002048 + }, + "mesh_locate_walk": { + "median_ms": 0.1327525, + "min_ms": 0.132544, + "max_ms": 0.13283199999999995 + }, + "mesh_qhull_callback": { + "median_ms": 0.010672000000000001, + "min_ms": 0.01056, + "max_ms": 0.011008 + }, + "mesh_seed_argmin": { + "median_ms": 0.21777550000000007, + "min_ms": 0.21753500000000003, + "max_ms": 0.21792 + }, + "mixed_fusion": { + "median_ms": 5.893502499999999, + "min_ms": 5.8766359999999995, + "max_ms": 5.903090999999998 + }, + "other": { + "median_ms": 0.16984099999999996, + "min_ms": 0.16873600000000002, + "max_ms": 0.17056399999999997 + }, + "pdip_solve": { + "median_ms": 624.2326104999976, + "min_ms": 624.1598589999986, + "max_ms": 624.3635449999997 + }, + "psf_convolution_mapping_matrix": { + "median_ms": 7.098000000000001, + "min_ms": 7.092017, + "max_ms": 7.106384 + }, + "regularization_H": { + "median_ms": 0.014464000000000001, + "min_ms": 0.013856, + "max_ms": 0.015008 + } + }, + "stage_order": [ + "border_relocator", + "mesh_qhull_callback", + "mesh_seed_argmin", + "mesh_locate_walk", + "mesh_construction", + "mapping_matrix", + "psf_convolution_mapping_matrix", + "curvature_matrix_F", + "regularization_H", + "pdip_solve", + "chi_squared_evidence", + "grids_and_structures", + "inversion_other", + "fit_imaging_other", + "mixed_fusion", + "other" + ], + "mixed_fusion": { + "ms": 5.893502499999999, + "constituent_stage_sets": { + "pdip_solve + regularization_H": 2.2743494, + "curvature_reg_reduce_gather + inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter + regularization_H": 1.6149656000000001, + "curvature_matrix_F + psf_convolution_mapping_matrix": 1.0153548, + "pdip_solve + psf_convolution_mapping_matrix": 0.23001630000000003, + "inversion_other + pdip_solve": 0.22458929999999994, + "data_vector_D + pdip_solve + psf_convolution_mapping_matrix": 0.1386212, + "mapping_matrix + pdip_solve": 0.11091530000000002, + "inversion_other + mesh_construction + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin + regularization_H": 0.0736224, + "inversion_other + mapping_matrix + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin + pdip_solve": 0.0211586, + "inversion_other + regularization_H": 0.019177800000000005, + "inversion_other + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin + pdip_solve + regularization_H": 0.0172704, + "pdip_solve + ray_trace_data_grid": 0.013161699999999997, + "border_relocator + ray_trace_data_grid": 0.0123328, + "inversion_other + mapping_matrix + mesh_construction + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin": 0.010892800000000003, + "grids_and_structures + mass_profile_deflections + pdip_solve + ray_trace_data_grid": 0.0092384, + "border_relocator + pdip_solve + ray_trace_data_grid": 0.008454399999999999, + "inversion_other + mesh_construction + pdip_solve + regularization_H": 0.008252899999999999, + "inversion_other + pdip_solve + regularization_H": 0.0081601, + "chi_squared_evidence + pdip_solve": 0.0081153, + "inversion_other + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + pdip_solve + regularization_H": 0.0069728, + "inversion_other + mesh_dual_areas + mesh_locate_walk": 0.006716800000000001, + "border_relocator + pdip_solve": 0.0067008000000000015, + "curvature_reg_reduce_gather + inversion_other + mapped_reconstruction + reconstruction_scatter + regularization_H": 0.005484899999999999, + "inversion_other + mesh_construction + mesh_seed_argmin + pdip_solve + regularization_H": 0.0053504, + "inversion_other + mapped_reconstruction": 0.00488, + "inversion_other + pdip_solve + ray_trace_data_grid": 0.004863999999999999, + "inversion_other + mapped_reconstruction + reconstruction_scatter": 0.0040160000000000005, + "data_vector_D + pdip_solve": 0.0037632000000000004, + "mapping_matrix + pdip_solve + regularization_H": 0.003619200000000001, + "inversion_other + mesh_construction + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin + pdip_solve + regularization_H": 0.0028896000000000004, + "inversion_other + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin": 0.0028704000000000004, + "inversion_other + mesh_construction + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin": 0.0026591999999999996, + "inversion_other + mesh_dual_areas + mesh_locate_walk + pdip_solve": 0.0025824000000000003, + "inversion_other + mesh_locate_walk + mesh_seed_argmin": 0.0024576, + "inversion_other + mesh_construction + mesh_locate_walk + mesh_seed_argmin": 0.0023936, + "chi_squared_evidence + inversion_other": 0.0023584, + "inversion_other + mesh_interpolation_weights": 0.002128, + "grids_and_structures + mass_profile_deflections + pdip_solve": 0.0013440000000000001 + }, + "example_kernels": { + "pdip_solve + regularization_H": [ + "loop_broadcast_fusion", + "input_add_transpose_fusion", + "input_transpose_fusion.6" + ], + "curvature_reg_reduce_gather + inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter + regularization_H": [ + "input_multiply_transpose_fusion" + ], + "curvature_matrix_F + psf_convolution_mapping_matrix": [ + "loop_divide_gather_fusion" + ], + "pdip_solve + psf_convolution_mapping_matrix": [ + "loop_broadcast_fusion.6" + ], + "inversion_other + pdip_solve": [ + "input_reduce_fusion.17", + "input_reduce_fusion.18", + "input_transpose_fusion.3", + "input_reduce_fusion.21" + ], + "data_vector_D + pdip_solve + psf_convolution_mapping_matrix": [ + "input_reduce_fusion.15" + ], + "mapping_matrix + pdip_solve": [ + "loop_divide_fusion.2", + "loop_divide_fusion.1", + "loop_broadcast_fusion.4" + ], + "inversion_other + mesh_construction + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin + regularization_H": [ + "input_scatter_fusion.3" + ], + "inversion_other + mapping_matrix + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin + pdip_solve": [ + "input_scatter_fusion.1", + "input_scatter_fusion.4" + ], + "inversion_other + regularization_H": [ + "loop_reduce_slice_fusion.2", + "loop_reduce_slice_fusion.1", + "loop_reduce_slice_fusion", + "loop_reduce_fusion.4" + ] + }, + "prorated_estimate_ms": { + "pdip_solve": 1.772454613333333, + "regularization_H": 1.4400853850000002, + "psf_convolution_mapping_matrix": 0.6688926166666666, + "curvature_matrix_F": 0.5076774, + "inversion_other": 0.4314148, + "mapped_reconstruction": 0.27403658000000003, + "reconstruction_scatter": 0.27159658000000003, + "curvature_reg_reduce_gather": 0.2702579133333334, + "mapping_matrix": 0.06112434166666668, + "data_vector_D": 0.04808866666666666, + "mesh_construction": 0.025206370000000006, + "mesh_locate_walk": 0.024614665000000004, + "mesh_seed_argmin": 0.022800211666666667, + "mesh_interpolation_weights": 0.022538665, + "ray_trace_data_grid": 0.019496316666666666, + "border_relocator": 0.012334933333333332, + "mesh_dual_areas": 0.009328691666666666, + "chi_squared_evidence": 0.00523685, + "grids_and_structures": 0.0027576000000000002, + "mass_profile_deflections": 0.0027576000000000002 + }, + "prorated_note": "ESTIMATE ONLY \u2014 a mixed fusion's time split equally across the stages its constituents span. Never summed into the measured table, never reconciled." + }, + "other_sources_ms": { + "copy.107": 0.04176340000000012, + "copy.92": 0.037878699999999946, + "copy.91": 0.034768100000000045, + "copy.93": 0.033184200000000046, + "copy.58": 0.014691099999999993, + "copy.105": 0.0020832000000000003, + "copy.67": 0.0019456, + "copy.89": 0.00184, + "copy.106": 0.0016320000000000004 + }, + "device_span_ms": 694.3282391, + "device_busy_ms": 656.4397399000001, + "device_idle_ms": 37.888499199999956, + "largest_idle_gaps": [ + { + "gap_ms": 5.522836, + "after": "pure_callback.4", + "before": "pure_callback.4" + }, + { + "gap_ms": 0.177472, + "after": "triangular-solve", + "before": "triangular-solve" + }, + { + "gap_ms": 0.108127, + "after": "cholesky.100", + "before": "cholesky.100" + }, + { + "gap_ms": 0.105888, + "after": "cholesky.60", + "before": "cholesky.60" + }, + { + "gap_ms": 0.059776, + "after": "input_reduce_fusion.31", + "before": "loop_broadcast_fusion" + }, + { + "gap_ms": 0.040736, + "after": "loop_reduce_fusion", + "before": "loop_or_select_fusion" + }, + { + "gap_ms": 0.035136, + "after": "pure_callback.4", + "before": "loop_select_fusion.7" + }, + { + "gap_ms": 0.032064, + "after": "loop_select_fusion.6", + "before": "loop_add_fusion.4" + } + ], + "kernel_ms": 656.4265034999976, + "sum_ms": 694.3150026999975, + "wall_ms": 694.4553516001179, + "host_outside_span_ms": 0.12711250011784614, + "reconciliation_pct": -0.020209924194110843, + "unjoined_ms": 0.0, + "unjoined_pct": 0.0, + "other_ms": 0.16984099999999996, + "other_pct": 0.024456719875318642, + "note": "Stage rows attribute the command-buffers-OFF program (see the module docstring): kernel times are the same, the launch overhead the CUDA graphs remove is not. sum_ms = kernel rows + device_idle_ms; the residual against wall_ms is host_outside_span_ms (dispatch before the first kernel, teardown after the last).", + "per_stage_ms_per_lane": { + "border_relocator": 0.004421575000000001, + "chi_squared_evidence": 0.0004952, + "curvature_matrix_F": 0.21002514999999997, + "fit_imaging_other": 0.009955225000000002, + "grids_and_structures": 6.88e-05, + "inversion_other": 0.7076351250000006, + "mapping_matrix": 0.0001408, + "mesh_construction": 0.0001024, + "mesh_locate_walk": 0.006637624999999999, + "mesh_qhull_callback": 0.0005336000000000001, + "mesh_seed_argmin": 0.010888775000000003, + "mixed_fusion": 0.294675125, + "other": 0.008492049999999998, + "pdip_solve": 31.21163052499988, + "psf_convolution_mapping_matrix": 0.35490000000000005, + "regularization_H": 0.0007232 + }, + "per_lane_divisor": 20, + "host_callback": { + "pure_callback_span_ms": 5.717323400000001, + "qhull_ms": 5.1945813, + "callback_body_ms_note": "the OUTERMOST matching body event, not a sum: under the probe the body appears twice (the wrapper and the timed re-implementation it calls) and summing them would count the same work twice", + "events_by_name": { + "pure_callback.4": { + "count": 10, + "ms": 5.717323400000001 + }, + "$callback.py:815 _wrapped_callback": { + "count": 10, + "ms": 5.5959928 + }, + "$callback.py:224 _callback": { + "count": 10, + "ms": 5.568414000000001 + }, + "$callback.py:74 pure_callback_impl": { + "count": 10, + "ms": 5.553685199999999 + }, + "$callback.py:69 __call__": { + "count": 10, + "ms": 5.219663199999999 + }, + "$delaunay.py:162 ": { + "count": 10, + "ms": 5.2110232 + }, + "$host_callback_probe.py:225 wrapped": { + "count": 10, + "ms": 5.1945813 + }, + "$host_callback_probe.py:160 _timed_tri_only": { + "count": 10, + "ms": 5.180964299999999 + }, + "ThenExecuteCallback:GetEventForComputeStreamSyncPoint": { + "count": 10, + "ms": 0.023899899999999995 + }, + "$callback.py:822 ": { + "count": 40, + "ms": 0.014995899999999996 + } + }, + "note": "HOST milliseconds per traced BATCH (the whole invocation), aggregated by name because the events nest. Not a row of the device table: the device pays for them as the idle gaps largest_idle_gaps names." + }, + "host_callback_ms": 5.717323400000001 + }, + "hlo_census": { + "status": "excluded", + "reason": "The legacy census anchors PyAutoArray source line numbers that moved after the phase-1 run. No batched attribution is published from unsupported anchors; the device-event table and wall reconciliation remain valid." + }, + "trace_split": { + "expected_calls": 10, + "executions_per_invocation": 1, + "method": "per-call (first-instruction recurrence)", + "note": "DECIDED IN CODE: the scalar arm's trace is split by trace_calls * B, so every lane's execution is its own block and the per-stage median is taken over all of them. The vmap arm's is split by trace_calls, one block per batched execution, and per_stage_ms_per_lane divides those rows by B." + } + }, + "scalar": { + "arm": "scalar", + "program": "jax.jit(fn), called B times", + "stands_for": "Nautilus(use_jax_vmap=False, use_jax_jit=True). Plain use_jax_vmap=False is UNJITTED and is NOT this arm", + "hlo_source": "jax.jit(fn).lower(lane_trees[0]) \u2014 the same program phase 1 traced", + "batch_wall_ms": 872.4862178998592, + "wall_production_nesting_ms": 872.4862178998592, + "wall_aot_command_buffers_on_ms": 875.6381604998751, + "wall_aot_command_buffers_off_ms": 882.5437281997438, + "command_buffer_delta_ms": 6.905567699868698, + "production_nesting_vs_aot_on_delta_ms": -3.1519426000159, + "production_nesting_vs_aot_on_delta_pct": -0.35995948351731866, + "wall_per_lane_ms": 43.62431089499296, + "wall_per_lane_command_buffers_off_ms": 44.12718640998719, + "traced_batch_wall_ms": 905.1012266001635, + "untraced_batch_wall_ms": 880.5241677000595, + "traced_wall_per_lane_ms": 45.255061330008175, + "callback_count_per_call": 20.0, + "callback_count_per_lane": 1.0, + "callback_expectation": "1 per likelihood evaluation, B per batch", + "host_qhull_ms": 90.14050849982596, + "host_tables_ms": 2.3841064008593094, + "host_qhull_ms_per_lane": 4.507025424991298, + "host_tables_ms_per_lane": 0.11920532004296547, + "host_callback_probe": { + "calls": 200, + "qhull_ms_total": 901.4050849982596, + "tables_ms_total": 23.841064008593094, + "total_ms_total": 925.2461490068526, + "qhull_ms_mean": 4.507025424991298, + "tables_ms_mean": 0.11920532004296547, + "total_ms_mean": 4.626230745034263, + "non_finite_calls": 0, + "n_points": [ + 1500 + ] + }, + "host_callback_records_first": [ + { + "n_points": 1500, + "qhull_ms": 4.657461999158841, + "tables_ms": 0.1824790015234612, + "total_ms": 4.839941000682302, + "finite": true + }, + { + "n_points": 1500, + "qhull_ms": 4.528411998762749, + "tables_ms": 0.13876000230084173, + "total_ms": 4.667172001063591, + "finite": true + }, + { + "n_points": 1500, + "qhull_ms": 4.456402999494458, + "tables_ms": 0.12711799718090333, + "total_ms": 4.583520996675361, + "finite": true + }, + { + "n_points": 1500, + "qhull_ms": 4.520762002357515, + "tables_ms": 0.11695999637595378, + "total_ms": 4.637721998733468, + "finite": true + } + ], + "device_idle_ms": 7.105211645000004, + "device_idle_ms_per_lane": 7.105211645000004, + "trace": { + "parser": "ProfileData.from_file(xplane) + as_text() + stack_frame_index(proto field 17)", + "stage_audit": { + "mixed_fusion": [ + { + "instruction": "loop_divide_gather_fusion", + "ms": 1.0147837900000003, + "opcode": "fusion", + "shape": "(f64[15361,1,1,1500]{3,2,1,0}, f64[15361,1,1,1500]{3,2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_broadcast_fusion.2", + "ms": 0.22702425500000015, + "opcode": "fusion", + "shape": "f64[1500,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_reduce_fusion.13", + "ms": 0.12207924499999988, + "opcode": "fusion", + "shape": "f64[92,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123 (data_vector_via_blurred_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:67 (InversionImagingMapping.data_vector)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:699 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_reduce_fusion.17", + "ms": 0.11460218000000005, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163 (mapped_reconstructed_data_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:120 (InversionImagingMapping._mapped_reconstructed_data_dict_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:196 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "loop_broadcast_fusion.3", + "ms": 0.11095099000000008, + "opcode": "fusion", + "shape": "f64[15361,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:342", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:342 (mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:283 (Mapper.mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:91 (AbstractInversionImaging._mapping_matrix_for_convolution_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:137 (AbstractInversionImaging.operated_mapping_matrix_list)" + ] + }, + { + "instruction": "input_multiply_transpose_fusion", + "ms": 0.10946254999999998, + "opcode": "fusion", + "shape": "(f64[1500,1500]{1,0}, f64[1500,1500]{1,0}, f64[1500,1500]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:237 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:274 (_certified_positive_only_from)" + ] + } + ], + "grids_and_structures": [ + { + "instruction": "loop_multiply_sine_fusion", + "ms": 0.0013491050000000013, + "opcode": "fusion", + "shape": "(f64[], f64[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/geometry/geometry_util.py:527", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/geometry/geometry_util.py:527 (transform_grid_2d_to_reference_frame)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/profiles/geometry_profiles.py:418 (EllProfile.transformed_to_reference_frame_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/structures/decorators/abstract.py:93 (AbstractMaker.evaluate_func)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/structures/decorators/abstract.py:112 (AbstractMaker.result)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/structures/decorators/to_grid.py:70 (to_grid..wrapper)" + ] + } + ], + "border_relocator": [ + { + "instruction": "eigh.45", + "ms": 0.07454366500000005, + "opcode": "custom-call", + "shape": "(f64[2,2]{0,1}, f64[2]{0}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "custom-call.2", + "ms": 0.007953390000000022, + "opcode": "custom-call", + "shape": "(f64[2,2]{1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_add_fusion.9", + "ms": 0.003369750000000004, + "opcode": "fusion", + "shape": "f64[1500]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:458 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_reduce_fusion.25", + "ms": 0.001925390000000003, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:256", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:256 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_multiply_fusion.4", + "ms": 0.0015465549999999976, + "opcode": "fusion", + "shape": "f64[2,2]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + } + ], + "mesh_construction": [ + { + "instruction": "input_concatenate_fusion.7", + "ms": 0.002044314999999992, + "opcode": "fusion", + "shape": "f64[1500,2]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:820", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:820 (InterpolatorDelaunay.mesh_grid_xy)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:847 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + } + ], + "mesh_qhull_callback": [ + { + "instruction": "pure_callback.4", + "ms": 0.010624294999999992, + "opcode": "custom-call", + "shape": "(s32[3000,3]{1,0}, s32[3000,3]{1,0}, s32[1500]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:161", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:161 (_jax_delaunay_tables)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:405 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + } + ], + "other": [ + { + "instruction": "copy.106", + "ms": 0.04187694999999879, + "opcode": "copy", + "shape": "f64[1,1024,2]{2,1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.70", + "ms": 0.014690620000000149, + "opcode": "copy", + "shape": "s32[21361]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.75", + "ms": 0.001968135000000004, + "opcode": "copy", + "shape": "s64[1500]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.104", + "ms": 0.0016524649999999945, + "opcode": "copy", + "shape": "s64[]", + "source": "", + "stack": [] + }, + { + "instruction": "copy.105", + "ms": 0.001634235000000002, + "opcode": "copy", + "shape": "s32[]", + "source": "", + "stack": [] + }, + { + "instruction": "copy.61", + "ms": 0.0016041399999999959, + "opcode": "copy", + "shape": "s32[]", + "source": "", + "stack": [] + } + ], + "mesh_seed_argmin": [ + { + "instruction": "input_reduce_fusion", + "ms": 0.14478561999999937, + "opcode": "fusion", + "shape": "(f64[1024]{0}, s64[1024]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:191", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:191 (_nearest_vertex_seed_from..argmin_chunk)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)" + ] + }, + { + "instruction": "loop_dynamic_update_slice_fusion", + "ms": 0.04105780499999848, + "opcode": "fusion", + "shape": "s32[21,1024]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_add_fusion", + "ms": 0.03196771499999974, + "opcode": "fusion", + "shape": "s64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_broadcast_fusion", + "ms": 0.0019505399999999967, + "opcode": "fusion", + "shape": "s32[21,1024]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "pdip_solve": [ + { + "instruction": "cholesky.60", + "ms": 6.754088089999978, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "cholesky.80", + "ms": 5.67523822999999, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:106", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:106 (factorize_kkt)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:212 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve.1", + "ms": 1.209065825000019, + "opcode": "custom-call", + "shape": "(f64[1500,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "triangular-solve", + "ms": 1.0477539799999835, + "opcode": "custom-call", + "shape": "(f64[1500,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "triangular-solve.2", + "ms": 0.90566888999999, + "opcode": "custom-call", + "shape": "(f64[1500,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:213 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve.4", + "ms": 0.8971959699999926, + "opcode": "custom-call", + "shape": "(f64[1500,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:217 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + } + ], + "regularization_H": [ + { + "instruction": "input_scatter_fusion.10", + "ms": 0.0020577249999999946, + "opcode": "fusion", + "shape": "f64[1500,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:615", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:615 (pixel_splitted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:137 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_concatenate_fusion.10", + "ms": 0.0018569600000000008, + "opcode": "fusion", + "shape": "pred[3]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:90", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:90 (split_points_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:410 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + }, + { + "instruction": "input_concatenate_fusion.9", + "ms": 0.0018511900000000017, + "opcode": "fusion", + "shape": "pred[3]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:91", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:91 (split_points_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:410 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + }, + { + "instruction": "input_concatenate_fusion.8", + "ms": 0.0018500700000000016, + "opcode": "fusion", + "shape": "pred[3]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:93", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:93 (split_points_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:410 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + }, + { + "instruction": "input_concatenate_fusion", + "ms": 0.0017531150000000013, + "opcode": "fusion", + "shape": "s32[1500,2]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:615", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:615 (pixel_splitted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:137 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_concatenate_fusion.11", + "ms": 0.0014912049999999974, + "opcode": "fusion", + "shape": "pred[3]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:88", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:88 (split_points_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:410 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + } + ], + "mesh_locate_walk": [ + { + "instruction": "input_reduce_fusion.1", + "ms": 0.022754409999999718, + "opcode": "fusion", + "shape": "pred[196]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:288", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:288 (_walk_from_seed..cond)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)" + ] + }, + { + "instruction": "loop_reduce_fusion", + "ms": 0.02235456499999971, + "opcode": "fusion", + "shape": "(f64[21361]{0}, s64[21361]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:264", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:264 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:264 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)" + ] + }, + { + "instruction": "loop_or_select_fusion", + "ms": 0.019306895000000247, + "opcode": "fusion", + "shape": "(s32[21361]{0}, pred[21361]{0}, pred[21361]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:270", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:270 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)" + ] + }, + { + "instruction": "loop_select_fusion", + "ms": 0.01731259500000002, + "opcode": "fusion", + "shape": "s32[21361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:242", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:242 (_walk_from_seed..weights_of)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:262 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)" + ] + }, + { + "instruction": "input_reduce_fusion.2", + "ms": 0.014390094999999985, + "opcode": "fusion", + "shape": "pred[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:288", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:288 (_walk_from_seed..cond)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)" + ] + }, + { + "instruction": "while.34", + "ms": 0.012851719999999872, + "opcode": "while", + "shape": "(s32[], s32[21361]{0}, pred[21361]{0}, pred[21361]{0}, s32[3000,3]{1,0}, /*index=5*/f64[1500,2]{1,0}, f64[21361,2]{1,0}, s32[3000,3]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "psf_convolution_mapping_matrix": [ + { + "instruction": "input_scatter_fusion", + "ms": 1.9795794700000002, + "opcode": "fusion", + "shape": "f64[1500,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.19.0", + "ms": 1.7556014649999998, + "opcode": "fft", + "shape": "f64[1500,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.15.0", + "ms": 1.364779719999999, + "opcode": "fft", + "shape": "c128[1500,180,91]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.17.0", + "ms": 0.979255055, + "opcode": "fft", + "shape": "c128[1500,91,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_transpose_fusion.4", + "ms": 0.513519525, + "opcode": "fusion", + "shape": "c128[1500,91,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "wrapped_transpose", + "ms": 0.5002328650000002, + "opcode": "fusion", + "shape": "c128[1500,180,91]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + } + ], + "inversion_other": [ + { + "instruction": "cholesky.120", + "ms": 0.8939710999999999, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1078 (AbstractInversion.log_det_curvature_reg_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:347 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "cholesky.130", + "ms": 0.8894467799999997, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1157 (AbstractInversion.log_det_regularization_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:348 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "loop_reduce_window_fusion.1", + "ms": 0.002773885000000001, + "opcode": "fusion", + "shape": "s64[94,16]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "loop_reduce_window_fusion", + "ms": 0.0026655950000000032, + "opcode": "fusion", + "shape": "s64[6,16]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "loop_broadcast_convert_fusion", + "ms": 0.00217664, + "opcode": "fusion", + "shape": "(s32[1500]{0}, s64[1500]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527 (AbstractInversion.zeroed_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:567 (AbstractInversion.solve_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:684 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_scatter_fusion.5", + "ms": 0.0019308600000000002, + "opcode": "fusion", + "shape": "s64[1500]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527 (AbstractInversion.zeroed_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:567 (AbstractInversion.solve_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:684 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "mapping_matrix": [ + { + "instruction": "input_reduce_fusion.31", + "ms": 0.002879989999999991, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:120 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + } + ], + "curvature_matrix_F": [ + { + "instruction": "cublas-lt-matmul.2", + "ms": 4.205149959999999, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "chi_squared_evidence": [ + { + "instruction": "loop_multiply_fusion.2", + "ms": 0.003019990000000005, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:300", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:300 (AbstractNDArray.__pow__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:60 (unwrap_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:35 (to_new_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:78 (chi_squared_map_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:78 (AbstractFit.chi_squared_map)" + ] + } + ] + }, + "stage_audit_note": "The HLO instructions that contributed most of each stage's milliseconds, with their full source stack. A stage row is only as good as the rules that built it; this is how a reader checks a row against the HLO instead of trusting it.", + "untraced_wall_ms": 44.026208385002974, + "reconciliation_vs_untraced_pct": -31.141085600896776, + "wall_basis": "wall_ms is the TRACED run's wall, the run these kernel durations came from. untraced_wall_ms is the same executable without the profiler; the difference is the profiler's overhead and belongs in neither the stages nor the idle row.", + "calls": 200, + "call_split": "per-call (first-instruction recurrence)", + "call_blocks": 200, + "events": 141520, + "streams": [ + "Stream #14(MemcpyD2H,Compute,MemcpyH2D,Memset,MemcpyD2D)" + ], + "per_stage_ms": { + "border_relocator": { + "median_ms": 0.08934100000000002, + "min_ms": 0.08876800000000001, + "max_ms": 0.09017100000000003 + }, + "chi_squared_evidence": { + "median_ms": 0.0029925, + "min_ms": 0.00288, + "max_ms": 0.003296 + }, + "curvature_matrix_F": { + "median_ms": 4.204302, + "min_ms": 4.188499, + "max_ms": 4.267967 + }, + "grids_and_structures": { + "median_ms": 0.001376, + "min_ms": 0.001279, + "max_ms": 0.001408 + }, + "inversion_other": { + "median_ms": 1.794877, + "min_ms": 1.778573, + "max_ms": 1.813453 + }, + "mapping_matrix": { + "median_ms": 0.00288, + "min_ms": 0.002848, + "max_ms": 0.002912 + }, + "memset": { + "median_ms": 0.021502499999999997, + "min_ms": 0.010048, + "max_ms": 0.096384 + }, + "mesh_construction": { + "median_ms": 0.002048, + "min_ms": 0.002015, + "max_ms": 0.00208 + }, + "mesh_locate_walk": { + "median_ms": 0.13138900000000003, + "min_ms": 0.13056200000000007, + "max_ms": 0.13273700000000005 + }, + "mesh_qhull_callback": { + "median_ms": 0.0105605, + "min_ms": 0.010400000000000001, + "max_ms": 0.011103 + }, + "mesh_seed_argmin": { + "median_ms": 0.2197770000000001, + "min_ms": 0.21939200000000011, + "max_ms": 0.22009800000000013 + }, + "mixed_fusion": { + "median_ms": 1.9815474999999996, + "min_ms": 1.9770350000000003, + "max_ms": 1.9940639999999994 + }, + "other": { + "median_ms": 0.063583, + "min_ms": 0.06304099999999999, + "max_ms": 0.067202 + }, + "pdip_solve": { + "median_ms": 7.581224, + "min_ms": 2.424595, + "max_ms": 48.89660700000005 + }, + "psf_convolution_mapping_matrix": { + "median_ms": 7.0925095, + "min_ms": 7.078738999999999, + "max_ms": 7.106948999999999 + }, + "regularization_H": { + "median_ms": 0.010848, + "min_ms": 0.010656, + "max_ms": 0.0112 + } + }, + "stage_order": [ + "border_relocator", + "mesh_qhull_callback", + "mesh_seed_argmin", + "mesh_locate_walk", + "mesh_construction", + "mapping_matrix", + "psf_convolution_mapping_matrix", + "curvature_matrix_F", + "regularization_H", + "pdip_solve", + "chi_squared_evidence", + "grids_and_structures", + "inversion_other", + "mixed_fusion", + "other", + "memset" + ], + "mixed_fusion": { + "ms": 1.9815474999999996, + "constituent_stage_sets": { + "curvature_matrix_F + psf_convolution_mapping_matrix": 1.0147837900000003, + "pdip_solve + psf_convolution_mapping_matrix": 0.22702425500000015, + "data_vector_D + pdip_solve": 0.125767375, + "mapped_reconstruction + pdip_solve": 0.11460218000000005, + "mapping_matrix + pdip_solve": 0.11328746500000009, + "curvature_reg_reduce_gather + inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": 0.10946254999999998, + "pdip_solve + regularization_H": 0.04431791999999995, + "inversion_other + pdip_solve + regularization_H": 0.024252115000000008, + "inversion_other + pdip_solve": 0.02287350499999999, + "inversion_other + mapping_matrix + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin + pdip_solve": 0.020975820000000023, + "inversion_other + mesh_construction + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin + pdip_solve + regularization_H": 0.01878552, + "inversion_other + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + pdip_solve + regularization_H": 0.01464035, + "pdip_solve + ray_trace_data_grid": 0.013579279999999994, + "border_relocator + ray_trace_data_grid": 0.012405385000000005, + "inversion_other + mapping_matrix + mesh_construction + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin": 0.011634304999999996, + "grids_and_structures + mass_profile_deflections + pdip_solve + ray_trace_data_grid": 0.009508225, + "border_relocator + pdip_solve + ray_trace_data_grid": 0.008618339999999995, + "chi_squared_evidence + pdip_solve": 0.00765336999999998, + "inversion_other + mesh_construction + mesh_seed_argmin + pdip_solve + regularization_H": 0.007190479999999996, + "inversion_other + mesh_dual_areas + mesh_locate_walk": 0.006666690000000056, + "border_relocator + pdip_solve": 0.006664104999999977, + "inversion_other + mesh_construction + pdip_solve + regularization_H": 0.006280445000000016, + "inversion_other + pdip_solve + ray_trace_data_grid": 0.0053433349999999925, + "inversion_other + regularization_H": 0.005017064999999995, + "inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": 0.004781205, + "inversion_other + mapped_reconstruction": 0.003705425000000002, + "mapping_matrix + pdip_solve + regularization_H": 0.003411649999999997, + "inversion_other + mesh_construction + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin": 0.0031199699999999993, + "inversion_other + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin": 0.002990545000000002, + "inversion_other + mesh_construction + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin + regularization_H": 0.0026927449999999955, + "inversion_other + mesh_dual_areas + mesh_locate_walk + pdip_solve": 0.002580274999999995, + "inversion_other + mesh_locate_walk + mesh_seed_argmin": 0.0024767750000000027, + "inversion_other + mesh_interpolation_weights": 0.002146860000000007, + "chi_squared_evidence + inversion_other": 0.0019062150000000034, + "grids_and_structures + mass_profile_deflections + pdip_solve": 0.0013418999999999994 + }, + "example_kernels": { + "curvature_matrix_F + psf_convolution_mapping_matrix": [ + "loop_divide_gather_fusion" + ], + "pdip_solve + psf_convolution_mapping_matrix": [ + "loop_broadcast_fusion.2" + ], + "data_vector_D + pdip_solve": [ + "input_reduce_fusion.13", + "input_reduce_fusion.29" + ], + "mapped_reconstruction + pdip_solve": [ + "input_reduce_fusion.17" + ], + "mapping_matrix + pdip_solve": [ + "loop_broadcast_fusion.3", + "loop_divide_fusion" + ], + "curvature_reg_reduce_gather + inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": [ + "input_multiply_transpose_fusion" + ], + "pdip_solve + regularization_H": [ + "loop_select_fusion.5", + "input_transpose_fusion.5" + ], + "inversion_other + pdip_solve + regularization_H": [ + "input_transpose_fusion.6" + ], + "inversion_other + pdip_solve": [ + "input_reduce_fusion.15", + "loop_log_fusion", + "input_reduce_fusion.16", + "input_reduce_fusion.20" + ], + "inversion_other + mapping_matrix + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin + pdip_solve": [ + "input_scatter_fusion.6", + "input_scatter_fusion.3" + ] + }, + "prorated_estimate_ms": { + "psf_convolution_mapping_matrix": 0.6209040225000002, + "curvature_matrix_F": 0.5073918950000001, + "pdip_solve": 0.3890709992142857, + "mapped_reconstruction": 0.08224161375000003, + "inversion_other": 0.06873453529761908, + "data_vector_D": 0.0628836875, + "mapping_matrix": 0.06234197750000004, + "regularization_H": 0.04246944963095235, + "reconstruction_scatter": 0.023087811249999996, + "curvature_reg_reduce_gather": 0.021892509999999997, + "ray_trace_data_grid": 0.020023280416666664, + "mesh_construction": 0.014264148630952385, + "mesh_locate_walk": 0.012508773464285734, + "border_relocator": 0.012407524999999989, + "mesh_interpolation_weights": 0.012329371380952386, + "mesh_seed_argmin": 0.011079570714285716, + "mesh_dual_areas": 0.008427758750000021, + "chi_squared_evidence": 0.004779792499999992, + "grids_and_structures": 0.00282435625, + "mass_profile_deflections": 0.00282435625 + }, + "prorated_note": "ESTIMATE ONLY \u2014 a mixed fusion's time split equally across the stages its constituents span. Never summed into the measured table, never reconciled." + }, + "other_sources_ms": { + "copy.106": 0.04187694999999879, + "copy.70": 0.014690620000000149, + "copy.75": 0.001968135000000004, + "copy.104": 0.0016524649999999945, + "copy.105": 0.001634235000000002, + "copy.61": 0.0016041399999999959, + "copy.103": 0.0007132700000000001, + "copy.40": 0.0006169449999999998 + }, + "device_span_ms": 45.249957665000004, + "device_busy_ms": 38.14474602, + "device_idle_ms": 7.105211645000004, + "largest_idle_gaps": [ + { + "gap_ms": 5.383379, + "after": "pure_callback.4", + "before": "pure_callback.4" + }, + { + "gap_ms": 0.073567, + "after": "input_reduce_fusion.3", + "before": "input_reduce_fusion.4" + }, + { + "gap_ms": 0.033919, + "after": "pure_callback.4", + "before": "copy.105" + }, + { + "gap_ms": 0.029472, + "after": "input_reduce_fusion.1", + "before": "input_reduce_fusion.2" + }, + { + "gap_ms": 0.027647, + "after": "while.40", + "before": "input_reduce_select_fusion" + }, + { + "gap_ms": 0.027584, + "after": "input_reduce_fusion.28", + "before": "loop_broadcast_fusion.2" + }, + { + "gap_ms": 0.027007, + "after": "input_concatenate_fusion.7", + "before": "pure_callback.4" + }, + { + "gap_ms": 0.024383, + "after": "copy.106", + "before": "input_reduce_fusion" + } + ], + "kernel_ms": 23.2107575, + "sum_ms": 30.315969145000004, + "wall_ms": 45.255061330008175, + "host_outside_span_ms": 0.0051036650081712764, + "reconciliation_pct": -33.01087601245214, + "unjoined_ms": 0.0, + "unjoined_pct": 0.0, + "other_ms": 0.063583, + "other_pct": 0.14049920192647877, + "note": "Stage rows attribute the command-buffers-OFF program (see the module docstring): kernel times are the same, the launch overhead the CUDA graphs remove is not. sum_ms = kernel rows + device_idle_ms; the residual against wall_ms is host_outside_span_ms (dispatch before the first kernel, teardown after the last).", + "per_stage_ms_per_lane": { + "border_relocator": 0.08934100000000002, + "chi_squared_evidence": 0.0029925, + "curvature_matrix_F": 4.204302, + "grids_and_structures": 0.001376, + "inversion_other": 1.794877, + "mapping_matrix": 0.00288, + "memset": 0.021502499999999997, + "mesh_construction": 0.002048, + "mesh_locate_walk": 0.13138900000000003, + "mesh_qhull_callback": 0.0105605, + "mesh_seed_argmin": 0.2197770000000001, + "mixed_fusion": 1.9815474999999996, + "other": 0.063583, + "pdip_solve": 7.581224, + "psf_convolution_mapping_matrix": 7.0925095, + "regularization_H": 0.010848 + }, + "per_lane_divisor": 1, + "host_callback": { + "pure_callback_span_ms": 99.45982540000001, + "qhull_ms": 92.7068144, + "callback_body_ms_note": "the OUTERMOST matching body event, not a sum: under the probe the body appears twice (the wrapper and the timed re-implementation it calls) and summing them would count the same work twice", + "events_by_name": { + "pure_callback.4": { + "count": 200, + "ms": 99.45982540000001 + }, + "$callback.py:815 _wrapped_callback": { + "count": 200, + "ms": 97.69207749999998 + }, + "$callback.py:224 _callback": { + "count": 200, + "ms": 97.22190960000005 + }, + "$callback.py:74 pure_callback_impl": { + "count": 200, + "ms": 97.04335109999998 + }, + "$callback.py:69 __call__": { + "count": 200, + "ms": 93.02880579999997 + }, + "$delaunay.py:162 ": { + "count": 200, + "ms": 92.89173760000001 + }, + "$host_callback_probe.py:225 wrapped": { + "count": 200, + "ms": 92.7068144 + }, + "$host_callback_probe.py:160 _timed_tri_only": { + "count": 200, + "ms": 92.54951359999995 + }, + "ThenExecuteCallback:GetEventForComputeStreamSyncPoint": { + "count": 200, + "ms": 0.3692834000000001 + }, + "$callback.py:822 ": { + "count": 800, + "ms": 0.2856913999999997 + }, + "$__init__.py:132 _xla_gc_callback": { + "count": 2, + "ms": 0.000327 + } + }, + "note": "HOST milliseconds per traced BATCH (the whole invocation), aggregated by name because the events nest. Not a row of the device table: the device pays for them as the idle gaps largest_idle_gaps names." + }, + "host_callback_ms": 99.45982540000001 + }, + "hlo_census": { + "status": "excluded", + "reason": "The legacy census anchors PyAutoArray source line numbers that moved after the phase-1 run. No batched attribution is published from unsupported anchors; the device-event table and wall reconciliation remain valid." + }, + "trace_split": { + "expected_calls": 200, + "executions_per_invocation": 20, + "method": "per-call (first-instruction recurrence)", + "note": "DECIDED IN CODE: the scalar arm's trace is split by trace_calls * B, so every lane's execution is its own block and the per-stage median is taken over all of them. The vmap arm's is split by trace_calls, one block per batched execution, and per_stage_ms_per_lane divides those rows by B." + } + } + }, + "certification_report": { + "source": "vmap arm, library solve observed through its stats= out-dict (PyAutoArray #566) and jax.debug.callback(..., ordered=True); ordered because the unordered batching rule returns the lanes permuted. Untimed, separately compiled; max rel diff of its log likelihoods vs the timed arm's: 3.827e-07", + "rows": 20, + "pdip_iter": "NOT AVAILABLE per lane without changing library numerics. The fallback branch calls the library's own reconstruction_positive_only_from, which returns the solution alone \u2014 jax_nnls.solve_nnls' iteration count is discarded inside the library's custom_vjp primal. The PDIP while_loop's cost is in the pdip_solve stage row of each arm's device table instead, which is a max-over-lanes quantity under vmap because every lane runs the same fixed kernel sequence.", + "passes_semantics": "library `passes`: restricted active-set passes run (jax_active_set.solve_certified)" + }, + "lane_construction": { + "draws_sha256": "8793f501adc86a80ee673986f87d36fdfb1b77bce5635352ee2c467783acb150", + "lane_rows": [ + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179 + ], + "calls": [ + 8 + ], + "stage": "pix2", + "regularization_range": { + "galaxies.source.pixelization.regularization.inner_coefficient": { + "min": 1.0566389768329418e-06, + "max": 229.37837836630266 + }, + "galaxies.source.pixelization.regularization.outer_coefficient": { + "min": 2.4574595034239785e-06, + "max": 30.026999055831187 + }, + "galaxies.source.pixelization.regularization.signal_scale": { + "min": 0.07341166691553269, + "max": 0.8809562507227594 + } + }, + "phases": [ + "exploration" + ], + "window_rule": "nautilus_batches.timed_window: consecutive captured calls, in call order, from the FIRST call that is not a prior batch, concatenated and truncated to B; at B == n_batch exactly one real Nautilus batch. Falls back to the latest B lanes if the post-prior lanes run out; never repeats a lane.", + "note": "Lane k is captured lane lane_rows[k]: the mass AND shear of a real Nautilus proposal (nautilus_batch_capture.py), lens light fixed at S3, the S3 light-subtracted dataset shared by every lane. `offsets` in the lane table are the mass offsets from the fiducial; the shear is in the capture file." + }, + "captured": { + "batches_path": "/mnt/ral/jnightin/autolens_profiling_wt/certified-solver-phase-c1-lane-rate/results/breakdown/imaging/nautilus_batches_delaunay_pix2.npz", + "batches_sha256": "90f4640a92f9b1c60ca3fceca7b484aa8215970489f8e7daf5430b8460d171d5", + "schema_version": 2, + "n_calls": 84, + "n_lanes": 1680, + "call_sizes_seen": [ + 20 + ], + "calls_by_phase": { + "prior": 8, + "exploration": 72, + "sampling": 4 + }, + "parameter_paths": [ + "galaxies.source.pixelization.regularization.inner_coefficient", + "galaxies.source.pixelization.regularization.outer_coefficient", + "galaxies.source.pixelization.regularization.signal_scale" + ], + "stage": "pix2", + "regularization": { + "class": "AdaptSplit", + "free": true, + "priors": { + "inner_coefficient": [ + "LogUniform", + 1e-06, + 1000000.0 + ], + "outer_coefficient": [ + "LogUniform", + 1e-06, + 1000000.0 + ], + "signal_scale": [ + "Uniform", + 0.0, + 1.0 + ] + }, + "priors_source": "PyAutoGalaxy packaged config/priors/regularization (adapt_split.yaml / constant.yaml); adapt_split.yaml is identical to euclid_strong_lens_modeling_pipeline/config/priors/regularization/adapt_split.yaml" + }, + "nautilus": { + "departures_from_production": [ + "mass/shear fixed at the S3 fiducial, not at a source_pix_1 result", + "no positions likelihood", + "the cell's mesh (Hilbert 1500, weight_power 1) in both stages; source_pix_2 redraws a 500-vertex Hilbert grid at weight_power 3.5", + "seeded (production passes no seed)", + "quick updates disabled (iterations_per_quick_update=1e12; render-only)", + "NullPaths: no output directory, so no checkpoint and one Sampler.run call", + "post-fit perform_update skipped (samples / latent variables never built)" + ], + "n_batch": 20, + "n_like_max": 40000, + "n_live": 75, + "number_of_cores": 1, + "production_reference": "euclid_strong_lens_modeling_pipeline/scripts/full_model.py source_pix_1 (n_live=150) / source_pix_2 (n_live=75): af.Nautilus(n_batch=20, **SettingsSearch.search_dict) with use_jax_vmap=True and number_of_cores=1 (SettingsSearch defaults)", + "production_stage": "source_pix_2", + "seed": 1, + "stage": "pix2", + "use_jax_vmap": true, + "version": "1.0.5" + }, + "capture_fit_status": "sampling complete (n_like_max or convergence); post-fit result skipped", + "capture_library_revisions": { + "PyAutoArray": { + "head": "7fa8d2714f7da43fec2b23c31bff580764831670", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoArray" + }, + "PyAutoFit": { + "head": "a736840127be7a3c21e15a5c945e94d8f1082983", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoFit" + }, + "PyAutoGalaxy": { + "head": "70a61e26cd715cefe7012a38285698091246a8a4", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy" + }, + "PyAutoLens": { + "head": "86054bbc19baa2f710a12e04a94fa27ab37cc354", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoLens" + }, + "PyAutoNerves": { + "head": "1fa613aa8d89a79613009fb66f5b4e2d21deb57a", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoNerves" + } + }, + "fingerprint_check": { + "fields": [ + "mesh", + "source_pixels", + "dataset_sha256", + "regularization_class", + "regularization_s0_fiducial", + "border_relocator", + "use_mixed_precision", + "log_evidence_s3_library" + ], + "not_identity": "the regularization coefficients: free per lane since the capture frees them", + "log_evidence_s3_library_rel_diff": 0.0, + "passed": true + }, + "timed_window_vs_capture_pdip": { + "reference": "the capture's own figure of merit (library PDIP, Fitness.call_wrap jax.jit(jax.vmap(call)) over parameter vectors) for the same lanes", + "compared_against": "this cell's jit(vmap) library-PDIP reference", + "n_compared": 20, + "max_rel_diff": 3.6669111446065747e-07, + "max_abs_diff_nats": 0.050821526849176735, + "gated": false, + "note": "RECORDED, NOT GATED: proves the lane trees rebuilt here are the models the sampler evaluated (a wrong parameter mapping shows up as nats, not 1e-10)." + } + }, + "matched": { + "vmap_wall_per_lane_ms": 34.06693974000518, + "scalar_wall_per_lane_ms": 43.62431089499296, + "speedup_vmap_over_scalar": 1.2805468066086503, + "note": "Both walls are the PRODUCTION nesting of their arm, measured in one process on the same B lanes with the SAME library Settings (no injection). A speedup below 1 means the batch is slower per lane than B sequential jitted calls." + }, + "solver_source": "library", + "solver": "certified", + "certified_fallback": "pdip", + "certified_pass_budget": 16, + "certified_pass_budget_basis": "config default (Settings().certified_pass_budget)", + "certified_tau_rel": 1e-09, + "solver_used": "certified", + "solver_check": { + "solver_used": "certified", + "solver_used_source": "AbstractInversion.positive_only_solver_used on the fiducial S3 inversion, built eagerly on the JAX backend (AnalysisImaging(use_jax=True).fit_from) with the arms' Settings", + "reference_solver_used": "pdip", + "traced_solver_kwargs_jax": [ + "certified" + ], + "observed_calls_jax": 1, + "report_rows": 20, + "report_vs_timed_arm_max_rel_diff": 3.8272804531501017e-07 + }, + "lanes_certified": [ + false, + true, + true, + true, + false, + false, + false, + true, + true, + false, + true, + false, + true, + false, + true, + true, + true, + true, + false, + true + ], + "lanes_passes": [ + 16, + 0, + 2, + 4, + 16, + 16, + 16, + 1, + 2, + 16, + 4, + 16, + 5, + 16, + 2, + 1, + 2, + 0, + 16, + 1 + ], + "uncertified_lanes": 8, + "per_lane_certification_note": "certified / passes come from the library's own solve through its stats= out-dict (PyAutoArray #566): passes is the number of restricted active-set passes the library ran (0 when the unconstrained solve was already non-negative), certified is its KKT certificate. With certified_fallback=pdip a False lane returned the PDIP solution; with none it returned the last uncertified iterate. null for a library-PDIP row (no certificate).", + "gate": { + "pre_registered": true, + "gated": [ + "per lane: jit(vmap) arm vs jit(vmap) library PDIP <= lane_rtol relative", + "per lane: scalar jit arm vs scalar jit library PDIP <= lane_rtol relative" + ], + "recorded_not_gated": [ + "per lane: jit(vmap) arm vs scalar jit arm (rel_diff, abs_diff_nats)", + "per lane: jit(vmap) library PDIP vs scalar jit library PDIP", + "uncertified_lanes (certified_fallback=none rows)" + ], + "lanes_failed": 5, + "passed": false, + "policy_eligible": false, + "note": "Pre-registered before submission (module docstring; submit header). Phase 3 (results/notes/hst_gpu_residue_phase3_psf_2026_09.md) placed phase 2's ~2.5e-9 certified-vs-PDIP residual BETWEEN the jit(vmap) and scalar-jit compositions, not in the solver \u2014 so each arm is gated against the library-PDIP reference of its OWN composition, and the cross-composition difference is recorded with its nats. A certified_fallback=none row is policy-eligible only if every lane certifies AND passes the gate. Timing is never gated." + }, + "library_revisions": { + "PyAutoArray": { + "head": "3de624b5b91a4efa130dc3cb0a3a0f06f85025a3", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoArray", + "module_file": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/__init__.py" + }, + "PyAutoFit": { + "head": "dd9fbe0aab60c4a57702b1444ca031b317c91331", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoFit", + "module_file": "/mnt/ral/jnightin/PyAuto/PyAutoFit/autofit/__init__.py" + }, + "PyAutoGalaxy": { + "head": "70a61e26cd715cefe7012a38285698091246a8a4", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy", + "module_file": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/__init__.py" + }, + "PyAutoLens": { + "head": "86054bbc19baa2f710a12e04a94fa27ab37cc354", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoLens", + "module_file": "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/__init__.py" + }, + "autoarray_file": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/__init__.py" + } + }, + "headline_arm_note": "`trace`, `hlo_census`, `command_buffers` and `trace_timing` above describe the scalar arm \u2014 the program phase 1 traced. Both arms' full blocks, the lane table and the matched comparison are under `vmap`." +} \ No newline at end of file diff --git a/results/breakdown/imaging/fixed_light_trace_delaunay_jitvmap20_captured_pix2_libcertified_fbon_b16_hpc_a100_fp64_fixed_light_trace.png b/results/breakdown/imaging/fixed_light_trace_delaunay_jitvmap20_captured_pix2_libcertified_fbon_b16_hpc_a100_fp64_fixed_light_trace.png new file mode 100644 index 000000000..dee5ef1c8 Binary files /dev/null and b/results/breakdown/imaging/fixed_light_trace_delaunay_jitvmap20_captured_pix2_libcertified_fbon_b16_hpc_a100_fp64_fixed_light_trace.png differ diff --git a/results/breakdown/imaging/fixed_light_trace_delaunay_jitvmap20_captured_pix2_libpdip_fbon_b16_hpc_a100_fp64_fixed_light_trace.json b/results/breakdown/imaging/fixed_light_trace_delaunay_jitvmap20_captured_pix2_libpdip_fbon_b16_hpc_a100_fp64_fixed_light_trace.json new file mode 100644 index 000000000..27ab07473 --- /dev/null +++ b/results/breakdown/imaging/fixed_light_trace_delaunay_jitvmap20_captured_pix2_libpdip_fbon_b16_hpc_a100_fp64_fixed_light_trace.json @@ -0,0 +1,6601 @@ +{ + "device": { + "backend": "gpu", + "device": "cuda:0", + "hostname": "euclid-ral-gpu-2", + "xla_flags": "--xla_disable_hlo_passes=constant_folding --xla_gpu_autotune_level=0 --xla_gpu_enable_triton_gemm=false", + "omp_num_threads": null, + "cpu_count": 124, + "jax_compilation_cache_dir": "/mnt/ral/jnightin/autolens_profiling_wt/certified-solver-phase-c1-lane-rate/output/jax_cache/fixed_light_lanerate_delaunay_pix2_time_20_pdip_on_350768_32", + "autotune_cache_entries_at_start": 0, + "cache_fresh": true, + "nvidia_smi": "NVIDIA A100 80GB PCIe, 4737 MiB, 81920 MiB" + }, + "machine": { + "cpu_model": "AMD EPYC 7702 64-Core Processor", + "cpu_count_os": 124, + "nproc": 4, + "nproc_all": 124, + "nproc_note": "GNU nproc honours OMP_NUM_THREADS, so `nproc` can print 1 on a multi-core host; `nproc_all` is the core count.", + "ram_total": "928298204 kB", + "kernel": "5.14.0-687.50.1.el9_8.x86_64", + "platform": "Linux-5.14.0-687.50.1.el9_8.x86_64-x86_64-with-glibc2.34", + "python": "3.12.4", + "jax_thread_env": { + "NPROC": null + }, + "blas_thread_env": { + "OMP_NUM_THREADS": null, + "OPENBLAS_NUM_THREADS": null, + "MKL_NUM_THREADS": null, + "VECLIB_MAXIMUM_THREADS": null, + "NUMEXPR_NUM_THREADS": null + }, + "thread_env_note": "NPROC sizes XLA's CPU intra-op pool (the JAX rows); the BLAS knobs pin OpenBLAS/MKL/OpenMP (the numpy/scipy rows) and do not touch JAX. Two disjoint families; both are recorded on every CPU timing.", + "gpu": "NVIDIA A100 80GB PCIe, 81920 MiB, 610.57.04" + }, + "precision": "fp64", + "configuration": { + "pixel_scale_arcsec": 0.05, + "mask_radius_arcsec": 3.5, + "image_pixels_masked": 15361, + "over_sampled_pixels": 62752, + "mesh": "delaunay", + "mesh_shape": null, + "source_pixels": 1500, + "source_pixels_requested": null, + "dataset": "hst", + "dataset_sha256": { + "data.fits": "e4e833a28e9c6f6fb023cd85c0d3dde74068720256bc77a240633500e5b04fac", + "noise_map.fits": "315c6266a0acd3ac9c8da82fcd2b45a08697362481fd7a35072bab1658530ba3", + "psf.fits": "8389ba0e8bf4a09b4a561cfc246181a2fb944ed396754cd0ff76fdd22910d303" + }, + "cell_source_sha256": "06a162fcdae6b329384ec33322f443df07215d86e56f0505ac15b3d3473eb432", + "inversion_path": "dense", + "pass_budget": 7, + "pass_budget_basis": "phase 3 (autolens_profiling#255): the smallest ZERO-fallback budget per mesh, the budget a production run fixes. NOT phase 0's certifying budget (2 for Delaunay), which falls back on 67.5 % of a graded draw set and is not a production cost.", + "border_relocator_mode": "cell", + "border_relocator": true, + "border_relocator_note": "'cell' is use_border_relocator=True, which every profiling cell in this family forces; 'library' passes None and takes the shipped config default, which is what production runs. The resolved boolean is what this leg actually ran.", + "routes_selected": [ + "b", + "d" + ], + "trace_calls": 10, + "command_buffers_traced": "off", + "use_mixed_precision": false, + "tau_rel": 1e-09, + "regularization": { + "scheme": "adapt_split", + "inner_coefficient": 0.1, + "outer_coefficient": 10.0, + "signal_scale": 0.1 + }, + "thread_env": { + "n_threads": null, + "vars": [ + "OPENBLAS_NUM_THREADS", + "MKL_NUM_THREADS", + "OMP_NUM_THREADS", + "VECLIB_MAXIMUM_THREADS", + "NUMEXPR_NUM_THREADS" + ], + "set_to": null, + "preexisting": {}, + "overridden": {}, + "note": "Not pinned (legacy variant): recorded as found." + }, + "over_sample_size_lp_rule": { + "sub_size_list": [ + 4, + 2, + 2 + ], + "radial_list": [ + 0.3, + 0.6 + ], + "centre": [ + 0.0, + 0.0 + ] + }, + "vmap_batch": 20, + "lanes": "captured", + "arms": [ + "vmap", + "scalar" + ], + "fallback": "on", + "draw_seed": 0, + "vmap_composition": "jax.jit(jax.vmap(fn))", + "lane_rtol": 1e-09, + "vmap_flags_note": "Strict ProfileCLI.parse_cell_args rejects unknown flags. These keys record the exact batching program and prevent historical vmap(jit) artifacts from being mistaken for current jit(vmap) measurements.", + "solver_source": "library", + "solver": "pdip", + "certified_fallback": "pdip", + "certified_pass_budget": 16, + "captured_pass": "time", + "batches": "/mnt/ral/jnightin/autolens_profiling_wt/certified-solver-phase-c1-lane-rate/results/breakdown/imaging/nautilus_batches_delaunay_pix2.npz" + }, + "solver_injection": { + "patched": null, + "part_v": "none \u2014 library mode selects the solver through al.Settings", + "part_b_route_d": { + "patched": "autoarray.inversion.inversion.inversion_util.reconstruction_positive_only_from", + "pass_budget": 7, + "fallback": true + }, + "note": "Library mode (phase B, #300): PART V's arms and references run the library's own positive-only solve, selected by Settings(positive_only_solver, certified_fallback, certified_pass_budget); nothing is injected. PART B's single-call route d (the fiducial d == b pin) still uses the phase-1 harness injection at the phase-3 budget and is not a phase-B row. The untimed certification report observes the library solve (library_solver_observed) without changing it." + }, + "routes": { + "b_s3_pdip": { + "label": "S3 PDIP (source-only)", + "status": "ok", + "solver": "library", + "ms": 50.95825749995129, + "log_likelihood": 29155.00017326616 + }, + "d_s3_certified_fallback": { + "label": "S3 certified active set, budget 7, PDIP fallback", + "status": "ok", + "solver": "harness-injected certified active set", + "pass_budget": 7, + "fallback": true, + "injected_solver_calls_jax": 1, + "injected_solver_calls_numpy": 0, + "ms": 31.63691369991284, + "log_likelihood": 29155.00017130091 + } + }, + "equivalence_pins": [ + { + "pin": "route d (certified, fallback) == route b (library PDIP)", + "route": "d_s3_certified_fallback", + "reference": "b_s3_pdip", + "expectation": "the certified active set returns the library's own positive solution", + "rtol": 1e-09, + "got": 29155.00017130091, + "reference_value": 29155.00017326616, + "rel_diff": 6.740686173376905e-11, + "status": "PASS" + } + ], + "equivalence_rtol": 1e-09, + "reference": { + "log_evidence_s0_library": 29155.00017433923, + "log_evidence_s3_library": 29155.000174339304, + "s3": { + "n_params": 1500, + "n_mapper": 1500, + "n_funcs": 0, + "edge_zeroed_pixels": 0, + "subtracted_light_flux": 5105.448603818575 + } + }, + "command_buffers": { + "wall_on_ms": 991.2252092999552, + "wall_off_ms": 1000.7897528001195, + "command_buffer_delta_ms": 9.564543500164291, + "command_buffer_delta_pct": 0.964921332753348, + "traced": "off", + "compiler_option": "xla_gpu_enable_command_buffer", + "probe": { + "note": "Not taken in --vmap-batch mode: the CUPTI-inside-a-CUDA-graph probe is a phase-1 diagnostic about the JOIN, and this mode already compiles and times both the command-buffers ON and OFF executable of every arm." + }, + "note": "ONE lowering, TWO compilations, one process. wall_on_ms is the PRODUCTION program (CUDA graphs as XLA ships them) and is the number comparable to phase 5's row; wall_off_ms is the graph-less program the stage rows attribute. The delta is the launch overhead the graphs remove \u2014 it lands in device_idle and host_outside_span, not in any stage. Reconciliation is computed against wall_off_ms." + }, + "trace": { + "parser": "ProfileData.from_file(xplane) + as_text() + stack_frame_index(proto field 17)", + "stage_audit": { + "chi_squared_evidence": [ + { + "instruction": "input_reduce_fusion.26", + "ms": 0.003884800000000003, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:104", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:104 (noise_normalization_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:98 (AbstractFit.noise_normalization)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:306 (FitDataset.noise_normalization)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:349 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)" + ] + }, + { + "instruction": "input_reduce_fusion.28", + "ms": 0.0037803150000000002, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:90", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:90 (chi_squared_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:87 (AbstractFit.chi_squared)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:293 (FitDataset.chi_squared)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:345 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)" + ] + }, + { + "instruction": "loop_multiply_fusion.2", + "ms": 0.002986895, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:300", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:300 (AbstractNDArray.__pow__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:60 (unwrap_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:35 (to_new_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:78 (chi_squared_map_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:78 (AbstractFit.chi_squared_map)" + ] + } + ], + "psf_convolution_mapping_matrix": [ + { + "instruction": "input_scatter_fusion", + "ms": 1.9941307349999995, + "opcode": "fusion", + "shape": "f64[1500,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.19.0", + "ms": 1.7626722300000008, + "opcode": "fft", + "shape": "f64[1500,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.15.0", + "ms": 1.3705227500000015, + "opcode": "fft", + "shape": "c128[1500,180,91]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.17.0", + "ms": 0.9792968950000001, + "opcode": "fft", + "shape": "c128[1500,91,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_transpose_fusion.1", + "ms": 0.5133277300000001, + "opcode": "fusion", + "shape": "c128[1500,91,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "wrapped_transpose", + "ms": 0.49952775499999985, + "opcode": "fusion", + "shape": "c128[1500,180,91]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + } + ], + "mapping_matrix": [ + { + "instruction": "loop_broadcast_fusion.3", + "ms": 0.11106406999999997, + "opcode": "fusion", + "shape": "f64[15361,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:342", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:342 (mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:283 (Mapper.mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:91 (AbstractInversionImaging._mapping_matrix_for_convolution_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:137 (AbstractInversionImaging.operated_mapping_matrix_list)" + ] + }, + { + "instruction": "input_reduce_fusion.29", + "ms": 0.0029031999999999925, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:120 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + }, + { + "instruction": "loop_divide_fusion", + "ms": 0.002351499999999999, + "opcode": "fusion", + "shape": "f64[1500]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:92", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:92 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:120 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + } + ], + "mixed_fusion": [ + { + "instruction": "loop_divide_gather_fusion", + "ms": 1.0230453300000004, + "opcode": "fusion", + "shape": "(f64[15361,1,1,1500]{3,2,1,0}, f64[15361,1,1,1500]{3,2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_add_multiply_transpose_fusion", + "ms": 0.061123699999999996, + "opcode": "fusion", + "shape": "(f64[1500,1500]{1,0}, f64[1500,1500]{1,0}, f64[1500,1500]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:61", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:61 (initialize)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:72 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:508 (reconstruction_positive_only_from)" + ] + }, + { + "instruction": "input_transpose_fusion.3", + "ms": 0.024346675000000012, + "opcode": "fusion", + "shape": "f64[1500,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1157 (AbstractInversion.log_det_regularization_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:348 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "input_scatter_fusion.2", + "ms": 0.016429389999999995, + "opcode": "fusion", + "shape": "f64[1500,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:579", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:579 (pixel_splitted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:137 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_abs_fusion", + "ms": 0.014725229999999997, + "opcode": "fusion", + "shape": "(f64[6000,1]{1,0}, f64[6000,1]{1,0}, f64[6000,1]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:613", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:613 (triangle_area_xp)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:657 (pixel_weights_delaunay_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:982 (InterpolatorDelaunay._mappings_sizes_weights_split)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:124 (AdaptSplit.regularization_matrix_from)" + ] + }, + { + "instruction": "input_scatter_fusion.3", + "ms": 0.014606035000000003, + "opcode": "fusion", + "shape": "f64[1500]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:70", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:70 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:120 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + } + ], + "ray_trace_data_grid": [ + { + "instruction": "input_reduce_fusion.18", + "ms": 0.0032377399999999946, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:506", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:506 (FlatLambdaCDM._simpson_1d)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:644 (FlatLambdaCDM.angular_diameter_distance_kpc_z1z2)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:133 (LensingCosmology.angular_diameter_distance_to_earth_in_kpc_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:362 (LensingCosmology.scaling_factor_between_redshifts_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer_util.py:252 (traced_grid_2d_list_from)" + ] + }, + { + "instruction": "input_reduce_fusion.20", + "ms": 0.0027575949999999955, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:506", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:506 (FlatLambdaCDM._simpson_1d)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:644 (FlatLambdaCDM.angular_diameter_distance_kpc_z1z2)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:151 (LensingCosmology.angular_diameter_distance_between_redshifts_in_kpc_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:355 (LensingCosmology.scaling_factor_between_redshifts_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer_util.py:252 (traced_grid_2d_list_from)" + ] + }, + { + "instruction": "input_reduce_fusion.19", + "ms": 0.002598389999999994, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:503", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:503 (FlatLambdaCDM._simpson_1d)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:644 (FlatLambdaCDM.angular_diameter_distance_kpc_z1z2)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:133 (LensingCosmology.angular_diameter_distance_to_earth_in_kpc_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:362 (LensingCosmology.scaling_factor_between_redshifts_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer_util.py:252 (traced_grid_2d_list_from)" + ] + }, + { + "instruction": "input_reduce_fusion.21", + "ms": 0.002593764999999992, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:503", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:503 (FlatLambdaCDM._simpson_1d)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:644 (FlatLambdaCDM.angular_diameter_distance_kpc_z1z2)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:151 (LensingCosmology.angular_diameter_distance_between_redshifts_in_kpc_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:355 (LensingCosmology.scaling_factor_between_redshifts_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer_util.py:252 (traced_grid_2d_list_from)" + ] + }, + { + "instruction": "loop_divide_fusion.1", + "ms": 0.0025345600000000012, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:380", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:380 (LensingCosmology.scaling_factor_between_redshifts_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer_util.py:252 (traced_grid_2d_list_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer.py:632 (Tracer.traced_grid_2d_list_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/structures/decorators/abstract.py:93 (AbstractMaker.evaluate_func)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/structures/decorators/abstract.py:110 (AbstractMaker.result)" + ] + } + ], + "grids_and_structures": [ + { + "instruction": "loop_multiply_sine_fusion", + "ms": 0.001349450000000002, + "opcode": "fusion", + "shape": "(f64[], f64[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/geometry/geometry_util.py:527", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/geometry/geometry_util.py:527 (transform_grid_2d_to_reference_frame)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/profiles/geometry_profiles.py:418 (EllProfile.transformed_to_reference_frame_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/structures/decorators/abstract.py:93 (AbstractMaker.evaluate_func)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/structures/decorators/abstract.py:112 (AbstractMaker.result)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/structures/decorators/to_grid.py:70 (to_grid..wrapper)" + ] + } + ], + "border_relocator": [ + { + "instruction": "eigh.45", + "ms": 0.07476311500000012, + "opcode": "custom-call", + "shape": "(f64[2,2]{0,1}, f64[2]{0}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "custom-call.2", + "ms": 0.007968155000000018, + "opcode": "custom-call", + "shape": "(f64[2,2]{1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_select_sine_fusion", + "ms": 0.003661740000000002, + "opcode": "fusion", + "shape": "(f64[], f64[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:301", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:301 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:458 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_add_fusion.7", + "ms": 0.0036049499999999952, + "opcode": "fusion", + "shape": "f64[1500]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:458 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_concatenate_fusion.6", + "ms": 0.0033672000000000016, + "opcode": "fusion", + "shape": "f64[1500,2]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:323", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:323 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:458 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_reduce_fusion.23", + "ms": 0.0019169550000000043, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:256", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:256 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + } + ], + "mesh_construction": [ + { + "instruction": "input_concatenate_fusion.7", + "ms": 0.0020686249999999975, + "opcode": "fusion", + "shape": "f64[1500,2]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:820", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:820 (InterpolatorDelaunay.mesh_grid_xy)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:847 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + } + ], + "mesh_qhull_callback": [ + { + "instruction": "pure_callback.4", + "ms": 0.010612789999999981, + "opcode": "custom-call", + "shape": "(s32[3000,3]{1,0}, s32[3000,3]{1,0}, s32[1500]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:161", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:161 (_jax_delaunay_tables)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:405 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + } + ], + "other": [ + { + "instruction": "copy.72", + "ms": 0.04222511500000095, + "opcode": "copy", + "shape": "f64[1,1024,2]{2,1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.35", + "ms": 0.014779059999999924, + "opcode": "copy", + "shape": "s32[21361]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "loop_broadcast_fusion.1", + "ms": 0.0019825650000000043, + "opcode": "fusion", + "shape": "(pred[21361]{0}, pred[21361]{0})", + "source": "", + "stack": [] + }, + { + "instruction": "copy.40", + "ms": 0.001971185000000003, + "opcode": "copy", + "shape": "s64[1500]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "loop_broadcast_fusion.2", + "ms": 0.0017951949999999957, + "opcode": "fusion", + "shape": "(f64[1500]{0}, f64[1500]{0}, f64[1500]{0}, f64[1500]{0})", + "source": "", + "stack": [] + }, + { + "instruction": "copy.20", + "ms": 0.001671215, + "opcode": "copy", + "shape": "s64[]", + "source": "", + "stack": [] + } + ], + "mesh_seed_argmin": [ + { + "instruction": "input_reduce_fusion", + "ms": 0.14838911000000363, + "opcode": "fusion", + "shape": "(f64[1024]{0}, s64[1024]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:191", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:191 (_nearest_vertex_seed_from..argmin_chunk)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)" + ] + }, + { + "instruction": "loop_dynamic_update_slice_fusion", + "ms": 0.04136217499999794, + "opcode": "fusion", + "shape": "s32[21,1024]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_add_fusion", + "ms": 0.031880524999999986, + "opcode": "fusion", + "shape": "s64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_broadcast_fusion", + "ms": 0.0019715200000000013, + "opcode": "fusion", + "shape": "s32[21,1024]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "regularization_H": [ + { + "instruction": "loop_select_fusion.3", + "ms": 0.02005693000000001, + "opcode": "fusion", + "shape": "f64[1500,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:549", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:549 (pixel_splitted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:137 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_scatter_fusion.10", + "ms": 0.002080480000000001, + "opcode": "fusion", + "shape": "f64[1500,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:615", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:615 (pixel_splitted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:137 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_concatenate_fusion.9", + "ms": 0.0018708849999999981, + "opcode": "fusion", + "shape": "pred[3]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:91", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:91 (split_points_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:410 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + }, + { + "instruction": "input_concatenate_fusion.8", + "ms": 0.001867524999999998, + "opcode": "fusion", + "shape": "pred[3]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:93", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:93 (split_points_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:410 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + }, + { + "instruction": "input_concatenate_fusion.10", + "ms": 0.001867194999999998, + "opcode": "fusion", + "shape": "pred[3]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:90", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:90 (split_points_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:410 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + }, + { + "instruction": "input_concatenate_fusion", + "ms": 0.0017668799999999982, + "opcode": "fusion", + "shape": "s32[1500,2]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:615", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:615 (pixel_splitted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:137 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "mesh_locate_walk": [ + { + "instruction": "loop_reduce_fusion", + "ms": 0.023632765000000222, + "opcode": "fusion", + "shape": "(f64[21361]{0}, s64[21361]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:264", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:264 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:264 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)" + ] + }, + { + "instruction": "input_reduce_fusion.1", + "ms": 0.022718959999999684, + "opcode": "fusion", + "shape": "pred[196]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:288", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:288 (_walk_from_seed..cond)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)" + ] + }, + { + "instruction": "loop_or_select_fusion", + "ms": 0.020374695000000012, + "opcode": "fusion", + "shape": "(s32[21361]{0}, pred[21361]{0}, pred[21361]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:270", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:270 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)" + ] + }, + { + "instruction": "loop_select_fusion", + "ms": 0.017536129999999987, + "opcode": "fusion", + "shape": "s32[21361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:242", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:242 (_walk_from_seed..weights_of)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:262 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)" + ] + }, + { + "instruction": "input_reduce_fusion.2", + "ms": 0.014358279999999928, + "opcode": "fusion", + "shape": "pred[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:288", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:288 (_walk_from_seed..cond)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)" + ] + }, + { + "instruction": "while.22", + "ms": 0.012884814999999787, + "opcode": "while", + "shape": "(s32[], s32[21361]{0}, pred[21361]{0}, pred[21361]{0}, s32[3000,3]{1,0}, /*index=5*/f64[1500,2]{1,0}, f64[21361,2]{1,0}, s32[3000,3]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "data_vector_D": [ + { + "instruction": "input_reduce_fusion.10", + "ms": 0.12161861500000003, + "opcode": "fusion", + "shape": "f64[92,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123 (data_vector_via_blurred_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:67 (InversionImagingMapping.data_vector)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:699 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_reduce_fusion.27", + "ms": 0.003683645000000003, + "opcode": "fusion", + "shape": "f64[1500]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123 (data_vector_via_blurred_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:67 (InversionImagingMapping.data_vector)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:699 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "inversion_other": [ + { + "instruction": "cholesky.60", + "ms": 0.8959521850000002, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1078 (AbstractInversion.log_det_curvature_reg_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:347 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "cholesky.70", + "ms": 0.8952552050000002, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1157 (AbstractInversion.log_det_regularization_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:348 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "input_reduce_fusion.17", + "ms": 0.013025704999999992, + "opcode": "fusion", + "shape": "f64[1500]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:946", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:946 (AbstractInversion.regularization_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:346 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)", + "/mnt/ral/jnightin/autolens_profiling_wt/certified-solver-phase-c1-lane-rate/scripts/imaging/likelihood_breakdown/fixed_light_trace.py:1195 (_captured_likelihood_fn.._likelihood)" + ] + }, + { + "instruction": "loop_reduce_window_fusion", + "ms": 0.002881114999999994, + "opcode": "fusion", + "shape": "s64[6,16]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "loop_reduce_window_fusion.1", + "ms": 0.0027832000000000048, + "opcode": "fusion", + "shape": "s64[94,16]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "input_reduce_fusion.25", + "ms": 0.0026658900000000032, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:944", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:944 (AbstractInversion.regularization_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:346 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)", + "/mnt/ral/jnightin/autolens_profiling_wt/certified-solver-phase-c1-lane-rate/scripts/imaging/likelihood_breakdown/fixed_light_trace.py:1195 (_captured_likelihood_fn.._likelihood)" + ] + } + ], + "curvature_matrix_F": [ + { + "instruction": "cublas-lt-matmul.2", + "ms": 4.2290523050000015, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "pdip_solve": [ + { + "instruction": "cholesky.20", + "ms": 15.643076489999782, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:106", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:106 (factorize_kkt)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:212 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve", + "ms": 2.4862915699999815, + "opcode": "custom-call", + "shape": "(f64[1500,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:213 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve.2", + "ms": 2.435595480000113, + "opcode": "custom-call", + "shape": "(f64[1500,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:217 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve.3", + "ms": 2.362735340000195, + "opcode": "custom-call", + "shape": "(f64[1500,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:217 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve.1", + "ms": 2.261767130000196, + "opcode": "custom-call", + "shape": "(f64[1500,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:213 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "cholesky.40", + "ms": 0.8701936999999988, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:62", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:62 (initialize)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:72 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:508 (reconstruction_positive_only_from)" + ] + } + ], + "mapped_reconstruction": [ + { + "instruction": "input_reduce_fusion.14", + "ms": 0.11521205500000002, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163 (mapped_reconstructed_data_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:120 (InversionImagingMapping._mapped_reconstructed_data_dict_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:196 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + } + ] + }, + "stage_audit_note": "The HLO instructions that contributed most of each stage's milliseconds, with their full source stack. A stage row is only as good as the rules that built it; this is how a reader checks a row against the HLO instead of trusting it.", + "untraced_wall_ms": 50.02341258999877, + "reconciliation_vs_untraced_pct": -1.9565279822480652, + "wall_basis": "wall_ms is the TRACED run's wall, the run these kernel durations came from. untraced_wall_ms is the same executable without the profiler; the difference is the profiler's overhead and belongs in neither the stages nor the idle row.", + "calls": 200, + "call_split": "per-call (first-instruction recurrence)", + "call_blocks": 200, + "events": 185800, + "streams": [ + "Stream #14(MemcpyH2D,Compute,MemcpyD2H,Memset,MemcpyD2D)" + ], + "per_stage_ms": { + "border_relocator": { + "median_ms": 0.09679900000000002, + "min_ms": 0.09615600000000003, + "max_ms": 0.097789 + }, + "chi_squared_evidence": { + "median_ms": 0.010624000000000001, + "min_ms": 0.010304, + "max_ms": 0.011232 + }, + "curvature_matrix_F": { + "median_ms": 4.2269015, + "min_ms": 4.214477, + "max_ms": 4.30875 + }, + "data_vector_D": { + "median_ms": 0.12531350000000002, + "min_ms": 0.124545, + "max_ms": 0.126145 + }, + "grids_and_structures": { + "median_ms": 0.001312, + "min_ms": 0.00128, + "max_ms": 0.00144 + }, + "inversion_other": { + "median_ms": 1.8232705, + "min_ms": 1.805524, + "max_ms": 1.837844 + }, + "mapped_reconstruction": { + "median_ms": 0.115197, + "min_ms": 0.114397, + "max_ms": 0.116061 + }, + "mapping_matrix": { + "median_ms": 0.11632100000000001, + "min_ms": 0.115329, + "max_ms": 0.11756899999999999 + }, + "memset": { + "median_ms": 0.04812800000000002, + "min_ms": 0.04000000000000001, + "max_ms": 0.07564800000000006 + }, + "mesh_construction": { + "median_ms": 0.00208, + "min_ms": 0.002047, + "max_ms": 0.002112 + }, + "mesh_locate_walk": { + "median_ms": 0.134049, + "min_ms": 0.133217, + "max_ms": 0.134912 + }, + "mesh_qhull_callback": { + "median_ms": 0.01056, + "min_ms": 0.010464000000000001, + "max_ms": 0.011168 + }, + "mesh_seed_argmin": { + "median_ms": 0.2235865000000001, + "min_ms": 0.2230990000000001, + "max_ms": 0.2240660000000001 + }, + "mixed_fusion": { + "median_ms": 1.2709775, + "min_ms": 1.2687489999999997, + "max_ms": 1.2747000000000004 + }, + "other": { + "median_ms": 0.0693135, + "min_ms": 0.06889499999999998, + "max_ms": 0.06976 + }, + "pdip_solve": { + "median_ms": 25.848196000000044, + "min_ms": 22.808241000000063, + "max_ms": 41.376746000000004 + }, + "psf_convolution_mapping_matrix": { + "median_ms": 7.3480195, + "min_ms": 7.3335490000000005, + "max_ms": 7.364046000000001 + }, + "ray_trace_data_grid": { + "median_ms": 0.013696, + "min_ms": 0.013568, + "max_ms": 0.014177000000000002 + }, + "regularization_H": { + "median_ms": 0.031008, + "min_ms": 0.030368, + "max_ms": 0.031679 + } + }, + "stage_order": [ + "ray_trace_data_grid", + "border_relocator", + "mesh_qhull_callback", + "mesh_seed_argmin", + "mesh_locate_walk", + "mesh_construction", + "mapping_matrix", + "psf_convolution_mapping_matrix", + "data_vector_D", + "curvature_matrix_F", + "regularization_H", + "pdip_solve", + "mapped_reconstruction", + "chi_squared_evidence", + "grids_and_structures", + "inversion_other", + "mixed_fusion", + "other", + "memset" + ], + "mixed_fusion": { + "ms": 1.2709775, + "constituent_stage_sets": { + "curvature_matrix_F + psf_convolution_mapping_matrix": 1.0230453300000004, + "curvature_reg_reduce_gather + inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter + regularization_H": 0.061123699999999996, + "inversion_other + regularization_H": 0.029225715000000055, + "inversion_other + mesh_construction + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin + regularization_H": 0.021690225000000046, + "border_relocator + ray_trace_data_grid": 0.021213189999999996, + "inversion_other + mapping_matrix + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin": 0.021144570000000022, + "inversion_other + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + regularization_H": 0.014725229999999997, + "inversion_other + mapping_matrix + mesh_construction + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin": 0.01166553, + "grids_and_structures + mass_profile_deflections + ray_trace_data_grid": 0.009562199999999998, + "inversion_other + mesh_dual_areas + mesh_locate_walk": 0.00939052000000004, + "inversion_other + mesh_construction + mesh_seed_argmin + regularization_H": 0.007291344999999993, + "inversion_other + mesh_construction + regularization_H": 0.006517565000000003, + "inversion_other + ray_trace_data_grid": 0.0053705450000000165, + "inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": 0.004874084999999997, + "inversion_other + mapped_reconstruction": 0.0037905350000000007, + "mapping_matrix + regularization_H": 0.003419349999999996, + "inversion_other + mesh_construction + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin": 0.0031858950000000015, + "inversion_other + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin": 0.0029827000000000065, + "inversion_other + pdip_solve": 0.0028899249999999976, + "inversion_other + mesh_locate_walk + mesh_seed_argmin": 0.002527329999999996, + "inversion_other + mesh_interpolation_weights": 0.0022097499999999934, + "chi_squared_evidence + inversion_other": 0.0019017450000000029, + "grids_and_structures + mass_profile_deflections": 0.0013417450000000018 + }, + "example_kernels": { + "curvature_matrix_F + psf_convolution_mapping_matrix": [ + "loop_divide_gather_fusion" + ], + "curvature_reg_reduce_gather + inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter + regularization_H": [ + "input_add_multiply_transpose_fusion" + ], + "inversion_other + regularization_H": [ + "loop_reduce_slice_fusion", + "loop_reduce_fusion.1", + "loop_reduce_fusion.2", + "input_transpose_fusion.3" + ], + "inversion_other + mesh_construction + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin + regularization_H": [ + "input_reduce_fusion.24", + "loop_select_fusion.4", + "input_scatter_fusion.2" + ], + "border_relocator + ray_trace_data_grid": [ + "input_reduce_fusion.16", + "input_concatenate_fusion.12", + "input_reduce_fusion.15", + "loop_add_fusion.5" + ], + "inversion_other + mapping_matrix + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin": [ + "input_scatter_fusion.6", + "input_scatter_fusion.3" + ], + "inversion_other + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + regularization_H": [ + "loop_abs_fusion" + ], + "inversion_other + mapping_matrix + mesh_construction + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin": [ + "input_scatter_fusion.4" + ], + "grids_and_structures + mass_profile_deflections + ray_trace_data_grid": [ + "loop_subtract_fusion.1" + ], + "inversion_other + mesh_dual_areas + mesh_locate_walk": [ + "loop_select_fusion.6", + "input_scatter_fusion.9", + "input_scatter_fusion.8", + "input_scatter_fusion.7" + ] + }, + "prorated_estimate_ms": { + "curvature_matrix_F": 0.5115226650000002, + "psf_convolution_mapping_matrix": 0.5115226650000002, + "inversion_other": 0.05472717369047624, + "regularization_H": 0.03706525725000003, + "mesh_construction": 0.0166546449404762, + "ray_trace_data_grid": 0.016479267500000006, + "mesh_interpolation_weights": 0.013764162023809534, + "mesh_locate_walk": 0.013686857690476215, + "mapped_reconstruction": 0.013301072083333332, + "pdip_solve": 0.01285076708333333, + "mesh_seed_argmin": 0.012379520607142867, + "reconstruction_scatter": 0.011405804583333332, + "border_relocator": 0.010606594999999998, + "curvature_reg_reduce_gather": 0.010187283333333333, + "mesh_dual_areas": 0.009592988857142874, + "mapping_matrix": 0.0066745828571428585, + "grids_and_structures": 0.0038582725000000004, + "mass_profile_deflections": 0.0038582725000000004, + "chi_squared_evidence": 0.0009508725000000014 + }, + "prorated_note": "ESTIMATE ONLY \u2014 a mixed fusion's time split equally across the stages its constituents span. Never summed into the measured table, never reconciled." + }, + "other_sources_ms": { + "copy.72": 0.04222511500000095, + "copy.35": 0.014779059999999924, + "loop_broadcast_fusion.1": 0.0019825650000000043, + "copy.40": 0.001971185000000003, + "loop_broadcast_fusion.2": 0.0017951949999999957, + "copy.20": 0.001671215, + "copy.71": 0.0016487949999999991, + "copy.52": 0.001648469999999997, + "copy.70": 0.001609909999999998 + }, + "device_span_ms": 51.395114955, + "device_busy_ms": 43.86577693, + "device_idle_ms": 7.529338024999994, + "largest_idle_gaps": [ + { + "gap_ms": 5.342053, + "after": "pure_callback.4", + "before": "pure_callback.4" + }, + { + "gap_ms": 0.046111, + "after": "input_concatenate_fusion.7", + "before": "pure_callback.4" + }, + { + "gap_ms": 0.033919, + "after": "pure_callback.4", + "before": "copy.71" + }, + { + "gap_ms": 0.033567, + "after": "input_reduce_fusion.1", + "before": "input_reduce_fusion.2" + }, + { + "gap_ms": 0.024608, + "after": "loop_add_fusion", + "before": "copy.72" + }, + { + "gap_ms": 0.022879, + "after": "input_reduce_fusion.26", + "before": "loop_broadcast_fusion.4" + }, + { + "gap_ms": 0.02064, + "after": "eigh.45", + "before": "eigh.45" + }, + { + "gap_ms": 0.019999, + "after": "loop_reduce_fusion.1", + "before": "loop_reduce_fusion.2" + } + ], + "kernel_ms": 41.51535250000005, + "sum_ms": 49.04469052500004, + "wall_ms": 51.40007197500381, + "host_outside_span_ms": 0.004957020003814705, + "reconciliation_pct": -4.582447766122208, + "unjoined_ms": 0.0, + "unjoined_pct": 0.0, + "other_ms": 0.0693135, + "other_pct": 0.13485097848444183, + "note": "Stage rows attribute the command-buffers-OFF program (see the module docstring): kernel times are the same, the launch overhead the CUDA graphs remove is not. sum_ms = kernel rows + device_idle_ms; the residual against wall_ms is host_outside_span_ms (dispatch before the first kernel, teardown after the last).", + "per_stage_ms_per_lane": { + "border_relocator": 0.09679900000000002, + "chi_squared_evidence": 0.010624000000000001, + "curvature_matrix_F": 4.2269015, + "data_vector_D": 0.12531350000000002, + "grids_and_structures": 0.001312, + "inversion_other": 1.8232705, + "mapped_reconstruction": 0.115197, + "mapping_matrix": 0.11632100000000001, + "memset": 0.04812800000000002, + "mesh_construction": 0.00208, + "mesh_locate_walk": 0.134049, + "mesh_qhull_callback": 0.01056, + "mesh_seed_argmin": 0.2235865000000001, + "mixed_fusion": 1.2709775, + "other": 0.0693135, + "pdip_solve": 25.848196000000044, + "psf_convolution_mapping_matrix": 7.3480195, + "ray_trace_data_grid": 0.013696, + "regularization_H": 0.031008 + }, + "per_lane_divisor": 1, + "host_callback": { + "pure_callback_span_ms": 100.77607629999997, + "qhull_ms": 93.95979960000003, + "callback_body_ms_note": "the OUTERMOST matching body event, not a sum: under the probe the body appears twice (the wrapper and the timed re-implementation it calls) and summing them would count the same work twice", + "events_by_name": { + "pure_callback.4": { + "count": 200, + "ms": 100.77607629999997 + }, + "$callback.py:815 _wrapped_callback": { + "count": 200, + "ms": 99.01275000000007 + }, + "$callback.py:224 _callback": { + "count": 200, + "ms": 98.54368509999999 + }, + "$callback.py:74 pure_callback_impl": { + "count": 200, + "ms": 98.36677370000001 + }, + "$callback.py:69 __call__": { + "count": 200, + "ms": 94.27812700000001 + }, + "$delaunay.py:162 ": { + "count": 200, + "ms": 94.14547370000003 + }, + "$host_callback_probe.py:225 wrapped": { + "count": 200, + "ms": 93.95979960000003 + }, + "$host_callback_probe.py:160 _timed_tri_only": { + "count": 200, + "ms": 93.7995406 + }, + "ThenExecuteCallback:GetEventForComputeStreamSyncPoint": { + "count": 200, + "ms": 0.3638613000000001 + }, + "$callback.py:822 ": { + "count": 800, + "ms": 0.28749589999999947 + }, + "$__init__.py:132 _xla_gc_callback": { + "count": 2, + "ms": 0.000366 + } + }, + "note": "HOST milliseconds per traced BATCH (the whole invocation), aggregated by name because the events nest. Not a row of the device table: the device pays for them as the idle gaps largest_idle_gaps names." + }, + "host_callback_ms": 100.77607629999997 + }, + "hlo_census": { + "status": "excluded", + "reason": "The legacy census anchors PyAutoArray source line numbers that moved after the phase-1 run. No batched attribution is published from unsupported anchors; the device-event table and wall reconciliation remain valid." + }, + "stage_map_provenance": [ + { + "label": "log_det_curvature_reg", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 850, + 882 + ], + "requires": { + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 884, + 896 + ] + }, + "function": null + }, + { + "label": "log_det_regularization", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 850, + 882 + ], + "requires": { + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 897, + 943 + ] + }, + "function": null + }, + { + "label": "curvature_reg_add", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 359, + 372 + ], + "requires": null, + "function": null + }, + { + "label": "curvature_reg_reduce_gather", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 374, + 398 + ], + "requires": null, + "function": null + }, + { + "label": "edge_subset_gather", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 606, + 614 + ], + "requires": null, + "function": null + }, + { + "label": "regularization_term", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 786, + 849 + ], + "requires": null, + "function": null + }, + { + "label": "mapped_reconstruction", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 722, + 785 + ], + "requires": null, + "function": null + }, + { + "label": "reconstruction_scatter", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 583, + 605 + ], + "requires": null, + "function": null + }, + { + "label": "reconstruction_scatter", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 615, + 721 + ], + "requires": null, + "function": null + }, + { + "label": "certified_active_set_solve", + "path": "likelihood_breakdown/active_set_steps.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "certified_active_set_solve", + "path": "likelihood_breakdown/library_solver_injection.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "pdip_solve", + "path": "PyAutoArray/autoarray/util/jax_nnls.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "pdip_solve", + "path": "PyAutoArray/autoarray/inversion/inversion/inversion_util.py", + "lines": [ + 256, + 488 + ], + "requires": null, + "function": null + }, + { + "label": "mapped_reconstruction", + "path": "PyAutoArray/autoarray/inversion/inversion/inversion_util.py", + "lines": [ + 156, + 200 + ], + "requires": null, + "function": null + }, + { + "label": "curvature_matrix_F", + "path": "PyAutoArray/autoarray/inversion/inversion/inversion_util.py", + "lines": [ + 12, + 155 + ], + "requires": null, + "function": null + }, + { + "label": "reconstruction_scatter", + "path": "PyAutoArray/autoarray/inversion/inversion/inversion_util.py", + "lines": [ + 201, + 255 + ], + "requires": null, + "function": null + }, + { + "label": "data_vector_D", + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py", + "lines": [ + 54, + 73 + ], + "requires": null, + "function": null + }, + { + "label": "curvature_matrix_F", + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py", + "lines": [ + 74, + 110 + ], + "requires": null, + "function": null + }, + { + "label": "data_vector_D", + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py", + "lines": null, + "requires": null, + "function": "data_vector_via_blurred_mapping_matrix_from" + }, + { + "label": "curvature_matrix_F", + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "likelihood_breakdown/psf_cube_injection.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": [ + 1086, + 1300 + ], + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": [ + 632, + 642 + ], + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": [ + 670, + 691 + ], + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": null, + "requires": { + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": [ + 1086, + 1300 + ] + }, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": null, + "requires": { + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py", + "lines": [ + 119, + 150 + ] + }, + "function": null + }, + { + "label": "psf_convolution_image", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py", + "lines": [ + 119, + 150 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_qhull_callback", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 139, + 172 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_seed_argmin", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 173, + 207 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_locate_walk", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 208, + 372 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_dual_areas", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 373, + 396 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_dual_areas", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 437, + 494 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_dual_areas", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 605, + 615 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_interpolation_weights", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 616, + 695 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_interpolation_weights", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 896, + 1000 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_construction", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "border_relocator", + "path": "PyAutoArray/autoarray/inversion/mesh/border_relocator.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "mesh_construction", + "path": "PyAutoArray/autoarray/inversion/mesh/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "mapping_matrix", + "path": "PyAutoArray/autoarray/inversion/mappers/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "mapping_matrix", + "path": "PyAutoArray/autoarray/inversion/mappings/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "mapping_matrix", + "path": "PyAutoArray/autoarray/inversion/linear_obj/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "regularization_H", + "path": "PyAutoArray/autoarray/inversion/regularization/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "chi_squared_evidence", + "path": "PyAutoArray/autoarray/fit/fit_util.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "chi_squared_evidence", + "path": "PyAutoArray/autoarray/fit/fit_dataset.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "ray_trace_mesh_grid", + "path": "PyAutoLens/autolens/lens/to_inversion.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "ray_trace_mesh_grid", + "path": "PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "mass_profile_deflections", + "path": "PyAutoGalaxy/autogalaxy/profiles/mass/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "light_profile_image", + "path": "PyAutoGalaxy/autogalaxy/profiles/light/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "light_profile_image", + "path": "PyAutoGalaxy/autogalaxy/operate/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "ray_trace_data_grid", + "path": "PyAutoLens/autolens/lens/tracer.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "ray_trace_data_grid", + "path": "PyAutoLens/autolens/lens/tracer_util.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "grids_and_structures", + "path": "PyAutoArray/autoarray/structures/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "grids_and_structures", + "path": "PyAutoArray/autoarray/operators/over_sampling/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "grids_and_structures", + "path": "PyAutoArray/autoarray/geometry/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "inversion_other", + "path": "PyAutoArray/autoarray/inversion/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "fit_imaging_other", + "path": "PyAutoLens/autolens/imaging/fit_imaging.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "fit_imaging_other", + "path": "PyAutoGalaxy/autogalaxy/imaging/fit_imaging.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "fit_imaging_other", + "path": "PyAutoArray/autoarray/fit/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "analysis_other", + "path": "PyAutoLens/autolens/analysis/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "analysis_other", + "path": "PyAutoGalaxy/autogalaxy/analysis/", + "lines": null, + "requires": null, + "function": null + } + ], + "trace_timing": { + "traced_wall_ms": 51.40007197500381, + "untraced_wall_ms": 50.02341258999877, + "profiler_overhead_ms": 1.3766593850050413, + "profiler_overhead_pct": 2.7520301269495517 + }, + "jit_phases": { + "b_s3_pdip_library_likelihood_jit": { + "lower_s": 1.525716807002027, + "compile_s": 4.521228332996543, + "first_call_s": 0.1549838529972476, + "steady_per_call_s": 0.05095825749995129 + }, + "d_s3_certified_fallback_library_likelihood_jit": { + "lower_s": 0.4830860379988735, + "compile_s": 4.224105220000638, + "first_call_s": 0.045827450001524994, + "steady_per_call_s": 0.03163691369991284 + } + }, + "peak_bytes": { + "after_setup": 85108992, + "after_routes": 1181653248, + "after_all": 2405526272, + "note": "jax.devices()[0].memory_stats()['peak_bytes_in_use']; None on a backend that does not report it (CPU). Process-wide high-water marks." + }, + "note": "Every stage row is a MEASURED sum of GPU kernel durations joined to library source through the optimized HLO of ONE program \u2014 not arithmetic across compilations. The rows attribute the command-buffers-OFF program: kernel time is the same as production, the launch overhead the CUDA graphs remove is not, and command_buffers.* carries both walls and their delta. sum_ms = kernel rows + measured device_idle_ms; the residual against the wall is host_outside_span_ms and is reported, not absorbed. mixed_fusion.prorated_estimate_ms is an ESTIMATE and is never part of the table. No row may be quoted if reconciliation_pct is outside 5 % or unjoined_ms is non-zero.", + "vmap": { + "batch": 20, + "lanes_mode": "captured", + "arms": [ + "vmap", + "scalar" + ], + "draw_seed": 0, + "fallback": true, + "composition": "jax.jit(jax.vmap(fn))", + "composition_provenance": "Current Fitness._vmap after PyAutoFit#1638. Array 343376 used the retired jax.vmap(jax.jit(fn)) composition and is historical evidence only.", + "headline_arm": "scalar", + "lane_rtol": 1e-09, + "lanes": [ + { + "lane": 0, + "draw_name": "call00008_lane00", + "draw_kind": "captured", + "offsets": {}, + "log_likelihood_vmap": 19851.59418648651, + "log_likelihood_scalar": 19851.59418466133, + "log_likelihood_library_pdip": 19851.59418648637, + "log_likelihood_library_pdip_scalar": 19851.594184645834, + "rel_diff_vmap_vs_library_pdip": 6.963833401530631e-15, + "rel_diff_scalar_vs_library_pdip_scalar": 7.806823761387096e-13, + "abs_diff_nats": 1.8251776054967195e-06, + "rel_diff": 9.194111004480304e-11, + "rel_diff_scalar_vs_library_pdip": 9.193414620294898e-11, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 1.8405371520202607e-06, + "rel_diff_library_pdip_vmap_vs_scalar": 9.271482858761135e-11, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 1, + "draw_name": "call00008_lane01", + "draw_kind": "captured", + "offsets": {}, + "log_likelihood_vmap": -10958.375999864249, + "log_likelihood_scalar": -10958.374219917532, + "log_likelihood_library_pdip": -10958.375807264842, + "log_likelihood_library_pdip_scalar": -10958.374268026848, + "rel_diff_vmap_vs_library_pdip": 1.7575543204836497e-08, + "rel_diff_scalar_vs_library_pdip_scalar": 4.3901873132189576e-09, + "abs_diff_nats": 0.0017799467168515548, + "rel_diff": 1.624279917012133e-07, + "rel_diff_scalar_vs_library_pdip": 1.4485242496828834e-07, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 0.00153923799371114, + "rel_diff_library_pdip_vmap_vs_scalar": 1.4046225800136805e-07, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 2, + "draw_name": "call00008_lane02", + "draw_kind": "captured", + "offsets": {}, + "log_likelihood_vmap": 25613.44056437085, + "log_likelihood_scalar": 25613.440570535575, + "log_likelihood_library_pdip": 25613.440564410408, + "log_likelihood_library_pdip_scalar": 25613.440570363673, + "rel_diff_vmap_vs_library_pdip": 1.544477457014604e-12, + "rel_diff_scalar_vs_library_pdip_scalar": 6.711389441042082e-12, + "abs_diff_nats": 6.164726073620841e-06, + "rel_diff": 2.4068324818152055e-10, + "rel_diff_scalar_vs_library_pdip": 2.3913877078206263e-10, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 5.953264917479828e-06, + "rel_diff_library_pdip_vmap_vs_scalar": 2.3242738128543816e-10, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 3, + "draw_name": "call00008_lane03", + "draw_kind": "captured", + "offsets": {}, + "log_likelihood_vmap": 27440.977846751706, + "log_likelihood_scalar": 27440.977846751815, + "log_likelihood_library_pdip": 27440.977846751714, + "log_likelihood_library_pdip_scalar": 27440.977846751797, + "rel_diff_vmap_vs_library_pdip": 2.6514935636831567e-16, + "rel_diff_scalar_vs_library_pdip_scalar": 6.628733909207872e-16, + "abs_diff_nats": 1.0913936421275139e-10, + "rel_diff": 3.97724034552472e-15, + "rel_diff_scalar_vs_library_pdip": 3.7120909891564195e-15, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 8.36735125631094e-11, + "rel_diff_library_pdip_vmap_vs_scalar": 3.049217598235621e-15, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 4, + "draw_name": "call00008_lane04", + "draw_kind": "captured", + "offsets": {}, + "log_likelihood_vmap": 19664.8883643167, + "log_likelihood_scalar": 19664.888362180216, + "log_likelihood_library_pdip": 19664.8883643167, + "log_likelihood_library_pdip_scalar": 19664.888362180216, + "rel_diff_vmap_vs_library_pdip": 0.0, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 2.1364830899983644e-06, + "rel_diff": 1.0864455727637275e-10, + "rel_diff_scalar_vs_library_pdip": 1.0864455726456912e-10, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 2.1364830899983644e-06, + "rel_diff_library_pdip_vmap_vs_scalar": 1.0864455727637275e-10, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 5, + "draw_name": "call00008_lane05", + "draw_kind": "captured", + "offsets": {}, + "log_likelihood_vmap": 19661.77570330541, + "log_likelihood_scalar": 19661.775700753395, + "log_likelihood_library_pdip": 19661.77570330541, + "log_likelihood_library_pdip_scalar": 19661.775700753395, + "rel_diff_vmap_vs_library_pdip": 0.0, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 2.552016667323187e-06, + "rel_diff": 1.2979583869555583e-10, + "rel_diff_scalar_vs_library_pdip": 1.2979583867870887e-10, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 2.552016667323187e-06, + "rel_diff_library_pdip_vmap_vs_scalar": 1.2979583869555583e-10, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 6, + "draw_name": "call00008_lane06", + "draw_kind": "captured", + "offsets": {}, + "log_likelihood_vmap": 19673.099043038375, + "log_likelihood_scalar": 19673.099042001224, + "log_likelihood_library_pdip": 19673.09904303841, + "log_likelihood_library_pdip_scalar": 19673.099041959198, + "rel_diff_vmap_vs_library_pdip": 1.8492149097267215e-15, + "rel_diff_scalar_vs_library_pdip_scalar": 2.136213063833496e-12, + "abs_diff_nats": 1.0371513781137764e-06, + "rel_diff": 5.2719267864178524e-11, + "rel_diff_scalar_vs_library_pdip": 5.272111707630883e-11, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 1.0792136890813708e-06, + "rel_diff_library_pdip_vmap_vs_scalar": 5.485733014303447e-11, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 7, + "draw_name": "call00008_lane07", + "draw_kind": "captured", + "offsets": {}, + "log_likelihood_vmap": -138595.04792641063, + "log_likelihood_scalar": -138594.4615199691, + "log_likelihood_library_pdip": -138594.9751196262, + "log_likelihood_library_pdip_scalar": -138594.4581900122, + "rel_diff_vmap_vs_library_pdip": 5.253205201316868e-07, + "rel_diff_scalar_vs_library_pdip_scalar": 2.4026623773717825e-08, + "abs_diff_nats": 0.5864064415218309, + "rel_diff": 4.231095781827759e-06, + "rel_diff_scalar_vs_library_pdip": 3.7057595822723345e-06, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 0.5169296140084043, + "rel_diff_library_pdip_vmap_vs_scalar": 3.7298000277882455e-06, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 8, + "draw_name": "call00008_lane08", + "draw_kind": "captured", + "offsets": {}, + "log_likelihood_vmap": 29346.071300813812, + "log_likelihood_scalar": 29346.071300942538, + "log_likelihood_library_pdip": 29346.071300823063, + "log_likelihood_library_pdip_scalar": 29346.07130093671, + "rel_diff_vmap_vs_library_pdip": 3.1525106075015753e-13, + "rel_diff_scalar_vs_library_pdip_scalar": 1.9859701113637302e-13, + "abs_diff_nats": 1.2872624211013317e-07, + "rel_diff": 4.3864897890437126e-12, + "rel_diff_scalar_vs_library_pdip": 4.071238728311413e-12, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 1.1364681995473802e-07, + "rel_diff_library_pdip_vmap_vs_scalar": 3.872641717159274e-12, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 9, + "draw_name": "call00008_lane09", + "draw_kind": "captured", + "offsets": {}, + "log_likelihood_vmap": 19677.044941109525, + "log_likelihood_scalar": 19677.04493926127, + "log_likelihood_library_pdip": 19677.044941109525, + "log_likelihood_library_pdip_scalar": 19677.044939261974, + "rel_diff_vmap_vs_library_pdip": 0.0, + "rel_diff_scalar_vs_library_pdip_scalar": 3.5682690766626634e-14, + "abs_diff_nats": 1.8482533050701022e-06, + "rel_diff": 9.392941423751663e-11, + "rel_diff_scalar_vs_library_pdip": 9.39294142286939e-11, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 1.8475511751603335e-06, + "rel_diff_library_pdip_vmap_vs_scalar": 9.389373154674665e-11, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 10, + "draw_name": "call00008_lane10", + "draw_kind": "captured", + "offsets": {}, + "log_likelihood_vmap": 28165.25603001414, + "log_likelihood_scalar": 28165.256030015564, + "log_likelihood_library_pdip": 28165.25603001398, + "log_likelihood_library_pdip_scalar": 28165.256030015524, + "rel_diff_vmap_vs_library_pdip": 5.683281108520991e-15, + "rel_diff_scalar_vs_library_pdip_scalar": 1.4208202771301698e-15, + "abs_diff_nats": 1.4224497135728598e-09, + "rel_diff": 5.050370257799051e-14, + "rel_diff_scalar_vs_library_pdip": 5.6186983686514336e-14, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 1.5425030142068863e-09, + "rel_diff_library_pdip_vmap_vs_scalar": 5.476616340938109e-14, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 11, + "draw_name": "call00008_lane11", + "draw_kind": "captured", + "offsets": {}, + "log_likelihood_vmap": 19843.37960806598, + "log_likelihood_scalar": 19843.37960696008, + "log_likelihood_library_pdip": 19843.37960806599, + "log_likelihood_library_pdip_scalar": 19843.37960694627, + "rel_diff_vmap_vs_library_pdip": 3.666692749871033e-16, + "rel_diff_scalar_vs_library_pdip_scalar": 6.959382839647923e-13, + "abs_diff_nats": 1.1059019016101956e-06, + "rel_diff": 5.5731529785495804e-11, + "rel_diff_scalar_vs_library_pdip": 5.5731896451664764e-11, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 1.11971894511953e-06, + "rel_diff_library_pdip_vmap_vs_scalar": 5.642783473877439e-11, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 12, + "draw_name": "call00008_lane12", + "draw_kind": "captured", + "offsets": {}, + "log_likelihood_vmap": 27027.609847821266, + "log_likelihood_scalar": 27027.609847821303, + "log_likelihood_library_pdip": 27027.60984782127, + "log_likelihood_library_pdip_scalar": 27027.609847821303, + "rel_diff_vmap_vs_library_pdip": 1.3460231324839016e-16, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 3.637978807091713e-11, + "rel_diff": 1.3460231324838999e-15, + "rel_diff_scalar_vs_library_pdip": 1.2114208192355113e-15, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 3.2741809263825417e-11, + "rel_diff_library_pdip_vmap_vs_scalar": 1.2114208192355099e-15, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 13, + "draw_name": "call00008_lane13", + "draw_kind": "captured", + "offsets": {}, + "log_likelihood_vmap": 19663.70492707598, + "log_likelihood_scalar": 19663.704925197264, + "log_likelihood_library_pdip": 19663.70492707598, + "log_likelihood_library_pdip_scalar": 19663.704925197264, + "rel_diff_vmap_vs_library_pdip": 0.0, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 1.8787177396006882e-06, + "rel_diff": 9.554240906011973e-11, + "rel_diff_scalar_vs_library_pdip": 9.554240905099138e-11, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 1.8787177396006882e-06, + "rel_diff_library_pdip_vmap_vs_scalar": 9.554240906011973e-11, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 14, + "draw_name": "call00008_lane14", + "draw_kind": "captured", + "offsets": {}, + "log_likelihood_vmap": 29194.37137801729, + "log_likelihood_scalar": 29194.371408665826, + "log_likelihood_library_pdip": 29194.371379563207, + "log_likelihood_library_pdip_scalar": 29194.371408713305, + "rel_diff_vmap_vs_library_pdip": 5.2952516710468304e-11, + "rel_diff_scalar_vs_library_pdip_scalar": 1.6263155916822845e-12, + "abs_diff_nats": 3.064853444811888e-05, + "rel_diff": 1.0498097054085368e-09, + "rel_diff_scalar_vs_library_pdip": 9.96857189744579e-10, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 2.9150098271202296e-05, + "rel_diff_library_pdip_vmap_vs_scalar": 9.984835043409158e-10, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 15, + "draw_name": "call00008_lane15", + "draw_kind": "captured", + "offsets": {}, + "log_likelihood_vmap": -101907.25293605185, + "log_likelihood_scalar": -101907.22129750835, + "log_likelihood_library_pdip": -101907.24997742077, + "log_likelihood_library_pdip_scalar": -101907.22063772338, + "rel_diff_vmap_vs_library_pdip": 2.9032586841679788e-08, + "rel_diff_scalar_vs_library_pdip_scalar": 6.474369209312983e-09, + "abs_diff_nats": 0.0316385434998665, + "rel_diff": 3.104641957364416e-07, + "rel_diff_scalar_vs_library_pdip": 2.8143152152035083e-07, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 0.029339697386603802, + "rel_diff_library_pdip_vmap_vs_scalar": 2.8790597175547947e-07, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 16, + "draw_name": "call00008_lane16", + "draw_kind": "captured", + "offsets": {}, + "log_likelihood_vmap": -31483.76339345143, + "log_likelihood_scalar": -31483.760800406148, + "log_likelihood_library_pdip": -31483.763327336812, + "log_likelihood_library_pdip_scalar": -31483.76091200039, + "rel_diff_vmap_vs_library_pdip": 2.0999592071757534e-09, + "rel_diff_scalar_vs_library_pdip_scalar": 3.5445016724609613e-09, + "abs_diff_nats": 0.0025930452829925343, + "rel_diff": 8.236135763549199e-08, + "rel_diff_scalar_vs_library_pdip": 8.026139181787905e-08, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 0.0024153364211088046, + "rel_diff_library_pdip_vmap_vs_scalar": 7.671689630282295e-08, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 17, + "draw_name": "call00008_lane17", + "draw_kind": "captured", + "offsets": {}, + "log_likelihood_vmap": -171697.76784918527, + "log_likelihood_scalar": -171697.72893268924, + "log_likelihood_library_pdip": -171697.76874889416, + "log_likelihood_library_pdip_scalar": -171697.7293846475, + "rel_diff_vmap_vs_library_pdip": 5.240073267018571e-09, + "rel_diff_scalar_vs_library_pdip_scalar": 2.6322903292077353e-09, + "abs_diff_nats": 0.03891649603610858, + "rel_diff": 2.2665702265267027e-07, + "rel_diff_scalar_vs_library_pdip": 2.3189704335859542e-07, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 0.039364246651530266, + "rel_diff_library_pdip_vmap_vs_scalar": 2.292648061952184e-07, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 18, + "draw_name": "call00008_lane18", + "draw_kind": "captured", + "offsets": {}, + "log_likelihood_vmap": 21885.39202805558, + "log_likelihood_scalar": 21885.3920280233, + "log_likelihood_library_pdip": 21885.392028055707, + "log_likelihood_library_pdip_scalar": 21885.39202801959, + "rel_diff_vmap_vs_library_pdip": 5.818002167152491e-15, + "rel_diff_scalar_vs_library_pdip_scalar": 1.6955320601443813e-13, + "abs_diff_nats": 3.227978595532477e-08, + "rel_diff": 1.474946663692014e-12, + "rel_diff_scalar_vs_library_pdip": 1.4807646658569826e-12, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 3.6117853596806526e-08, + "rel_diff_library_pdip_vmap_vs_scalar": 1.6503178718738645e-12, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 19, + "draw_name": "call00008_lane19", + "draw_kind": "captured", + "offsets": {}, + "log_likelihood_vmap": 17967.17162052761, + "log_likelihood_scalar": 17967.171649948625, + "log_likelihood_library_pdip": 17967.171622644684, + "log_likelihood_library_pdip_scalar": 17967.17164785402, + "rel_diff_vmap_vs_library_pdip": 1.1783014697729628e-10, + "rel_diff_scalar_vs_library_pdip_scalar": 1.165796351814844e-10, + "abs_diff_nats": 2.942101491498761e-05, + "rel_diff": 1.6374872733556667e-09, + "rel_diff_scalar_vs_library_pdip": 1.5196571288667896e-09, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 2.5209334125975147e-05, + "rel_diff_library_pdip_vmap_vs_scalar": 1.4030774915531086e-09, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + } + ], + "lane_pins": [ + { + "pin": "lane 0: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 19851.59418648651, + "reference_value": 19851.59418648637, + "rel_diff": 6.963833401530631e-15, + "abs_diff_nats": 1.382431946694851e-10, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 0: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 19851.59418466133, + "reference_value": 19851.594184645834, + "rel_diff": 7.806823761387096e-13, + "abs_diff_nats": 1.5497789718210697e-08, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 0: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 19851.59418648651, + "reference_value": 19851.59418466133, + "rel_diff": 9.194111004480304e-11, + "abs_diff_nats": 1.8251776054967195e-06, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 0: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 19851.59418648637, + "reference_value": 19851.594184645834, + "rel_diff": 9.271482858761135e-11, + "abs_diff_nats": 1.8405371520202607e-06, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 1: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -10958.375999864249, + "reference_value": -10958.375807264842, + "rel_diff": 1.7575543204836497e-08, + "abs_diff_nats": 0.00019259940745541826, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 1: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -10958.374219917532, + "reference_value": -10958.374268026848, + "rel_diff": 4.3901873132189576e-09, + "abs_diff_nats": 4.8109315684996545e-05, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 1: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -10958.375999864249, + "reference_value": -10958.374219917532, + "rel_diff": 1.624279917012133e-07, + "abs_diff_nats": 0.0017799467168515548, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 1: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -10958.375807264842, + "reference_value": -10958.374268026848, + "rel_diff": 1.4046225800136805e-07, + "abs_diff_nats": 0.00153923799371114, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 2: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 25613.44056437085, + "reference_value": 25613.440564410408, + "rel_diff": 1.544477457014604e-12, + "abs_diff_nats": 3.9559381548315287e-08, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 2: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 25613.440570535575, + "reference_value": 25613.440570363673, + "rel_diff": 6.711389441042082e-12, + "abs_diff_nats": 1.7190177459269762e-07, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 2: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 25613.44056437085, + "reference_value": 25613.440570535575, + "rel_diff": 2.4068324818152055e-10, + "abs_diff_nats": 6.164726073620841e-06, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 2: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 25613.440564410408, + "reference_value": 25613.440570363673, + "rel_diff": 2.3242738128543816e-10, + "abs_diff_nats": 5.953264917479828e-06, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 3: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 27440.977846751706, + "reference_value": 27440.977846751714, + "rel_diff": 2.6514935636831567e-16, + "abs_diff_nats": 7.275957614183426e-12, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 3: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 27440.977846751815, + "reference_value": 27440.977846751797, + "rel_diff": 6.628733909207872e-16, + "abs_diff_nats": 1.8189894035458565e-11, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 3: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 27440.977846751706, + "reference_value": 27440.977846751815, + "rel_diff": 3.97724034552472e-15, + "abs_diff_nats": 1.0913936421275139e-10, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 3: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 27440.977846751714, + "reference_value": 27440.977846751797, + "rel_diff": 3.049217598235621e-15, + "abs_diff_nats": 8.36735125631094e-11, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 4: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 19664.8883643167, + "reference_value": 19664.8883643167, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 4: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 19664.888362180216, + "reference_value": 19664.888362180216, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 4: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 19664.8883643167, + "reference_value": 19664.888362180216, + "rel_diff": 1.0864455727637275e-10, + "abs_diff_nats": 2.1364830899983644e-06, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 4: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 19664.8883643167, + "reference_value": 19664.888362180216, + "rel_diff": 1.0864455727637275e-10, + "abs_diff_nats": 2.1364830899983644e-06, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 5: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 19661.77570330541, + "reference_value": 19661.77570330541, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 5: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 19661.775700753395, + "reference_value": 19661.775700753395, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 5: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 19661.77570330541, + "reference_value": 19661.775700753395, + "rel_diff": 1.2979583869555583e-10, + "abs_diff_nats": 2.552016667323187e-06, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 5: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 19661.77570330541, + "reference_value": 19661.775700753395, + "rel_diff": 1.2979583869555583e-10, + "abs_diff_nats": 2.552016667323187e-06, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 6: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 19673.099043038375, + "reference_value": 19673.09904303841, + "rel_diff": 1.8492149097267215e-15, + "abs_diff_nats": 3.637978807091713e-11, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 6: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 19673.099042001224, + "reference_value": 19673.099041959198, + "rel_diff": 2.136213063833496e-12, + "abs_diff_nats": 4.202593117952347e-08, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 6: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 19673.099043038375, + "reference_value": 19673.099042001224, + "rel_diff": 5.2719267864178524e-11, + "abs_diff_nats": 1.0371513781137764e-06, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 6: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 19673.09904303841, + "reference_value": 19673.099041959198, + "rel_diff": 5.485733014303447e-11, + "abs_diff_nats": 1.0792136890813708e-06, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 7: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -138595.04792641063, + "reference_value": -138594.9751196262, + "rel_diff": 5.253205201316868e-07, + "abs_diff_nats": 0.07280678441748023, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 7: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -138594.4615199691, + "reference_value": -138594.4581900122, + "rel_diff": 2.4026623773717825e-08, + "abs_diff_nats": 0.003329956904053688, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 7: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -138595.04792641063, + "reference_value": -138594.4615199691, + "rel_diff": 4.231095781827759e-06, + "abs_diff_nats": 0.5864064415218309, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 7: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -138594.9751196262, + "reference_value": -138594.4581900122, + "rel_diff": 3.7298000277882455e-06, + "abs_diff_nats": 0.5169296140084043, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 8: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 29346.071300813812, + "reference_value": 29346.071300823063, + "rel_diff": 3.1525106075015753e-13, + "abs_diff_nats": 9.251380106434226e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 8: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 29346.071300942538, + "reference_value": 29346.07130093671, + "rel_diff": 1.9859701113637302e-13, + "abs_diff_nats": 5.828042048960924e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 8: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 29346.071300813812, + "reference_value": 29346.071300942538, + "rel_diff": 4.3864897890437126e-12, + "abs_diff_nats": 1.2872624211013317e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 8: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 29346.071300823063, + "reference_value": 29346.07130093671, + "rel_diff": 3.872641717159274e-12, + "abs_diff_nats": 1.1364681995473802e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 9: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 19677.044941109525, + "reference_value": 19677.044941109525, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 9: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 19677.04493926127, + "reference_value": 19677.044939261974, + "rel_diff": 3.5682690766626634e-14, + "abs_diff_nats": 7.021299097687006e-10, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 9: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 19677.044941109525, + "reference_value": 19677.04493926127, + "rel_diff": 9.392941423751663e-11, + "abs_diff_nats": 1.8482533050701022e-06, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 9: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 19677.044941109525, + "reference_value": 19677.044939261974, + "rel_diff": 9.389373154674665e-11, + "abs_diff_nats": 1.8475511751603335e-06, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 10: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 28165.25603001414, + "reference_value": 28165.25603001398, + "rel_diff": 5.683281108520991e-15, + "abs_diff_nats": 1.6007106751203537e-10, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 10: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 28165.256030015564, + "reference_value": 28165.256030015524, + "rel_diff": 1.4208202771301698e-15, + "abs_diff_nats": 4.001776687800884e-11, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 10: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 28165.25603001414, + "reference_value": 28165.256030015564, + "rel_diff": 5.050370257799051e-14, + "abs_diff_nats": 1.4224497135728598e-09, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 10: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 28165.25603001398, + "reference_value": 28165.256030015524, + "rel_diff": 5.476616340938109e-14, + "abs_diff_nats": 1.5425030142068863e-09, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 11: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 19843.37960806598, + "reference_value": 19843.37960806599, + "rel_diff": 3.666692749871033e-16, + "abs_diff_nats": 7.275957614183426e-12, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 11: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 19843.37960696008, + "reference_value": 19843.37960694627, + "rel_diff": 6.959382839647923e-13, + "abs_diff_nats": 1.3809767551720142e-08, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 11: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 19843.37960806598, + "reference_value": 19843.37960696008, + "rel_diff": 5.5731529785495804e-11, + "abs_diff_nats": 1.1059019016101956e-06, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 11: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 19843.37960806599, + "reference_value": 19843.37960694627, + "rel_diff": 5.642783473877439e-11, + "abs_diff_nats": 1.11971894511953e-06, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 12: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 27027.609847821266, + "reference_value": 27027.60984782127, + "rel_diff": 1.3460231324839016e-16, + "abs_diff_nats": 3.637978807091713e-12, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 12: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 27027.609847821303, + "reference_value": 27027.609847821303, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 12: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 27027.609847821266, + "reference_value": 27027.609847821303, + "rel_diff": 1.3460231324838999e-15, + "abs_diff_nats": 3.637978807091713e-11, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 12: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 27027.60984782127, + "reference_value": 27027.609847821303, + "rel_diff": 1.2114208192355099e-15, + "abs_diff_nats": 3.2741809263825417e-11, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 13: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 19663.70492707598, + "reference_value": 19663.70492707598, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 13: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 19663.704925197264, + "reference_value": 19663.704925197264, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 13: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 19663.70492707598, + "reference_value": 19663.704925197264, + "rel_diff": 9.554240906011973e-11, + "abs_diff_nats": 1.8787177396006882e-06, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 13: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 19663.70492707598, + "reference_value": 19663.704925197264, + "rel_diff": 9.554240906011973e-11, + "abs_diff_nats": 1.8787177396006882e-06, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 14: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 29194.37137801729, + "reference_value": 29194.371379563207, + "rel_diff": 5.2952516710468304e-11, + "abs_diff_nats": 1.5459154383279383e-06, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 14: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 29194.371408665826, + "reference_value": 29194.371408713305, + "rel_diff": 1.6263155916822845e-12, + "abs_diff_nats": 4.7479261411353946e-08, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 14: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 29194.37137801729, + "reference_value": 29194.371408665826, + "rel_diff": 1.0498097054085368e-09, + "abs_diff_nats": 3.064853444811888e-05, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 14: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 29194.371379563207, + "reference_value": 29194.371408713305, + "rel_diff": 9.984835043409158e-10, + "abs_diff_nats": 2.9150098271202296e-05, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 15: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -101907.25293605185, + "reference_value": -101907.24997742077, + "rel_diff": 2.9032586841679788e-08, + "abs_diff_nats": 0.002958631084766239, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 15: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -101907.22129750835, + "reference_value": -101907.22063772338, + "rel_diff": 6.474369209312983e-09, + "abs_diff_nats": 0.0006597849715035409, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 15: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -101907.25293605185, + "reference_value": -101907.22129750835, + "rel_diff": 3.104641957364416e-07, + "abs_diff_nats": 0.0316385434998665, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 15: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -101907.24997742077, + "reference_value": -101907.22063772338, + "rel_diff": 2.8790597175547947e-07, + "abs_diff_nats": 0.029339697386603802, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 16: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -31483.76339345143, + "reference_value": -31483.763327336812, + "rel_diff": 2.0999592071757534e-09, + "abs_diff_nats": 6.611461867578328e-05, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 16: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -31483.760800406148, + "reference_value": -31483.76091200039, + "rel_diff": 3.5445016724609613e-09, + "abs_diff_nats": 0.00011159424320794642, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 16: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -31483.76339345143, + "reference_value": -31483.760800406148, + "rel_diff": 8.236135763549199e-08, + "abs_diff_nats": 0.0025930452829925343, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 16: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -31483.763327336812, + "reference_value": -31483.76091200039, + "rel_diff": 7.671689630282295e-08, + "abs_diff_nats": 0.0024153364211088046, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 17: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -171697.76784918527, + "reference_value": -171697.76874889416, + "rel_diff": 5.240073267018571e-09, + "abs_diff_nats": 0.000899708888027817, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 17: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -171697.72893268924, + "reference_value": -171697.7293846475, + "rel_diff": 2.6322903292077353e-09, + "abs_diff_nats": 0.0004519582726061344, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 17: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -171697.76784918527, + "reference_value": -171697.72893268924, + "rel_diff": 2.2665702265267027e-07, + "abs_diff_nats": 0.03891649603610858, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 17: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -171697.76874889416, + "reference_value": -171697.7293846475, + "rel_diff": 2.292648061952184e-07, + "abs_diff_nats": 0.039364246651530266, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 18: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 21885.39202805558, + "reference_value": 21885.392028055707, + "rel_diff": 5.818002167152491e-15, + "abs_diff_nats": 1.2732925824820995e-10, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 18: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 21885.3920280233, + "reference_value": 21885.39202801959, + "rel_diff": 1.6955320601443813e-13, + "abs_diff_nats": 3.7107383832335472e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 18: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 21885.39202805558, + "reference_value": 21885.3920280233, + "rel_diff": 1.474946663692014e-12, + "abs_diff_nats": 3.227978595532477e-08, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 18: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 21885.392028055707, + "reference_value": 21885.39202801959, + "rel_diff": 1.6503178718738645e-12, + "abs_diff_nats": 3.6117853596806526e-08, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 19: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 17967.17162052761, + "reference_value": 17967.171622644684, + "rel_diff": 1.1783014697729628e-10, + "abs_diff_nats": 2.11707447306253e-06, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 19: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 17967.171649948625, + "reference_value": 17967.17164785402, + "rel_diff": 1.165796351814844e-10, + "abs_diff_nats": 2.0946063159499317e-06, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 19: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 17967.17162052761, + "reference_value": 17967.171649948625, + "rel_diff": 1.6374872733556667e-09, + "abs_diff_nats": 2.942101491498761e-05, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 19: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 17967.171622644684, + "reference_value": 17967.17164785402, + "rel_diff": 1.4030774915531086e-09, + "abs_diff_nats": 2.5209334125975147e-05, + "within_rtol": false, + "status": "RECORDED" + } + ], + "lanes_failed": 5, + "arm_rows": { + "vmap": { + "arm": "vmap", + "program": "jax.jit(jax.vmap(fn))", + "stands_for": "Nautilus(use_jax_vmap=True) \u2014 Fitness._vmap", + "hlo_source": "jax.jit(jax.vmap(fn)).lower(batched_tree) \u2014 the exact current Fitness._vmap composition (PyAutoFit#1638)", + "batch_wall_ms": 456.9589589002135, + "wall_production_nesting_ms": 456.9589589002135, + "wall_aot_command_buffers_on_ms": 457.0259953998175, + "wall_aot_command_buffers_off_ms": 457.87200029990345, + "command_buffer_delta_ms": 0.8460049000859726, + "production_nesting_vs_aot_on_delta_ms": -0.06703649960400071, + "production_nesting_vs_aot_on_delta_pct": -0.014667983939372102, + "wall_per_lane_ms": 22.847947945010674, + "wall_per_lane_command_buffers_off_ms": 22.893600014995172, + "traced_batch_wall_ms": 468.2964584997535, + "untraced_batch_wall_ms": 457.6081618997705, + "traced_wall_per_lane_ms": 23.414822924987675, + "callback_count_per_call": 1.0, + "callback_count_per_lane": 0.05, + "callback_expectation": "B per batched call \u2014 the qhull pure_callback is vmap_method='sequential'", + "host_qhull_ms": 4.964129900326952, + "host_tables_ms": 0.18269679894729052, + "host_qhull_ms_per_lane": 0.24820649501634762, + "host_tables_ms_per_lane": 0.009134839947364526, + "host_callback_probe": { + "calls": 10, + "qhull_ms_total": 49.64129900326952, + "tables_ms_total": 1.8269679894729052, + "total_ms_total": 51.46826699274243, + "qhull_ms_mean": 4.964129900326952, + "tables_ms_mean": 0.18269679894729052, + "total_ms_mean": 5.146826699274243, + "non_finite_calls": 0, + "n_points": [ + 1500 + ] + }, + "host_callback_records_first": [ + { + "n_points": 1500, + "qhull_ms": 4.643862001103116, + "tables_ms": 0.1812289992813021, + "total_ms": 4.825091000384418, + "finite": true + }, + { + "n_points": 1500, + "qhull_ms": 5.061488998762798, + "tables_ms": 0.19603900000220165, + "total_ms": 5.257527998764999, + "finite": true + }, + { + "n_points": 1500, + "qhull_ms": 5.01142999928561, + "tables_ms": 0.18250900029670447, + "total_ms": 5.193938999582315, + "finite": true + }, + { + "n_points": 1500, + "qhull_ms": 4.9827100010588765, + "tables_ms": 0.18054799875244498, + "total_ms": 5.1632579998113215, + "finite": true + } + ], + "device_idle_ms": 30.94267080000003, + "device_idle_ms_per_lane": 1.5471335400000015, + "trace": { + "parser": "ProfileData.from_file(xplane) + as_text() + stack_frame_index(proto field 17)", + "stage_audit": { + "chi_squared_evidence": [ + { + "instruction": "loop_divide_fusion", + "ms": 0.0101567, + "opcode": "fusion", + "shape": "f64[20,15361]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:352", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:352 (AbstractNDArray.__truediv__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:57 (unwrap_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:35 (to_new_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:78 (chi_squared_map_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:78 (AbstractFit.chi_squared_map)" + ] + }, + { + "instruction": "input_reduce_fusion.21", + "ms": 0.0044991, + "opcode": "fusion", + "shape": "f64[20]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:90", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:90 (chi_squared_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:87 (AbstractFit.chi_squared)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:293 (FitDataset.chi_squared)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:345 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)" + ] + }, + { + "instruction": "input_reduce_fusion.30", + "ms": 0.0039040000000000004, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:104", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:104 (noise_normalization_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:98 (AbstractFit.noise_normalization)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:306 (FitDataset.noise_normalization)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:349 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)" + ] + } + ], + "regularization_H": [ + { + "instruction": "loop_broadcast_fusion", + "ms": 0.3445086, + "opcode": "fusion", + "shape": "f64[20,1500,1500]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:579", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:579 (pixel_splitted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:137 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_scatter_fusion.10", + "ms": 0.0036351000000000005, + "opcode": "fusion", + "shape": "f64[20,1500,1500]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:615", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:615 (pixel_splitted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:137 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_concatenate_fusion.8", + "ms": 0.0017439, + "opcode": "fusion", + "shape": "pred[3]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:94", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:94 (split_points_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:410 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + }, + { + "instruction": "wrapped_slice", + "ms": 0.0016351999999999996, + "opcode": "fusion", + "shape": "s32[1]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:94", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:94 (split_points_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:410 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + }, + { + "instruction": "wrapped_slice.1", + "ms": 0.0015935, + "opcode": "fusion", + "shape": "s32[1]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:90", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:90 (split_points_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:410 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + }, + { + "instruction": "loop_slice_fusion", + "ms": 0.0015071000000000001, + "opcode": "fusion", + "shape": "s32[1,1]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:94", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:94 (split_points_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:410 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + } + ], + "other": [ + { + "instruction": "copy.75", + "ms": 0.04220080000000013, + "opcode": "copy", + "shape": "f64[1,1024,2]{2,1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.37", + "ms": 0.014700799999999993, + "opcode": "copy", + "shape": "s32[21361]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.73", + "ms": 0.0021024, + "opcode": "copy", + "shape": "s64[]", + "source": "", + "stack": [] + }, + { + "instruction": "loop_broadcast_fusion.5", + "ms": 0.0020895, + "opcode": "fusion", + "shape": "(f64[1500]{0}, f64[1500]{0}, f64[1500]{0}, f64[1500]{0})", + "source": "", + "stack": [] + }, + { + "instruction": "copy.46", + "ms": 0.0019968, + "opcode": "copy", + "shape": "s64[1500]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "loop_broadcast_fusion.3", + "ms": 0.001987, + "opcode": "fusion", + "shape": "(pred[21361]{0}, pred[21361]{0})", + "source": "", + "stack": [] + } + ], + "mesh_seed_argmin": [ + { + "instruction": "input_reduce_fusion", + "ms": 0.14855710000000003, + "opcode": "fusion", + "shape": "(f64[1024]{0}, s64[1024]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:191", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:191 (_nearest_vertex_seed_from..argmin_chunk)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)" + ] + }, + { + "instruction": "loop_dynamic_update_slice_fusion", + "ms": 0.04096259999999995, + "opcode": "fusion", + "shape": "s32[21,1024]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_add_fusion", + "ms": 0.03179479999999992, + "opcode": "fusion", + "shape": "s64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_broadcast_fusion.2", + "ms": 0.0019712, + "opcode": "fusion", + "shape": "s32[21,1024]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "mixed_fusion": [ + { + "instruction": "input_add_multiply_transpose_fusion", + "ms": 1.8925751, + "opcode": "fusion", + "shape": "(f64[20,1500,1500]{2,1,0}, f64[20,1500,1500]{2,1,0}, f64[20,1500,1500]{2,1,0}, f64[20,1500,1500]{2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:61", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:61 (initialize)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:72 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:508 (reconstruction_positive_only_from)" + ] + }, + { + "instruction": "loop_divide_gather_fusion", + "ms": 1.0243259, + "opcode": "fusion", + "shape": "(f64[15361,1500]{1,0}, f64[15361,1,1,1500]{3,2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_reduce_fusion.14", + "ms": 0.1403654, + "opcode": "fusion", + "shape": "f64[92,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123 (data_vector_via_blurred_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:67 (InversionImagingMapping.data_vector)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:699 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_scatter_fusion.3", + "ms": 0.0725873, + "opcode": "fusion", + "shape": "f64[20,1500,1500]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:579", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:579 (pixel_splitted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:137 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_select_fusion.4", + "ms": 0.0171037, + "opcode": "fusion", + "shape": "f64[6000,4]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:559", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:559 (pixel_splitted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:137 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_scatter_fusion.1", + "ms": 0.012953399999999999, + "opcode": "fusion", + "shape": "f64[1500]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:70", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:70 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:120 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + } + ], + "ray_trace_data_grid": [ + { + "instruction": "input_reduce_fusion.23", + "ms": 0.0027743999999999998, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:506", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:506 (FlatLambdaCDM._simpson_1d)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:644 (FlatLambdaCDM.angular_diameter_distance_kpc_z1z2)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:133 (LensingCosmology.angular_diameter_distance_to_earth_in_kpc_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:362 (LensingCosmology.scaling_factor_between_redshifts_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer_util.py:252 (traced_grid_2d_list_from)" + ] + }, + { + "instruction": "input_reduce_fusion.25", + "ms": 0.0027456000000000004, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:506", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:506 (FlatLambdaCDM._simpson_1d)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:644 (FlatLambdaCDM.angular_diameter_distance_kpc_z1z2)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:151 (LensingCosmology.angular_diameter_distance_between_redshifts_in_kpc_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:355 (LensingCosmology.scaling_factor_between_redshifts_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer_util.py:252 (traced_grid_2d_list_from)" + ] + }, + { + "instruction": "input_reduce_fusion.26", + "ms": 0.0026079999999999996, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:503", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:503 (FlatLambdaCDM._simpson_1d)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:644 (FlatLambdaCDM.angular_diameter_distance_kpc_z1z2)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:151 (LensingCosmology.angular_diameter_distance_between_redshifts_in_kpc_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:355 (LensingCosmology.scaling_factor_between_redshifts_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer_util.py:252 (traced_grid_2d_list_from)" + ] + }, + { + "instruction": "input_reduce_fusion.24", + "ms": 0.0025886, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:503", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:503 (FlatLambdaCDM._simpson_1d)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:644 (FlatLambdaCDM.angular_diameter_distance_kpc_z1z2)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:133 (LensingCosmology.angular_diameter_distance_to_earth_in_kpc_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:362 (LensingCosmology.scaling_factor_between_redshifts_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer_util.py:252 (traced_grid_2d_list_from)" + ] + }, + { + "instruction": "loop_divide_fusion.3", + "ms": 0.0024543, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:380", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:380 (LensingCosmology.scaling_factor_between_redshifts_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer_util.py:252 (traced_grid_2d_list_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer.py:632 (Tracer.traced_grid_2d_list_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/structures/decorators/abstract.py:93 (AbstractMaker.evaluate_func)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/structures/decorators/abstract.py:110 (AbstractMaker.result)" + ] + } + ], + "border_relocator": [ + { + "instruction": "eigh.45", + "ms": 0.07495519999999997, + "opcode": "custom-call", + "shape": "(f64[2,2]{0,1}, f64[2]{0}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "custom-call.3", + "ms": 0.007967900000000002, + "opcode": "custom-call", + "shape": "(f64[2,2]{1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_select_sine_fusion", + "ms": 0.0034111999999999996, + "opcode": "fusion", + "shape": "(f64[], f64[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:301", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:301 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:458 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_concatenate_fusion.6", + "ms": 0.003279700000000001, + "opcode": "fusion", + "shape": "f64[1500,2]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:323", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:323 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:458 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_add_fusion.5", + "ms": 0.0032576000000000003, + "opcode": "fusion", + "shape": "f64[1500]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:458 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_reduce_fusion.28", + "ms": 0.0016223000000000001, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:256", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:256 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + } + ], + "grids_and_structures": [ + { + "instruction": "loop_multiply_sine_fusion", + "ms": 0.0013567999999999998, + "opcode": "fusion", + "shape": "(f64[], f64[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/geometry/geometry_util.py:527", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/geometry/geometry_util.py:527 (transform_grid_2d_to_reference_frame)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/profiles/geometry_profiles.py:418 (EllProfile.transformed_to_reference_frame_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/structures/decorators/abstract.py:93 (AbstractMaker.evaluate_func)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/structures/decorators/abstract.py:112 (AbstractMaker.result)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/structures/decorators/to_grid.py:70 (to_grid..wrapper)" + ] + } + ], + "mesh_construction": [ + { + "instruction": "input_concatenate_fusion.7", + "ms": 0.0020704, + "opcode": "fusion", + "shape": "f64[1500,2]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:820", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:820 (InterpolatorDelaunay.mesh_grid_xy)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:847 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + } + ], + "mesh_qhull_callback": [ + { + "instruction": "pure_callback.4", + "ms": 0.010761199999999997, + "opcode": "custom-call", + "shape": "(s32[3000,3]{1,0}, s32[3000,3]{1,0}, s32[1500]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:161", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:161 (_jax_delaunay_tables)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:405 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + } + ], + "mesh_locate_walk": [ + { + "instruction": "loop_reduce_fusion", + "ms": 0.02458510000000001, + "opcode": "fusion", + "shape": "(f64[21361]{0}, s64[21361]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:264", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:264 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:264 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)" + ] + }, + { + "instruction": "input_reduce_fusion.1", + "ms": 0.022780100000000005, + "opcode": "fusion", + "shape": "pred[196]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:288", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:288 (_walk_from_seed..cond)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)" + ] + }, + { + "instruction": "loop_or_select_fusion", + "ms": 0.019926100000000002, + "opcode": "fusion", + "shape": "(s32[21361]{0}, pred[21361]{0}, pred[21361]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:270", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:270 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)" + ] + }, + { + "instruction": "loop_select_fusion", + "ms": 0.017609199999999985, + "opcode": "fusion", + "shape": "s32[21361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:242", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:242 (_walk_from_seed..weights_of)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:262 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)" + ] + }, + { + "instruction": "input_reduce_fusion.2", + "ms": 0.014143700000000013, + "opcode": "fusion", + "shape": "pred[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:288", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:288 (_walk_from_seed..cond)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)" + ] + }, + { + "instruction": "while.46", + "ms": 0.012854100000000021, + "opcode": "while", + "shape": "(s32[], s32[21361]{0}, pred[21361]{0}, pred[21361]{0}, s32[3000,3]{1,0}, /*index=5*/f64[1500,2]{1,0}, f64[21361,2]{1,0}, s32[3000,3]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "mapping_matrix": [ + { + "instruction": "loop_broadcast_fusion.6", + "ms": 0.1065993, + "opcode": "fusion", + "shape": "f64[15361,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:342", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:342 (mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:283 (Mapper.mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:91 (AbstractInversionImaging._mapping_matrix_for_convolution_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:137 (AbstractInversionImaging.operated_mapping_matrix_list)" + ] + }, + { + "instruction": "input_reduce_fusion.32", + "ms": 0.0028543, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:120 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + }, + { + "instruction": "loop_divide_fusion.2", + "ms": 0.0023648, + "opcode": "fusion", + "shape": "f64[1500]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:92", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:92 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:120 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + }, + { + "instruction": "loop_divide_fusion.1", + "ms": 0.0023136, + "opcode": "fusion", + "shape": "f64[1500]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:95", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:95 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:120 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + } + ], + "psf_convolution_mapping_matrix": [ + { + "instruction": "input_scatter_fusion", + "ms": 1.9972222999999998, + "opcode": "fusion", + "shape": "f64[1500,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:303 (AbstractInversion.operated_mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:68 (InversionImagingMapping.data_vector)" + ] + }, + { + "instruction": "fft.14.0", + "ms": 1.7663499000000003, + "opcode": "fft", + "shape": "f64[1500,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:303 (AbstractInversion.operated_mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:68 (InversionImagingMapping.data_vector)" + ] + }, + { + "instruction": "fft.10.0", + "ms": 1.3701529000000001, + "opcode": "fft", + "shape": "c128[1500,180,91]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:303 (AbstractInversion.operated_mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:68 (InversionImagingMapping.data_vector)" + ] + }, + { + "instruction": "fft.12.0", + "ms": 0.9804099000000001, + "opcode": "fft", + "shape": "c128[1500,91,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:303 (AbstractInversion.operated_mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:68 (InversionImagingMapping.data_vector)" + ] + }, + { + "instruction": "input_transpose_fusion.3", + "ms": 0.5128414, + "opcode": "fusion", + "shape": "c128[1500,91,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:303 (AbstractInversion.operated_mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:68 (InversionImagingMapping.data_vector)" + ] + }, + { + "instruction": "wrapped_transpose", + "ms": 0.4997279999999999, + "opcode": "fusion", + "shape": "c128[1500,180,91]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:303 (AbstractInversion.operated_mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:68 (InversionImagingMapping.data_vector)" + ] + } + ], + "curvature_matrix_F": [ + { + "instruction": "custom-call.4", + "ms": 4.218162, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "inversion_other": [ + { + "instruction": "cholesky.60", + "ms": 7.133968100000012, + "opcode": "custom-call", + "shape": "(f64[20,1500,1500]{1,2,0}, s32[20]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1078 (AbstractInversion.log_det_curvature_reg_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:347 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "cholesky.70", + "ms": 7.094945799999994, + "opcode": "custom-call", + "shape": "(f64[20,1500,1500]{1,2,0}, s32[20]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1157 (AbstractInversion.log_det_regularization_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:348 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "input_reduce_fusion.20", + "ms": 0.2055967, + "opcode": "fusion", + "shape": "f64[20,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:946", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:946 (AbstractInversion.regularization_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:346 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)", + "/mnt/ral/jnightin/autolens_profiling_wt/certified-solver-phase-c1-lane-rate/scripts/imaging/likelihood_breakdown/fixed_light_trace.py:1195 (_captured_likelihood_fn.._likelihood)" + ] + }, + { + "instruction": "input_reduce_fusion.29", + "ms": 0.005360000000000001, + "opcode": "fusion", + "shape": "f64[20]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:944", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:944 (AbstractInversion.regularization_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:346 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)", + "/mnt/ral/jnightin/autolens_profiling_wt/certified-solver-phase-c1-lane-rate/scripts/imaging/likelihood_breakdown/fixed_light_trace.py:1195 (_captured_likelihood_fn.._likelihood)" + ] + }, + { + "instruction": "input_reduce_fusion.17", + "ms": 0.0049472, + "opcode": "fusion", + "shape": "f64[20]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:985", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:985 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1078 (AbstractInversion.log_det_curvature_reg_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:347 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "input_reduce_fusion.16", + "ms": 0.004947099999999999, + "opcode": "fusion", + "shape": "f64[20]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:985", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:985 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1157 (AbstractInversion.log_det_regularization_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:348 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + } + ], + "pdip_solve": [ + { + "instruction": "cholesky.20", + "ms": 185.51906870000244, + "opcode": "custom-call", + "shape": "(f64[20,1500,1500]{1,2,0}, s32[20]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:106", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:106 (factorize_kkt)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:212 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve", + "ms": 47.73421590000046, + "opcode": "custom-call", + "shape": "(f64[20,1500,1]{1,2,0}, s8[320]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:213 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve.2", + "ms": 44.627119600000256, + "opcode": "custom-call", + "shape": "(f64[20,1500,1]{1,2,0}, s8[320]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:217 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve.3", + "ms": 43.51908830000189, + "opcode": "custom-call", + "shape": "(f64[20,1500,1]{1,2,0}, s8[320]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:217 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve.1", + "ms": 43.42596809999965, + "opcode": "custom-call", + "shape": "(f64[20,1500,1]{1,2,0}, s8[320]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:213 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "input_transpose_fusion", + "ms": 11.769293500000005, + "opcode": "fusion", + "shape": "f64[20,1500,1500]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:106", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:106 (factorize_kkt)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:212 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + } + ], + "data_vector_D": [ + { + "instruction": "input_reduce_fusion.31", + "ms": 0.0037184, + "opcode": "fusion", + "shape": "f64[1500]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123 (data_vector_via_blurred_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:67 (InversionImagingMapping.data_vector)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:699 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "fit_imaging_other": [ + { + "instruction": "custom-call.5", + "ms": 0.2006528, + "opcode": "custom-call", + "shape": "(f64[20,15361]{1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:305", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:305 (AbstractNDArray.__add__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:57 (unwrap_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:35 (to_new_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:58 (AbstractFit.residual_map)" + ] + } + ] + }, + "stage_audit_note": "The HLO instructions that contributed most of each stage's milliseconds, with their full source stack. A stage row is only as good as the rules that built it; this is how a reader checks a row against the HLO instead of trusting it.", + "untraced_wall_ms": 457.6081618997705, + "reconciliation_vs_untraced_pct": 2.3104936232647235, + "wall_basis": "wall_ms is the TRACED run's wall, the run these kernel durations came from. untraced_wall_ms is the same executable without the profiler; the difference is the profiler's overhead and belongs in neither the stages nor the idle row.", + "calls": 10, + "call_split": "per-call (first-instruction recurrence)", + "call_blocks": 10, + "events": 193250, + "streams": [ + "Stream #14(MemcpyH2D,MemcpyD2H,Compute,MemcpyD2D)" + ], + "per_stage_ms": { + "border_relocator": { + "median_ms": 0.09600000000000003, + "min_ms": 0.09577300000000002, + "max_ms": 0.096541 + }, + "chi_squared_evidence": { + "median_ms": 0.018544, + "min_ms": 0.018271000000000003, + "max_ms": 0.018944 + }, + "curvature_matrix_F": { + "median_ms": 4.218577, + "min_ms": 4.213729, + "max_ms": 4.222753 + }, + "data_vector_D": { + "median_ms": 0.003712, + "min_ms": 0.003616, + "max_ms": 0.003968 + }, + "fit_imaging_other": { + "median_ms": 0.2006865, + "min_ms": 0.198811, + "max_ms": 0.201531 + }, + "grids_and_structures": { + "median_ms": 0.0013440000000000001, + "min_ms": 0.001312, + "max_ms": 0.001408 + }, + "inversion_other": { + "median_ms": 14.461309499999988, + "min_ms": 14.454526999999972, + "max_ms": 14.480503999999996 + }, + "mapping_matrix": { + "median_ms": 0.114061, + "min_ms": 0.113601, + "max_ms": 0.114622 + }, + "mesh_construction": { + "median_ms": 0.00208, + "min_ms": 0.002048, + "max_ms": 0.00208 + }, + "mesh_locate_walk": { + "median_ms": 0.136832, + "min_ms": 0.13651100000000002, + "max_ms": 0.137084 + }, + "mesh_qhull_callback": { + "median_ms": 0.0107515, + "min_ms": 0.010623, + "max_ms": 0.010976000000000001 + }, + "mesh_seed_argmin": { + "median_ms": 0.2233235000000001, + "min_ms": 0.22303500000000007, + "max_ms": 0.22354500000000013 + }, + "mixed_fusion": { + "median_ms": 3.312404, + "min_ms": 3.302007, + "max_ms": 3.3181650000000005 + }, + "other": { + "median_ms": 0.0667035, + "min_ms": 0.066559, + "max_ms": 0.06700700000000001 + }, + "pdip_solve": { + "median_ms": 406.64256850000356, + "min_ms": 406.54606700000477, + "max_ms": 406.6777540000019 + }, + "psf_convolution_mapping_matrix": { + "median_ms": 7.3576105, + "min_ms": 7.350490999999999, + "max_ms": 7.366521 + }, + "ray_trace_data_grid": { + "median_ms": 0.013184, + "min_ms": 0.013056, + "max_ms": 0.013279000000000001 + }, + "regularization_H": { + "median_ms": 0.35880699999999993, + "min_ms": 0.358199, + "max_ms": 0.35941600000000007 + } + }, + "stage_order": [ + "ray_trace_data_grid", + "border_relocator", + "mesh_qhull_callback", + "mesh_seed_argmin", + "mesh_locate_walk", + "mesh_construction", + "mapping_matrix", + "psf_convolution_mapping_matrix", + "data_vector_D", + "curvature_matrix_F", + "regularization_H", + "pdip_solve", + "chi_squared_evidence", + "grids_and_structures", + "inversion_other", + "fit_imaging_other", + "mixed_fusion", + "other" + ], + "mixed_fusion": { + "ms": 3.312404, + "constituent_stage_sets": { + "curvature_reg_reduce_gather + inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter + regularization_H": 1.8925751, + "curvature_matrix_F + psf_convolution_mapping_matrix": 1.0243259, + "data_vector_D + psf_convolution_mapping_matrix": 0.1403654, + "inversion_other + mesh_construction + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin + regularization_H": 0.07561110000000001, + "inversion_other + mapping_matrix + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin": 0.021619000000000003, + "border_relocator + ray_trace_data_grid": 0.020908100000000006, + "inversion_other + regularization_H": 0.0190238, + "inversion_other + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin + regularization_H": 0.0171037, + "inversion_other + mapping_matrix + mesh_construction + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin": 0.0109052, + "inversion_other + pdip_solve + regularization_H": 0.010016099999999998, + "inversion_other + mesh_dual_areas + mesh_locate_walk": 0.009523000000000005, + "grids_and_structures + mass_profile_deflections + ray_trace_data_grid": 0.0091615, + "inversion_other + mesh_construction + regularization_H": 0.0083263, + "inversion_other + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + regularization_H": 0.0068288, + "curvature_reg_reduce_gather + inversion_other + mapped_reconstruction + reconstruction_scatter + regularization_H": 0.0054877, + "inversion_other + mesh_construction + mesh_seed_argmin + regularization_H": 0.0054717, + "inversion_other + ray_trace_data_grid": 0.0049791, + "inversion_other + mapped_reconstruction": 0.004770999999999999, + "inversion_other + mapped_reconstruction + reconstruction_scatter": 0.0040669, + "mapping_matrix + regularization_H": 0.0037760000000000003, + "inversion_other + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin": 0.0029695999999999993, + "inversion_other + mesh_construction + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin": 0.0026015000000000005, + "inversion_other + mesh_locate_walk + mesh_seed_argmin": 0.0024703999999999998, + "inversion_other + mesh_construction + mesh_locate_walk + mesh_seed_argmin": 0.0024063, + "chi_squared_evidence + inversion_other": 0.002384, + "inversion_other + mesh_interpolation_weights": 0.0022688, + "grids_and_structures + mass_profile_deflections": 0.0013312000000000003 + }, + "example_kernels": { + "curvature_reg_reduce_gather + inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter + regularization_H": [ + "input_add_multiply_transpose_fusion" + ], + "curvature_matrix_F + psf_convolution_mapping_matrix": [ + "loop_divide_gather_fusion" + ], + "data_vector_D + psf_convolution_mapping_matrix": [ + "input_reduce_fusion.14" + ], + "inversion_other + mesh_construction + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin + regularization_H": [ + "input_reduce_fusion.22", + "input_scatter_fusion.3" + ], + "inversion_other + mapping_matrix + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin": [ + "input_scatter_fusion.1", + "input_scatter_fusion.4" + ], + "border_relocator + ray_trace_data_grid": [ + "input_reduce_fusion.19", + "input_concatenate_fusion.9", + "input_reduce_fusion.18", + "loop_add_fusion.3" + ], + "inversion_other + regularization_H": [ + "loop_reduce_slice_fusion.2", + "loop_reduce_slice_fusion.1", + "loop_reduce_slice_fusion", + "loop_reduce_fusion.3" + ], + "inversion_other + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin + regularization_H": [ + "loop_select_fusion.4" + ], + "inversion_other + mapping_matrix + mesh_construction + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin": [ + "input_scatter_fusion.2" + ], + "inversion_other + pdip_solve + regularization_H": [ + "loop_log_fusion.1", + "loop_log_fusion" + ] + }, + "prorated_estimate_ms": { + "psf_convolution_mapping_matrix": 0.58234565, + "curvature_matrix_F": 0.51216295, + "inversion_other": 0.3690093309523809, + "regularization_H": 0.3518196773809523, + "mapped_reconstruction": 0.32026785666666663, + "pdip_solve": 0.3187678833333333, + "reconstruction_scatter": 0.31788235666666664, + "curvature_reg_reduce_gather": 0.3165267233333333, + "data_vector_D": 0.0701827, + "mesh_construction": 0.027077124285714287, + "mesh_locate_walk": 0.025565805952380956, + "mesh_seed_argmin": 0.02375939761904762, + "mesh_interpolation_weights": 0.023466590952380954, + "ray_trace_data_grid": 0.015997433333333335, + "mesh_dual_areas": 0.010566840952380953, + "border_relocator": 0.010454050000000003, + "mapping_matrix": 0.006793961904761905, + "grids_and_structures": 0.0037194333333333334, + "mass_profile_deflections": 0.0037194333333333334, + "chi_squared_evidence": 0.001192 + }, + "prorated_note": "ESTIMATE ONLY \u2014 a mixed fusion's time split equally across the stages its constituents span. Never summed into the measured table, never reconciled." + }, + "other_sources_ms": { + "copy.75": 0.04220080000000013, + "copy.37": 0.014700799999999993, + "copy.73": 0.0021024, + "loop_broadcast_fusion.5": 0.0020895, + "copy.46": 0.0019968, + "loop_broadcast_fusion.3": 0.001987, + "copy.74": 0.0016639000000000003 + }, + "device_span_ms": 468.1705037, + "device_busy_ms": 437.22783289999995, + "device_idle_ms": 30.94267080000003, + "largest_idle_gaps": [ + { + "gap_ms": 5.423782, + "after": "pure_callback.4", + "before": "pure_callback.4" + }, + { + "gap_ms": 0.128477, + "after": "cholesky.70", + "before": "cholesky.70" + }, + { + "gap_ms": 0.078174, + "after": "cholesky.20", + "before": "cholesky.20" + }, + { + "gap_ms": 0.054238, + "after": "input_reduce_fusion.30", + "before": "loop_broadcast_fusion" + }, + { + "gap_ms": 0.037215, + "after": "loop_reduce_fusion", + "before": "loop_or_select_fusion" + }, + { + "gap_ms": 0.026623, + "after": "pure_callback.4", + "before": "loop_select_fusion.6" + }, + { + "gap_ms": 0.026271, + "after": "input_concatenate_fusion.7", + "before": "pure_callback.4" + }, + { + "gap_ms": 0.025151, + "after": "while.52", + "before": "input_reduce_fusion.3" + } + ], + "kernel_ms": 437.2384985000036, + "sum_ms": 468.1811693000036, + "wall_ms": 468.2964584997535, + "host_outside_span_ms": 0.1259547997535151, + "reconciliation_pct": -0.024618849375722146, + "unjoined_ms": 0.0, + "unjoined_pct": 0.0, + "other_ms": 0.0667035, + "other_pct": 0.014243861722485162, + "note": "Stage rows attribute the command-buffers-OFF program (see the module docstring): kernel times are the same, the launch overhead the CUDA graphs remove is not. sum_ms = kernel rows + device_idle_ms; the residual against wall_ms is host_outside_span_ms (dispatch before the first kernel, teardown after the last).", + "per_stage_ms_per_lane": { + "border_relocator": 0.004800000000000001, + "chi_squared_evidence": 0.0009272000000000001, + "curvature_matrix_F": 0.21092885, + "data_vector_D": 0.0001856, + "fit_imaging_other": 0.010034325, + "grids_and_structures": 6.720000000000001e-05, + "inversion_other": 0.7230654749999994, + "mapping_matrix": 0.0057030499999999994, + "mesh_construction": 0.000104, + "mesh_locate_walk": 0.006841600000000001, + "mesh_qhull_callback": 0.000537575, + "mesh_seed_argmin": 0.011166175000000004, + "mixed_fusion": 0.1656202, + "other": 0.003335175, + "pdip_solve": 20.332128425000178, + "psf_convolution_mapping_matrix": 0.367880525, + "ray_trace_data_grid": 0.0006592, + "regularization_H": 0.017940349999999997 + }, + "per_lane_divisor": 20, + "host_callback": { + "pure_callback_span_ms": 5.6468074999999995, + "qhull_ms": 5.159133700000001, + "callback_body_ms_note": "the OUTERMOST matching body event, not a sum: under the probe the body appears twice (the wrapper and the timed re-implementation it calls) and summing them would count the same work twice", + "events_by_name": { + "pure_callback.4": { + "count": 10, + "ms": 5.6468074999999995 + }, + "$callback.py:815 _wrapped_callback": { + "count": 10, + "ms": 5.5343774 + }, + "$callback.py:224 _callback": { + "count": 10, + "ms": 5.5084296 + }, + "$callback.py:74 pure_callback_impl": { + "count": 10, + "ms": 5.4972187 + }, + "$callback.py:69 __call__": { + "count": 10, + "ms": 5.1836126 + }, + "$delaunay.py:162 ": { + "count": 10, + "ms": 5.1753546 + }, + "$host_callback_probe.py:225 wrapped": { + "count": 10, + "ms": 5.159133700000001 + }, + "$host_callback_probe.py:160 _timed_tri_only": { + "count": 10, + "ms": 5.1485837000000005 + }, + "ThenExecuteCallback:GetEventForComputeStreamSyncPoint": { + "count": 10, + "ms": 0.026345900000000002 + }, + "$callback.py:822 ": { + "count": 40, + "ms": 0.014651800000000001 + } + }, + "note": "HOST milliseconds per traced BATCH (the whole invocation), aggregated by name because the events nest. Not a row of the device table: the device pays for them as the idle gaps largest_idle_gaps names." + }, + "host_callback_ms": 5.6468074999999995 + }, + "hlo_census": { + "status": "excluded", + "reason": "The legacy census anchors PyAutoArray source line numbers that moved after the phase-1 run. No batched attribution is published from unsupported anchors; the device-event table and wall reconciliation remain valid." + }, + "trace_split": { + "expected_calls": 10, + "executions_per_invocation": 1, + "method": "per-call (first-instruction recurrence)", + "note": "DECIDED IN CODE: the scalar arm's trace is split by trace_calls * B, so every lane's execution is its own block and the per-stage median is taken over all of them. The vmap arm's is split by trace_calls, one block per batched execution, and per_stage_ms_per_lane divides those rows by B." + } + }, + "scalar": { + "arm": "scalar", + "program": "jax.jit(fn), called B times", + "stands_for": "Nautilus(use_jax_vmap=False, use_jax_jit=True). Plain use_jax_vmap=False is UNJITTED and is NOT this arm", + "hlo_source": "jax.jit(fn).lower(lane_trees[0]) \u2014 the same program phase 1 traced", + "batch_wall_ms": 990.2627962001134, + "wall_production_nesting_ms": 990.2627962001134, + "wall_aot_command_buffers_on_ms": 991.2252092999552, + "wall_aot_command_buffers_off_ms": 1000.7897528001195, + "command_buffer_delta_ms": 9.564543500164291, + "production_nesting_vs_aot_on_delta_ms": -0.9624130998417968, + "production_nesting_vs_aot_on_delta_pct": -0.09709328322284028, + "wall_per_lane_ms": 49.51313981000567, + "wall_per_lane_command_buffers_off_ms": 50.03948764000597, + "traced_batch_wall_ms": 1028.0014395000762, + "untraced_batch_wall_ms": 1000.4682517999754, + "traced_wall_per_lane_ms": 51.40007197500381, + "callback_count_per_call": 20.0, + "callback_count_per_lane": 1.0, + "callback_expectation": "1 per likelihood evaluation, B per batch", + "host_qhull_ms": 91.32654110289877, + "host_tables_ms": 2.4479295978380833, + "host_qhull_ms_per_lane": 4.566327055144939, + "host_tables_ms_per_lane": 0.12239647989190416, + "host_callback_probe": { + "calls": 200, + "qhull_ms_total": 913.2654110289877, + "tables_ms_total": 24.479295978380833, + "total_ms_total": 937.7447070073686, + "qhull_ms_mean": 4.566327055144939, + "tables_ms_mean": 0.12239647989190416, + "total_ms_mean": 4.688723535036843, + "non_finite_calls": 0, + "n_points": [ + 1500 + ] + }, + "host_callback_records_first": [ + { + "n_points": 1500, + "qhull_ms": 4.639250997570343, + "tables_ms": 0.1740990046528168, + "total_ms": 4.81335000222316, + "finite": true + }, + { + "n_points": 1500, + "qhull_ms": 4.4998730008956045, + "tables_ms": 0.13331899754120968, + "total_ms": 4.633191998436814, + "finite": true + }, + { + "n_points": 1500, + "qhull_ms": 4.4608630014408845, + "tables_ms": 0.12177800090285018, + "total_ms": 4.582641002343735, + "finite": true + }, + { + "n_points": 1500, + "qhull_ms": 4.495613000472076, + "tables_ms": 0.11922799967578612, + "total_ms": 4.614841000147862, + "finite": true + } + ], + "device_idle_ms": 7.529338024999994, + "device_idle_ms_per_lane": 7.529338024999994, + "trace": { + "parser": "ProfileData.from_file(xplane) + as_text() + stack_frame_index(proto field 17)", + "stage_audit": { + "chi_squared_evidence": [ + { + "instruction": "input_reduce_fusion.26", + "ms": 0.003884800000000003, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:104", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:104 (noise_normalization_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:98 (AbstractFit.noise_normalization)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:306 (FitDataset.noise_normalization)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:349 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)" + ] + }, + { + "instruction": "input_reduce_fusion.28", + "ms": 0.0037803150000000002, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:90", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:90 (chi_squared_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:87 (AbstractFit.chi_squared)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:293 (FitDataset.chi_squared)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:345 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)" + ] + }, + { + "instruction": "loop_multiply_fusion.2", + "ms": 0.002986895, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:300", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:300 (AbstractNDArray.__pow__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:60 (unwrap_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:35 (to_new_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:78 (chi_squared_map_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:78 (AbstractFit.chi_squared_map)" + ] + } + ], + "psf_convolution_mapping_matrix": [ + { + "instruction": "input_scatter_fusion", + "ms": 1.9941307349999995, + "opcode": "fusion", + "shape": "f64[1500,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.19.0", + "ms": 1.7626722300000008, + "opcode": "fft", + "shape": "f64[1500,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.15.0", + "ms": 1.3705227500000015, + "opcode": "fft", + "shape": "c128[1500,180,91]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.17.0", + "ms": 0.9792968950000001, + "opcode": "fft", + "shape": "c128[1500,91,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_transpose_fusion.1", + "ms": 0.5133277300000001, + "opcode": "fusion", + "shape": "c128[1500,91,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "wrapped_transpose", + "ms": 0.49952775499999985, + "opcode": "fusion", + "shape": "c128[1500,180,91]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + } + ], + "mapping_matrix": [ + { + "instruction": "loop_broadcast_fusion.3", + "ms": 0.11106406999999997, + "opcode": "fusion", + "shape": "f64[15361,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:342", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:342 (mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:283 (Mapper.mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:91 (AbstractInversionImaging._mapping_matrix_for_convolution_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:137 (AbstractInversionImaging.operated_mapping_matrix_list)" + ] + }, + { + "instruction": "input_reduce_fusion.29", + "ms": 0.0029031999999999925, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:120 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + }, + { + "instruction": "loop_divide_fusion", + "ms": 0.002351499999999999, + "opcode": "fusion", + "shape": "f64[1500]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:92", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:92 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:120 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + } + ], + "mixed_fusion": [ + { + "instruction": "loop_divide_gather_fusion", + "ms": 1.0230453300000004, + "opcode": "fusion", + "shape": "(f64[15361,1,1,1500]{3,2,1,0}, f64[15361,1,1,1500]{3,2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_add_multiply_transpose_fusion", + "ms": 0.061123699999999996, + "opcode": "fusion", + "shape": "(f64[1500,1500]{1,0}, f64[1500,1500]{1,0}, f64[1500,1500]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:61", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:61 (initialize)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:72 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:508 (reconstruction_positive_only_from)" + ] + }, + { + "instruction": "input_transpose_fusion.3", + "ms": 0.024346675000000012, + "opcode": "fusion", + "shape": "f64[1500,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1157 (AbstractInversion.log_det_regularization_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:348 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "input_scatter_fusion.2", + "ms": 0.016429389999999995, + "opcode": "fusion", + "shape": "f64[1500,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:579", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:579 (pixel_splitted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:137 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_abs_fusion", + "ms": 0.014725229999999997, + "opcode": "fusion", + "shape": "(f64[6000,1]{1,0}, f64[6000,1]{1,0}, f64[6000,1]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:613", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:613 (triangle_area_xp)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:657 (pixel_weights_delaunay_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:982 (InterpolatorDelaunay._mappings_sizes_weights_split)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:124 (AdaptSplit.regularization_matrix_from)" + ] + }, + { + "instruction": "input_scatter_fusion.3", + "ms": 0.014606035000000003, + "opcode": "fusion", + "shape": "f64[1500]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:70", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:70 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:120 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + } + ], + "ray_trace_data_grid": [ + { + "instruction": "input_reduce_fusion.18", + "ms": 0.0032377399999999946, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:506", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:506 (FlatLambdaCDM._simpson_1d)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:644 (FlatLambdaCDM.angular_diameter_distance_kpc_z1z2)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:133 (LensingCosmology.angular_diameter_distance_to_earth_in_kpc_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:362 (LensingCosmology.scaling_factor_between_redshifts_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer_util.py:252 (traced_grid_2d_list_from)" + ] + }, + { + "instruction": "input_reduce_fusion.20", + "ms": 0.0027575949999999955, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:506", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:506 (FlatLambdaCDM._simpson_1d)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:644 (FlatLambdaCDM.angular_diameter_distance_kpc_z1z2)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:151 (LensingCosmology.angular_diameter_distance_between_redshifts_in_kpc_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:355 (LensingCosmology.scaling_factor_between_redshifts_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer_util.py:252 (traced_grid_2d_list_from)" + ] + }, + { + "instruction": "input_reduce_fusion.19", + "ms": 0.002598389999999994, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:503", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:503 (FlatLambdaCDM._simpson_1d)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:644 (FlatLambdaCDM.angular_diameter_distance_kpc_z1z2)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:133 (LensingCosmology.angular_diameter_distance_to_earth_in_kpc_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:362 (LensingCosmology.scaling_factor_between_redshifts_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer_util.py:252 (traced_grid_2d_list_from)" + ] + }, + { + "instruction": "input_reduce_fusion.21", + "ms": 0.002593764999999992, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:503", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:503 (FlatLambdaCDM._simpson_1d)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:644 (FlatLambdaCDM.angular_diameter_distance_kpc_z1z2)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:151 (LensingCosmology.angular_diameter_distance_between_redshifts_in_kpc_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:355 (LensingCosmology.scaling_factor_between_redshifts_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer_util.py:252 (traced_grid_2d_list_from)" + ] + }, + { + "instruction": "loop_divide_fusion.1", + "ms": 0.0025345600000000012, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:380", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:380 (LensingCosmology.scaling_factor_between_redshifts_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer_util.py:252 (traced_grid_2d_list_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer.py:632 (Tracer.traced_grid_2d_list_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/structures/decorators/abstract.py:93 (AbstractMaker.evaluate_func)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/structures/decorators/abstract.py:110 (AbstractMaker.result)" + ] + } + ], + "grids_and_structures": [ + { + "instruction": "loop_multiply_sine_fusion", + "ms": 0.001349450000000002, + "opcode": "fusion", + "shape": "(f64[], f64[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/geometry/geometry_util.py:527", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/geometry/geometry_util.py:527 (transform_grid_2d_to_reference_frame)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/profiles/geometry_profiles.py:418 (EllProfile.transformed_to_reference_frame_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/structures/decorators/abstract.py:93 (AbstractMaker.evaluate_func)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/structures/decorators/abstract.py:112 (AbstractMaker.result)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/structures/decorators/to_grid.py:70 (to_grid..wrapper)" + ] + } + ], + "border_relocator": [ + { + "instruction": "eigh.45", + "ms": 0.07476311500000012, + "opcode": "custom-call", + "shape": "(f64[2,2]{0,1}, f64[2]{0}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "custom-call.2", + "ms": 0.007968155000000018, + "opcode": "custom-call", + "shape": "(f64[2,2]{1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_select_sine_fusion", + "ms": 0.003661740000000002, + "opcode": "fusion", + "shape": "(f64[], f64[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:301", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:301 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:458 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_add_fusion.7", + "ms": 0.0036049499999999952, + "opcode": "fusion", + "shape": "f64[1500]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:458 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_concatenate_fusion.6", + "ms": 0.0033672000000000016, + "opcode": "fusion", + "shape": "f64[1500,2]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:323", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:323 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:458 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_reduce_fusion.23", + "ms": 0.0019169550000000043, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:256", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:256 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + } + ], + "mesh_construction": [ + { + "instruction": "input_concatenate_fusion.7", + "ms": 0.0020686249999999975, + "opcode": "fusion", + "shape": "f64[1500,2]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:820", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:820 (InterpolatorDelaunay.mesh_grid_xy)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:847 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + } + ], + "mesh_qhull_callback": [ + { + "instruction": "pure_callback.4", + "ms": 0.010612789999999981, + "opcode": "custom-call", + "shape": "(s32[3000,3]{1,0}, s32[3000,3]{1,0}, s32[1500]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:161", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:161 (_jax_delaunay_tables)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:405 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + } + ], + "other": [ + { + "instruction": "copy.72", + "ms": 0.04222511500000095, + "opcode": "copy", + "shape": "f64[1,1024,2]{2,1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.35", + "ms": 0.014779059999999924, + "opcode": "copy", + "shape": "s32[21361]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "loop_broadcast_fusion.1", + "ms": 0.0019825650000000043, + "opcode": "fusion", + "shape": "(pred[21361]{0}, pred[21361]{0})", + "source": "", + "stack": [] + }, + { + "instruction": "copy.40", + "ms": 0.001971185000000003, + "opcode": "copy", + "shape": "s64[1500]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "loop_broadcast_fusion.2", + "ms": 0.0017951949999999957, + "opcode": "fusion", + "shape": "(f64[1500]{0}, f64[1500]{0}, f64[1500]{0}, f64[1500]{0})", + "source": "", + "stack": [] + }, + { + "instruction": "copy.20", + "ms": 0.001671215, + "opcode": "copy", + "shape": "s64[]", + "source": "", + "stack": [] + } + ], + "mesh_seed_argmin": [ + { + "instruction": "input_reduce_fusion", + "ms": 0.14838911000000363, + "opcode": "fusion", + "shape": "(f64[1024]{0}, s64[1024]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:191", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:191 (_nearest_vertex_seed_from..argmin_chunk)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)" + ] + }, + { + "instruction": "loop_dynamic_update_slice_fusion", + "ms": 0.04136217499999794, + "opcode": "fusion", + "shape": "s32[21,1024]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_add_fusion", + "ms": 0.031880524999999986, + "opcode": "fusion", + "shape": "s64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_broadcast_fusion", + "ms": 0.0019715200000000013, + "opcode": "fusion", + "shape": "s32[21,1024]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "regularization_H": [ + { + "instruction": "loop_select_fusion.3", + "ms": 0.02005693000000001, + "opcode": "fusion", + "shape": "f64[1500,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:549", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:549 (pixel_splitted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:137 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_scatter_fusion.10", + "ms": 0.002080480000000001, + "opcode": "fusion", + "shape": "f64[1500,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:615", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:615 (pixel_splitted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:137 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_concatenate_fusion.9", + "ms": 0.0018708849999999981, + "opcode": "fusion", + "shape": "pred[3]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:91", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:91 (split_points_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:410 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + }, + { + "instruction": "input_concatenate_fusion.8", + "ms": 0.001867524999999998, + "opcode": "fusion", + "shape": "pred[3]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:93", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:93 (split_points_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:410 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + }, + { + "instruction": "input_concatenate_fusion.10", + "ms": 0.001867194999999998, + "opcode": "fusion", + "shape": "pred[3]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:90", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:90 (split_points_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:410 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + }, + { + "instruction": "input_concatenate_fusion", + "ms": 0.0017668799999999982, + "opcode": "fusion", + "shape": "s32[1500,2]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:615", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:615 (pixel_splitted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:137 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "mesh_locate_walk": [ + { + "instruction": "loop_reduce_fusion", + "ms": 0.023632765000000222, + "opcode": "fusion", + "shape": "(f64[21361]{0}, s64[21361]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:264", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:264 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:264 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)" + ] + }, + { + "instruction": "input_reduce_fusion.1", + "ms": 0.022718959999999684, + "opcode": "fusion", + "shape": "pred[196]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:288", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:288 (_walk_from_seed..cond)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)" + ] + }, + { + "instruction": "loop_or_select_fusion", + "ms": 0.020374695000000012, + "opcode": "fusion", + "shape": "(s32[21361]{0}, pred[21361]{0}, pred[21361]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:270", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:270 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)" + ] + }, + { + "instruction": "loop_select_fusion", + "ms": 0.017536129999999987, + "opcode": "fusion", + "shape": "s32[21361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:242", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:242 (_walk_from_seed..weights_of)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:262 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)" + ] + }, + { + "instruction": "input_reduce_fusion.2", + "ms": 0.014358279999999928, + "opcode": "fusion", + "shape": "pred[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:288", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:288 (_walk_from_seed..cond)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)" + ] + }, + { + "instruction": "while.22", + "ms": 0.012884814999999787, + "opcode": "while", + "shape": "(s32[], s32[21361]{0}, pred[21361]{0}, pred[21361]{0}, s32[3000,3]{1,0}, /*index=5*/f64[1500,2]{1,0}, f64[21361,2]{1,0}, s32[3000,3]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "data_vector_D": [ + { + "instruction": "input_reduce_fusion.10", + "ms": 0.12161861500000003, + "opcode": "fusion", + "shape": "f64[92,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123 (data_vector_via_blurred_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:67 (InversionImagingMapping.data_vector)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:699 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_reduce_fusion.27", + "ms": 0.003683645000000003, + "opcode": "fusion", + "shape": "f64[1500]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123 (data_vector_via_blurred_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:67 (InversionImagingMapping.data_vector)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:699 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "inversion_other": [ + { + "instruction": "cholesky.60", + "ms": 0.8959521850000002, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1078 (AbstractInversion.log_det_curvature_reg_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:347 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "cholesky.70", + "ms": 0.8952552050000002, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1157 (AbstractInversion.log_det_regularization_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:348 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "input_reduce_fusion.17", + "ms": 0.013025704999999992, + "opcode": "fusion", + "shape": "f64[1500]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:946", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:946 (AbstractInversion.regularization_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:346 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)", + "/mnt/ral/jnightin/autolens_profiling_wt/certified-solver-phase-c1-lane-rate/scripts/imaging/likelihood_breakdown/fixed_light_trace.py:1195 (_captured_likelihood_fn.._likelihood)" + ] + }, + { + "instruction": "loop_reduce_window_fusion", + "ms": 0.002881114999999994, + "opcode": "fusion", + "shape": "s64[6,16]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "loop_reduce_window_fusion.1", + "ms": 0.0027832000000000048, + "opcode": "fusion", + "shape": "s64[94,16]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "input_reduce_fusion.25", + "ms": 0.0026658900000000032, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:944", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:944 (AbstractInversion.regularization_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:346 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)", + "/mnt/ral/jnightin/autolens_profiling_wt/certified-solver-phase-c1-lane-rate/scripts/imaging/likelihood_breakdown/fixed_light_trace.py:1195 (_captured_likelihood_fn.._likelihood)" + ] + } + ], + "curvature_matrix_F": [ + { + "instruction": "cublas-lt-matmul.2", + "ms": 4.2290523050000015, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "pdip_solve": [ + { + "instruction": "cholesky.20", + "ms": 15.643076489999782, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:106", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:106 (factorize_kkt)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:212 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve", + "ms": 2.4862915699999815, + "opcode": "custom-call", + "shape": "(f64[1500,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:213 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve.2", + "ms": 2.435595480000113, + "opcode": "custom-call", + "shape": "(f64[1500,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:217 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve.3", + "ms": 2.362735340000195, + "opcode": "custom-call", + "shape": "(f64[1500,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:217 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve.1", + "ms": 2.261767130000196, + "opcode": "custom-call", + "shape": "(f64[1500,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:213 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "cholesky.40", + "ms": 0.8701936999999988, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:62", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:62 (initialize)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:72 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:508 (reconstruction_positive_only_from)" + ] + } + ], + "mapped_reconstruction": [ + { + "instruction": "input_reduce_fusion.14", + "ms": 0.11521205500000002, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163 (mapped_reconstructed_data_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:120 (InversionImagingMapping._mapped_reconstructed_data_dict_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:196 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + } + ] + }, + "stage_audit_note": "The HLO instructions that contributed most of each stage's milliseconds, with their full source stack. A stage row is only as good as the rules that built it; this is how a reader checks a row against the HLO instead of trusting it.", + "untraced_wall_ms": 50.02341258999877, + "reconciliation_vs_untraced_pct": -1.9565279822480652, + "wall_basis": "wall_ms is the TRACED run's wall, the run these kernel durations came from. untraced_wall_ms is the same executable without the profiler; the difference is the profiler's overhead and belongs in neither the stages nor the idle row.", + "calls": 200, + "call_split": "per-call (first-instruction recurrence)", + "call_blocks": 200, + "events": 185800, + "streams": [ + "Stream #14(MemcpyH2D,Compute,MemcpyD2H,Memset,MemcpyD2D)" + ], + "per_stage_ms": { + "border_relocator": { + "median_ms": 0.09679900000000002, + "min_ms": 0.09615600000000003, + "max_ms": 0.097789 + }, + "chi_squared_evidence": { + "median_ms": 0.010624000000000001, + "min_ms": 0.010304, + "max_ms": 0.011232 + }, + "curvature_matrix_F": { + "median_ms": 4.2269015, + "min_ms": 4.214477, + "max_ms": 4.30875 + }, + "data_vector_D": { + "median_ms": 0.12531350000000002, + "min_ms": 0.124545, + "max_ms": 0.126145 + }, + "grids_and_structures": { + "median_ms": 0.001312, + "min_ms": 0.00128, + "max_ms": 0.00144 + }, + "inversion_other": { + "median_ms": 1.8232705, + "min_ms": 1.805524, + "max_ms": 1.837844 + }, + "mapped_reconstruction": { + "median_ms": 0.115197, + "min_ms": 0.114397, + "max_ms": 0.116061 + }, + "mapping_matrix": { + "median_ms": 0.11632100000000001, + "min_ms": 0.115329, + "max_ms": 0.11756899999999999 + }, + "memset": { + "median_ms": 0.04812800000000002, + "min_ms": 0.04000000000000001, + "max_ms": 0.07564800000000006 + }, + "mesh_construction": { + "median_ms": 0.00208, + "min_ms": 0.002047, + "max_ms": 0.002112 + }, + "mesh_locate_walk": { + "median_ms": 0.134049, + "min_ms": 0.133217, + "max_ms": 0.134912 + }, + "mesh_qhull_callback": { + "median_ms": 0.01056, + "min_ms": 0.010464000000000001, + "max_ms": 0.011168 + }, + "mesh_seed_argmin": { + "median_ms": 0.2235865000000001, + "min_ms": 0.2230990000000001, + "max_ms": 0.2240660000000001 + }, + "mixed_fusion": { + "median_ms": 1.2709775, + "min_ms": 1.2687489999999997, + "max_ms": 1.2747000000000004 + }, + "other": { + "median_ms": 0.0693135, + "min_ms": 0.06889499999999998, + "max_ms": 0.06976 + }, + "pdip_solve": { + "median_ms": 25.848196000000044, + "min_ms": 22.808241000000063, + "max_ms": 41.376746000000004 + }, + "psf_convolution_mapping_matrix": { + "median_ms": 7.3480195, + "min_ms": 7.3335490000000005, + "max_ms": 7.364046000000001 + }, + "ray_trace_data_grid": { + "median_ms": 0.013696, + "min_ms": 0.013568, + "max_ms": 0.014177000000000002 + }, + "regularization_H": { + "median_ms": 0.031008, + "min_ms": 0.030368, + "max_ms": 0.031679 + } + }, + "stage_order": [ + "ray_trace_data_grid", + "border_relocator", + "mesh_qhull_callback", + "mesh_seed_argmin", + "mesh_locate_walk", + "mesh_construction", + "mapping_matrix", + "psf_convolution_mapping_matrix", + "data_vector_D", + "curvature_matrix_F", + "regularization_H", + "pdip_solve", + "mapped_reconstruction", + "chi_squared_evidence", + "grids_and_structures", + "inversion_other", + "mixed_fusion", + "other", + "memset" + ], + "mixed_fusion": { + "ms": 1.2709775, + "constituent_stage_sets": { + "curvature_matrix_F + psf_convolution_mapping_matrix": 1.0230453300000004, + "curvature_reg_reduce_gather + inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter + regularization_H": 0.061123699999999996, + "inversion_other + regularization_H": 0.029225715000000055, + "inversion_other + mesh_construction + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin + regularization_H": 0.021690225000000046, + "border_relocator + ray_trace_data_grid": 0.021213189999999996, + "inversion_other + mapping_matrix + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin": 0.021144570000000022, + "inversion_other + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + regularization_H": 0.014725229999999997, + "inversion_other + mapping_matrix + mesh_construction + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin": 0.01166553, + "grids_and_structures + mass_profile_deflections + ray_trace_data_grid": 0.009562199999999998, + "inversion_other + mesh_dual_areas + mesh_locate_walk": 0.00939052000000004, + "inversion_other + mesh_construction + mesh_seed_argmin + regularization_H": 0.007291344999999993, + "inversion_other + mesh_construction + regularization_H": 0.006517565000000003, + "inversion_other + ray_trace_data_grid": 0.0053705450000000165, + "inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": 0.004874084999999997, + "inversion_other + mapped_reconstruction": 0.0037905350000000007, + "mapping_matrix + regularization_H": 0.003419349999999996, + "inversion_other + mesh_construction + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin": 0.0031858950000000015, + "inversion_other + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin": 0.0029827000000000065, + "inversion_other + pdip_solve": 0.0028899249999999976, + "inversion_other + mesh_locate_walk + mesh_seed_argmin": 0.002527329999999996, + "inversion_other + mesh_interpolation_weights": 0.0022097499999999934, + "chi_squared_evidence + inversion_other": 0.0019017450000000029, + "grids_and_structures + mass_profile_deflections": 0.0013417450000000018 + }, + "example_kernels": { + "curvature_matrix_F + psf_convolution_mapping_matrix": [ + "loop_divide_gather_fusion" + ], + "curvature_reg_reduce_gather + inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter + regularization_H": [ + "input_add_multiply_transpose_fusion" + ], + "inversion_other + regularization_H": [ + "loop_reduce_slice_fusion", + "loop_reduce_fusion.1", + "loop_reduce_fusion.2", + "input_transpose_fusion.3" + ], + "inversion_other + mesh_construction + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin + regularization_H": [ + "input_reduce_fusion.24", + "loop_select_fusion.4", + "input_scatter_fusion.2" + ], + "border_relocator + ray_trace_data_grid": [ + "input_reduce_fusion.16", + "input_concatenate_fusion.12", + "input_reduce_fusion.15", + "loop_add_fusion.5" + ], + "inversion_other + mapping_matrix + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin": [ + "input_scatter_fusion.6", + "input_scatter_fusion.3" + ], + "inversion_other + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + regularization_H": [ + "loop_abs_fusion" + ], + "inversion_other + mapping_matrix + mesh_construction + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin": [ + "input_scatter_fusion.4" + ], + "grids_and_structures + mass_profile_deflections + ray_trace_data_grid": [ + "loop_subtract_fusion.1" + ], + "inversion_other + mesh_dual_areas + mesh_locate_walk": [ + "loop_select_fusion.6", + "input_scatter_fusion.9", + "input_scatter_fusion.8", + "input_scatter_fusion.7" + ] + }, + "prorated_estimate_ms": { + "curvature_matrix_F": 0.5115226650000002, + "psf_convolution_mapping_matrix": 0.5115226650000002, + "inversion_other": 0.05472717369047624, + "regularization_H": 0.03706525725000003, + "mesh_construction": 0.0166546449404762, + "ray_trace_data_grid": 0.016479267500000006, + "mesh_interpolation_weights": 0.013764162023809534, + "mesh_locate_walk": 0.013686857690476215, + "mapped_reconstruction": 0.013301072083333332, + "pdip_solve": 0.01285076708333333, + "mesh_seed_argmin": 0.012379520607142867, + "reconstruction_scatter": 0.011405804583333332, + "border_relocator": 0.010606594999999998, + "curvature_reg_reduce_gather": 0.010187283333333333, + "mesh_dual_areas": 0.009592988857142874, + "mapping_matrix": 0.0066745828571428585, + "grids_and_structures": 0.0038582725000000004, + "mass_profile_deflections": 0.0038582725000000004, + "chi_squared_evidence": 0.0009508725000000014 + }, + "prorated_note": "ESTIMATE ONLY \u2014 a mixed fusion's time split equally across the stages its constituents span. Never summed into the measured table, never reconciled." + }, + "other_sources_ms": { + "copy.72": 0.04222511500000095, + "copy.35": 0.014779059999999924, + "loop_broadcast_fusion.1": 0.0019825650000000043, + "copy.40": 0.001971185000000003, + "loop_broadcast_fusion.2": 0.0017951949999999957, + "copy.20": 0.001671215, + "copy.71": 0.0016487949999999991, + "copy.52": 0.001648469999999997, + "copy.70": 0.001609909999999998 + }, + "device_span_ms": 51.395114955, + "device_busy_ms": 43.86577693, + "device_idle_ms": 7.529338024999994, + "largest_idle_gaps": [ + { + "gap_ms": 5.342053, + "after": "pure_callback.4", + "before": "pure_callback.4" + }, + { + "gap_ms": 0.046111, + "after": "input_concatenate_fusion.7", + "before": "pure_callback.4" + }, + { + "gap_ms": 0.033919, + "after": "pure_callback.4", + "before": "copy.71" + }, + { + "gap_ms": 0.033567, + "after": "input_reduce_fusion.1", + "before": "input_reduce_fusion.2" + }, + { + "gap_ms": 0.024608, + "after": "loop_add_fusion", + "before": "copy.72" + }, + { + "gap_ms": 0.022879, + "after": "input_reduce_fusion.26", + "before": "loop_broadcast_fusion.4" + }, + { + "gap_ms": 0.02064, + "after": "eigh.45", + "before": "eigh.45" + }, + { + "gap_ms": 0.019999, + "after": "loop_reduce_fusion.1", + "before": "loop_reduce_fusion.2" + } + ], + "kernel_ms": 41.51535250000005, + "sum_ms": 49.04469052500004, + "wall_ms": 51.40007197500381, + "host_outside_span_ms": 0.004957020003814705, + "reconciliation_pct": -4.582447766122208, + "unjoined_ms": 0.0, + "unjoined_pct": 0.0, + "other_ms": 0.0693135, + "other_pct": 0.13485097848444183, + "note": "Stage rows attribute the command-buffers-OFF program (see the module docstring): kernel times are the same, the launch overhead the CUDA graphs remove is not. sum_ms = kernel rows + device_idle_ms; the residual against wall_ms is host_outside_span_ms (dispatch before the first kernel, teardown after the last).", + "per_stage_ms_per_lane": { + "border_relocator": 0.09679900000000002, + "chi_squared_evidence": 0.010624000000000001, + "curvature_matrix_F": 4.2269015, + "data_vector_D": 0.12531350000000002, + "grids_and_structures": 0.001312, + "inversion_other": 1.8232705, + "mapped_reconstruction": 0.115197, + "mapping_matrix": 0.11632100000000001, + "memset": 0.04812800000000002, + "mesh_construction": 0.00208, + "mesh_locate_walk": 0.134049, + "mesh_qhull_callback": 0.01056, + "mesh_seed_argmin": 0.2235865000000001, + "mixed_fusion": 1.2709775, + "other": 0.0693135, + "pdip_solve": 25.848196000000044, + "psf_convolution_mapping_matrix": 7.3480195, + "ray_trace_data_grid": 0.013696, + "regularization_H": 0.031008 + }, + "per_lane_divisor": 1, + "host_callback": { + "pure_callback_span_ms": 100.77607629999997, + "qhull_ms": 93.95979960000003, + "callback_body_ms_note": "the OUTERMOST matching body event, not a sum: under the probe the body appears twice (the wrapper and the timed re-implementation it calls) and summing them would count the same work twice", + "events_by_name": { + "pure_callback.4": { + "count": 200, + "ms": 100.77607629999997 + }, + "$callback.py:815 _wrapped_callback": { + "count": 200, + "ms": 99.01275000000007 + }, + "$callback.py:224 _callback": { + "count": 200, + "ms": 98.54368509999999 + }, + "$callback.py:74 pure_callback_impl": { + "count": 200, + "ms": 98.36677370000001 + }, + "$callback.py:69 __call__": { + "count": 200, + "ms": 94.27812700000001 + }, + "$delaunay.py:162 ": { + "count": 200, + "ms": 94.14547370000003 + }, + "$host_callback_probe.py:225 wrapped": { + "count": 200, + "ms": 93.95979960000003 + }, + "$host_callback_probe.py:160 _timed_tri_only": { + "count": 200, + "ms": 93.7995406 + }, + "ThenExecuteCallback:GetEventForComputeStreamSyncPoint": { + "count": 200, + "ms": 0.3638613000000001 + }, + "$callback.py:822 ": { + "count": 800, + "ms": 0.28749589999999947 + }, + "$__init__.py:132 _xla_gc_callback": { + "count": 2, + "ms": 0.000366 + } + }, + "note": "HOST milliseconds per traced BATCH (the whole invocation), aggregated by name because the events nest. Not a row of the device table: the device pays for them as the idle gaps largest_idle_gaps names." + }, + "host_callback_ms": 100.77607629999997 + }, + "hlo_census": { + "status": "excluded", + "reason": "The legacy census anchors PyAutoArray source line numbers that moved after the phase-1 run. No batched attribution is published from unsupported anchors; the device-event table and wall reconciliation remain valid." + }, + "trace_split": { + "expected_calls": 200, + "executions_per_invocation": 20, + "method": "per-call (first-instruction recurrence)", + "note": "DECIDED IN CODE: the scalar arm's trace is split by trace_calls * B, so every lane's execution is its own block and the per-stage median is taken over all of them. The vmap arm's is split by trace_calls, one block per batched execution, and per_stage_ms_per_lane divides those rows by B." + } + } + }, + "certification_report": { + "source": "vmap arm, library solve observed through its stats= out-dict (PyAutoArray #566) and jax.debug.callback(..., ordered=True); ordered because the unordered batching rule returns the lanes permuted. Untimed, separately compiled; max rel diff of its log likelihoods vs the timed arm's: 4.123e-07", + "rows": 0, + "pdip_iter": "NOT AVAILABLE per lane without changing library numerics. The fallback branch calls the library's own reconstruction_positive_only_from, which returns the solution alone \u2014 jax_nnls.solve_nnls' iteration count is discarded inside the library's custom_vjp primal. The PDIP while_loop's cost is in the pdip_solve stage row of each arm's device table instead, which is a max-over-lanes quantity under vmap because every lane runs the same fixed kernel sequence.", + "passes_semantics": "library `passes`: restricted active-set passes run (jax_active_set.solve_certified)" + }, + "lane_construction": { + "draws_sha256": "8793f501adc86a80ee673986f87d36fdfb1b77bce5635352ee2c467783acb150", + "lane_rows": [ + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179 + ], + "calls": [ + 8 + ], + "stage": "pix2", + "regularization_range": { + "galaxies.source.pixelization.regularization.inner_coefficient": { + "min": 1.0566389768329418e-06, + "max": 229.37837836630266 + }, + "galaxies.source.pixelization.regularization.outer_coefficient": { + "min": 2.4574595034239785e-06, + "max": 30.026999055831187 + }, + "galaxies.source.pixelization.regularization.signal_scale": { + "min": 0.07341166691553269, + "max": 0.8809562507227594 + } + }, + "phases": [ + "exploration" + ], + "window_rule": "nautilus_batches.timed_window: consecutive captured calls, in call order, from the FIRST call that is not a prior batch, concatenated and truncated to B; at B == n_batch exactly one real Nautilus batch. Falls back to the latest B lanes if the post-prior lanes run out; never repeats a lane.", + "note": "Lane k is captured lane lane_rows[k]: the mass AND shear of a real Nautilus proposal (nautilus_batch_capture.py), lens light fixed at S3, the S3 light-subtracted dataset shared by every lane. `offsets` in the lane table are the mass offsets from the fiducial; the shear is in the capture file." + }, + "captured": { + "batches_path": "/mnt/ral/jnightin/autolens_profiling_wt/certified-solver-phase-c1-lane-rate/results/breakdown/imaging/nautilus_batches_delaunay_pix2.npz", + "batches_sha256": "90f4640a92f9b1c60ca3fceca7b484aa8215970489f8e7daf5430b8460d171d5", + "schema_version": 2, + "n_calls": 84, + "n_lanes": 1680, + "call_sizes_seen": [ + 20 + ], + "calls_by_phase": { + "prior": 8, + "exploration": 72, + "sampling": 4 + }, + "parameter_paths": [ + "galaxies.source.pixelization.regularization.inner_coefficient", + "galaxies.source.pixelization.regularization.outer_coefficient", + "galaxies.source.pixelization.regularization.signal_scale" + ], + "stage": "pix2", + "regularization": { + "class": "AdaptSplit", + "free": true, + "priors": { + "inner_coefficient": [ + "LogUniform", + 1e-06, + 1000000.0 + ], + "outer_coefficient": [ + "LogUniform", + 1e-06, + 1000000.0 + ], + "signal_scale": [ + "Uniform", + 0.0, + 1.0 + ] + }, + "priors_source": "PyAutoGalaxy packaged config/priors/regularization (adapt_split.yaml / constant.yaml); adapt_split.yaml is identical to euclid_strong_lens_modeling_pipeline/config/priors/regularization/adapt_split.yaml" + }, + "nautilus": { + "departures_from_production": [ + "mass/shear fixed at the S3 fiducial, not at a source_pix_1 result", + "no positions likelihood", + "the cell's mesh (Hilbert 1500, weight_power 1) in both stages; source_pix_2 redraws a 500-vertex Hilbert grid at weight_power 3.5", + "seeded (production passes no seed)", + "quick updates disabled (iterations_per_quick_update=1e12; render-only)", + "NullPaths: no output directory, so no checkpoint and one Sampler.run call", + "post-fit perform_update skipped (samples / latent variables never built)" + ], + "n_batch": 20, + "n_like_max": 40000, + "n_live": 75, + "number_of_cores": 1, + "production_reference": "euclid_strong_lens_modeling_pipeline/scripts/full_model.py source_pix_1 (n_live=150) / source_pix_2 (n_live=75): af.Nautilus(n_batch=20, **SettingsSearch.search_dict) with use_jax_vmap=True and number_of_cores=1 (SettingsSearch defaults)", + "production_stage": "source_pix_2", + "seed": 1, + "stage": "pix2", + "use_jax_vmap": true, + "version": "1.0.5" + }, + "capture_fit_status": "sampling complete (n_like_max or convergence); post-fit result skipped", + "capture_library_revisions": { + "PyAutoArray": { + "head": "7fa8d2714f7da43fec2b23c31bff580764831670", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoArray" + }, + "PyAutoFit": { + "head": "a736840127be7a3c21e15a5c945e94d8f1082983", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoFit" + }, + "PyAutoGalaxy": { + "head": "70a61e26cd715cefe7012a38285698091246a8a4", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy" + }, + "PyAutoLens": { + "head": "86054bbc19baa2f710a12e04a94fa27ab37cc354", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoLens" + }, + "PyAutoNerves": { + "head": "1fa613aa8d89a79613009fb66f5b4e2d21deb57a", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoNerves" + } + }, + "fingerprint_check": { + "fields": [ + "mesh", + "source_pixels", + "dataset_sha256", + "regularization_class", + "regularization_s0_fiducial", + "border_relocator", + "use_mixed_precision", + "log_evidence_s3_library" + ], + "not_identity": "the regularization coefficients: free per lane since the capture frees them", + "log_evidence_s3_library_rel_diff": 0.0, + "passed": true + }, + "timed_window_vs_capture_pdip": { + "reference": "the capture's own figure of merit (library PDIP, Fitness.call_wrap jax.jit(jax.vmap(call)) over parameter vectors) for the same lanes", + "compared_against": "this cell's jit(vmap) library-PDIP reference", + "n_compared": 20, + "max_rel_diff": 3.745673786670123e-07, + "max_abs_diff_nats": 0.05191313708201051, + "gated": false, + "note": "RECORDED, NOT GATED: proves the lane trees rebuilt here are the models the sampler evaluated (a wrong parameter mapping shows up as nats, not 1e-10)." + } + }, + "matched": { + "vmap_wall_per_lane_ms": 22.847947945010674, + "scalar_wall_per_lane_ms": 49.51313981000567, + "speedup_vmap_over_scalar": 2.1670716306414683, + "note": "Both walls are the PRODUCTION nesting of their arm, measured in one process on the same B lanes with the SAME library Settings (no injection). A speedup below 1 means the batch is slower per lane than B sequential jitted calls." + }, + "solver_source": "library", + "solver": "pdip", + "certified_fallback": "pdip", + "certified_pass_budget": 16, + "certified_pass_budget_basis": "config default (Settings().certified_pass_budget)", + "certified_tau_rel": 1e-09, + "solver_used": "pdip", + "solver_check": { + "solver_used": "pdip", + "solver_used_source": "AbstractInversion.positive_only_solver_used on the fiducial S3 inversion, built eagerly on the JAX backend (AnalysisImaging(use_jax=True).fit_from) with the arms' Settings", + "reference_solver_used": "pdip", + "traced_solver_kwargs_jax": [ + "pdip" + ], + "observed_calls_jax": 1, + "report_rows": 0, + "report_vs_timed_arm_max_rel_diff": 4.123155750436712e-07 + }, + "lanes_certified": [ + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null + ], + "lanes_passes": [ + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null + ], + "uncertified_lanes": null, + "per_lane_certification_note": "Not applicable: a library-PDIP row has no certificate or pass count.", + "gate": { + "pre_registered": true, + "gated": [ + "per lane: jit(vmap) arm vs jit(vmap) library PDIP <= lane_rtol relative", + "per lane: scalar jit arm vs scalar jit library PDIP <= lane_rtol relative" + ], + "recorded_not_gated": [ + "per lane: jit(vmap) arm vs scalar jit arm (rel_diff, abs_diff_nats)", + "per lane: jit(vmap) library PDIP vs scalar jit library PDIP", + "uncertified_lanes (certified_fallback=none rows)" + ], + "lanes_failed": 5, + "passed": false, + "policy_eligible": false, + "note": "Pre-registered before submission (module docstring; submit header). Phase 3 (results/notes/hst_gpu_residue_phase3_psf_2026_09.md) placed phase 2's ~2.5e-9 certified-vs-PDIP residual BETWEEN the jit(vmap) and scalar-jit compositions, not in the solver \u2014 so each arm is gated against the library-PDIP reference of its OWN composition, and the cross-composition difference is recorded with its nats. A certified_fallback=none row is policy-eligible only if every lane certifies AND passes the gate. Timing is never gated." + }, + "library_revisions": { + "PyAutoArray": { + "head": "3de624b5b91a4efa130dc3cb0a3a0f06f85025a3", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoArray", + "module_file": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/__init__.py" + }, + "PyAutoFit": { + "head": "dd9fbe0aab60c4a57702b1444ca031b317c91331", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoFit", + "module_file": "/mnt/ral/jnightin/PyAuto/PyAutoFit/autofit/__init__.py" + }, + "PyAutoGalaxy": { + "head": "70a61e26cd715cefe7012a38285698091246a8a4", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy", + "module_file": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/__init__.py" + }, + "PyAutoLens": { + "head": "86054bbc19baa2f710a12e04a94fa27ab37cc354", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoLens", + "module_file": "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/__init__.py" + }, + "autoarray_file": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/__init__.py" + } + }, + "headline_arm_note": "`trace`, `hlo_census`, `command_buffers` and `trace_timing` above describe the scalar arm \u2014 the program phase 1 traced. Both arms' full blocks, the lane table and the matched comparison are under `vmap`." +} \ No newline at end of file diff --git a/results/breakdown/imaging/fixed_light_trace_delaunay_jitvmap20_captured_pix2_libpdip_fbon_b16_hpc_a100_fp64_fixed_light_trace.png b/results/breakdown/imaging/fixed_light_trace_delaunay_jitvmap20_captured_pix2_libpdip_fbon_b16_hpc_a100_fp64_fixed_light_trace.png new file mode 100644 index 000000000..837fcfdf2 Binary files /dev/null and b/results/breakdown/imaging/fixed_light_trace_delaunay_jitvmap20_captured_pix2_libpdip_fbon_b16_hpc_a100_fp64_fixed_light_trace.png differ diff --git a/results/breakdown/imaging/fixed_light_trace_delaunay_jitvmap50_captured_pix1_libcertified_fboff_b16_hpc_a100_fp64_fixed_light_trace.json b/results/breakdown/imaging/fixed_light_trace_delaunay_jitvmap50_captured_pix1_libcertified_fboff_b16_hpc_a100_fp64_fixed_light_trace.json new file mode 100644 index 000000000..e181d6b62 --- /dev/null +++ b/results/breakdown/imaging/fixed_light_trace_delaunay_jitvmap50_captured_pix1_libcertified_fboff_b16_hpc_a100_fp64_fixed_light_trace.json @@ -0,0 +1,8478 @@ +{ + "device": { + "backend": "gpu", + "device": "cuda:0", + "hostname": "euclid-ral-gpu-2", + "xla_flags": "--xla_disable_hlo_passes=constant_folding --xla_gpu_autotune_level=0 --xla_gpu_enable_triton_gemm=false", + "omp_num_threads": null, + "cpu_count": 124, + "jax_compilation_cache_dir": "/mnt/ral/jnightin/autolens_profiling_wt/certified-solver-phase-c1-lane-rate/output/jax_cache/fixed_light_lanerate_delaunay_pix1_time_50_certified_off_350768_16", + "autotune_cache_entries_at_start": 0, + "cache_fresh": true, + "nvidia_smi": "NVIDIA A100 80GB PCIe, 61395 MiB, 81920 MiB" + }, + "machine": { + "cpu_model": "AMD EPYC 7702 64-Core Processor", + "cpu_count_os": 124, + "nproc": 4, + "nproc_all": 124, + "nproc_note": "GNU nproc honours OMP_NUM_THREADS, so `nproc` can print 1 on a multi-core host; `nproc_all` is the core count.", + "ram_total": "928298204 kB", + "kernel": "5.14.0-687.50.1.el9_8.x86_64", + "platform": "Linux-5.14.0-687.50.1.el9_8.x86_64-x86_64-with-glibc2.34", + "python": "3.12.4", + "jax_thread_env": { + "NPROC": null + }, + "blas_thread_env": { + "OMP_NUM_THREADS": null, + "OPENBLAS_NUM_THREADS": null, + "MKL_NUM_THREADS": null, + "VECLIB_MAXIMUM_THREADS": null, + "NUMEXPR_NUM_THREADS": null + }, + "thread_env_note": "NPROC sizes XLA's CPU intra-op pool (the JAX rows); the BLAS knobs pin OpenBLAS/MKL/OpenMP (the numpy/scipy rows) and do not touch JAX. Two disjoint families; both are recorded on every CPU timing.", + "gpu": "NVIDIA A100 80GB PCIe, 81920 MiB, 610.57.04" + }, + "precision": "fp64", + "configuration": { + "pixel_scale_arcsec": 0.05, + "mask_radius_arcsec": 3.5, + "image_pixels_masked": 15361, + "over_sampled_pixels": 62752, + "mesh": "delaunay", + "mesh_shape": null, + "source_pixels": 1500, + "source_pixels_requested": null, + "dataset": "hst", + "dataset_sha256": { + "data.fits": "e4e833a28e9c6f6fb023cd85c0d3dde74068720256bc77a240633500e5b04fac", + "noise_map.fits": "315c6266a0acd3ac9c8da82fcd2b45a08697362481fd7a35072bab1658530ba3", + "psf.fits": "8389ba0e8bf4a09b4a561cfc246181a2fb944ed396754cd0ff76fdd22910d303" + }, + "cell_source_sha256": "06a162fcdae6b329384ec33322f443df07215d86e56f0505ac15b3d3473eb432", + "inversion_path": "dense", + "pass_budget": 7, + "pass_budget_basis": "phase 3 (autolens_profiling#255): the smallest ZERO-fallback budget per mesh, the budget a production run fixes. NOT phase 0's certifying budget (2 for Delaunay), which falls back on 67.5 % of a graded draw set and is not a production cost.", + "border_relocator_mode": "cell", + "border_relocator": true, + "border_relocator_note": "'cell' is use_border_relocator=True, which every profiling cell in this family forces; 'library' passes None and takes the shipped config default, which is what production runs. The resolved boolean is what this leg actually ran.", + "routes_selected": [ + "b", + "d" + ], + "trace_calls": 10, + "command_buffers_traced": "off", + "use_mixed_precision": false, + "tau_rel": 1e-09, + "regularization": { + "scheme": "adapt_split", + "inner_coefficient": 0.1, + "outer_coefficient": 10.0, + "signal_scale": 0.1 + }, + "thread_env": { + "n_threads": null, + "vars": [ + "OPENBLAS_NUM_THREADS", + "MKL_NUM_THREADS", + "OMP_NUM_THREADS", + "VECLIB_MAXIMUM_THREADS", + "NUMEXPR_NUM_THREADS" + ], + "set_to": null, + "preexisting": {}, + "overridden": {}, + "note": "Not pinned (legacy variant): recorded as found." + }, + "over_sample_size_lp_rule": { + "sub_size_list": [ + 4, + 2, + 2 + ], + "radial_list": [ + 0.3, + 0.6 + ], + "centre": [ + 0.0, + 0.0 + ] + }, + "vmap_batch": 50, + "lanes": "captured", + "arms": [ + "vmap", + "scalar" + ], + "fallback": "off", + "draw_seed": 0, + "vmap_composition": "jax.jit(jax.vmap(fn))", + "lane_rtol": 1e-09, + "vmap_flags_note": "Strict ProfileCLI.parse_cell_args rejects unknown flags. These keys record the exact batching program and prevent historical vmap(jit) artifacts from being mistaken for current jit(vmap) measurements.", + "solver_source": "library", + "solver": "certified", + "certified_fallback": "none", + "certified_pass_budget": 16, + "captured_pass": "time", + "batches": "/mnt/ral/jnightin/autolens_profiling_wt/certified-solver-phase-c1-lane-rate/results/breakdown/imaging/nautilus_batches_delaunay_pix1.npz" + }, + "solver_injection": { + "patched": null, + "part_v": "none \u2014 library mode selects the solver through al.Settings", + "part_b_route_d": { + "patched": "autoarray.inversion.inversion.inversion_util.reconstruction_positive_only_from", + "pass_budget": 7, + "fallback": true + }, + "note": "Library mode (phase B, #300): PART V's arms and references run the library's own positive-only solve, selected by Settings(positive_only_solver, certified_fallback, certified_pass_budget); nothing is injected. PART B's single-call route d (the fiducial d == b pin) still uses the phase-1 harness injection at the phase-3 budget and is not a phase-B row. The untimed certification report observes the library solve (library_solver_observed) without changing it." + }, + "routes": { + "b_s3_pdip": { + "label": "S3 PDIP (source-only)", + "status": "ok", + "solver": "library", + "ms": 51.39113889999862, + "log_likelihood": 29155.000173263223 + }, + "d_s3_certified_fallback": { + "label": "S3 certified active set, budget 7, PDIP fallback", + "status": "ok", + "solver": "harness-injected certified active set", + "pass_budget": 7, + "fallback": true, + "injected_solver_calls_jax": 1, + "injected_solver_calls_numpy": 0, + "ms": 31.84854139981326, + "log_likelihood": 29155.000175564644 + } + }, + "equivalence_pins": [ + { + "pin": "route d (certified, fallback) == route b (library PDIP)", + "route": "d_s3_certified_fallback", + "reference": "b_s3_pdip", + "expectation": "the certified active set returns the library's own positive solution", + "rtol": 1e-09, + "got": 29155.000175564644, + "reference_value": 29155.000173263223, + "rel_diff": 7.893746388191834e-11, + "status": "PASS" + } + ], + "equivalence_rtol": 1e-09, + "reference": { + "log_evidence_s0_library": 29155.00017433923, + "log_evidence_s3_library": 29155.000174339304, + "s3": { + "n_params": 1500, + "n_mapper": 1500, + "n_funcs": 0, + "edge_zeroed_pixels": 0, + "subtracted_light_flux": 5105.448603818575 + } + }, + "command_buffers": { + "wall_on_ms": 1714.8924133998662, + "wall_off_ms": 1727.6137147000554, + "command_buffer_delta_ms": 12.721301300189225, + "command_buffer_delta_pct": 0.7418133756256209, + "traced": "off", + "compiler_option": "xla_gpu_enable_command_buffer", + "probe": { + "note": "Not taken in --vmap-batch mode: the CUPTI-inside-a-CUDA-graph probe is a phase-1 diagnostic about the JOIN, and this mode already compiles and times both the command-buffers ON and OFF executable of every arm." + }, + "note": "ONE lowering, TWO compilations, one process. wall_on_ms is the PRODUCTION program (CUDA graphs as XLA ships them) and is the number comparable to phase 5's row; wall_off_ms is the graph-less program the stage rows attribute. The delta is the launch overhead the graphs remove \u2014 it lands in device_idle and host_outside_span, not in any stage. Reconciliation is computed against wall_off_ms." + }, + "trace": { + "parser": "ProfileData.from_file(xplane) + as_text() + stack_frame_index(proto field 17)", + "stage_audit": { + "mixed_fusion": [ + { + "instruction": "loop_divide_gather_fusion", + "ms": 1.0175930819999996, + "opcode": "fusion", + "shape": "(f64[15361,1,1,1500]{3,2,1,0}, f64[15361,1,1,1500]{3,2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_broadcast_fusion.4", + "ms": 0.22712514000000011, + "opcode": "fusion", + "shape": "f64[1500,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_reduce_fusion.5", + "ms": 0.12176276800000001, + "opcode": "fusion", + "shape": "f64[92,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123 (data_vector_via_blurred_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:67 (InversionImagingMapping.data_vector)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:699 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_reduce_fusion.9", + "ms": 0.11505236400000013, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163 (mapped_reconstructed_data_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:120 (InversionImagingMapping._mapped_reconstructed_data_dict_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:196 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "loop_broadcast_fusion.2", + "ms": 0.11096660999999992, + "opcode": "fusion", + "shape": "f64[15361,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:342", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:342 (mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:283 (Mapper.mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:91 (AbstractInversionImaging._mapping_matrix_for_convolution_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:137 (AbstractInversionImaging.operated_mapping_matrix_list)" + ] + }, + { + "instruction": "input_multiply_transpose_fusion", + "ms": 0.10992808600000005, + "opcode": "fusion", + "shape": "(f64[1500,1500]{1,0}, f64[1500,1500]{1,0}, f64[1500,1500]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:237 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:274 (_certified_positive_only_from)" + ] + } + ], + "border_relocator": [ + { + "instruction": "eigh.45", + "ms": 0.07479145000000191, + "opcode": "custom-call", + "shape": "(f64[2,2]{0,1}, f64[2]{0}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "custom-call.2", + "ms": 0.007953370000000022, + "opcode": "custom-call", + "shape": "(f64[2,2]{1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_reduce_fusion.10", + "ms": 0.005808486000000006, + "opcode": "fusion", + "shape": "(f64[], f64[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:269", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:269 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_add_fusion.3", + "ms": 0.003513809999999997, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:423 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:208 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_add_fusion.5", + "ms": 0.0034463339999999927, + "opcode": "fusion", + "shape": "f64[1500]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:458 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_concatenate_fusion.12", + "ms": 0.0024006459999999937, + "opcode": "fusion", + "shape": "f64[392,2]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:238", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:238 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + } + ], + "mesh_construction": [ + { + "instruction": "input_concatenate_fusion.7", + "ms": 0.00206010400000001, + "opcode": "fusion", + "shape": "f64[1500,2]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:820", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:820 (InterpolatorDelaunay.mesh_grid_xy)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:847 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + } + ], + "mesh_qhull_callback": [ + { + "instruction": "pure_callback.4", + "ms": 0.010668695999999964, + "opcode": "custom-call", + "shape": "(s32[3000,3]{1,0}, s32[3000,3]{1,0}, s32[1500]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:161", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:161 (_jax_delaunay_tables)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:405 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + } + ], + "other": [ + { + "instruction": "copy.80", + "ms": 0.042013890000002906, + "opcode": "copy", + "shape": "f64[1,1024,2]{2,1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.48", + "ms": 0.01694752399999989, + "opcode": "copy", + "shape": "s32[21361]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.53", + "ms": 0.0020209240000000064, + "opcode": "copy", + "shape": "s64[1500]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.39", + "ms": 0.0016531839999999976, + "opcode": "copy", + "shape": "s32[]", + "source": "", + "stack": [] + }, + { + "instruction": "copy.78", + "ms": 0.001652293999999998, + "opcode": "copy", + "shape": "s64[]", + "source": "", + "stack": [] + }, + { + "instruction": "copy.79", + "ms": 0.0016482640000000034, + "opcode": "copy", + "shape": "s32[]", + "source": "", + "stack": [] + } + ], + "mesh_seed_argmin": [ + { + "instruction": "input_reduce_fusion", + "ms": 0.15265030800001345, + "opcode": "fusion", + "shape": "(f64[1024]{0}, s64[1024]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:191", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:191 (_nearest_vertex_seed_from..argmin_chunk)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)" + ] + }, + { + "instruction": "loop_dynamic_update_slice_fusion", + "ms": 0.04134029799999785, + "opcode": "fusion", + "shape": "s32[21,1024]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_add_fusion", + "ms": 0.03189977599999631, + "opcode": "fusion", + "shape": "s64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_broadcast_fusion", + "ms": 0.0019563560000000224, + "opcode": "fusion", + "shape": "s32[21,1024]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "pdip_solve": [ + { + "instruction": "cholesky.50", + "ms": 7.369648399999985, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "triangular-solve.1", + "ms": 1.3328387779999877, + "opcode": "custom-call", + "shape": "(f64[1500,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "triangular-solve", + "ms": 1.1379613320000173, + "opcode": "custom-call", + "shape": "(f64[1500,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "cholesky.70", + "ms": 0.8937893680000013, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:297 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:274 (_certified_positive_only_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:496 (reconstruction_positive_only_from)" + ] + }, + { + "instruction": "cholesky.60", + "ms": 0.8653709439999951, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:237 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:274 (_certified_positive_only_from)" + ] + }, + { + "instruction": "input_transpose_fusion", + "ms": 0.2912085159999993, + "opcode": "fusion", + "shape": "f64[1500,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + } + ], + "regularization_H": [ + { + "instruction": "input_scatter_fusion.10", + "ms": 0.002067654000000009, + "opcode": "fusion", + "shape": "f64[1500,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:615", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:615 (pixel_splitted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:137 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_concatenate_fusion.9", + "ms": 0.0018498079999999884, + "opcode": "fusion", + "shape": "pred[3]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:91", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:91 (split_points_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:410 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + }, + { + "instruction": "input_concatenate_fusion.8", + "ms": 0.0018417339999999905, + "opcode": "fusion", + "shape": "pred[3]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:93", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:93 (split_points_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:410 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + }, + { + "instruction": "input_concatenate_fusion", + "ms": 0.0017630739999999877, + "opcode": "fusion", + "shape": "s32[1500,2]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:615", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:615 (pixel_splitted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:137 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_concatenate_fusion.10", + "ms": 0.0016839700000000006, + "opcode": "fusion", + "shape": "pred[3]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:90", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:90 (split_points_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:410 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + }, + { + "instruction": "input_concatenate_fusion.11", + "ms": 0.0015004100000000015, + "opcode": "fusion", + "shape": "pred[3]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:88", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:88 (split_points_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:410 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + } + ], + "mesh_locate_walk": [ + { + "instruction": "loop_reduce_fusion", + "ms": 0.025697353999999336, + "opcode": "fusion", + "shape": "(f64[21361]{0}, s64[21361]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:264", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:264 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:264 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)" + ] + }, + { + "instruction": "input_reduce_fusion.1", + "ms": 0.02505042399999984, + "opcode": "fusion", + "shape": "pred[196]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:288", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:288 (_walk_from_seed..cond)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)" + ] + }, + { + "instruction": "loop_or_select_fusion", + "ms": 0.023336122000000445, + "opcode": "fusion", + "shape": "(s32[21361]{0}, pred[21361]{0}, pred[21361]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:270", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:270 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)" + ] + }, + { + "instruction": "loop_select_fusion", + "ms": 0.0200991939999998, + "opcode": "fusion", + "shape": "s32[21361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:242", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:242 (_walk_from_seed..weights_of)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:262 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)" + ] + }, + { + "instruction": "input_reduce_fusion.2", + "ms": 0.01618481999999954, + "opcode": "fusion", + "shape": "pred[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:288", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:288 (_walk_from_seed..cond)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)" + ] + }, + { + "instruction": "while.20", + "ms": 0.014477788000000524, + "opcode": "while", + "shape": "(s32[], s32[21361]{0}, pred[21361]{0}, pred[21361]{0}, s32[3000,3]{1,0}, /*index=5*/f64[1500,2]{1,0}, f64[21361,2]{1,0}, s32[3000,3]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "psf_convolution_mapping_matrix": [ + { + "instruction": "input_scatter_fusion", + "ms": 1.9831097979999994, + "opcode": "fusion", + "shape": "f64[1500,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.19.0", + "ms": 1.760859012000003, + "opcode": "fft", + "shape": "f64[1500,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.15.0", + "ms": 1.3666725080000002, + "opcode": "fft", + "shape": "c128[1500,180,91]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.17.0", + "ms": 0.9791528720000001, + "opcode": "fft", + "shape": "c128[1500,91,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_transpose_fusion.2", + "ms": 0.5137495439999998, + "opcode": "fusion", + "shape": "c128[1500,91,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "wrapped_transpose", + "ms": 0.4997207419999994, + "opcode": "fusion", + "shape": "c128[1500,180,91]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + } + ], + "inversion_other": [ + { + "instruction": "cholesky.80", + "ms": 0.8974853480000059, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1078 (AbstractInversion.log_det_curvature_reg_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:347 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "cholesky.90", + "ms": 0.8934377540000045, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1157 (AbstractInversion.log_det_regularization_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:348 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "loop_reduce_window_fusion", + "ms": 0.0028813000000000102, + "opcode": "fusion", + "shape": "s64[6,16]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "loop_reduce_window_fusion.1", + "ms": 0.002790532000000021, + "opcode": "fusion", + "shape": "s64[94,16]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "loop_broadcast_convert_fusion", + "ms": 0.002189315999999998, + "opcode": "fusion", + "shape": "(s32[1500]{0}, s64[1500]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527 (AbstractInversion.zeroed_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:567 (AbstractInversion.solve_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:684 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_scatter_fusion.5", + "ms": 0.0019471320000000172, + "opcode": "fusion", + "shape": "s64[1500]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527 (AbstractInversion.zeroed_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:567 (AbstractInversion.solve_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:684 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "mapping_matrix": [ + { + "instruction": "input_reduce_fusion.23", + "ms": 0.0029120620000000212, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:120 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + } + ], + "curvature_matrix_F": [ + { + "instruction": "cublas-lt-matmul.2", + "ms": 4.288411013999998, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "chi_squared_evidence": [ + { + "instruction": "loop_multiply_fusion", + "ms": 0.0030087840000000096, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:300", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:300 (AbstractNDArray.__pow__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:60 (unwrap_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:35 (to_new_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:78 (chi_squared_map_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:78 (AbstractFit.chi_squared_map)" + ] + } + ] + }, + "stage_audit_note": "The HLO instructions that contributed most of each stage's milliseconds, with their full source stack. A stage row is only as good as the rules that built it; this is how a reader checks a row against the HLO instead of trusting it.", + "untraced_wall_ms": 34.5870705020061, + "reconciliation_vs_untraced_pct": -9.032788081386911, + "wall_basis": "wall_ms is the TRACED run's wall, the run these kernel durations came from. untraced_wall_ms is the same executable without the profiler; the difference is the profiler's overhead and belongs in neither the stages nor the idle row.", + "calls": 500, + "call_split": "per-call (first-instruction recurrence)", + "call_blocks": 500, + "events": 246200, + "streams": [ + "Stream #14(MemcpyD2D,MemcpyD2H,Compute,MemcpyH2D,Memset)" + ], + "per_stage_ms": { + "border_relocator": { + "median_ms": 0.10140749999999998, + "min_ms": 0.10057100000000001, + "max_ms": 0.10249700000000003 + }, + "chi_squared_evidence": { + "median_ms": 0.002976, + "min_ms": 0.002848, + "max_ms": 0.003424 + }, + "curvature_matrix_F": { + "median_ms": 4.2873885000000005, + "min_ms": 4.269005, + "max_ms": 4.356782 + }, + "inversion_other": { + "median_ms": 1.8000515, + "min_ms": 1.780275, + "max_ms": 1.8460999999999999 + }, + "mapping_matrix": { + "median_ms": 0.002912, + "min_ms": 0.002879, + "max_ms": 0.002945 + }, + "memset": { + "median_ms": 0.023711499999999996, + "min_ms": 0.009951999999999999, + "max_ms": 0.05424000000000001 + }, + "mesh_construction": { + "median_ms": 0.002048, + "min_ms": 0.002047, + "max_ms": 0.002081 + }, + "mesh_locate_walk": { + "median_ms": 0.150146, + "min_ms": 0.13200199999999998, + "max_ms": 0.18605200000000013 + }, + "mesh_qhull_callback": { + "median_ms": 0.010624, + "min_ms": 0.010496, + "max_ms": 0.0112 + }, + "mesh_seed_argmin": { + "median_ms": 0.22784400000000016, + "min_ms": 0.22733000000000012, + "max_ms": 0.22825900000000016 + }, + "mixed_fusion": { + "median_ms": 1.9871890000000003, + "min_ms": 1.9793150000000002, + "max_ms": 1.9996699999999998 + }, + "other": { + "median_ms": 0.065856, + "min_ms": 0.063488, + "max_ms": 0.07020900000000001 + }, + "pdip_solve": { + "median_ms": 8.940318000000001, + "min_ms": 2.4265080000000006, + "max_ms": 23.48978300000001 + }, + "psf_convolution_mapping_matrix": { + "median_ms": 7.1034515, + "min_ms": 7.087626, + "max_ms": 7.119909000000001 + }, + "regularization_H": { + "median_ms": 0.01072, + "min_ms": 0.010496, + "max_ms": 0.011231999999999999 + } + }, + "stage_order": [ + "border_relocator", + "mesh_qhull_callback", + "mesh_seed_argmin", + "mesh_locate_walk", + "mesh_construction", + "mapping_matrix", + "psf_convolution_mapping_matrix", + "curvature_matrix_F", + "regularization_H", + "pdip_solve", + "chi_squared_evidence", + "inversion_other", + "mixed_fusion", + "other", + "memset" + ], + "mixed_fusion": { + "ms": 1.9871890000000003, + "constituent_stage_sets": { + "curvature_matrix_F + psf_convolution_mapping_matrix": 1.0175930819999996, + "pdip_solve + psf_convolution_mapping_matrix": 0.22712514000000011, + "data_vector_D + pdip_solve": 0.12545822000000006, + "mapped_reconstruction + pdip_solve": 0.11505236400000013, + "mapping_matrix + pdip_solve": 0.11334101599999974, + "curvature_reg_reduce_gather + inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": 0.10992808600000005, + "pdip_solve + regularization_H": 0.045231470000000114, + "inversion_other + pdip_solve + regularization_H": 0.024255044000000007, + "inversion_other + pdip_solve": 0.022968676000000212, + "inversion_other + mapping_matrix + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin + pdip_solve": 0.021231599999999986, + "inversion_other + mesh_construction + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin + pdip_solve + regularization_H": 0.01925402400000005, + "inversion_other + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + pdip_solve + regularization_H": 0.014702948, + "pdip_solve + ray_trace_data_grid": 0.013606675999999918, + "border_relocator + pdip_solve": 0.013358111999999946, + "inversion_other + mapping_matrix + mesh_construction + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin": 0.011698335999999995, + "grids_and_structures + mass_profile_deflections + pdip_solve": 0.009939747999999986, + "grids_and_structures + mass_profile_deflections + pdip_solve + ray_trace_data_grid": 0.009199003999999995, + "chi_squared_evidence + pdip_solve": 0.007668511999999986, + "inversion_other + mesh_construction + mesh_seed_argmin + pdip_solve + regularization_H": 0.007261795999999996, + "inversion_other + mesh_dual_areas + mesh_locate_walk": 0.006785176000000202, + "inversion_other + mesh_construction + pdip_solve + regularization_H": 0.006604364000000041, + "inversion_other + pdip_solve + ray_trace_data_grid": 0.005424466000000006, + "grids_and_structures + mass_profile_deflections + ray_trace_data_grid": 0.005373780000000001, + "inversion_other + regularization_H": 0.004859989999999979, + "inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": 0.0048386199999999905, + "inversion_other + mapped_reconstruction + pdip_solve": 0.003776149999999994, + "mapping_matrix + pdip_solve + regularization_H": 0.0034788620000000005, + "inversion_other + mesh_construction + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin": 0.0031791360000000056, + "inversion_other + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin": 0.002958415999999999, + "inversion_other + mesh_construction + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin + regularization_H": 0.002713479999999986, + "inversion_other + mesh_dual_areas + mesh_locate_walk + pdip_solve": 0.0025845160000000037, + "inversion_other + mesh_locate_walk + mesh_seed_argmin": 0.002525331999999992, + "inversion_other + mesh_interpolation_weights": 0.002151244000000005, + "chi_squared_evidence + inversion_other": 0.001959109999999997 + }, + "example_kernels": { + "curvature_matrix_F + psf_convolution_mapping_matrix": [ + "loop_divide_gather_fusion" + ], + "pdip_solve + psf_convolution_mapping_matrix": [ + "loop_broadcast_fusion.4" + ], + "data_vector_D + pdip_solve": [ + "input_reduce_fusion.5", + "input_reduce_fusion.21" + ], + "mapped_reconstruction + pdip_solve": [ + "input_reduce_fusion.9" + ], + "mapping_matrix + pdip_solve": [ + "loop_broadcast_fusion.2", + "loop_divide_fusion" + ], + "curvature_reg_reduce_gather + inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": [ + "input_multiply_transpose_fusion" + ], + "pdip_solve + regularization_H": [ + "loop_select_fusion.2", + "input_transpose_fusion.3" + ], + "inversion_other + pdip_solve + regularization_H": [ + "input_transpose_fusion.4" + ], + "inversion_other + pdip_solve": [ + "input_reduce_fusion.7", + "loop_log_fusion", + "input_reduce_fusion.8", + "input_reduce_fusion.12" + ], + "inversion_other + mapping_matrix + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin + pdip_solve": [ + "input_scatter_fusion.6", + "input_scatter_fusion.3" + ] + }, + "prorated_estimate_ms": { + "psf_convolution_mapping_matrix": 0.6223591109999999, + "curvature_matrix_F": 0.5087965409999998, + "pdip_solve": 0.39462946825714296, + "mapped_reconstruction": 0.08198017086666673, + "inversion_other": 0.06855563279047636, + "data_vector_D": 0.06272911000000003, + "mapping_matrix": 0.0624338013333332, + "regularization_H": 0.043047128390476246, + "reconstruction_scatter": 0.023195272200000006, + "curvature_reg_reduce_gather": 0.02198561720000001, + "mesh_construction": 0.01448933225714287, + "ray_trace_data_grid": 0.012702504333333295, + "mesh_locate_walk": 0.012685022390476258, + "mesh_interpolation_weights": 0.012461504057142863, + "mesh_seed_argmin": 0.011229527257142857, + "mesh_dual_areas": 0.008505365000000067, + "grids_and_structures": 0.007404260333333328, + "mass_profile_deflections": 0.007404260333333328, + "border_relocator": 0.006679055999999973, + "chi_squared_evidence": 0.004813810999999992 + }, + "prorated_note": "ESTIMATE ONLY \u2014 a mixed fusion's time split equally across the stages its constituents span. Never summed into the measured table, never reconciled." + }, + "other_sources_ms": { + "copy.80": 0.042013890000002906, + "copy.48": 0.01694752399999989, + "copy.53": 0.0020209240000000064, + "copy.39": 0.0016531839999999976, + "copy.78": 0.001652293999999998, + "copy.79": 0.0016482640000000034 + }, + "device_span_ms": 35.635434496, + "device_busy_ms": 28.889184276, + "device_idle_ms": 6.74625022, + "largest_idle_gaps": [ + { + "gap_ms": 5.648069, + "after": "pure_callback.4", + "before": "pure_callback.4" + }, + { + "gap_ms": 0.035071, + "after": "pure_callback.4", + "before": "copy.79" + }, + { + "gap_ms": 0.030176, + "after": "copy.48", + "before": "input_reduce_fusion.1" + }, + { + "gap_ms": 0.029056, + "after": "input_reduce_fusion", + "before": "loop_dynamic_update_slice_fusion" + }, + { + "gap_ms": 0.028351, + "after": "input_concatenate_fusion.7", + "before": "pure_callback.4" + }, + { + "gap_ms": 0.025535, + "after": "while.26", + "before": "input_reduce_select_fusion" + }, + { + "gap_ms": 0.023584, + "after": "input_scatter_fusion.7", + "before": "loop_reduce_fusion.1" + }, + { + "gap_ms": 0.021184, + "after": "while.26", + "before": "loop_select_fusion.5" + } + ], + "kernel_ms": 24.716643500000004, + "sum_ms": 31.462893720000004, + "wall_ms": 35.637704199994914, + "host_outside_span_ms": 0.00226970399491222, + "reconciliation_pct": -11.714588730425305, + "unjoined_ms": 0.0, + "unjoined_pct": 0.0, + "other_ms": 0.065856, + "other_pct": 0.18479304848152758, + "note": "Stage rows attribute the command-buffers-OFF program (see the module docstring): kernel times are the same, the launch overhead the CUDA graphs remove is not. sum_ms = kernel rows + device_idle_ms; the residual against wall_ms is host_outside_span_ms (dispatch before the first kernel, teardown after the last).", + "per_stage_ms_per_lane": { + "border_relocator": 0.10140749999999998, + "chi_squared_evidence": 0.002976, + "curvature_matrix_F": 4.2873885000000005, + "inversion_other": 1.8000515, + "mapping_matrix": 0.002912, + "memset": 0.023711499999999996, + "mesh_construction": 0.002048, + "mesh_locate_walk": 0.150146, + "mesh_qhull_callback": 0.010624, + "mesh_seed_argmin": 0.22784400000000016, + "mixed_fusion": 1.9871890000000003, + "other": 0.065856, + "pdip_solve": 8.940318000000001, + "psf_convolution_mapping_matrix": 7.1034515, + "regularization_H": 0.01072 + }, + "per_lane_divisor": 1, + "host_callback": { + "pure_callback_span_ms": 256.14753520000005, + "qhull_ms": 239.00725419999998, + "callback_body_ms_note": "the OUTERMOST matching body event, not a sum: under the probe the body appears twice (the wrapper and the timed re-implementation it calls) and summing them would count the same work twice", + "events_by_name": { + "pure_callback.4": { + "count": 500, + "ms": 256.14753520000005 + }, + "$callback.py:815 _wrapped_callback": { + "count": 500, + "ms": 251.73777559999988 + }, + "$callback.py:224 _callback": { + "count": 500, + "ms": 250.54260450000004 + }, + "$callback.py:74 pure_callback_impl": { + "count": 500, + "ms": 250.10687889999983 + }, + "$callback.py:69 __call__": { + "count": 500, + "ms": 239.77683659999997 + }, + "$delaunay.py:162 ": { + "count": 500, + "ms": 239.44376130000003 + }, + "$host_callback_probe.py:225 wrapped": { + "count": 500, + "ms": 239.00725419999998 + }, + "$host_callback_probe.py:160 _timed_tri_only": { + "count": 500, + "ms": 238.59765389999987 + }, + "ThenExecuteCallback:GetEventForComputeStreamSyncPoint": { + "count": 500, + "ms": 1.0067121000000008 + }, + "$callback.py:822 ": { + "count": 2000, + "ms": 0.7241742000000015 + }, + "$__init__.py:132 _xla_gc_callback": { + "count": 8, + "ms": 0.0031368999999999998 + } + }, + "note": "HOST milliseconds per traced BATCH (the whole invocation), aggregated by name because the events nest. Not a row of the device table: the device pays for them as the idle gaps largest_idle_gaps names." + }, + "host_callback_ms": 256.14753520000005 + }, + "hlo_census": { + "status": "excluded", + "reason": "The legacy census anchors PyAutoArray source line numbers that moved after the phase-1 run. No batched attribution is published from unsupported anchors; the device-event table and wall reconciliation remain valid." + }, + "stage_map_provenance": [ + { + "label": "log_det_curvature_reg", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 850, + 882 + ], + "requires": { + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 884, + 896 + ] + }, + "function": null + }, + { + "label": "log_det_regularization", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 850, + 882 + ], + "requires": { + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 897, + 943 + ] + }, + "function": null + }, + { + "label": "curvature_reg_add", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 359, + 372 + ], + "requires": null, + "function": null + }, + { + "label": "curvature_reg_reduce_gather", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 374, + 398 + ], + "requires": null, + "function": null + }, + { + "label": "edge_subset_gather", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 606, + 614 + ], + "requires": null, + "function": null + }, + { + "label": "regularization_term", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 786, + 849 + ], + "requires": null, + "function": null + }, + { + "label": "mapped_reconstruction", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 722, + 785 + ], + "requires": null, + "function": null + }, + { + "label": "reconstruction_scatter", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 583, + 605 + ], + "requires": null, + "function": null + }, + { + "label": "reconstruction_scatter", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 615, + 721 + ], + "requires": null, + "function": null + }, + { + "label": "certified_active_set_solve", + "path": "likelihood_breakdown/active_set_steps.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "certified_active_set_solve", + "path": "likelihood_breakdown/library_solver_injection.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "pdip_solve", + "path": "PyAutoArray/autoarray/util/jax_nnls.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "pdip_solve", + "path": "PyAutoArray/autoarray/inversion/inversion/inversion_util.py", + "lines": [ + 256, + 488 + ], + "requires": null, + "function": null + }, + { + "label": "mapped_reconstruction", + "path": "PyAutoArray/autoarray/inversion/inversion/inversion_util.py", + "lines": [ + 156, + 200 + ], + "requires": null, + "function": null + }, + { + "label": "curvature_matrix_F", + "path": "PyAutoArray/autoarray/inversion/inversion/inversion_util.py", + "lines": [ + 12, + 155 + ], + "requires": null, + "function": null + }, + { + "label": "reconstruction_scatter", + "path": "PyAutoArray/autoarray/inversion/inversion/inversion_util.py", + "lines": [ + 201, + 255 + ], + "requires": null, + "function": null + }, + { + "label": "data_vector_D", + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py", + "lines": [ + 54, + 73 + ], + "requires": null, + "function": null + }, + { + "label": "curvature_matrix_F", + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py", + "lines": [ + 74, + 110 + ], + "requires": null, + "function": null + }, + { + "label": "data_vector_D", + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py", + "lines": null, + "requires": null, + "function": "data_vector_via_blurred_mapping_matrix_from" + }, + { + "label": "curvature_matrix_F", + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "likelihood_breakdown/psf_cube_injection.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": [ + 1086, + 1300 + ], + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": [ + 632, + 642 + ], + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": [ + 670, + 691 + ], + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": null, + "requires": { + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": [ + 1086, + 1300 + ] + }, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": null, + "requires": { + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py", + "lines": [ + 119, + 150 + ] + }, + "function": null + }, + { + "label": "psf_convolution_image", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py", + "lines": [ + 119, + 150 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_qhull_callback", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 139, + 172 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_seed_argmin", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 173, + 207 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_locate_walk", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 208, + 372 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_dual_areas", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 373, + 396 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_dual_areas", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 437, + 494 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_dual_areas", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 605, + 615 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_interpolation_weights", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 616, + 695 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_interpolation_weights", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 896, + 1000 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_construction", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "border_relocator", + "path": "PyAutoArray/autoarray/inversion/mesh/border_relocator.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "mesh_construction", + "path": "PyAutoArray/autoarray/inversion/mesh/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "mapping_matrix", + "path": "PyAutoArray/autoarray/inversion/mappers/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "mapping_matrix", + "path": "PyAutoArray/autoarray/inversion/mappings/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "mapping_matrix", + "path": "PyAutoArray/autoarray/inversion/linear_obj/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "regularization_H", + "path": "PyAutoArray/autoarray/inversion/regularization/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "chi_squared_evidence", + "path": "PyAutoArray/autoarray/fit/fit_util.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "chi_squared_evidence", + "path": "PyAutoArray/autoarray/fit/fit_dataset.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "ray_trace_mesh_grid", + "path": "PyAutoLens/autolens/lens/to_inversion.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "ray_trace_mesh_grid", + "path": "PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "mass_profile_deflections", + "path": "PyAutoGalaxy/autogalaxy/profiles/mass/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "light_profile_image", + "path": "PyAutoGalaxy/autogalaxy/profiles/light/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "light_profile_image", + "path": "PyAutoGalaxy/autogalaxy/operate/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "ray_trace_data_grid", + "path": "PyAutoLens/autolens/lens/tracer.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "ray_trace_data_grid", + "path": "PyAutoLens/autolens/lens/tracer_util.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "grids_and_structures", + "path": "PyAutoArray/autoarray/structures/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "grids_and_structures", + "path": "PyAutoArray/autoarray/operators/over_sampling/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "grids_and_structures", + "path": "PyAutoArray/autoarray/geometry/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "inversion_other", + "path": "PyAutoArray/autoarray/inversion/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "fit_imaging_other", + "path": "PyAutoLens/autolens/imaging/fit_imaging.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "fit_imaging_other", + "path": "PyAutoGalaxy/autogalaxy/imaging/fit_imaging.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "fit_imaging_other", + "path": "PyAutoArray/autoarray/fit/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "analysis_other", + "path": "PyAutoLens/autolens/analysis/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "analysis_other", + "path": "PyAutoGalaxy/autogalaxy/analysis/", + "lines": null, + "requires": null, + "function": null + } + ], + "trace_timing": { + "traced_wall_ms": 35.637704199994914, + "untraced_wall_ms": 34.5870705020061, + "profiler_overhead_ms": 1.0506336979888147, + "profiler_overhead_pct": 3.0376487014934566 + }, + "jit_phases": { + "b_s3_pdip_library_likelihood_jit": { + "lower_s": 1.5342186550005863, + "compile_s": 4.5970975999989605, + "first_call_s": 0.13083492100122385, + "steady_per_call_s": 0.05139113889999862 + }, + "d_s3_certified_fallback_library_likelihood_jit": { + "lower_s": 0.4880992869984766, + "compile_s": 4.403072946002794, + "first_call_s": 0.05079533900061506, + "steady_per_call_s": 0.03184854139981326 + } + }, + "peak_bytes": { + "after_setup": 85108992, + "after_routes": 1181653248, + "after_all": 58804883456, + "note": "jax.devices()[0].memory_stats()['peak_bytes_in_use']; None on a backend that does not report it (CPU). Process-wide high-water marks." + }, + "note": "Every stage row is a MEASURED sum of GPU kernel durations joined to library source through the optimized HLO of ONE program \u2014 not arithmetic across compilations. The rows attribute the command-buffers-OFF program: kernel time is the same as production, the launch overhead the CUDA graphs remove is not, and command_buffers.* carries both walls and their delta. sum_ms = kernel rows + measured device_idle_ms; the residual against the wall is host_outside_span_ms and is reported, not absorbed. mixed_fusion.prorated_estimate_ms is an ESTIMATE and is never part of the table. No row may be quoted if reconciliation_pct is outside 5 % or unjoined_ms is non-zero.", + "vmap": { + "batch": 50, + "lanes_mode": "captured", + "arms": [ + "vmap", + "scalar" + ], + "draw_seed": 0, + "fallback": false, + "composition": "jax.jit(jax.vmap(fn))", + "composition_provenance": "Current Fitness._vmap after PyAutoFit#1638. Array 343376 used the retired jax.vmap(jax.jit(fn)) composition and is historical evidence only.", + "headline_arm": "scalar", + "lane_rtol": 1e-09, + "lanes": [ + { + "lane": 0, + "draw_name": "call00015_lane00", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.0033655095107821688, + "centre_1": 0.004631951955766499, + "ell_comps_0": 0.000564301988937442, + "ell_comps_1": -0.00879076787683888, + "einstein_radius": 0.018337010967920175 + }, + "log_likelihood_vmap": 18701.11125441907, + "log_likelihood_scalar": 24758.50619430935, + "log_likelihood_library_pdip": 18700.594048999854, + "log_likelihood_library_pdip_scalar": 24758.50619430913, + "rel_diff_vmap_vs_library_pdip": 2.7657165214116645e-05, + "rel_diff_scalar_vs_library_pdip_scalar": 8.816312531637117e-15, + "abs_diff_nats": 6057.3949398902805, + "rel_diff": 0.24465914430986754, + "rel_diff_scalar_vs_library_pdip": 0.3239422303610449, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6057.912145309278, + "rel_diff_library_pdip_vmap_vs_scalar": 0.24468003431894125, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 1, + "draw_name": "call00015_lane01", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.004311760382151672, + "centre_1": 0.0027192789928108052, + "ell_comps_0": 0.0061667694809026535, + "ell_comps_1": 0.003465536775180321, + "einstein_radius": -0.05732579988501185 + }, + "log_likelihood_vmap": 14176.345969423928, + "log_likelihood_scalar": 20552.70645941567, + "log_likelihood_library_pdip": 14200.214307642884, + "log_likelihood_library_pdip_scalar": 20551.004887773583, + "rel_diff_vmap_vs_library_pdip": 0.0016808435212213046, + "rel_diff_scalar_vs_library_pdip_scalar": 8.279749099270609e-05, + "abs_diff_nats": 6376.360489991741, + "rel_diff": 0.3102443224488609, + "rel_diff_scalar_vs_library_pdip": 0.447351850764233, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6350.790580130699, + "rel_diff_library_pdip_vmap_vs_scalar": 0.3090257928900098, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 2, + "draw_name": "call00015_lane02", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.0002796502552123051, + "centre_1": 0.0016003321376979894, + "ell_comps_0": -0.002094430657472772, + "ell_comps_1": 0.006146479068253558, + "einstein_radius": -0.025968910196758177 + }, + "log_likelihood_vmap": -23119.33474596295, + "log_likelihood_scalar": -189709.06377243972, + "log_likelihood_library_pdip": -23119.20810591006, + "log_likelihood_library_pdip_scalar": -189709.05679042212, + "rel_diff_vmap_vs_library_pdip": 5.477698557451379e-06, + "rel_diff_scalar_vs_library_pdip_scalar": 3.6803818002348496e-08, + "abs_diff_nats": 166589.72902647677, + "rel_diff": 0.8781326822966397, + "rel_diff_scalar_vs_library_pdip": 7.2056903897129425, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 166589.84868451208, + "rel_diff_library_pdip_vmap_vs_scalar": 0.8781333453602556, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": true, + "passes": 1, + "pdip_iter": null + }, + { + "lane": 3, + "draw_name": "call00015_lane03", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.004594602299816973, + "centre_1": 0.004924922434755804, + "ell_comps_0": 0.028601845732661953, + "ell_comps_1": 0.003760187047606014, + "einstein_radius": -0.03088526730480501 + }, + "log_likelihood_vmap": 18502.008921180433, + "log_likelihood_scalar": -141741.9647687315, + "log_likelihood_library_pdip": 18502.009704396118, + "log_likelihood_library_pdip_scalar": -141741.96566347557, + "rel_diff_vmap_vs_library_pdip": 4.2331384366558094e-08, + "rel_diff_scalar_vs_library_pdip_scalar": 6.312485236126246e-09, + "abs_diff_nats": 160243.97368991195, + "rel_diff": 1.1305330355154073, + "rel_diff_scalar_vs_library_pdip": 8.660895601792562, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 160243.9753678717, + "rel_diff_library_pdip_vmap_vs_scalar": 1.1305330402170637, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": true, + "passes": 3, + "pdip_iter": null + }, + { + "lane": 4, + "draw_name": "call00015_lane04", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.0060950290987001, + "centre_1": -0.0006121094560707545, + "ell_comps_0": 0.009637314264800585, + "ell_comps_1": 0.006641580028105454, + "einstein_radius": -0.03125810931551931 + }, + "log_likelihood_vmap": 18750.51662542791, + "log_likelihood_scalar": 24880.545932988738, + "log_likelihood_library_pdip": 18751.910288039162, + "log_likelihood_library_pdip_scalar": 24880.545932988738, + "rel_diff_vmap_vs_library_pdip": 7.432110061558511e-05, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 6130.029307560828, + "rel_diff": 0.24637840841880865, + "rel_diff_scalar_vs_library_pdip": 0.32682726990533356, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6128.635644949576, + "rel_diff_library_pdip_vmap_vs_scalar": 0.24632239426964145, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 5, + "draw_name": "call00015_lane05", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.008435952123169364, + "centre_1": -0.007849511137408794, + "ell_comps_0": -0.01598149485178925, + "ell_comps_1": 0.01654417876136871, + "einstein_radius": 0.014294380855379263 + }, + "log_likelihood_vmap": 24935.952740675293, + "log_likelihood_scalar": 25472.51918676291, + "log_likelihood_library_pdip": 24935.95274067247, + "log_likelihood_library_pdip_scalar": 25472.519186781192, + "rel_diff_vmap_vs_library_pdip": 1.1321290121385741e-13, + "rel_diff_scalar_vs_library_pdip_scalar": 7.17669240784107e-13, + "abs_diff_nats": 536.5664460876178, + "rel_diff": 0.021064522207385392, + "rel_diff_scalar_vs_library_pdip": 0.021517784047419188, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 536.5664461087217, + "rel_diff_library_pdip_vmap_vs_scalar": 0.021064522208198773, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 10, + "pdip_iter": null + }, + { + "lane": 6, + "draw_name": "call00015_lane06", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.0031698313356290646, + "centre_1": -0.0038584140676992847, + "ell_comps_0": 0.01810147576636289, + "ell_comps_1": -0.011577480306416508, + "einstein_radius": 0.016136835525067283 + }, + "log_likelihood_vmap": 28315.20146518829, + "log_likelihood_scalar": -83383.91543837059, + "log_likelihood_library_pdip": 28315.201428712455, + "log_likelihood_library_pdip_scalar": -83383.91540684736, + "rel_diff_vmap_vs_library_pdip": 1.2882067761812063e-09, + "rel_diff_scalar_vs_library_pdip_scalar": 3.7804931237389863e-10, + "abs_diff_nats": 111699.11690355888, + "rel_diff": 1.3395762997735, + "rel_diff_scalar_vs_library_pdip": 3.9448462744756183, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 111699.1168355598, + "rel_diff_library_pdip_vmap_vs_scalar": 1.3395762994644318, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": true, + "passes": 3, + "pdip_iter": null + }, + { + "lane": 7, + "draw_name": "call00015_lane07", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.006158729760195174, + "centre_1": 0.004883559265258847, + "ell_comps_0": 0.007613883677130215, + "ell_comps_1": -0.005800175617006949, + "einstein_radius": 0.0662922007765554 + }, + "log_likelihood_vmap": 23338.890014375043, + "log_likelihood_scalar": -11960.284429754305, + "log_likelihood_library_pdip": 23338.89001354625, + "log_likelihood_library_pdip_scalar": -11960.28442978162, + "rel_diff_vmap_vs_library_pdip": 3.5511261135990974e-11, + "rel_diff_scalar_vs_library_pdip_scalar": 2.2837203449469557e-12, + "abs_diff_nats": 35299.17444412935, + "rel_diff": 2.951365801662167, + "rel_diff_scalar_vs_library_pdip": 1.5124615790559177, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 35299.174443327865, + "rel_diff_library_pdip_vmap_vs_scalar": 2.9513658015884148, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 9, + "pdip_iter": null + }, + { + "lane": 8, + "draw_name": "call00015_lane08", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.0030335293924908615, + "centre_1": 0.0012117081273721316, + "ell_comps_0": 0.0008852687687036301, + "ell_comps_1": -0.0027113633212058814, + "einstein_radius": -0.03873713959923952 + }, + "log_likelihood_vmap": 24869.037000613742, + "log_likelihood_scalar": 23223.550391500263, + "log_likelihood_library_pdip": 24869.03700060154, + "log_likelihood_library_pdip_scalar": 23223.55039150045, + "rel_diff_vmap_vs_library_pdip": 4.906414719110541e-13, + "rel_diff_scalar_vs_library_pdip_scalar": 7.989171166075526e-15, + "abs_diff_nats": 1645.486609113479, + "rel_diff": 0.07085422260481418, + "rel_diff_scalar_vs_library_pdip": 0.06616607667846068, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 1645.4866091010917, + "rel_diff_library_pdip_vmap_vs_scalar": 0.07085422260428022, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 10, + "pdip_iter": null + }, + { + "lane": 9, + "draw_name": "call00015_lane09", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.0008035510098975272, + "centre_1": 0.005559773241319952, + "ell_comps_0": -0.003701655436278317, + "ell_comps_1": -0.012378591445614512, + "einstein_radius": 0.032284336889985665 + }, + "log_likelihood_vmap": -31750.335545040216, + "log_likelihood_scalar": -177117.75609302538, + "log_likelihood_library_pdip": NaN, + "log_likelihood_library_pdip_scalar": -177117.7774717681, + "rel_diff_vmap_vs_library_pdip": NaN, + "rel_diff_scalar_vs_library_pdip_scalar": 1.2070353981814522e-07, + "abs_diff_nats": 145367.42054798518, + "rel_diff": 0.8207388336132467, + "rel_diff_scalar_vs_library_pdip": NaN, + "abs_diff_library_pdip_vmap_vs_scalar_nats": NaN, + "rel_diff_library_pdip_vmap_vs_scalar": NaN, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": true, + "passes": 2, + "pdip_iter": null + }, + { + "lane": 10, + "draw_name": "call00015_lane10", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.008473569241265282, + "centre_1": -0.0051993251621340235, + "ell_comps_0": -0.0031466996514049606, + "ell_comps_1": -0.0076036423480284636, + "einstein_radius": 0.08283321334626792 + }, + "log_likelihood_vmap": 6560.779794306516, + "log_likelihood_scalar": -101745.38349985592, + "log_likelihood_library_pdip": 6560.7795961357915, + "log_likelihood_library_pdip_scalar": -101745.38349137451, + "rel_diff_vmap_vs_library_pdip": 3.020536229149355e-08, + "rel_diff_scalar_vs_library_pdip_scalar": 8.335915475309887e-11, + "abs_diff_nats": 108306.16329416243, + "rel_diff": 1.0644823339263918, + "rel_diff_scalar_vs_library_pdip": 16.508123997913685, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 108306.1630875103, + "rel_diff_library_pdip_vmap_vs_scalar": 1.0644823319840548, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": true, + "passes": 5, + "pdip_iter": null + }, + { + "lane": 11, + "draw_name": "call00015_lane11", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.001017060353322001, + "centre_1": 0.003035861051809724, + "ell_comps_0": 0.0014054844842678396, + "ell_comps_1": -0.00019678252877009805, + "einstein_radius": -0.04179610309843307 + }, + "log_likelihood_vmap": 12668.001326846505, + "log_likelihood_scalar": 18959.672780975976, + "log_likelihood_library_pdip": 12667.924915789376, + "log_likelihood_library_pdip_scalar": 18957.528349757773, + "rel_diff_vmap_vs_library_pdip": 6.031852701760834e-06, + "rel_diff_scalar_vs_library_pdip_scalar": 0.00011311765851745929, + "abs_diff_nats": 6291.671454129471, + "rel_diff": 0.3318449388241815, + "rel_diff_scalar_vs_library_pdip": 0.49666760002220484, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6289.603433968397, + "rel_diff_library_pdip_vmap_vs_scalar": 0.3317733893326216, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 12, + "draw_name": "call00015_lane12", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.0012508260776529923, + "centre_1": -0.0075763258203543175, + "ell_comps_0": -0.0003476568325791879, + "ell_comps_1": 0.0070528223693464365, + "einstein_radius": -0.005182936058341969 + }, + "log_likelihood_vmap": 18842.345663340646, + "log_likelihood_scalar": 24810.049660195124, + "log_likelihood_library_pdip": 18842.279796731058, + "log_likelihood_library_pdip_scalar": 24810.049660194898, + "rel_diff_vmap_vs_library_pdip": 3.4956815363317152e-06, + "rel_diff_scalar_vs_library_pdip_scalar": 9.091262981289588e-15, + "abs_diff_nats": 5967.703996854478, + "rel_diff": 0.24053575380096776, + "rel_diff_scalar_vs_library_pdip": 0.31672228243311684, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 5967.76986346384, + "rel_diff_library_pdip_vmap_vs_scalar": 0.24053840863682333, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 13, + "draw_name": "call00015_lane13", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.0039046265841316857, + "centre_1": 0.008586063066835778, + "ell_comps_0": 0.01612319103606081, + "ell_comps_1": -0.006478405394829051, + "einstein_radius": -0.06420305523683667 + }, + "log_likelihood_vmap": 22879.755989048543, + "log_likelihood_scalar": -3605.706215917453, + "log_likelihood_library_pdip": 22879.7559893116, + "log_likelihood_library_pdip_scalar": -3605.706215970531, + "rel_diff_vmap_vs_library_pdip": 1.1497439469410595e-11, + "rel_diff_scalar_vs_library_pdip_scalar": 1.472058665244897e-11, + "abs_diff_nats": 26485.462204965996, + "rel_diff": 7.3454298877832755, + "rel_diff_scalar_vs_library_pdip": 1.157593735597612, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 26485.462205282132, + "rel_diff_library_pdip_vmap_vs_scalar": 7.3454298877628235, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 9, + "pdip_iter": null + }, + { + "lane": 14, + "draw_name": "call00015_lane14", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.007195835212073937, + "centre_1": -0.0022675171274400335, + "ell_comps_0": 0.004220685262914858, + "ell_comps_1": 0.006581974817750368, + "einstein_radius": 0.08589577997501685 + }, + "log_likelihood_vmap": 4357.021950291826, + "log_likelihood_scalar": 11129.43856306804, + "log_likelihood_library_pdip": 4357.021950280177, + "log_likelihood_library_pdip_scalar": 11126.921475785763, + "rel_diff_vmap_vs_library_pdip": 2.673571139470296e-12, + "rel_diff_scalar_vs_library_pdip_scalar": 0.00022621596528346792, + "abs_diff_nats": 6772.416612776215, + "rel_diff": 0.6085137695310004, + "rel_diff_scalar_vs_library_pdip": 1.5543682565914925, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6769.899525505585, + "rel_diff_library_pdip_vmap_vs_scalar": 0.6084252090965266, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": true, + "passes": 15, + "pdip_iter": null + }, + { + "lane": 15, + "draw_name": "call00015_lane15", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.0024446743118905125, + "centre_1": 0.0028324231769206983, + "ell_comps_0": -0.017159158004659933, + "ell_comps_1": 0.008265799441903459, + "einstein_radius": -0.03860302877433641 + }, + "log_likelihood_vmap": 14146.844560201887, + "log_likelihood_scalar": 20407.780654983708, + "log_likelihood_library_pdip": 14146.464613817334, + "log_likelihood_library_pdip_scalar": 20410.343973720697, + "rel_diff_vmap_vs_library_pdip": 2.6858045096466776e-05, + "rel_diff_scalar_vs_library_pdip_scalar": 0.00012558919831482778, + "abs_diff_nats": 6260.93609478182, + "rel_diff": 0.30679162034470714, + "rel_diff_scalar_vs_library_pdip": 0.4426064187833003, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6263.879359903363, + "rel_diff_library_pdip_vmap_vs_scalar": 0.3068972952130748, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 16, + "draw_name": "call00015_lane16", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.00546338030193603, + "centre_1": 0.0029217319844296002, + "ell_comps_0": 0.018887239108742314, + "ell_comps_1": 0.01610145140759906, + "einstein_radius": 0.09308737119031596 + }, + "log_likelihood_vmap": 2903.0452367721446, + "log_likelihood_scalar": 9734.862241683215, + "log_likelihood_library_pdip": 2903.043598923672, + "log_likelihood_library_pdip_scalar": 9734.862241678551, + "rel_diff_vmap_vs_library_pdip": 5.641832155268914e-07, + "rel_diff_scalar_vs_library_pdip_scalar": 4.790914051894582e-13, + "abs_diff_nats": 6831.81700491107, + "rel_diff": 0.7017887706369648, + "rel_diff_scalar_vs_library_pdip": 2.353329672793236, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6831.818642754879, + "rel_diff_library_pdip_vmap_vs_scalar": 0.7017889388824973, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 17, + "draw_name": "call00015_lane17", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.0033403521024317102, + "centre_1": -0.004078467297591464, + "ell_comps_0": -0.01076606265657356, + "ell_comps_1": 0.014404445881011321, + "einstein_radius": -0.016103243806114165 + }, + "log_likelihood_vmap": 13362.515995368962, + "log_likelihood_scalar": 19481.580996516812, + "log_likelihood_library_pdip": 13360.530937095456, + "log_likelihood_library_pdip_scalar": 19481.557217641563, + "rel_diff_vmap_vs_library_pdip": 0.00014857630155952622, + "rel_diff_scalar_vs_library_pdip_scalar": 1.2205839083402613e-06, + "abs_diff_nats": 6119.06500114785, + "rel_diff": 0.31409488799917734, + "rel_diff_scalar_vs_library_pdip": 0.4581442225792305, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6121.026280546106, + "rel_diff_library_pdip_vmap_vs_scalar": 0.3141959450245178, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 18, + "draw_name": "call00015_lane18", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.0036504937209151113, + "centre_1": -0.0003963555596475738, + "ell_comps_0": -0.008227000946306733, + "ell_comps_1": -0.02487475830854786, + "einstein_radius": -0.0327871904693704 + }, + "log_likelihood_vmap": 12584.040728899512, + "log_likelihood_scalar": 18817.121698566574, + "log_likelihood_library_pdip": 12594.119293045376, + "log_likelihood_library_pdip_scalar": 18812.946857997056, + "rel_diff_vmap_vs_library_pdip": 0.0008002595426763763, + "rel_diff_scalar_vs_library_pdip_scalar": 0.00022191316443034178, + "abs_diff_nats": 6233.080969667062, + "rel_diff": 0.33124518560890626, + "rel_diff_scalar_vs_library_pdip": 0.49411969671889755, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6218.82756495168, + "rel_diff_library_pdip_vmap_vs_scalar": 0.3305610552080077, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 19, + "draw_name": "call00015_lane19", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.00840275144875603, + "centre_1": -0.003628185056462521, + "ell_comps_0": 0.005265994929748281, + "ell_comps_1": 0.009958068668923414, + "einstein_radius": -0.06501253116347949 + }, + "log_likelihood_vmap": 10418.210094661103, + "log_likelihood_scalar": 16927.857229254627, + "log_likelihood_library_pdip": 10415.233658083074, + "log_likelihood_library_pdip_scalar": 16927.632549568763, + "rel_diff_vmap_vs_library_pdip": 0.0002857772255275724, + "rel_diff_scalar_vs_library_pdip_scalar": 1.3272953864375116e-05, + "abs_diff_nats": 6509.647134593524, + "rel_diff": 0.38455234152988893, + "rel_diff_scalar_vs_library_pdip": 0.6252978843270812, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6512.398891485689, + "rel_diff_library_pdip_vmap_vs_scalar": 0.38472000573119686, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 20, + "draw_name": "call00016_lane00", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.00884193513479277, + "centre_1": -0.0043653741820675615, + "ell_comps_0": 0.013534779280882363, + "ell_comps_1": -0.002720977381459688, + "einstein_radius": 0.03143265344345525 + }, + "log_likelihood_vmap": 23125.781207506672, + "log_likelihood_scalar": 27642.806005942835, + "log_likelihood_library_pdip": 23125.781207506327, + "log_likelihood_library_pdip_scalar": 27642.806005943203, + "rel_diff_vmap_vs_library_pdip": 1.494470537330574e-14, + "rel_diff_scalar_vs_library_pdip_scalar": 1.3292277905407444e-14, + "abs_diff_nats": 4517.024798436163, + "rel_diff": 0.16340688414428922, + "rel_diff_scalar_vs_library_pdip": 0.19532420366280823, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 4517.024798436876, + "rel_diff_library_pdip_vmap_vs_scalar": 0.16340688414431284, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 13, + "pdip_iter": null + }, + { + "lane": 21, + "draw_name": "call00016_lane01", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.004620853605949627, + "centre_1": -0.006101969080571725, + "ell_comps_0": 0.006298490627944492, + "ell_comps_1": -0.0011939165979551265, + "einstein_radius": -0.008698400624736369 + }, + "log_likelihood_vmap": 25204.95975370948, + "log_likelihood_scalar": 27788.396151130026, + "log_likelihood_library_pdip": 25204.959753728468, + "log_likelihood_library_pdip_scalar": 27788.39615117224, + "rel_diff_vmap_vs_library_pdip": 7.532887011018947e-13, + "rel_diff_scalar_vs_library_pdip_scalar": 1.5191631013116751e-12, + "abs_diff_nats": 2583.4363974205444, + "rel_diff": 0.09296817215971236, + "rel_diff_scalar_vs_library_pdip": 0.10249714431777264, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 2583.436397443773, + "rel_diff_library_pdip_vmap_vs_scalar": 0.09296817216040702, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 6, + "pdip_iter": null + }, + { + "lane": 22, + "draw_name": "call00016_lane02", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.0023954075319476313, + "centre_1": 0.005058697427718103, + "ell_comps_0": -0.012832403546307256, + "ell_comps_1": 0.008158705801962226, + "einstein_radius": -0.04064267210128203 + }, + "log_likelihood_vmap": 11552.670998697395, + "log_likelihood_scalar": 17853.26476931595, + "log_likelihood_library_pdip": 11553.07472359277, + "log_likelihood_library_pdip_scalar": 17852.91967933103, + "rel_diff_vmap_vs_library_pdip": 3.494523363127176e-05, + "rel_diff_scalar_vs_library_pdip_scalar": 1.932961056890832e-05, + "abs_diff_nats": 6300.593770618554, + "rel_diff": 0.35290989362613717, + "rel_diff_scalar_vs_library_pdip": 0.5453258285309478, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6299.844955738259, + "rel_diff_library_pdip_vmap_vs_scalar": 0.3528747716840858, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 23, + "draw_name": "call00016_lane03", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.0034553415111254126, + "centre_1": -0.0012095214967760579, + "ell_comps_0": -0.013572031583894487, + "ell_comps_1": 0.012809349042796288, + "einstein_radius": 0.016462197503162912 + }, + "log_likelihood_vmap": 21983.89953487797, + "log_likelihood_scalar": 27386.085836286475, + "log_likelihood_library_pdip": 21983.89953487757, + "log_likelihood_library_pdip_scalar": 27386.085836286475, + "rel_diff_vmap_vs_library_pdip": 1.8203215864646964e-14, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 5402.186301408503, + "rel_diff": 0.19726025594539778, + "rel_diff_scalar_vs_library_pdip": 0.24573376042036155, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 5402.186301408903, + "rel_diff_library_pdip_vmap_vs_scalar": 0.19726025594541238, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 13, + "pdip_iter": null + }, + { + "lane": 24, + "draw_name": "call00016_lane04", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.002118045409654518, + "centre_1": -0.002760233148797609, + "ell_comps_0": 0.017300773468951293, + "ell_comps_1": 0.0015174503365170395, + "einstein_radius": -0.009907496303277252 + }, + "log_likelihood_vmap": 23449.28672850168, + "log_likelihood_scalar": 28384.90598332627, + "log_likelihood_library_pdip": 23449.28672850127, + "log_likelihood_library_pdip_scalar": 28384.90598332596, + "rel_diff_vmap_vs_library_pdip": 1.7531092095083012e-14, + "rel_diff_scalar_vs_library_pdip_scalar": 1.0894106846238786e-14, + "abs_diff_nats": 4935.619254824589, + "rel_diff": 0.1738818249996617, + "rel_diff_scalar_vs_library_pdip": 0.21048057077258717, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 4935.619254824691, + "rel_diff_library_pdip_vmap_vs_scalar": 0.1738818249996672, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 13, + "pdip_iter": null + }, + { + "lane": 25, + "draw_name": "call00016_lane05", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.004055224824141611, + "centre_1": 0.008121383491444374, + "ell_comps_0": -0.002675674189352585, + "ell_comps_1": 0.022116535787456582, + "einstein_radius": 0.03951210569146424 + }, + "log_likelihood_vmap": -136892.35618963442, + "log_likelihood_scalar": -189785.05556361115, + "log_likelihood_library_pdip": -136892.6262471882, + "log_likelihood_library_pdip_scalar": -189785.02878222853, + "rel_diff_vmap_vs_library_pdip": 1.9727691781369726e-06, + "rel_diff_scalar_vs_library_pdip_scalar": 1.4111430597614006e-07, + "abs_diff_nats": 52892.699373976735, + "rel_diff": 0.27869791547548084, + "rel_diff_scalar_vs_library_pdip": 0.3863789509079521, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 52892.40253504034, + "rel_diff_library_pdip_vmap_vs_scalar": 0.27869639072390934, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": true, + "passes": 0, + "pdip_iter": null + }, + { + "lane": 26, + "draw_name": "call00016_lane06", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.008657008236802587, + "centre_1": 0.00296353203184632, + "ell_comps_0": 0.001140204699970393, + "ell_comps_1": 0.0024587369167136715, + "einstein_radius": -0.02214717629190477 + }, + "log_likelihood_vmap": 20216.49720683314, + "log_likelihood_scalar": -186990.0765165683, + "log_likelihood_library_pdip": 20216.48421884619, + "log_likelihood_library_pdip_scalar": -186990.08102622873, + "rel_diff_vmap_vs_library_pdip": 6.424453831120838e-07, + "rel_diff_scalar_vs_library_pdip_scalar": 2.4117110333348803e-08, + "abs_diff_nats": 207206.57372340147, + "rel_diff": 1.108115348062558, + "rel_diff_scalar_vs_library_pdip": 10.249386515101998, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 207206.56524507492, + "rel_diff_library_pdip_vmap_vs_scalar": 1.1081152759969684, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": true, + "passes": 1, + "pdip_iter": null + }, + { + "lane": 27, + "draw_name": "call00016_lane07", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.008477184803652458, + "centre_1": 0.003915910494663854, + "ell_comps_0": -0.009104458058464132, + "ell_comps_1": 0.0040545395575112865, + "einstein_radius": -0.027672851325696968 + }, + "log_likelihood_vmap": 23997.437153359868, + "log_likelihood_scalar": 27662.094569023182, + "log_likelihood_library_pdip": 23997.437153358318, + "log_likelihood_library_pdip_scalar": 27662.094569023684, + "rel_diff_vmap_vs_library_pdip": 6.458102012798422e-14, + "rel_diff_scalar_vs_library_pdip_scalar": 1.8149062216743612e-14, + "abs_diff_nats": 3664.657415663314, + "rel_diff": 0.13247939003748127, + "rel_diff_scalar_vs_library_pdip": 0.15271036620475173, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 3664.657415665366, + "rel_diff_library_pdip_vmap_vs_scalar": 0.13247939003755302, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 11, + "pdip_iter": null + }, + { + "lane": 28, + "draw_name": "call00016_lane08", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.0016692556339188685, + "centre_1": -0.0020136329026704475, + "ell_comps_0": -0.01765507329375373, + "ell_comps_1": 0.007611548713690083, + "einstein_radius": 0.032934930918189 + }, + "log_likelihood_vmap": 15428.367468178061, + "log_likelihood_scalar": -74102.37834738629, + "log_likelihood_library_pdip": 15428.348832724998, + "log_likelihood_library_pdip_scalar": -74102.37819471839, + "rel_diff_vmap_vs_library_pdip": 1.2078708658568625e-06, + "rel_diff_scalar_vs_library_pdip_scalar": 2.060229384997078e-09, + "abs_diff_nats": 89530.74581556435, + "rel_diff": 1.2082034046984438, + "rel_diff_scalar_vs_library_pdip": 5.8030012252645, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 89530.72702744338, + "rel_diff_library_pdip_vmap_vs_scalar": 1.208203153644867, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": true, + "passes": 3, + "pdip_iter": null + }, + { + "lane": 29, + "draw_name": "call00016_lane09", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.0004381888692729163, + "centre_1": -0.005611258255408329, + "ell_comps_0": -0.028212995885542408, + "ell_comps_1": 0.02032938084918439, + "einstein_radius": 0.08210563031665497 + }, + "log_likelihood_vmap": 9200.047882830484, + "log_likelihood_scalar": 15883.222766170817, + "log_likelihood_library_pdip": 9199.664189086565, + "log_likelihood_library_pdip_scalar": 15888.26182677499, + "rel_diff_vmap_vs_library_pdip": 4.170736409860584e-05, + "rel_diff_scalar_vs_library_pdip_scalar": 0.00031715619109958225, + "abs_diff_nats": 6683.174883340333, + "rel_diff": 0.42076944847582315, + "rel_diff_scalar_vs_library_pdip": 0.7265002765006211, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6688.597637688425, + "rel_diff_library_pdip_vmap_vs_scalar": 0.4209773045416939, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 30, + "draw_name": "call00016_lane10", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.006865422615785068, + "centre_1": 0.007672434011054661, + "ell_comps_0": -0.0004443754014717277, + "ell_comps_1": -0.009376937319187229, + "einstein_radius": 0.07069214800098655 + }, + "log_likelihood_vmap": 18699.685890786837, + "log_likelihood_scalar": -2303.265572369746, + "log_likelihood_library_pdip": 18699.685890621226, + "log_likelihood_library_pdip_scalar": -2303.2655716586596, + "rel_diff_vmap_vs_library_pdip": 8.856389898950021e-12, + "rel_diff_scalar_vs_library_pdip_scalar": 3.0872975411154296e-10, + "abs_diff_nats": 21002.951463156583, + "rel_diff": 9.118771067961308, + "rel_diff_scalar_vs_library_pdip": 1.1231713508901742, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 21002.951462279885, + "rel_diff_library_pdip_vmap_vs_scalar": 9.11877107039591, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 11, + "pdip_iter": null + }, + { + "lane": 31, + "draw_name": "call00016_lane11", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.0009434846288846137, + "centre_1": -0.005019378037730504, + "ell_comps_0": -0.009906341245761709, + "ell_comps_1": 0.005337547203081457, + "einstein_radius": 0.021637810364502075 + }, + "log_likelihood_vmap": 13020.380277041753, + "log_likelihood_scalar": 19181.83341663636, + "log_likelihood_library_pdip": 13020.244793610349, + "log_likelihood_library_pdip_scalar": 19182.855515516767, + "rel_diff_vmap_vs_library_pdip": 1.0405597863318976e-05, + "rel_diff_scalar_vs_library_pdip_scalar": 5.3281894323811134e-05, + "abs_diff_nats": 6161.453139594607, + "rel_diff": 0.3212129417332335, + "rel_diff_scalar_vs_library_pdip": 0.47323139623686605, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6162.610721906418, + "rel_diff_library_pdip_vmap_vs_scalar": 0.32125617152887176, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 32, + "draw_name": "call00016_lane12", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.007501332281640899, + "centre_1": -0.004481729694563993, + "ell_comps_0": 0.010332412839169434, + "ell_comps_1": -0.003991142259489408, + "einstein_radius": 0.009192357179279576 + }, + "log_likelihood_vmap": 20526.670805852016, + "log_likelihood_scalar": 25770.81257051679, + "log_likelihood_library_pdip": 20526.00740849176, + "log_likelihood_library_pdip_scalar": 25770.812570520167, + "rel_diff_vmap_vs_library_pdip": 3.2319844139795844e-05, + "rel_diff_scalar_vs_library_pdip_scalar": 1.3100263422982034e-13, + "abs_diff_nats": 5244.141764664775, + "rel_diff": 0.20349151779033767, + "rel_diff_scalar_vs_library_pdip": 0.25551998777196266, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 5244.805162028406, + "rel_diff_library_pdip_vmap_vs_scalar": 0.2035172599884592, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 33, + "draw_name": "call00016_lane13", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.007387955150592393, + "centre_1": -0.012189283154464192, + "ell_comps_0": 0.008975668561402167, + "ell_comps_1": 0.007167944425996534, + "einstein_radius": -0.04724415035491503 + }, + "log_likelihood_vmap": 9473.716101286089, + "log_likelihood_scalar": 15902.150933379533, + "log_likelihood_library_pdip": 9476.347543144104, + "log_likelihood_library_pdip_scalar": 15902.910586796046, + "rel_diff_vmap_vs_library_pdip": 0.00027768524170673797, + "rel_diff_scalar_vs_library_pdip_scalar": 4.776820018996418e-05, + "abs_diff_nats": 6428.434832093444, + "rel_diff": 0.40424939110594077, + "rel_diff_scalar_vs_library_pdip": 0.6780886159968177, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6426.563043651942, + "rel_diff_library_pdip_vmap_vs_scalar": 0.40411237984245624, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 34, + "draw_name": "call00016_lane14", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.000386125459039801, + "centre_1": 0.006915867404617462, + "ell_comps_0": 0.009873645974923177, + "ell_comps_1": 0.0016807669637177417, + "einstein_radius": -0.02988317231293447 + }, + "log_likelihood_vmap": 23033.791171150646, + "log_likelihood_scalar": -130304.42414440234, + "log_likelihood_library_pdip": 23033.792090950028, + "log_likelihood_library_pdip_scalar": -130304.42373606384, + "rel_diff_vmap_vs_library_pdip": 3.9932607649384395e-08, + "rel_diff_scalar_vs_library_pdip_scalar": 3.1337270642674593e-09, + "abs_diff_nats": 153338.21531555298, + "rel_diff": 1.1767690646146043, + "rel_diff_scalar_vs_library_pdip": 6.6570982159554575, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 153338.21582701386, + "rel_diff_library_pdip_vmap_vs_scalar": 1.1767690722274002, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": true, + "passes": 2, + "pdip_iter": null + }, + { + "lane": 35, + "draw_name": "call00016_lane15", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.007751700182654455, + "centre_1": 0.00045977673595488515, + "ell_comps_0": -0.0005571070710696721, + "ell_comps_1": 0.00652407778540843, + "einstein_radius": -0.018266703354617997 + }, + "log_likelihood_vmap": 12430.440762452068, + "log_likelihood_scalar": 18756.824766487727, + "log_likelihood_library_pdip": 12436.966956375632, + "log_likelihood_library_pdip_scalar": 18757.071353384403, + "rel_diff_vmap_vs_library_pdip": 0.0005247415986916905, + "rel_diff_scalar_vs_library_pdip_scalar": 1.3146343159327383e-05, + "abs_diff_nats": 6326.384004035659, + "rel_diff": 0.33728437956827456, + "rel_diff_scalar_vs_library_pdip": 0.5081510493900855, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6320.10439700877, + "rel_diff_library_pdip_vmap_vs_scalar": 0.3369451593981601, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 36, + "draw_name": "call00016_lane16", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.002391640344038076, + "centre_1": 0.005471319325782662, + "ell_comps_0": 0.007125369000849133, + "ell_comps_1": -0.005032810664097539, + "einstein_radius": -0.08700102338561888 + }, + "log_likelihood_vmap": 4935.957801238474, + "log_likelihood_scalar": 11735.125602283828, + "log_likelihood_library_pdip": 4935.957801232442, + "log_likelihood_library_pdip_scalar": 11735.12560234069, + "rel_diff_vmap_vs_library_pdip": 1.2220057595816579e-12, + "rel_diff_scalar_vs_library_pdip_scalar": 4.845419698235002e-12, + "abs_diff_nats": 6799.167801045354, + "rel_diff": 0.5793860271697592, + "rel_diff_scalar_vs_library_pdip": 1.3774768899672776, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6799.167801108248, + "rel_diff_library_pdip_vmap_vs_scalar": 0.5793860271723112, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 37, + "draw_name": "call00016_lane17", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.0026856669213289885, + "centre_1": -0.000701322842884467, + "ell_comps_0": -0.017963099482535792, + "ell_comps_1": -0.011368990220314417, + "einstein_radius": 0.1245417314838293 + }, + "log_likelihood_vmap": -10183.840816488875, + "log_likelihood_scalar": -3158.477740007991, + "log_likelihood_library_pdip": -10183.840801875529, + "log_likelihood_library_pdip_scalar": -3158.477740009388, + "rel_diff_vmap_vs_library_pdip": 1.4349542989529161e-09, + "rel_diff_scalar_vs_library_pdip_scalar": 4.422965671808298e-13, + "abs_diff_nats": 7025.363076480884, + "rel_diff": 2.2242876647479903, + "rel_diff_scalar_vs_library_pdip": 0.6898539753855635, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 7025.363061866141, + "rel_diff_library_pdip_vmap_vs_scalar": 2.2242876601198587, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": true, + "passes": 15, + "pdip_iter": null + }, + { + "lane": 38, + "draw_name": "call00016_lane18", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.006475272480271436, + "centre_1": 0.00036104957026942186, + "ell_comps_0": 0.0058048443769378386, + "ell_comps_1": -0.006014005069002815, + "einstein_radius": -0.043358074001971 + }, + "log_likelihood_vmap": 12580.028458883913, + "log_likelihood_scalar": 18932.585368659475, + "log_likelihood_library_pdip": 12580.943022385865, + "log_likelihood_library_pdip_scalar": 18932.692618835783, + "rel_diff_vmap_vs_library_pdip": 7.26943521105604e-05, + "rel_diff_scalar_vs_library_pdip_scalar": 5.66481368855041e-06, + "abs_diff_nats": 6352.5569097755615, + "rel_diff": 0.3355356273893488, + "rel_diff_scalar_vs_library_pdip": 0.5048621820297439, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6351.749596449918, + "rel_diff_library_pdip_vmap_vs_scalar": 0.33549108541120454, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 39, + "draw_name": "call00016_lane19", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.001791290147759792, + "centre_1": -0.0026344329251194233, + "ell_comps_0": 0.006109533754666233, + "ell_comps_1": 0.004739218846482723, + "einstein_radius": 0.0525326188965729 + }, + "log_likelihood_vmap": -2590.81211144424, + "log_likelihood_scalar": -92415.28094350263, + "log_likelihood_library_pdip": -2591.234409394616, + "log_likelihood_library_pdip_scalar": -92415.13407796873, + "rel_diff_vmap_vs_library_pdip": 0.00016297172839500502, + "rel_diff_scalar_vs_library_pdip_scalar": 1.589193538081607e-06, + "abs_diff_nats": 89824.4688320584, + "rel_diff": 0.9719655441719849, + "rel_diff_scalar_vs_library_pdip": 34.664577704142715, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 89823.89966857411, + "rel_diff_library_pdip_vmap_vs_scalar": 0.9719609300441154, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": true, + "passes": 4, + "pdip_iter": null + }, + { + "lane": 40, + "draw_name": "call00017_lane00", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.00039504289511865966, + "centre_1": -0.0031177345874673803, + "ell_comps_0": -0.01319670439502501, + "ell_comps_1": -0.01412705504678942, + "einstein_radius": -0.08353374721414841 + }, + "log_likelihood_vmap": 6775.872816183211, + "log_likelihood_scalar": 13403.27005709926, + "log_likelihood_library_pdip": 6775.961380959467, + "log_likelihood_library_pdip_scalar": 13398.840222654067, + "rel_diff_vmap_vs_library_pdip": 1.3070436986859663e-05, + "rel_diff_scalar_vs_library_pdip_scalar": 0.00033061327484918784, + "abs_diff_nats": 6627.397240916049, + "rel_diff": 0.49446121824619504, + "rel_diff_scalar_vs_library_pdip": 0.9780617544194704, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6622.878841694601, + "rel_diff_library_pdip_vmap_vs_scalar": 0.4942874705302463, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 41, + "draw_name": "call00017_lane01", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.0035711364854704077, + "centre_1": 0.0013105492408737255, + "ell_comps_0": -0.00180015387363288, + "ell_comps_1": 0.0054914513398384235, + "einstein_radius": 0.0036721503557828328 + }, + "log_likelihood_vmap": 13539.900754143935, + "log_likelihood_scalar": 19660.9410796756, + "log_likelihood_library_pdip": 13539.215247504355, + "log_likelihood_library_pdip_scalar": 19660.9031219574, + "rel_diff_vmap_vs_library_pdip": 5.063119442661076e-05, + "rel_diff_scalar_vs_library_pdip_scalar": 1.93061925812204e-06, + "abs_diff_nats": 6121.040325531663, + "rel_diff": 0.3113299765624779, + "rel_diff_scalar_vs_library_pdip": 0.4521477589552056, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6121.687874453044, + "rel_diff_library_pdip_vmap_vs_scalar": 0.3113635134907059, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 42, + "draw_name": "call00017_lane02", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.0003080166678035941, + "centre_1": -0.0007105501404145155, + "ell_comps_0": 0.013423484811455881, + "ell_comps_1": -0.0026843168562135787, + "einstein_radius": -0.027211776311711677 + }, + "log_likelihood_vmap": 27099.01248309339, + "log_likelihood_scalar": 18324.10308373384, + "log_likelihood_library_pdip": 27099.012483073122, + "log_likelihood_library_pdip_scalar": 18324.10308381907, + "rel_diff_vmap_vs_library_pdip": 7.47893671290326e-13, + "rel_diff_scalar_vs_library_pdip_scalar": 4.651281817324348e-12, + "abs_diff_nats": 8774.909399359549, + "rel_diff": 0.4788725188491744, + "rel_diff_scalar_vs_library_pdip": 0.3238091943320946, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 8774.909399254051, + "rel_diff_library_pdip_vmap_vs_scalar": 0.47887251884118975, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 6, + "pdip_iter": null + }, + { + "lane": 43, + "draw_name": "call00017_lane03", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.0007755113444017845, + "centre_1": -0.0035255229487048357, + "ell_comps_0": -0.00399848580683964, + "ell_comps_1": 0.0017146502467540014, + "einstein_radius": -0.08651392214907494 + }, + "log_likelihood_vmap": -89811.55653149403, + "log_likelihood_scalar": -175043.36003830942, + "log_likelihood_library_pdip": -89811.62460726776, + "log_likelihood_library_pdip_scalar": -175043.34190825332, + "rel_diff_vmap_vs_library_pdip": 7.579839917814789e-07, + "rel_diff_scalar_vs_library_pdip_scalar": 1.0357466840344527e-07, + "abs_diff_nats": 85231.80350681538, + "rel_diff": 0.4869182326491095, + "rel_diff_scalar_vs_library_pdip": 0.9490056081687281, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 85231.71730098556, + "rel_diff_library_pdip_vmap_vs_scalar": 0.4869177905987344, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": true, + "passes": 2, + "pdip_iter": null + }, + { + "lane": 44, + "draw_name": "call00017_lane04", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.007147765623305864, + "centre_1": 0.0010457566746408338, + "ell_comps_0": 0.013576209131653673, + "ell_comps_1": -0.02008708588032471, + "einstein_radius": 0.032831422062920224 + }, + "log_likelihood_vmap": 26462.67126376893, + "log_likelihood_scalar": 13759.13327080456, + "log_likelihood_library_pdip": 26462.671263709253, + "log_likelihood_library_pdip_scalar": 13759.133270868886, + "rel_diff_vmap_vs_library_pdip": 2.25515420407968e-12, + "rel_diff_scalar_vs_library_pdip_scalar": 4.67520300883992e-12, + "abs_diff_nats": 12703.537992964371, + "rel_diff": 0.9232803944068155, + "rel_diff_scalar_vs_library_pdip": 0.48005501282579316, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 12703.537992840367, + "rel_diff_library_pdip_vmap_vs_scalar": 0.9232803943934865, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 8, + "pdip_iter": null + }, + { + "lane": 45, + "draw_name": "call00017_lane05", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.001330428459324805, + "centre_1": 0.0005227443143650849, + "ell_comps_0": 0.011495347238845648, + "ell_comps_1": 0.016282146756616874, + "einstein_radius": -0.03990716965121255 + }, + "log_likelihood_vmap": 13511.99488308384, + "log_likelihood_scalar": 19903.288179667114, + "log_likelihood_library_pdip": 13504.069127412935, + "log_likelihood_library_pdip_scalar": 19903.394044775436, + "rel_diff_vmap_vs_library_pdip": 0.0005869161062583909, + "rel_diff_scalar_vs_library_pdip_scalar": 5.318947516389384e-06, + "abs_diff_nats": 6391.293296583273, + "rel_diff": 0.32111745752204496, + "rel_diff_scalar_vs_library_pdip": 0.47387339266976336, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6399.324917362501, + "rel_diff_library_pdip_vmap_vs_scalar": 0.32151927972517325, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 46, + "draw_name": "call00017_lane06", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.002687443649497539, + "centre_1": -0.0019369334469605598, + "ell_comps_0": -0.015185516697078849, + "ell_comps_1": -0.012687661440239377, + "einstein_radius": 0.024820286560815807 + }, + "log_likelihood_vmap": 12905.863607846928, + "log_likelihood_scalar": 19139.791231082916, + "log_likelihood_library_pdip": 12905.386047434527, + "log_likelihood_library_pdip_scalar": 19139.565581617124, + "rel_diff_vmap_vs_library_pdip": 3.7004736677022505e-05, + "rel_diff_scalar_vs_library_pdip_scalar": 1.1789685864602834e-05, + "abs_diff_nats": 6233.927623235988, + "rel_diff": 0.3257051003310905, + "rel_diff_scalar_vs_library_pdip": 0.48308552419380985, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6234.179534182596, + "rel_diff_library_pdip_vmap_vs_scalar": 0.32572210208210295, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 47, + "draw_name": "call00017_lane07", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.003693907069305896, + "centre_1": 0.002094959418050611, + "ell_comps_0": -0.003985235543017392, + "ell_comps_1": -0.01016688375069693, + "einstein_radius": -0.061293935299826074 + }, + "log_likelihood_vmap": 21569.14415015534, + "log_likelihood_scalar": 15503.41944203166, + "log_likelihood_library_pdip": 21569.144150185602, + "log_likelihood_library_pdip_scalar": 15503.419442057915, + "rel_diff_vmap_vs_library_pdip": 1.402962839261681e-12, + "rel_diff_scalar_vs_library_pdip_scalar": 1.6935162690338578e-12, + "abs_diff_nats": 6065.724708123682, + "rel_diff": 0.39125076443966694, + "rel_diff_scalar_vs_library_pdip": 0.2812223176737287, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6065.724708127687, + "rel_diff_library_pdip_vmap_vs_scalar": 0.3912507644392627, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 48, + "draw_name": "call00017_lane08", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.003201023829002854, + "centre_1": 0.0051592827552293585, + "ell_comps_0": -0.016832634529093247, + "ell_comps_1": 0.018395875062653597, + "einstein_radius": -0.023696742396298376 + }, + "log_likelihood_vmap": 22377.520981646634, + "log_likelihood_scalar": 27530.81447304739, + "log_likelihood_library_pdip": 22376.16481042713, + "log_likelihood_library_pdip_scalar": 27530.814473047278, + "rel_diff_vmap_vs_library_pdip": 6.060784906590474e-05, + "rel_diff_scalar_vs_library_pdip_scalar": 4.0964041630607165e-15, + "abs_diff_nats": 5153.2934914007565, + "rel_diff": 0.18718274740639512, + "rel_diff_scalar_vs_library_pdip": 0.23036341152699374, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 5154.649662620148, + "rel_diff_library_pdip_vmap_vs_scalar": 0.18723200752620522, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 49, + "draw_name": "call00017_lane09", + "draw_kind": "captured", + "offsets": { + "centre_0": 2.2604383701358236e-05, + "centre_1": -0.005697104995547526, + "ell_comps_0": -0.0005169325215696047, + "ell_comps_1": 0.0010224650903271142, + "einstein_radius": -0.016159263378539013 + }, + "log_likelihood_vmap": 26250.951903968835, + "log_likelihood_scalar": -177402.92031277675, + "log_likelihood_library_pdip": 26250.951111653103, + "log_likelihood_library_pdip_scalar": -177402.92016442568, + "rel_diff_vmap_vs_library_pdip": 3.0182362857811986e-08, + "rel_diff_scalar_vs_library_pdip_scalar": 8.362380465041473e-10, + "abs_diff_nats": 203653.8722167456, + "rel_diff": 1.1479736176703639, + "rel_diff_scalar_vs_library_pdip": 7.757961628065565, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 203653.87127607877, + "rel_diff_library_pdip_vmap_vs_scalar": 1.1479736133279115, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": true, + "passes": 2, + "pdip_iter": null + } + ], + "lane_pins": [ + { + "pin": "lane 0: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 18701.11125441907, + "reference_value": 18700.594048999854, + "rel_diff": 2.7657165214116645e-05, + "abs_diff_nats": 0.5172054192153155, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 0: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 24758.50619430935, + "reference_value": 24758.50619430913, + "rel_diff": 8.816312531637117e-15, + "abs_diff_nats": 2.1827872842550278e-10, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 0: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 18701.11125441907, + "reference_value": 24758.50619430935, + "rel_diff": 0.24465914430986754, + "abs_diff_nats": 6057.3949398902805, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 0: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 18700.594048999854, + "reference_value": 24758.50619430913, + "rel_diff": 0.24468003431894125, + "abs_diff_nats": 6057.912145309278, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 1: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 14176.345969423928, + "reference_value": 14200.214307642884, + "rel_diff": 0.0016808435212213046, + "abs_diff_nats": 23.868338218955614, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 1: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 20552.70645941567, + "reference_value": 20551.004887773583, + "rel_diff": 8.279749099270609e-05, + "abs_diff_nats": 1.701571642086492, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 1: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 14176.345969423928, + "reference_value": 20552.70645941567, + "rel_diff": 0.3102443224488609, + "abs_diff_nats": 6376.360489991741, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 1: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 14200.214307642884, + "reference_value": 20551.004887773583, + "rel_diff": 0.3090257928900098, + "abs_diff_nats": 6350.790580130699, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 2: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -23119.33474596295, + "reference_value": -23119.20810591006, + "rel_diff": 5.477698557451379e-06, + "abs_diff_nats": 0.12664005289116176, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 2: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -189709.06377243972, + "reference_value": -189709.05679042212, + "rel_diff": 3.6803818002348496e-08, + "abs_diff_nats": 0.006982017599511892, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 2: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -23119.33474596295, + "reference_value": -189709.06377243972, + "rel_diff": 0.8781326822966397, + "abs_diff_nats": 166589.72902647677, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 2: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -23119.20810591006, + "reference_value": -189709.05679042212, + "rel_diff": 0.8781333453602556, + "abs_diff_nats": 166589.84868451208, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 3: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 18502.008921180433, + "reference_value": 18502.009704396118, + "rel_diff": 4.2331384366558094e-08, + "abs_diff_nats": 0.00078321568435058, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 3: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -141741.9647687315, + "reference_value": -141741.96566347557, + "rel_diff": 6.312485236126246e-09, + "abs_diff_nats": 0.0008947440655902028, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 3: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 18502.008921180433, + "reference_value": -141741.9647687315, + "rel_diff": 1.1305330355154073, + "abs_diff_nats": 160243.97368991195, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 3: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 18502.009704396118, + "reference_value": -141741.96566347557, + "rel_diff": 1.1305330402170637, + "abs_diff_nats": 160243.9753678717, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 4: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 18750.51662542791, + "reference_value": 18751.910288039162, + "rel_diff": 7.432110061558511e-05, + "abs_diff_nats": 1.3936626112517843, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 4: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 24880.545932988738, + "reference_value": 24880.545932988738, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 4: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 18750.51662542791, + "reference_value": 24880.545932988738, + "rel_diff": 0.24637840841880865, + "abs_diff_nats": 6130.029307560828, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 4: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 18751.910288039162, + "reference_value": 24880.545932988738, + "rel_diff": 0.24632239426964145, + "abs_diff_nats": 6128.635644949576, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 5: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 24935.952740675293, + "reference_value": 24935.95274067247, + "rel_diff": 1.1321290121385741e-13, + "abs_diff_nats": 2.8230715543031693e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 5: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 25472.51918676291, + "reference_value": 25472.519186781192, + "rel_diff": 7.17669240784107e-13, + "abs_diff_nats": 1.8280843505635858e-08, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 5: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 24935.952740675293, + "reference_value": 25472.51918676291, + "rel_diff": 0.021064522207385392, + "abs_diff_nats": 536.5664460876178, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 5: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 24935.95274067247, + "reference_value": 25472.519186781192, + "rel_diff": 0.021064522208198773, + "abs_diff_nats": 536.5664461087217, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 6: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 28315.20146518829, + "reference_value": 28315.201428712455, + "rel_diff": 1.2882067761812063e-09, + "abs_diff_nats": 3.647583434940316e-05, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 6: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -83383.91543837059, + "reference_value": -83383.91540684736, + "rel_diff": 3.7804931237389863e-10, + "abs_diff_nats": 3.1523231882601976e-05, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 6: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 28315.20146518829, + "reference_value": -83383.91543837059, + "rel_diff": 1.3395762997735, + "abs_diff_nats": 111699.11690355888, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 6: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 28315.201428712455, + "reference_value": -83383.91540684736, + "rel_diff": 1.3395762994644318, + "abs_diff_nats": 111699.1168355598, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 7: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 23338.890014375043, + "reference_value": 23338.89001354625, + "rel_diff": 3.5511261135990974e-11, + "abs_diff_nats": 8.287934178952128e-07, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 7: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -11960.284429754305, + "reference_value": -11960.28442978162, + "rel_diff": 2.2837203449469557e-12, + "abs_diff_nats": 2.731394488364458e-08, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 7: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 23338.890014375043, + "reference_value": -11960.284429754305, + "rel_diff": 2.951365801662167, + "abs_diff_nats": 35299.17444412935, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 7: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 23338.89001354625, + "reference_value": -11960.28442978162, + "rel_diff": 2.9513658015884148, + "abs_diff_nats": 35299.174443327865, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 8: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 24869.037000613742, + "reference_value": 24869.03700060154, + "rel_diff": 4.906414719110541e-13, + "abs_diff_nats": 1.2201780918985605e-08, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 8: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 23223.550391500263, + "reference_value": 23223.55039150045, + "rel_diff": 7.989171166075526e-15, + "abs_diff_nats": 1.8553691916167736e-10, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 8: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 24869.037000613742, + "reference_value": 23223.550391500263, + "rel_diff": 0.07085422260481418, + "abs_diff_nats": 1645.486609113479, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 8: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 24869.03700060154, + "reference_value": 23223.55039150045, + "rel_diff": 0.07085422260428022, + "abs_diff_nats": 1645.4866091010917, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 9: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -31750.335545040216, + "reference_value": NaN, + "rel_diff": NaN, + "abs_diff_nats": NaN, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 9: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -177117.75609302538, + "reference_value": -177117.7774717681, + "rel_diff": 1.2070353981814522e-07, + "abs_diff_nats": 0.021378742705564946, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 9: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -31750.335545040216, + "reference_value": -177117.75609302538, + "rel_diff": 0.8207388336132467, + "abs_diff_nats": 145367.42054798518, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 9: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": NaN, + "reference_value": -177117.7774717681, + "rel_diff": NaN, + "abs_diff_nats": NaN, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 10: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 6560.779794306516, + "reference_value": 6560.7795961357915, + "rel_diff": 3.020536229149355e-08, + "abs_diff_nats": 0.00019817072461592034, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 10: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -101745.38349985592, + "reference_value": -101745.38349137451, + "rel_diff": 8.335915475309887e-11, + "abs_diff_nats": 8.48140916787088e-06, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 10: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 6560.779794306516, + "reference_value": -101745.38349985592, + "rel_diff": 1.0644823339263918, + "abs_diff_nats": 108306.16329416243, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 10: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 6560.7795961357915, + "reference_value": -101745.38349137451, + "rel_diff": 1.0644823319840548, + "abs_diff_nats": 108306.1630875103, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 11: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 12668.001326846505, + "reference_value": 12667.924915789376, + "rel_diff": 6.031852701760834e-06, + "abs_diff_nats": 0.07641105712900753, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 11: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 18959.672780975976, + "reference_value": 18957.528349757773, + "rel_diff": 0.00011311765851745929, + "abs_diff_nats": 2.1444312182029535, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 11: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 12668.001326846505, + "reference_value": 18959.672780975976, + "rel_diff": 0.3318449388241815, + "abs_diff_nats": 6291.671454129471, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 11: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 12667.924915789376, + "reference_value": 18957.528349757773, + "rel_diff": 0.3317733893326216, + "abs_diff_nats": 6289.603433968397, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 12: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 18842.345663340646, + "reference_value": 18842.279796731058, + "rel_diff": 3.4956815363317152e-06, + "abs_diff_nats": 0.06586660958782886, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 12: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 24810.049660195124, + "reference_value": 24810.049660194898, + "rel_diff": 9.091262981289588e-15, + "abs_diff_nats": 2.255546860396862e-10, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 12: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 18842.345663340646, + "reference_value": 24810.049660195124, + "rel_diff": 0.24053575380096776, + "abs_diff_nats": 5967.703996854478, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 12: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 18842.279796731058, + "reference_value": 24810.049660194898, + "rel_diff": 0.24053840863682333, + "abs_diff_nats": 5967.76986346384, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 13: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 22879.755989048543, + "reference_value": 22879.7559893116, + "rel_diff": 1.1497439469410595e-11, + "abs_diff_nats": 2.6305860956199467e-07, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 13: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -3605.706215917453, + "reference_value": -3605.706215970531, + "rel_diff": 1.472058665244897e-11, + "abs_diff_nats": 5.307811079546809e-08, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 13: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 22879.755989048543, + "reference_value": -3605.706215917453, + "rel_diff": 7.3454298877832755, + "abs_diff_nats": 26485.462204965996, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 13: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 22879.7559893116, + "reference_value": -3605.706215970531, + "rel_diff": 7.3454298877628235, + "abs_diff_nats": 26485.462205282132, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 14: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 4357.021950291826, + "reference_value": 4357.021950280177, + "rel_diff": 2.673571139470296e-12, + "abs_diff_nats": 1.1648808140307665e-08, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 14: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 11129.43856306804, + "reference_value": 11126.921475785763, + "rel_diff": 0.00022621596528346792, + "abs_diff_nats": 2.5170872822782258, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 14: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 4357.021950291826, + "reference_value": 11129.43856306804, + "rel_diff": 0.6085137695310004, + "abs_diff_nats": 6772.416612776215, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 14: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 4357.021950280177, + "reference_value": 11126.921475785763, + "rel_diff": 0.6084252090965266, + "abs_diff_nats": 6769.899525505585, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 15: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 14146.844560201887, + "reference_value": 14146.464613817334, + "rel_diff": 2.6858045096466776e-05, + "abs_diff_nats": 0.3799463845534774, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 15: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 20407.780654983708, + "reference_value": 20410.343973720697, + "rel_diff": 0.00012558919831482778, + "abs_diff_nats": 2.5633187369894586, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 15: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 14146.844560201887, + "reference_value": 20407.780654983708, + "rel_diff": 0.30679162034470714, + "abs_diff_nats": 6260.93609478182, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 15: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 14146.464613817334, + "reference_value": 20410.343973720697, + "rel_diff": 0.3068972952130748, + "abs_diff_nats": 6263.879359903363, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 16: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 2903.0452367721446, + "reference_value": 2903.043598923672, + "rel_diff": 5.641832155268914e-07, + "abs_diff_nats": 0.0016378484724555165, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 16: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 9734.862241683215, + "reference_value": 9734.862241678551, + "rel_diff": 4.790914051894582e-13, + "abs_diff_nats": 4.663888830691576e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 16: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 2903.0452367721446, + "reference_value": 9734.862241683215, + "rel_diff": 0.7017887706369648, + "abs_diff_nats": 6831.81700491107, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 16: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 2903.043598923672, + "reference_value": 9734.862241678551, + "rel_diff": 0.7017889388824973, + "abs_diff_nats": 6831.818642754879, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 17: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 13362.515995368962, + "reference_value": 13360.530937095456, + "rel_diff": 0.00014857630155952622, + "abs_diff_nats": 1.985058273505274, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 17: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 19481.580996516812, + "reference_value": 19481.557217641563, + "rel_diff": 1.2205839083402613e-06, + "abs_diff_nats": 0.023778875249263365, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 17: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 13362.515995368962, + "reference_value": 19481.580996516812, + "rel_diff": 0.31409488799917734, + "abs_diff_nats": 6119.06500114785, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 17: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 13360.530937095456, + "reference_value": 19481.557217641563, + "rel_diff": 0.3141959450245178, + "abs_diff_nats": 6121.026280546106, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 18: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 12584.040728899512, + "reference_value": 12594.119293045376, + "rel_diff": 0.0008002595426763763, + "abs_diff_nats": 10.07856414586422, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 18: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 18817.121698566574, + "reference_value": 18812.946857997056, + "rel_diff": 0.00022191316443034178, + "abs_diff_nats": 4.174840569517983, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 18: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 12584.040728899512, + "reference_value": 18817.121698566574, + "rel_diff": 0.33124518560890626, + "abs_diff_nats": 6233.080969667062, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 18: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 12594.119293045376, + "reference_value": 18812.946857997056, + "rel_diff": 0.3305610552080077, + "abs_diff_nats": 6218.82756495168, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 19: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 10418.210094661103, + "reference_value": 10415.233658083074, + "rel_diff": 0.0002857772255275724, + "abs_diff_nats": 2.9764365780283697, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 19: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 16927.857229254627, + "reference_value": 16927.632549568763, + "rel_diff": 1.3272953864375116e-05, + "abs_diff_nats": 0.22467968586352072, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 19: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 10418.210094661103, + "reference_value": 16927.857229254627, + "rel_diff": 0.38455234152988893, + "abs_diff_nats": 6509.647134593524, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 19: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 10415.233658083074, + "reference_value": 16927.632549568763, + "rel_diff": 0.38472000573119686, + "abs_diff_nats": 6512.398891485689, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 20: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 23125.781207506672, + "reference_value": 23125.781207506327, + "rel_diff": 1.494470537330574e-14, + "abs_diff_nats": 3.4560798667371273e-10, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 20: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 27642.806005942835, + "reference_value": 27642.806005943203, + "rel_diff": 1.3292277905407444e-14, + "abs_diff_nats": 3.67435859516263e-10, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 20: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 23125.781207506672, + "reference_value": 27642.806005942835, + "rel_diff": 0.16340688414428922, + "abs_diff_nats": 4517.024798436163, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 20: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 23125.781207506327, + "reference_value": 27642.806005943203, + "rel_diff": 0.16340688414431284, + "abs_diff_nats": 4517.024798436876, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 21: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 25204.95975370948, + "reference_value": 25204.959753728468, + "rel_diff": 7.532887011018947e-13, + "abs_diff_nats": 1.898661139421165e-08, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 21: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 27788.396151130026, + "reference_value": 27788.39615117224, + "rel_diff": 1.5191631013116751e-12, + "abs_diff_nats": 4.221510607749224e-08, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 21: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 25204.95975370948, + "reference_value": 27788.396151130026, + "rel_diff": 0.09296817215971236, + "abs_diff_nats": 2583.4363974205444, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 21: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 25204.959753728468, + "reference_value": 27788.39615117224, + "rel_diff": 0.09296817216040702, + "abs_diff_nats": 2583.436397443773, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 22: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 11552.670998697395, + "reference_value": 11553.07472359277, + "rel_diff": 3.494523363127176e-05, + "abs_diff_nats": 0.4037248953754897, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 22: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 17853.26476931595, + "reference_value": 17852.91967933103, + "rel_diff": 1.932961056890832e-05, + "abs_diff_nats": 0.3450899849194684, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 22: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 11552.670998697395, + "reference_value": 17853.26476931595, + "rel_diff": 0.35290989362613717, + "abs_diff_nats": 6300.593770618554, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 22: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 11553.07472359277, + "reference_value": 17852.91967933103, + "rel_diff": 0.3528747716840858, + "abs_diff_nats": 6299.844955738259, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 23: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 21983.89953487797, + "reference_value": 21983.89953487757, + "rel_diff": 1.8203215864646964e-14, + "abs_diff_nats": 4.001776687800884e-10, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 23: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 27386.085836286475, + "reference_value": 27386.085836286475, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 23: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 21983.89953487797, + "reference_value": 27386.085836286475, + "rel_diff": 0.19726025594539778, + "abs_diff_nats": 5402.186301408503, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 23: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 21983.89953487757, + "reference_value": 27386.085836286475, + "rel_diff": 0.19726025594541238, + "abs_diff_nats": 5402.186301408903, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 24: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 23449.28672850168, + "reference_value": 23449.28672850127, + "rel_diff": 1.7531092095083012e-14, + "abs_diff_nats": 4.1109160520136356e-10, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 24: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 28384.90598332627, + "reference_value": 28384.90598332596, + "rel_diff": 1.0894106846238786e-14, + "abs_diff_nats": 3.092281986027956e-10, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 24: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 23449.28672850168, + "reference_value": 28384.90598332627, + "rel_diff": 0.1738818249996617, + "abs_diff_nats": 4935.619254824589, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 24: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 23449.28672850127, + "reference_value": 28384.90598332596, + "rel_diff": 0.1738818249996672, + "abs_diff_nats": 4935.619254824691, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 25: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -136892.35618963442, + "reference_value": -136892.6262471882, + "rel_diff": 1.9727691781369726e-06, + "abs_diff_nats": 0.2700575537746772, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 25: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -189785.05556361115, + "reference_value": -189785.02878222853, + "rel_diff": 1.4111430597614006e-07, + "abs_diff_nats": 0.026781382621265948, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 25: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -136892.35618963442, + "reference_value": -189785.05556361115, + "rel_diff": 0.27869791547548084, + "abs_diff_nats": 52892.699373976735, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 25: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -136892.6262471882, + "reference_value": -189785.02878222853, + "rel_diff": 0.27869639072390934, + "abs_diff_nats": 52892.40253504034, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 26: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 20216.49720683314, + "reference_value": 20216.48421884619, + "rel_diff": 6.424453831120838e-07, + "abs_diff_nats": 0.012987986949156038, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 26: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -186990.0765165683, + "reference_value": -186990.08102622873, + "rel_diff": 2.4117110333348803e-08, + "abs_diff_nats": 0.004509660415351391, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 26: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 20216.49720683314, + "reference_value": -186990.0765165683, + "rel_diff": 1.108115348062558, + "abs_diff_nats": 207206.57372340147, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 26: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 20216.48421884619, + "reference_value": -186990.08102622873, + "rel_diff": 1.1081152759969684, + "abs_diff_nats": 207206.56524507492, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 27: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 23997.437153359868, + "reference_value": 23997.437153358318, + "rel_diff": 6.458102012798422e-14, + "abs_diff_nats": 1.5497789718210697e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 27: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 27662.094569023182, + "reference_value": 27662.094569023684, + "rel_diff": 1.8149062216743612e-14, + "abs_diff_nats": 5.020410753786564e-10, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 27: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 23997.437153359868, + "reference_value": 27662.094569023182, + "rel_diff": 0.13247939003748127, + "abs_diff_nats": 3664.657415663314, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 27: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 23997.437153358318, + "reference_value": 27662.094569023684, + "rel_diff": 0.13247939003755302, + "abs_diff_nats": 3664.657415665366, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 28: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 15428.367468178061, + "reference_value": 15428.348832724998, + "rel_diff": 1.2078708658568625e-06, + "abs_diff_nats": 0.018635453063325258, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 28: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -74102.37834738629, + "reference_value": -74102.37819471839, + "rel_diff": 2.060229384997078e-09, + "abs_diff_nats": 0.00015266789705492556, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 28: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 15428.367468178061, + "reference_value": -74102.37834738629, + "rel_diff": 1.2082034046984438, + "abs_diff_nats": 89530.74581556435, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 28: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 15428.348832724998, + "reference_value": -74102.37819471839, + "rel_diff": 1.208203153644867, + "abs_diff_nats": 89530.72702744338, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 29: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 9200.047882830484, + "reference_value": 9199.664189086565, + "rel_diff": 4.170736409860584e-05, + "abs_diff_nats": 0.3836937439191388, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 29: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 15883.222766170817, + "reference_value": 15888.26182677499, + "rel_diff": 0.00031715619109958225, + "abs_diff_nats": 5.039060604172846, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 29: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 9200.047882830484, + "reference_value": 15883.222766170817, + "rel_diff": 0.42076944847582315, + "abs_diff_nats": 6683.174883340333, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 29: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 9199.664189086565, + "reference_value": 15888.26182677499, + "rel_diff": 0.4209773045416939, + "abs_diff_nats": 6688.597637688425, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 30: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 18699.685890786837, + "reference_value": 18699.685890621226, + "rel_diff": 8.856389898950021e-12, + "abs_diff_nats": 1.6561170923523605e-07, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 30: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -2303.265572369746, + "reference_value": -2303.2655716586596, + "rel_diff": 3.0872975411154296e-10, + "abs_diff_nats": 7.110866135917604e-07, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 30: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 18699.685890786837, + "reference_value": -2303.265572369746, + "rel_diff": 9.118771067961308, + "abs_diff_nats": 21002.951463156583, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 30: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 18699.685890621226, + "reference_value": -2303.2655716586596, + "rel_diff": 9.11877107039591, + "abs_diff_nats": 21002.951462279885, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 31: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 13020.380277041753, + "reference_value": 13020.244793610349, + "rel_diff": 1.0405597863318976e-05, + "abs_diff_nats": 0.13548343140428187, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 31: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 19181.83341663636, + "reference_value": 19182.855515516767, + "rel_diff": 5.3281894323811134e-05, + "abs_diff_nats": 1.022098880406702, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 31: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 13020.380277041753, + "reference_value": 19181.83341663636, + "rel_diff": 0.3212129417332335, + "abs_diff_nats": 6161.453139594607, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 31: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 13020.244793610349, + "reference_value": 19182.855515516767, + "rel_diff": 0.32125617152887176, + "abs_diff_nats": 6162.610721906418, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 32: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 20526.670805852016, + "reference_value": 20526.00740849176, + "rel_diff": 3.2319844139795844e-05, + "abs_diff_nats": 0.6633973602547485, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 32: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 25770.81257051679, + "reference_value": 25770.812570520167, + "rel_diff": 1.3100263422982034e-13, + "abs_diff_nats": 3.3760443329811096e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 32: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 20526.670805852016, + "reference_value": 25770.81257051679, + "rel_diff": 0.20349151779033767, + "abs_diff_nats": 5244.141764664775, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 32: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 20526.00740849176, + "reference_value": 25770.812570520167, + "rel_diff": 0.2035172599884592, + "abs_diff_nats": 5244.805162028406, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 33: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 9473.716101286089, + "reference_value": 9476.347543144104, + "rel_diff": 0.00027768524170673797, + "abs_diff_nats": 2.631441858015023, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 33: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 15902.150933379533, + "reference_value": 15902.910586796046, + "rel_diff": 4.776820018996418e-05, + "abs_diff_nats": 0.7596534165131743, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 33: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 9473.716101286089, + "reference_value": 15902.150933379533, + "rel_diff": 0.40424939110594077, + "abs_diff_nats": 6428.434832093444, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 33: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 9476.347543144104, + "reference_value": 15902.910586796046, + "rel_diff": 0.40411237984245624, + "abs_diff_nats": 6426.563043651942, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 34: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 23033.791171150646, + "reference_value": 23033.792090950028, + "rel_diff": 3.9932607649384395e-08, + "abs_diff_nats": 0.0009197993822454009, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 34: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -130304.42414440234, + "reference_value": -130304.42373606384, + "rel_diff": 3.1337270642674593e-09, + "abs_diff_nats": 0.0004083384992554784, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 34: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 23033.791171150646, + "reference_value": -130304.42414440234, + "rel_diff": 1.1767690646146043, + "abs_diff_nats": 153338.21531555298, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 34: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 23033.792090950028, + "reference_value": -130304.42373606384, + "rel_diff": 1.1767690722274002, + "abs_diff_nats": 153338.21582701386, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 35: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 12430.440762452068, + "reference_value": 12436.966956375632, + "rel_diff": 0.0005247415986916905, + "abs_diff_nats": 6.5261939235642785, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 35: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 18756.824766487727, + "reference_value": 18757.071353384403, + "rel_diff": 1.3146343159327383e-05, + "abs_diff_nats": 0.24658689667558065, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 35: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 12430.440762452068, + "reference_value": 18756.824766487727, + "rel_diff": 0.33728437956827456, + "abs_diff_nats": 6326.384004035659, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 35: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 12436.966956375632, + "reference_value": 18757.071353384403, + "rel_diff": 0.3369451593981601, + "abs_diff_nats": 6320.10439700877, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 36: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 4935.957801238474, + "reference_value": 4935.957801232442, + "rel_diff": 1.2220057595816579e-12, + "abs_diff_nats": 6.03176886215806e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 36: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 11735.125602283828, + "reference_value": 11735.12560234069, + "rel_diff": 4.845419698235002e-12, + "abs_diff_nats": 5.6861608754843473e-08, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 36: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 4935.957801238474, + "reference_value": 11735.125602283828, + "rel_diff": 0.5793860271697592, + "abs_diff_nats": 6799.167801045354, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 36: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 4935.957801232442, + "reference_value": 11735.12560234069, + "rel_diff": 0.5793860271723112, + "abs_diff_nats": 6799.167801108248, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 37: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -10183.840816488875, + "reference_value": -10183.840801875529, + "rel_diff": 1.4349542989529161e-09, + "abs_diff_nats": 1.4613346138503402e-05, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 37: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -3158.477740007991, + "reference_value": -3158.477740009388, + "rel_diff": 4.422965671808298e-13, + "abs_diff_nats": 1.3969838619232178e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 37: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -10183.840816488875, + "reference_value": -3158.477740007991, + "rel_diff": 2.2242876647479903, + "abs_diff_nats": 7025.363076480884, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 37: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -10183.840801875529, + "reference_value": -3158.477740009388, + "rel_diff": 2.2242876601198587, + "abs_diff_nats": 7025.363061866141, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 38: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 12580.028458883913, + "reference_value": 12580.943022385865, + "rel_diff": 7.26943521105604e-05, + "abs_diff_nats": 0.914563501952216, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 38: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 18932.585368659475, + "reference_value": 18932.692618835783, + "rel_diff": 5.66481368855041e-06, + "abs_diff_nats": 0.10725017630829825, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 38: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 12580.028458883913, + "reference_value": 18932.585368659475, + "rel_diff": 0.3355356273893488, + "abs_diff_nats": 6352.5569097755615, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 38: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 12580.943022385865, + "reference_value": 18932.692618835783, + "rel_diff": 0.33549108541120454, + "abs_diff_nats": 6351.749596449918, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 39: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -2590.81211144424, + "reference_value": -2591.234409394616, + "rel_diff": 0.00016297172839500502, + "abs_diff_nats": 0.42229795037565054, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 39: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -92415.28094350263, + "reference_value": -92415.13407796873, + "rel_diff": 1.589193538081607e-06, + "abs_diff_nats": 0.14686553389765322, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 39: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -2590.81211144424, + "reference_value": -92415.28094350263, + "rel_diff": 0.9719655441719849, + "abs_diff_nats": 89824.4688320584, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 39: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -2591.234409394616, + "reference_value": -92415.13407796873, + "rel_diff": 0.9719609300441154, + "abs_diff_nats": 89823.89966857411, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 40: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 6775.872816183211, + "reference_value": 6775.961380959467, + "rel_diff": 1.3070436986859663e-05, + "abs_diff_nats": 0.0885647762552253, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 40: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 13403.27005709926, + "reference_value": 13398.840222654067, + "rel_diff": 0.00033061327484918784, + "abs_diff_nats": 4.429834445192682, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 40: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 6775.872816183211, + "reference_value": 13403.27005709926, + "rel_diff": 0.49446121824619504, + "abs_diff_nats": 6627.397240916049, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 40: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 6775.961380959467, + "reference_value": 13398.840222654067, + "rel_diff": 0.4942874705302463, + "abs_diff_nats": 6622.878841694601, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 41: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 13539.900754143935, + "reference_value": 13539.215247504355, + "rel_diff": 5.063119442661076e-05, + "abs_diff_nats": 0.6855066395801259, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 41: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 19660.9410796756, + "reference_value": 19660.9031219574, + "rel_diff": 1.93061925812204e-06, + "abs_diff_nats": 0.0379577181993227, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 41: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 13539.900754143935, + "reference_value": 19660.9410796756, + "rel_diff": 0.3113299765624779, + "abs_diff_nats": 6121.040325531663, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 41: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 13539.215247504355, + "reference_value": 19660.9031219574, + "rel_diff": 0.3113635134907059, + "abs_diff_nats": 6121.687874453044, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 42: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 27099.01248309339, + "reference_value": 27099.012483073122, + "rel_diff": 7.47893671290326e-13, + "abs_diff_nats": 2.0267179934307933e-08, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 42: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 18324.10308373384, + "reference_value": 18324.10308381907, + "rel_diff": 4.651281817324348e-12, + "abs_diff_nats": 8.523056749254465e-08, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 42: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 27099.01248309339, + "reference_value": 18324.10308373384, + "rel_diff": 0.4788725188491744, + "abs_diff_nats": 8774.909399359549, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 42: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 27099.012483073122, + "reference_value": 18324.10308381907, + "rel_diff": 0.47887251884118975, + "abs_diff_nats": 8774.909399254051, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 43: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -89811.55653149403, + "reference_value": -89811.62460726776, + "rel_diff": 7.579839917814789e-07, + "abs_diff_nats": 0.06807577372819651, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 43: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -175043.36003830942, + "reference_value": -175043.34190825332, + "rel_diff": 1.0357466840344527e-07, + "abs_diff_nats": 0.018130056094378233, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 43: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -89811.55653149403, + "reference_value": -175043.36003830942, + "rel_diff": 0.4869182326491095, + "abs_diff_nats": 85231.80350681538, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 43: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -89811.62460726776, + "reference_value": -175043.34190825332, + "rel_diff": 0.4869177905987344, + "abs_diff_nats": 85231.71730098556, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 44: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 26462.67126376893, + "reference_value": 26462.671263709253, + "rel_diff": 2.25515420407968e-12, + "abs_diff_nats": 5.967740435153246e-08, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 44: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 13759.13327080456, + "reference_value": 13759.133270868886, + "rel_diff": 4.67520300883992e-12, + "abs_diff_nats": 6.432674126699567e-08, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 44: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 26462.67126376893, + "reference_value": 13759.13327080456, + "rel_diff": 0.9232803944068155, + "abs_diff_nats": 12703.537992964371, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 44: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 26462.671263709253, + "reference_value": 13759.133270868886, + "rel_diff": 0.9232803943934865, + "abs_diff_nats": 12703.537992840367, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 45: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 13511.99488308384, + "reference_value": 13504.069127412935, + "rel_diff": 0.0005869161062583909, + "abs_diff_nats": 7.925755670905346, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 45: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 19903.288179667114, + "reference_value": 19903.394044775436, + "rel_diff": 5.318947516389384e-06, + "abs_diff_nats": 0.10586510832217755, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 45: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 13511.99488308384, + "reference_value": 19903.288179667114, + "rel_diff": 0.32111745752204496, + "abs_diff_nats": 6391.293296583273, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 45: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 13504.069127412935, + "reference_value": 19903.394044775436, + "rel_diff": 0.32151927972517325, + "abs_diff_nats": 6399.324917362501, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 46: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 12905.863607846928, + "reference_value": 12905.386047434527, + "rel_diff": 3.7004736677022505e-05, + "abs_diff_nats": 0.47756041240063496, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 46: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 19139.791231082916, + "reference_value": 19139.565581617124, + "rel_diff": 1.1789685864602834e-05, + "abs_diff_nats": 0.22564946579223033, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 46: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 12905.863607846928, + "reference_value": 19139.791231082916, + "rel_diff": 0.3257051003310905, + "abs_diff_nats": 6233.927623235988, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 46: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 12905.386047434527, + "reference_value": 19139.565581617124, + "rel_diff": 0.32572210208210295, + "abs_diff_nats": 6234.179534182596, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 47: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 21569.14415015534, + "reference_value": 21569.144150185602, + "rel_diff": 1.402962839261681e-12, + "abs_diff_nats": 3.026070771738887e-08, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 47: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 15503.41944203166, + "reference_value": 15503.419442057915, + "rel_diff": 1.6935162690338578e-12, + "abs_diff_nats": 2.6255293050780892e-08, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 47: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 21569.14415015534, + "reference_value": 15503.41944203166, + "rel_diff": 0.39125076443966694, + "abs_diff_nats": 6065.724708123682, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 47: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 21569.144150185602, + "reference_value": 15503.419442057915, + "rel_diff": 0.3912507644392627, + "abs_diff_nats": 6065.724708127687, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 48: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 22377.520981646634, + "reference_value": 22376.16481042713, + "rel_diff": 6.060784906590474e-05, + "abs_diff_nats": 1.3561712195041764, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 48: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 27530.81447304739, + "reference_value": 27530.814473047278, + "rel_diff": 4.0964041630607165e-15, + "abs_diff_nats": 1.127773430198431e-10, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 48: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 22377.520981646634, + "reference_value": 27530.81447304739, + "rel_diff": 0.18718274740639512, + "abs_diff_nats": 5153.2934914007565, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 48: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 22376.16481042713, + "reference_value": 27530.814473047278, + "rel_diff": 0.18723200752620522, + "abs_diff_nats": 5154.649662620148, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 49: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 26250.951903968835, + "reference_value": 26250.951111653103, + "rel_diff": 3.0182362857811986e-08, + "abs_diff_nats": 0.0007923157318145968, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 49: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -177402.92031277675, + "reference_value": -177402.92016442568, + "rel_diff": 8.362380465041473e-10, + "abs_diff_nats": 0.00014835107140243053, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 49: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 26250.951903968835, + "reference_value": -177402.92031277675, + "rel_diff": 1.1479736176703639, + "abs_diff_nats": 203653.8722167456, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 49: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 26250.951111653103, + "reference_value": -177402.92016442568, + "rel_diff": 1.1479736133279115, + "abs_diff_nats": 203653.87127607877, + "within_rtol": false, + "status": "RECORDED" + } + ], + "lanes_failed": 36, + "arm_rows": { + "vmap": { + "arm": "vmap", + "program": "jax.jit(jax.vmap(fn))", + "stands_for": "Nautilus(use_jax_vmap=True) \u2014 Fitness._vmap", + "hlo_source": "jax.jit(jax.vmap(fn)).lower(batched_tree) \u2014 the exact current Fitness._vmap composition (PyAutoFit#1638)", + "batch_wall_ms": 1334.9125412998546, + "wall_production_nesting_ms": 1334.9125412998546, + "wall_aot_command_buffers_on_ms": 1332.8061320997222, + "wall_aot_command_buffers_off_ms": 1333.4006604000024, + "command_buffer_delta_ms": 0.5945283002802171, + "production_nesting_vs_aot_on_delta_ms": 2.1064092001324752, + "production_nesting_vs_aot_on_delta_pct": 0.15804318042970042, + "wall_per_lane_ms": 26.698250825997093, + "wall_per_lane_command_buffers_off_ms": 26.668013208000048, + "traced_batch_wall_ms": 1342.4494053000672, + "untraced_batch_wall_ms": 1329.844211100135, + "traced_wall_per_lane_ms": 26.848988106001343, + "callback_count_per_call": 50.0, + "callback_count_per_lane": 1.0, + "callback_expectation": "B per batched call \u2014 the qhull pure_callback is vmap_method='sequential'", + "host_qhull_ms": 223.70700989777106, + "host_tables_ms": 5.708653602778213, + "host_qhull_ms_per_lane": 4.474140197955421, + "host_tables_ms_per_lane": 0.11417307205556426, + "host_callback_probe": { + "calls": 500, + "qhull_ms_total": 2237.0700989777106, + "tables_ms_total": 57.08653602778213, + "total_ms_total": 2294.1566350054927, + "qhull_ms_mean": 4.474140197955421, + "tables_ms_mean": 0.11417307205556426, + "total_ms_mean": 4.588313270010985, + "non_finite_calls": 0, + "n_points": [ + 1500 + ] + }, + "host_callback_records_first": [ + { + "n_points": 1500, + "qhull_ms": 4.88928000049782, + "tables_ms": 0.186348996066954, + "total_ms": 5.075628996564774, + "finite": true + }, + { + "n_points": 1500, + "qhull_ms": 4.657602003135253, + "tables_ms": 0.12456999684218317, + "total_ms": 4.782171999977436, + "finite": true + }, + { + "n_points": 1500, + "qhull_ms": 4.5452519989339635, + "tables_ms": 0.12100900130462833, + "total_ms": 4.666261000238592, + "finite": true + }, + { + "n_points": 1500, + "qhull_ms": 4.65873099892633, + "tables_ms": 0.12900900037493557, + "total_ms": 4.787739999301266, + "finite": true + } + ], + "device_idle_ms": 259.9388730999999, + "device_idle_ms_per_lane": 5.198777461999998, + "trace": { + "parser": "ProfileData.from_file(xplane) + as_text() + stack_frame_index(proto field 17)", + "stage_audit": { + "mixed_fusion": [ + { + "instruction": "loop_divide_gather_fusion", + "ms": 54.75914680000001, + "opcode": "fusion", + "shape": "(f64[15361,50,1,1,1500]{4,3,2,1,0}, f64[15361,50,1,1,1500]{4,3,2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_multiply_transpose_fusion", + "ms": 21.536992, + "opcode": "fusion", + "shape": "(f64[50,1500,1500]{2,1,0}, f64[50,1500,1500]{2,1,0}, f64[50,1500,1500]{2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:237 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:274 (_certified_positive_only_from)" + ] + }, + { + "instruction": "loop_broadcast_fusion.6", + "ms": 11.9395463, + "opcode": "fusion", + "shape": "f64[50,1500,180,180]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_reduce_fusion.9", + "ms": 6.1216112, + "opcode": "fusion", + "shape": "f64[92,50,1500]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123 (data_vector_via_blurred_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:67 (InversionImagingMapping.data_vector)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:699 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_broadcast_fusion.8", + "ms": 5.620474099999999, + "opcode": "fusion", + "shape": "f64[15361,50,1500]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:353", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:353 (mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:283 (Mapper.mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:91 (AbstractInversionImaging._mapping_matrix_for_convolution_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:137 (AbstractInversionImaging.operated_mapping_matrix_list)" + ] + }, + { + "instruction": "input_reduce_fusion.13", + "ms": 5.518662300000001, + "opcode": "fusion", + "shape": "f64[15361,50]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163 (mapped_reconstructed_data_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:120 (InversionImagingMapping._mapped_reconstructed_data_dict_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:196 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + } + ], + "other": [ + { + "instruction": "copy.115", + "ms": 0.10156600000000023, + "opcode": "copy", + "shape": "s32[1,3000,3]{2,1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.116", + "ms": 0.10070189999999998, + "opcode": "copy", + "shape": "s32[1,3000,3]{2,1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.117", + "ms": 0.10015440000000012, + "opcode": "copy", + "shape": "f64[1,1500,2]{2,1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.114", + "ms": 0.09921340000000048, + "opcode": "copy", + "shape": "s32[1,1500]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.113", + "ms": 0.059130300000000045, + "opcode": "copy", + "shape": "f64[1,50,1024,2]{3,2,1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.98", + "ms": 0.03652829999999997, + "opcode": "copy", + "shape": "s32[50]{0}", + "source": "", + "stack": [] + } + ], + "mesh_qhull_callback": [ + { + "instruction": "pure_callback.0", + "ms": 0.5381324000000005, + "opcode": "custom-call", + "shape": "(s32[3000,3]{1,0}, s32[3000,3]{1,0}, s32[1500]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:161", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:161 (_jax_delaunay_tables)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:405 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + }, + { + "instruction": "loop_add_fusion.1", + "ms": 0.07620239999999973, + "opcode": "fusion", + "shape": "s64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:161", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:161 (_jax_delaunay_tables)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:405 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + }, + { + "instruction": "loop_broadcast_fusion.2", + "ms": 0.0022304, + "opcode": "fusion", + "shape": "s32[50,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:161", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:161 (_jax_delaunay_tables)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:405 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + } + ], + "border_relocator": [ + { + "instruction": "custom-call.2", + "ms": 0.04265949999999999, + "opcode": "custom-call", + "shape": "(f64[50,2,2]{2,1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_add_rsqrt_fusion", + "ms": 0.019699499999999998, + "opcode": "fusion", + "shape": "(f64[50,15361]{1,0}, f64[50,15361]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:311", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:311 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:423 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:208 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "eigh.36", + "ms": 0.014841999999999998, + "opcode": "custom-call", + "shape": "(f64[50,2,2]{1,2,0}, f64[50,2]{1,0}, s32[50]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_add_rsqrt_fusion.1", + "ms": 0.0039392, + "opcode": "fusion", + "shape": "(f64[50,1500]{1,0}, f64[50,1500]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:311", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:311 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:458 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_reduce_fusion.14", + "ms": 0.003376, + "opcode": "fusion", + "shape": "f64[50]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:270", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:270 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_reduce_fusion.15", + "ms": 0.0033567999999999996, + "opcode": "fusion", + "shape": "f64[50]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:269", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:269 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + } + ], + "mesh_construction": [ + { + "instruction": "loop_compare_fusion.4", + "ms": 0.0112992, + "opcode": "fusion", + "shape": "pred[50,15361,3]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:732", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:732 (DelaunayInterface.sizes)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:958 (InterpolatorDelaunay._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/abstract.py:36 (AbstractInterpolator.mappings)" + ] + }, + { + "instruction": "loop_compare_fusion.5", + "ms": 0.006803299999999999, + "opcode": "fusion", + "shape": "pred[50,6000,3]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:736", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:736 (DelaunayInterface.splitted_sizes)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:997 (InterpolatorDelaunay._mappings_sizes_weights_split)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:124 (AdaptSplit.regularization_matrix_from)" + ] + }, + { + "instruction": "loop_multiply_fusion.2", + "ms": 0.0027967999999999995, + "opcode": "fusion", + "shape": "f64[50,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:412", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:412 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_concatenate_fusion.9", + "ms": 0.0026976, + "opcode": "fusion", + "shape": "f64[50,1500,2]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:820", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:820 (InterpolatorDelaunay.mesh_grid_xy)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:847 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + } + ], + "mesh_seed_argmin": [ + { + "instruction": "input_reduce_fusion", + "ms": 3.950360199999995, + "opcode": "fusion", + "shape": "(f64[50,1024]{1,0}, s64[50,1024]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:191", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:191 (_nearest_vertex_seed_from..argmin_chunk)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)" + ] + }, + { + "instruction": "loop_dynamic_update_slice_fusion", + "ms": 0.05106299999999988, + "opcode": "fusion", + "shape": "s32[21,50,1024]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_add_fusion", + "ms": 0.031811399999999906, + "opcode": "fusion", + "shape": "s64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_broadcast_fusion.3", + "ms": 0.003980900000000001, + "opcode": "fusion", + "shape": "s32[21,50,1024]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "pdip_solve": [ + { + "instruction": "cholesky.55", + "ms": 217.241369999995, + "opcode": "custom-call", + "shape": "(f64[50,1500,1500]{1,2,0}, s32[50]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "input_transpose_fusion", + "ms": 36.933220499999976, + "opcode": "fusion", + "shape": "f64[50,1500,1500]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "triangular-solve", + "ms": 32.42111720000004, + "opcode": "custom-call", + "shape": "(f64[50,1500,1]{1,2,0}, s8[800]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "triangular-solve.1", + "ms": 31.591372300000064, + "opcode": "custom-call", + "shape": "(f64[50,1500,1]{1,2,0}, s8[800]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "input_transpose_fusion.1", + "ms": 23.4356358, + "opcode": "fusion", + "shape": "f64[50,1500,1500]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "cholesky.66", + "ms": 14.091648100000036, + "opcode": "custom-call", + "shape": "(f64[50,1500,1500]{1,2,0}, s32[50]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:237 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:274 (_certified_positive_only_from)" + ] + } + ], + "mesh_dual_areas": [ + { + "instruction": "input_scatter_fusion.9", + "ms": 0.005084800000000001, + "opcode": "fusion", + "shape": "f64[50,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:393", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:393 (_dual_areas_padded_jnp)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:408 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + }, + { + "instruction": "input_scatter_fusion.7", + "ms": 0.005059200000000001, + "opcode": "fusion", + "shape": "f64[50,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:393", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:393 (_dual_areas_padded_jnp)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:408 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + } + ], + "mesh_locate_walk": [ + { + "instruction": "loop_reduce_fusion", + "ms": 0.5925718000000001, + "opcode": "fusion", + "shape": "(f64[50,21361]{1,0}, s64[50,21361]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:264", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:264 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:264 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)" + ] + }, + { + "instruction": "loop_slice_subtract_fusion", + "ms": 0.5085898, + "opcode": "fusion", + "shape": "(f64[50,21361,1]{2,1,0}, f64[50,21361,1]{2,1,0}, f64[50,21361,1]{2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:236", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:236 (_walk_from_seed..cross)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:250 (_walk_from_seed..weights_of)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:262 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)" + ] + }, + { + "instruction": "loop_select_fusion", + "ms": 0.24081800000000012, + "opcode": "fusion", + "shape": "(pred[50,21361]{1,0}, pred[50,21361]{1,0}, s32[50,21361]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_gather_fusion.1", + "ms": 0.1629683, + "opcode": "fusion", + "shape": "s32[1068050,1,1,3]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:239", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:239 (_walk_from_seed..weights_of)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:262 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)" + ] + }, + { + "instruction": "loop_gather_fusion", + "ms": 0.14474369999999998, + "opcode": "fusion", + "shape": "s32[1068050,1,1,1]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:267", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:267 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)" + ] + }, + { + "instruction": "input_concatenate_fusion", + "ms": 0.08595939999999998, + "opcode": "fusion", + "shape": "s32[50,21361,2]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:242", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:242 (_walk_from_seed..weights_of)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:262 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)" + ] + } + ], + "mapping_matrix": [ + { + "instruction": "input_scatter_fusion.3", + "ms": 0.1373578, + "opcode": "fusion", + "shape": "f64[50,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:71", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:71 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:120 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + }, + { + "instruction": "input_reduce_fusion.36", + "ms": 0.0038560999999999995, + "opcode": "fusion", + "shape": "f64[50]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:120 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + }, + { + "instruction": "loop_and_fusion.2", + "ms": 0.0020832, + "opcode": "fusion", + "shape": "pred[46083,1]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:338", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:338 (mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:283 (Mapper.mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:91 (AbstractInversionImaging._mapping_matrix_for_convolution_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:137 (AbstractInversionImaging.operated_mapping_matrix_list)" + ] + } + ], + "psf_convolution_mapping_matrix": [ + { + "instruction": "input_scatter_fusion", + "ms": 100.85494529999998, + "opcode": "fusion", + "shape": "f64[50,1500,180,180]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.25.0", + "ms": 76.3697391, + "opcode": "fft", + "shape": "c128[50,1500,180,91]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.27.0", + "ms": 48.955093899999994, + "opcode": "fft", + "shape": "c128[50,1500,91,180]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.29.0", + "ms": 47.2849958, + "opcode": "fft", + "shape": "f64[50,1500,180,180]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_transpose_fusion.3", + "ms": 26.3531131, + "opcode": "fusion", + "shape": "c128[50,1500,91,180]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "wrapped_transpose", + "ms": 24.7378321, + "opcode": "fusion", + "shape": "c128[50,1500,180,91]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + } + ], + "regularization_H": [ + { + "instruction": "input_scatter_fusion.10", + "ms": 0.0088224, + "opcode": "fusion", + "shape": "f64[50,1500,1500]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:615", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:615 (pixel_splitted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:137 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "curvature_matrix_F": [ + { + "instruction": "cublas-lt-matmul.2", + "ms": 219.5750235, + "opcode": "custom-call", + "shape": "(f64[50,1500,1500]{2,1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "inversion_other": [ + { + "instruction": "cholesky.88", + "ms": 14.479554699999975, + "opcode": "custom-call", + "shape": "(f64[50,1500,1500]{1,2,0}, s32[50]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1078 (AbstractInversion.log_det_curvature_reg_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:347 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "cholesky.99", + "ms": 14.26143789999999, + "opcode": "custom-call", + "shape": "(f64[50,1500,1500]{1,2,0}, s32[50]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1157 (AbstractInversion.log_det_regularization_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:348 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "loop_reduce_window_fusion", + "ms": 0.0033888, + "opcode": "fusion", + "shape": "s64[94,16]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "loop_broadcast_convert_fusion", + "ms": 0.002659199999999999, + "opcode": "fusion", + "shape": "(s32[1500]{0}, s64[1500]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527 (AbstractInversion.zeroed_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:567 (AbstractInversion.solve_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:684 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_scatter_fusion.5", + "ms": 0.0023583999999999996, + "opcode": "fusion", + "shape": "s64[1500]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527 (AbstractInversion.zeroed_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:567 (AbstractInversion.solve_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:684 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_reduce_window_fusion.1", + "ms": 0.0023169, + "opcode": "fusion", + "shape": "s64[6,16]{1,0}", + "source": "", + "stack": [] + } + ] + }, + "stage_audit_note": "The HLO instructions that contributed most of each stage's milliseconds, with their full source stack. A stage row is only as good as the rules that built it; this is how a reader checks a row against the HLO instead of trusting it.", + "untraced_wall_ms": 1329.844211100135, + "reconciliation_vs_untraced_pct": 0.9099189889207662, + "wall_basis": "wall_ms is the TRACED run's wall, the run these kernel durations came from. untraced_wall_ms is the same executable without the profiler; the difference is the profiler's overhead and belongs in neither the stages nor the idle row.", + "calls": 10, + "call_split": "per-call (first-instruction recurrence)", + "call_blocks": 10, + "events": 101430, + "streams": [ + "Stream #14(MemcpyH2D,MemcpyD2H,Compute,MemcpyD2D)" + ], + "per_stage_ms": { + "border_relocator": { + "median_ms": 0.099313, + "min_ms": 0.09849699999999999, + "max_ms": 0.100256 + }, + "curvature_matrix_F": { + "median_ms": 219.634905, + "min_ms": 217.514839, + "max_ms": 220.758291 + }, + "inversion_other": { + "median_ms": 28.571857, + "min_ms": 28.316461999999987, + "max_ms": 30.690052999999974 + }, + "mapping_matrix": { + "median_ms": 0.1430735, + "min_ms": 0.14041700000000001, + "max_ms": 0.14700899999999997 + }, + "mesh_construction": { + "median_ms": 0.023119999999999998, + "min_ms": 0.022975999999999996, + "max_ms": 0.025728 + }, + "mesh_dual_areas": { + "median_ms": 0.010144, + "min_ms": 0.010048, + "max_ms": 0.010239999999999999 + }, + "mesh_locate_walk": { + "median_ms": 2.0298245, + "min_ms": 2.014867000000001, + "max_ms": 2.0363409999999997 + }, + "mesh_qhull_callback": { + "median_ms": 0.6168999999999991, + "min_ms": 0.6143399999999996, + "max_ms": 0.6185009999999994 + }, + "mesh_seed_argmin": { + "median_ms": 4.0332535000000025, + "min_ms": 4.032807000000002, + "max_ms": 4.044314000000003 + }, + "mixed_fusion": { + "median_ms": 111.22495350000003, + "min_ms": 110.48761100000004, + "max_ms": 111.87065000000001 + }, + "other": { + "median_ms": 0.5779875000000003, + "min_ms": 0.575557, + "max_ms": 0.5789170000000003 + }, + "pdip_solve": { + "median_ms": 390.49103849999887, + "min_ms": 389.5909619999995, + "max_ms": 392.1310309999969 + }, + "psf_convolution_mapping_matrix": { + "median_ms": 324.54059299999994, + "min_ms": 324.42048200000005, + "max_ms": 324.7382269999999 + }, + "regularization_H": { + "median_ms": 0.008879999999999999, + "min_ms": 0.008448, + "max_ms": 0.00912 + } + }, + "stage_order": [ + "border_relocator", + "mesh_qhull_callback", + "mesh_seed_argmin", + "mesh_locate_walk", + "mesh_dual_areas", + "mesh_construction", + "mapping_matrix", + "psf_convolution_mapping_matrix", + "curvature_matrix_F", + "regularization_H", + "pdip_solve", + "inversion_other", + "mixed_fusion", + "other" + ], + "mixed_fusion": { + "ms": 111.22495350000003, + "constituent_stage_sets": { + "curvature_matrix_F + psf_convolution_mapping_matrix": 54.75914680000001, + "curvature_reg_reduce_gather + inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": 21.536992, + "pdip_solve + psf_convolution_mapping_matrix": 11.9395463, + "data_vector_D + pdip_solve": 6.164443600000001, + "mapping_matrix + pdip_solve": 5.624442099999999, + "mapped_reconstruction + pdip_solve": 5.518662300000001, + "pdip_solve + regularization_H": 2.3664717, + "inversion_other + pdip_solve + regularization_H": 1.465763, + "inversion_other + pdip_solve": 0.5502348, + "inversion_other + regularization_H": 0.44380549999999996, + "inversion_other + mapping_matrix + mesh_construction + mesh_interpolation_weights + pdip_solve": 0.2030258, + "mapping_matrix + mesh_interpolation_weights + pdip_solve": 0.1657071, + "inversion_other + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + pdip_solve + regularization_H": 0.0623717, + "inversion_other + mesh_construction + mesh_dual_areas + mesh_interpolation_weights": 0.05656370000000001, + "inversion_other + mesh_construction + mesh_interpolation_weights": 0.05577629999999999, + "mesh_dual_areas + mesh_interpolation_weights": 0.0441669, + "grids_and_structures + mass_profile_deflections + ray_trace_data_grid": 0.037516900000000006, + "grids_and_structures + mass_profile_deflections + pdip_solve + ray_trace_data_grid": 0.032778, + "mesh_construction + pdip_solve + regularization_H": 0.029753999999999996, + "inversion_other + mapping_matrix + mesh_construction + mesh_interpolation_weights": 0.029260900000000003, + "border_relocator + pdip_solve": 0.024499400000000005, + "mesh_construction + mesh_seed_argmin + pdip_solve + regularization_H": 0.0222371, + "mesh_locate_walk + mesh_seed_argmin": 0.0186242, + "chi_squared_evidence + pdip_solve": 0.016540899999999997, + "pdip_solve + ray_trace_data_grid": 0.013324899999999994, + "inversion_other + mesh_dual_areas + mesh_locate_walk": 0.012966600000000002, + "inversion_other + mapped_reconstruction + reconstruction_scatter + regularization_H": 0.0124416, + "inversion_other + mapped_reconstruction": 0.011961699999999999, + "mesh_construction + mesh_dual_areas + mesh_interpolation_weights + pdip_solve + regularization_H": 0.0116451, + "inversion_other + mapped_reconstruction + reconstruction_scatter": 0.009727999999999999, + "inversion_other + mesh_locate_walk + mesh_seed_argmin": 0.0066175999999999995, + "mapping_matrix + pdip_solve + regularization_H": 0.005571199999999999, + "inversion_other + mesh_dual_areas + mesh_locate_walk + pdip_solve": 0.0055072, + "grids_and_structures + mass_profile_deflections + pdip_solve": 0.005296100000000001, + "inversion_other + pdip_solve + ray_trace_data_grid": 0.004816099999999998, + "inversion_other + mesh_construction + mesh_interpolation_weights + regularization_H": 0.0045152000000000005, + "inversion_other + mesh_interpolation_weights": 0.0044192, + "inversion_other + mesh_construction + regularization_H": 0.0039136, + "inversion_other + mapping_matrix": 0.0028448, + "chi_squared_evidence + inversion_other": 0.0023104 + }, + "example_kernels": { + "curvature_matrix_F + psf_convolution_mapping_matrix": [ + "loop_divide_gather_fusion" + ], + "curvature_reg_reduce_gather + inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": [ + "input_multiply_transpose_fusion" + ], + "pdip_solve + psf_convolution_mapping_matrix": [ + "loop_broadcast_fusion.6" + ], + "data_vector_D + pdip_solve": [ + "input_reduce_fusion.9", + "input_reduce_fusion.34" + ], + "mapping_matrix + pdip_solve": [ + "loop_broadcast_fusion.8", + "loop_divide_fusion" + ], + "mapped_reconstruction + pdip_solve": [ + "input_reduce_fusion.13" + ], + "pdip_solve + regularization_H": [ + "loop_broadcast_fusion", + "input_transpose_fusion.4" + ], + "inversion_other + pdip_solve + regularization_H": [ + "input_reduce_fusion.32", + "input_transpose_fusion.5", + "loop_log_fusion" + ], + "inversion_other + pdip_solve": [ + "input_reduce_fusion.11", + "input_reduce_fusion.12", + "input_transpose_fusion.2", + "input_reduce_fusion.17" + ], + "inversion_other + regularization_H": [ + "input_reduce_fusion.31", + "input_reduce_fusion.24", + "input_reduce_fusion.25", + "input_reduce_fusion.26" + ] + }, + "prorated_estimate_ms": { + "psf_convolution_mapping_matrix": 33.34934655000001, + "curvature_matrix_F": 27.379573400000005, + "pdip_solve": 21.043910605, + "mapped_reconstruction": 7.079063466666668, + "inversion_other": 5.4131195933333345, + "reconstruction_scatter": 4.313751466666667, + "curvature_reg_reduce_gather": 4.3073984, + "data_vector_D": 3.0822218000000006, + "mapping_matrix": 2.918656601666666, + "regularization_H": 1.9293286449999998, + "mesh_interpolation_weights": 0.17403526333333336, + "mesh_construction": 0.11128832166666666, + "mesh_dual_areas": 0.05464767833333333, + "ray_trace_data_grid": 0.02896795, + "grids_and_structures": 0.022465500000000003, + "mass_profile_deflections": 0.022465500000000003, + "mesh_locate_walk": 0.017216966666666667, + "mesh_seed_argmin": 0.017077241666666666, + "border_relocator": 0.012249700000000002, + "chi_squared_evidence": 0.009425649999999999 + }, + "prorated_note": "ESTIMATE ONLY \u2014 a mixed fusion's time split equally across the stages its constituents span. Never summed into the measured table, never reconciled." + }, + "other_sources_ms": { + "copy.115": 0.10156600000000023, + "copy.116": 0.10070189999999998, + "copy.117": 0.10015440000000012, + "copy.114": 0.09921340000000048, + "copy.113": 0.059130300000000045, + "copy.98": 0.03652829999999997, + "copy.99": 0.03509779999999996, + "copy.97": 0.03311080000000003, + "loop_broadcast_fusion.1": 0.0037279999999999995, + "copy.89": 0.0024384, + "copy.112": 0.0024352, + "copy.50": 0.0021792, + "loop_broadcast_fusion.4": 0.0013088000000000002 + }, + "device_span_ms": 1342.3429282, + "device_busy_ms": 1082.4040551, + "device_idle_ms": 259.9388730999999, + "largest_idle_gaps": [ + { + "gap_ms": 5.848614, + "after": "pure_callback.0", + "before": "pure_callback.0" + }, + { + "gap_ms": 5.357572, + "after": "pure_callback.0", + "before": "pure_callback.0" + }, + { + "gap_ms": 5.337795, + "after": "pure_callback.0", + "before": "pure_callback.0" + }, + { + "gap_ms": 5.263331, + "after": "pure_callback.0", + "before": "pure_callback.0" + }, + { + "gap_ms": 5.254851, + "after": "pure_callback.0", + "before": "pure_callback.0" + }, + { + "gap_ms": 5.194178, + "after": "pure_callback.0", + "before": "pure_callback.0" + }, + { + "gap_ms": 5.168002, + "after": "pure_callback.0", + "before": "pure_callback.0" + }, + { + "gap_ms": 5.147906, + "after": "pure_callback.0", + "before": "pure_callback.0" + } + ], + "kernel_ms": 1082.0058429999988, + "sum_ms": 1341.9447160999987, + "wall_ms": 1342.4494053000672, + "host_outside_span_ms": 0.10647710006719535, + "reconciliation_pct": -0.03759465333113691, + "unjoined_ms": 0.0, + "unjoined_pct": 0.0, + "other_ms": 0.5779875000000003, + "other_pct": 0.04305469522486826, + "note": "Stage rows attribute the command-buffers-OFF program (see the module docstring): kernel times are the same, the launch overhead the CUDA graphs remove is not. sum_ms = kernel rows + device_idle_ms; the residual against wall_ms is host_outside_span_ms (dispatch before the first kernel, teardown after the last).", + "per_stage_ms_per_lane": { + "border_relocator": 0.00198626, + "curvature_matrix_F": 4.3926981000000005, + "inversion_other": 0.57143714, + "mapping_matrix": 0.0028614699999999996, + "mesh_construction": 0.00046239999999999996, + "mesh_dual_areas": 0.00020288, + "mesh_locate_walk": 0.040596490000000006, + "mesh_qhull_callback": 0.012337999999999983, + "mesh_seed_argmin": 0.08066507000000005, + "mixed_fusion": 2.2244990700000007, + "other": 0.011559750000000006, + "pdip_solve": 7.809820769999977, + "psf_convolution_mapping_matrix": 6.490811859999999, + "regularization_H": 0.00017759999999999998 + }, + "per_lane_divisor": 50, + "host_callback": { + "pure_callback_span_ms": 263.37043920000013, + "qhull_ms": 229.85580340000004, + "callback_body_ms_note": "the OUTERMOST matching body event, not a sum: under the probe the body appears twice (the wrapper and the timed re-implementation it calls) and summing them would count the same work twice", + "events_by_name": { + "pure_callback.0": { + "count": 500, + "ms": 263.37043920000013 + }, + "$callback.py:815 _wrapped_callback": { + "count": 500, + "ms": 241.89058669999986 + }, + "$callback.py:224 _callback": { + "count": 500, + "ms": 240.73032149999975 + }, + "$callback.py:74 pure_callback_impl": { + "count": 500, + "ms": 240.29741289999978 + }, + "$callback.py:69 __call__": { + "count": 500, + "ms": 230.60628719999988 + }, + "$delaunay.py:162 ": { + "count": 500, + "ms": 230.2918285 + }, + "$host_callback_probe.py:225 wrapped": { + "count": 500, + "ms": 229.85580340000004 + }, + "$host_callback_probe.py:160 _timed_tri_only": { + "count": 500, + "ms": 229.47494829999997 + }, + "$callback.py:822 ": { + "count": 2000, + "ms": 0.7166660000000005 + }, + "ThenExecuteCallback:GetEventForComputeStreamSyncPoint": { + "count": 10, + "ms": 0.0254457 + }, + "$__init__.py:132 _xla_gc_callback": { + "count": 6, + "ms": 0.001897 + } + }, + "note": "HOST milliseconds per traced BATCH (the whole invocation), aggregated by name because the events nest. Not a row of the device table: the device pays for them as the idle gaps largest_idle_gaps names." + }, + "host_callback_ms": 263.37043920000013 + }, + "hlo_census": { + "status": "excluded", + "reason": "The legacy census anchors PyAutoArray source line numbers that moved after the phase-1 run. No batched attribution is published from unsupported anchors; the device-event table and wall reconciliation remain valid." + }, + "trace_split": { + "expected_calls": 10, + "executions_per_invocation": 1, + "method": "per-call (first-instruction recurrence)", + "note": "DECIDED IN CODE: the scalar arm's trace is split by trace_calls * B, so every lane's execution is its own block and the per-stage median is taken over all of them. The vmap arm's is split by trace_calls, one block per batched execution, and per_stage_ms_per_lane divides those rows by B." + } + }, + "scalar": { + "arm": "scalar", + "program": "jax.jit(fn), called B times", + "stands_for": "Nautilus(use_jax_vmap=False, use_jax_jit=True). Plain use_jax_vmap=False is UNJITTED and is NOT this arm", + "hlo_source": "jax.jit(fn).lower(lane_trees[0]) \u2014 the same program phase 1 traced", + "batch_wall_ms": 1715.0854983003228, + "wall_production_nesting_ms": 1715.0854983003228, + "wall_aot_command_buffers_on_ms": 1714.8924133998662, + "wall_aot_command_buffers_off_ms": 1727.6137147000554, + "command_buffer_delta_ms": 12.721301300189225, + "production_nesting_vs_aot_on_delta_ms": 0.1930849004565971, + "production_nesting_vs_aot_on_delta_pct": 0.011259301105297674, + "wall_per_lane_ms": 34.301709966006456, + "wall_per_lane_command_buffers_off_ms": 34.55227429400111, + "traced_batch_wall_ms": 1781.8852099997457, + "untraced_batch_wall_ms": 1729.353525100305, + "traced_wall_per_lane_ms": 35.637704199994914, + "callback_count_per_call": 50.0, + "callback_count_per_lane": 1.0, + "callback_expectation": "1 per likelihood evaluation, B per batch", + "host_qhull_ms": 232.65888820424152, + "host_tables_ms": 5.876008098493912, + "host_qhull_ms_per_lane": 4.65317776408483, + "host_tables_ms_per_lane": 0.11752016196987825, + "host_callback_probe": { + "calls": 500, + "qhull_ms_total": 2326.588882042415, + "tables_ms_total": 58.76008098493912, + "total_ms_total": 2385.3489630273543, + "qhull_ms_mean": 4.65317776408483, + "tables_ms_mean": 0.11752016196987825, + "total_ms_mean": 4.770697926054709, + "non_finite_calls": 0, + "n_points": [ + 1500 + ] + }, + "host_callback_records_first": [ + { + "n_points": 1500, + "qhull_ms": 4.853190999710932, + "tables_ms": 0.20850799774052575, + "total_ms": 5.061698997451458, + "finite": true + }, + { + "n_points": 1500, + "qhull_ms": 4.765050998685183, + "tables_ms": 0.1315000008617062, + "total_ms": 4.896550999546889, + "finite": true + }, + { + "n_points": 1500, + "qhull_ms": 4.717492000054335, + "tables_ms": 0.11971899948548526, + "total_ms": 4.8372109995398205, + "finite": true + }, + { + "n_points": 1500, + "qhull_ms": 4.774879998876713, + "tables_ms": 0.11689999882946722, + "total_ms": 4.89177999770618, + "finite": true + } + ], + "device_idle_ms": 6.74625022, + "device_idle_ms_per_lane": 6.74625022, + "trace": { + "parser": "ProfileData.from_file(xplane) + as_text() + stack_frame_index(proto field 17)", + "stage_audit": { + "mixed_fusion": [ + { + "instruction": "loop_divide_gather_fusion", + "ms": 1.0175930819999996, + "opcode": "fusion", + "shape": "(f64[15361,1,1,1500]{3,2,1,0}, f64[15361,1,1,1500]{3,2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_broadcast_fusion.4", + "ms": 0.22712514000000011, + "opcode": "fusion", + "shape": "f64[1500,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_reduce_fusion.5", + "ms": 0.12176276800000001, + "opcode": "fusion", + "shape": "f64[92,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123 (data_vector_via_blurred_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:67 (InversionImagingMapping.data_vector)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:699 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_reduce_fusion.9", + "ms": 0.11505236400000013, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163 (mapped_reconstructed_data_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:120 (InversionImagingMapping._mapped_reconstructed_data_dict_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:196 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "loop_broadcast_fusion.2", + "ms": 0.11096660999999992, + "opcode": "fusion", + "shape": "f64[15361,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:342", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:342 (mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:283 (Mapper.mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:91 (AbstractInversionImaging._mapping_matrix_for_convolution_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:137 (AbstractInversionImaging.operated_mapping_matrix_list)" + ] + }, + { + "instruction": "input_multiply_transpose_fusion", + "ms": 0.10992808600000005, + "opcode": "fusion", + "shape": "(f64[1500,1500]{1,0}, f64[1500,1500]{1,0}, f64[1500,1500]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:237 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:274 (_certified_positive_only_from)" + ] + } + ], + "border_relocator": [ + { + "instruction": "eigh.45", + "ms": 0.07479145000000191, + "opcode": "custom-call", + "shape": "(f64[2,2]{0,1}, f64[2]{0}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "custom-call.2", + "ms": 0.007953370000000022, + "opcode": "custom-call", + "shape": "(f64[2,2]{1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_reduce_fusion.10", + "ms": 0.005808486000000006, + "opcode": "fusion", + "shape": "(f64[], f64[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:269", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:269 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_add_fusion.3", + "ms": 0.003513809999999997, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:423 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:208 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_add_fusion.5", + "ms": 0.0034463339999999927, + "opcode": "fusion", + "shape": "f64[1500]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:458 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_concatenate_fusion.12", + "ms": 0.0024006459999999937, + "opcode": "fusion", + "shape": "f64[392,2]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:238", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:238 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + } + ], + "mesh_construction": [ + { + "instruction": "input_concatenate_fusion.7", + "ms": 0.00206010400000001, + "opcode": "fusion", + "shape": "f64[1500,2]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:820", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:820 (InterpolatorDelaunay.mesh_grid_xy)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:847 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + } + ], + "mesh_qhull_callback": [ + { + "instruction": "pure_callback.4", + "ms": 0.010668695999999964, + "opcode": "custom-call", + "shape": "(s32[3000,3]{1,0}, s32[3000,3]{1,0}, s32[1500]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:161", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:161 (_jax_delaunay_tables)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:405 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + } + ], + "other": [ + { + "instruction": "copy.80", + "ms": 0.042013890000002906, + "opcode": "copy", + "shape": "f64[1,1024,2]{2,1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.48", + "ms": 0.01694752399999989, + "opcode": "copy", + "shape": "s32[21361]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.53", + "ms": 0.0020209240000000064, + "opcode": "copy", + "shape": "s64[1500]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.39", + "ms": 0.0016531839999999976, + "opcode": "copy", + "shape": "s32[]", + "source": "", + "stack": [] + }, + { + "instruction": "copy.78", + "ms": 0.001652293999999998, + "opcode": "copy", + "shape": "s64[]", + "source": "", + "stack": [] + }, + { + "instruction": "copy.79", + "ms": 0.0016482640000000034, + "opcode": "copy", + "shape": "s32[]", + "source": "", + "stack": [] + } + ], + "mesh_seed_argmin": [ + { + "instruction": "input_reduce_fusion", + "ms": 0.15265030800001345, + "opcode": "fusion", + "shape": "(f64[1024]{0}, s64[1024]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:191", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:191 (_nearest_vertex_seed_from..argmin_chunk)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)" + ] + }, + { + "instruction": "loop_dynamic_update_slice_fusion", + "ms": 0.04134029799999785, + "opcode": "fusion", + "shape": "s32[21,1024]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_add_fusion", + "ms": 0.03189977599999631, + "opcode": "fusion", + "shape": "s64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_broadcast_fusion", + "ms": 0.0019563560000000224, + "opcode": "fusion", + "shape": "s32[21,1024]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "pdip_solve": [ + { + "instruction": "cholesky.50", + "ms": 7.369648399999985, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "triangular-solve.1", + "ms": 1.3328387779999877, + "opcode": "custom-call", + "shape": "(f64[1500,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "triangular-solve", + "ms": 1.1379613320000173, + "opcode": "custom-call", + "shape": "(f64[1500,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "cholesky.70", + "ms": 0.8937893680000013, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:297 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:274 (_certified_positive_only_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:496 (reconstruction_positive_only_from)" + ] + }, + { + "instruction": "cholesky.60", + "ms": 0.8653709439999951, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:237 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:274 (_certified_positive_only_from)" + ] + }, + { + "instruction": "input_transpose_fusion", + "ms": 0.2912085159999993, + "opcode": "fusion", + "shape": "f64[1500,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + } + ], + "regularization_H": [ + { + "instruction": "input_scatter_fusion.10", + "ms": 0.002067654000000009, + "opcode": "fusion", + "shape": "f64[1500,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:615", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:615 (pixel_splitted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:137 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_concatenate_fusion.9", + "ms": 0.0018498079999999884, + "opcode": "fusion", + "shape": "pred[3]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:91", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:91 (split_points_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:410 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + }, + { + "instruction": "input_concatenate_fusion.8", + "ms": 0.0018417339999999905, + "opcode": "fusion", + "shape": "pred[3]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:93", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:93 (split_points_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:410 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + }, + { + "instruction": "input_concatenate_fusion", + "ms": 0.0017630739999999877, + "opcode": "fusion", + "shape": "s32[1500,2]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:615", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:615 (pixel_splitted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:137 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_concatenate_fusion.10", + "ms": 0.0016839700000000006, + "opcode": "fusion", + "shape": "pred[3]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:90", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:90 (split_points_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:410 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + }, + { + "instruction": "input_concatenate_fusion.11", + "ms": 0.0015004100000000015, + "opcode": "fusion", + "shape": "pred[3]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:88", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:88 (split_points_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:410 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + } + ], + "mesh_locate_walk": [ + { + "instruction": "loop_reduce_fusion", + "ms": 0.025697353999999336, + "opcode": "fusion", + "shape": "(f64[21361]{0}, s64[21361]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:264", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:264 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:264 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)" + ] + }, + { + "instruction": "input_reduce_fusion.1", + "ms": 0.02505042399999984, + "opcode": "fusion", + "shape": "pred[196]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:288", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:288 (_walk_from_seed..cond)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)" + ] + }, + { + "instruction": "loop_or_select_fusion", + "ms": 0.023336122000000445, + "opcode": "fusion", + "shape": "(s32[21361]{0}, pred[21361]{0}, pred[21361]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:270", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:270 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)" + ] + }, + { + "instruction": "loop_select_fusion", + "ms": 0.0200991939999998, + "opcode": "fusion", + "shape": "s32[21361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:242", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:242 (_walk_from_seed..weights_of)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:262 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)" + ] + }, + { + "instruction": "input_reduce_fusion.2", + "ms": 0.01618481999999954, + "opcode": "fusion", + "shape": "pred[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:288", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:288 (_walk_from_seed..cond)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)" + ] + }, + { + "instruction": "while.20", + "ms": 0.014477788000000524, + "opcode": "while", + "shape": "(s32[], s32[21361]{0}, pred[21361]{0}, pred[21361]{0}, s32[3000,3]{1,0}, /*index=5*/f64[1500,2]{1,0}, f64[21361,2]{1,0}, s32[3000,3]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "psf_convolution_mapping_matrix": [ + { + "instruction": "input_scatter_fusion", + "ms": 1.9831097979999994, + "opcode": "fusion", + "shape": "f64[1500,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.19.0", + "ms": 1.760859012000003, + "opcode": "fft", + "shape": "f64[1500,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.15.0", + "ms": 1.3666725080000002, + "opcode": "fft", + "shape": "c128[1500,180,91]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.17.0", + "ms": 0.9791528720000001, + "opcode": "fft", + "shape": "c128[1500,91,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_transpose_fusion.2", + "ms": 0.5137495439999998, + "opcode": "fusion", + "shape": "c128[1500,91,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "wrapped_transpose", + "ms": 0.4997207419999994, + "opcode": "fusion", + "shape": "c128[1500,180,91]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + } + ], + "inversion_other": [ + { + "instruction": "cholesky.80", + "ms": 0.8974853480000059, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1078 (AbstractInversion.log_det_curvature_reg_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:347 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "cholesky.90", + "ms": 0.8934377540000045, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1157 (AbstractInversion.log_det_regularization_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:348 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "loop_reduce_window_fusion", + "ms": 0.0028813000000000102, + "opcode": "fusion", + "shape": "s64[6,16]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "loop_reduce_window_fusion.1", + "ms": 0.002790532000000021, + "opcode": "fusion", + "shape": "s64[94,16]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "loop_broadcast_convert_fusion", + "ms": 0.002189315999999998, + "opcode": "fusion", + "shape": "(s32[1500]{0}, s64[1500]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527 (AbstractInversion.zeroed_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:567 (AbstractInversion.solve_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:684 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_scatter_fusion.5", + "ms": 0.0019471320000000172, + "opcode": "fusion", + "shape": "s64[1500]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527 (AbstractInversion.zeroed_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:567 (AbstractInversion.solve_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:684 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "mapping_matrix": [ + { + "instruction": "input_reduce_fusion.23", + "ms": 0.0029120620000000212, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:120 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + } + ], + "curvature_matrix_F": [ + { + "instruction": "cublas-lt-matmul.2", + "ms": 4.288411013999998, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "chi_squared_evidence": [ + { + "instruction": "loop_multiply_fusion", + "ms": 0.0030087840000000096, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:300", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:300 (AbstractNDArray.__pow__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:60 (unwrap_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:35 (to_new_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:78 (chi_squared_map_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:78 (AbstractFit.chi_squared_map)" + ] + } + ] + }, + "stage_audit_note": "The HLO instructions that contributed most of each stage's milliseconds, with their full source stack. A stage row is only as good as the rules that built it; this is how a reader checks a row against the HLO instead of trusting it.", + "untraced_wall_ms": 34.5870705020061, + "reconciliation_vs_untraced_pct": -9.032788081386911, + "wall_basis": "wall_ms is the TRACED run's wall, the run these kernel durations came from. untraced_wall_ms is the same executable without the profiler; the difference is the profiler's overhead and belongs in neither the stages nor the idle row.", + "calls": 500, + "call_split": "per-call (first-instruction recurrence)", + "call_blocks": 500, + "events": 246200, + "streams": [ + "Stream #14(MemcpyD2D,MemcpyD2H,Compute,MemcpyH2D,Memset)" + ], + "per_stage_ms": { + "border_relocator": { + "median_ms": 0.10140749999999998, + "min_ms": 0.10057100000000001, + "max_ms": 0.10249700000000003 + }, + "chi_squared_evidence": { + "median_ms": 0.002976, + "min_ms": 0.002848, + "max_ms": 0.003424 + }, + "curvature_matrix_F": { + "median_ms": 4.2873885000000005, + "min_ms": 4.269005, + "max_ms": 4.356782 + }, + "inversion_other": { + "median_ms": 1.8000515, + "min_ms": 1.780275, + "max_ms": 1.8460999999999999 + }, + "mapping_matrix": { + "median_ms": 0.002912, + "min_ms": 0.002879, + "max_ms": 0.002945 + }, + "memset": { + "median_ms": 0.023711499999999996, + "min_ms": 0.009951999999999999, + "max_ms": 0.05424000000000001 + }, + "mesh_construction": { + "median_ms": 0.002048, + "min_ms": 0.002047, + "max_ms": 0.002081 + }, + "mesh_locate_walk": { + "median_ms": 0.150146, + "min_ms": 0.13200199999999998, + "max_ms": 0.18605200000000013 + }, + "mesh_qhull_callback": { + "median_ms": 0.010624, + "min_ms": 0.010496, + "max_ms": 0.0112 + }, + "mesh_seed_argmin": { + "median_ms": 0.22784400000000016, + "min_ms": 0.22733000000000012, + "max_ms": 0.22825900000000016 + }, + "mixed_fusion": { + "median_ms": 1.9871890000000003, + "min_ms": 1.9793150000000002, + "max_ms": 1.9996699999999998 + }, + "other": { + "median_ms": 0.065856, + "min_ms": 0.063488, + "max_ms": 0.07020900000000001 + }, + "pdip_solve": { + "median_ms": 8.940318000000001, + "min_ms": 2.4265080000000006, + "max_ms": 23.48978300000001 + }, + "psf_convolution_mapping_matrix": { + "median_ms": 7.1034515, + "min_ms": 7.087626, + "max_ms": 7.119909000000001 + }, + "regularization_H": { + "median_ms": 0.01072, + "min_ms": 0.010496, + "max_ms": 0.011231999999999999 + } + }, + "stage_order": [ + "border_relocator", + "mesh_qhull_callback", + "mesh_seed_argmin", + "mesh_locate_walk", + "mesh_construction", + "mapping_matrix", + "psf_convolution_mapping_matrix", + "curvature_matrix_F", + "regularization_H", + "pdip_solve", + "chi_squared_evidence", + "inversion_other", + "mixed_fusion", + "other", + "memset" + ], + "mixed_fusion": { + "ms": 1.9871890000000003, + "constituent_stage_sets": { + "curvature_matrix_F + psf_convolution_mapping_matrix": 1.0175930819999996, + "pdip_solve + psf_convolution_mapping_matrix": 0.22712514000000011, + "data_vector_D + pdip_solve": 0.12545822000000006, + "mapped_reconstruction + pdip_solve": 0.11505236400000013, + "mapping_matrix + pdip_solve": 0.11334101599999974, + "curvature_reg_reduce_gather + inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": 0.10992808600000005, + "pdip_solve + regularization_H": 0.045231470000000114, + "inversion_other + pdip_solve + regularization_H": 0.024255044000000007, + "inversion_other + pdip_solve": 0.022968676000000212, + "inversion_other + mapping_matrix + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin + pdip_solve": 0.021231599999999986, + "inversion_other + mesh_construction + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin + pdip_solve + regularization_H": 0.01925402400000005, + "inversion_other + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + pdip_solve + regularization_H": 0.014702948, + "pdip_solve + ray_trace_data_grid": 0.013606675999999918, + "border_relocator + pdip_solve": 0.013358111999999946, + "inversion_other + mapping_matrix + mesh_construction + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin": 0.011698335999999995, + "grids_and_structures + mass_profile_deflections + pdip_solve": 0.009939747999999986, + "grids_and_structures + mass_profile_deflections + pdip_solve + ray_trace_data_grid": 0.009199003999999995, + "chi_squared_evidence + pdip_solve": 0.007668511999999986, + "inversion_other + mesh_construction + mesh_seed_argmin + pdip_solve + regularization_H": 0.007261795999999996, + "inversion_other + mesh_dual_areas + mesh_locate_walk": 0.006785176000000202, + "inversion_other + mesh_construction + pdip_solve + regularization_H": 0.006604364000000041, + "inversion_other + pdip_solve + ray_trace_data_grid": 0.005424466000000006, + "grids_and_structures + mass_profile_deflections + ray_trace_data_grid": 0.005373780000000001, + "inversion_other + regularization_H": 0.004859989999999979, + "inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": 0.0048386199999999905, + "inversion_other + mapped_reconstruction + pdip_solve": 0.003776149999999994, + "mapping_matrix + pdip_solve + regularization_H": 0.0034788620000000005, + "inversion_other + mesh_construction + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin": 0.0031791360000000056, + "inversion_other + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin": 0.002958415999999999, + "inversion_other + mesh_construction + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin + regularization_H": 0.002713479999999986, + "inversion_other + mesh_dual_areas + mesh_locate_walk + pdip_solve": 0.0025845160000000037, + "inversion_other + mesh_locate_walk + mesh_seed_argmin": 0.002525331999999992, + "inversion_other + mesh_interpolation_weights": 0.002151244000000005, + "chi_squared_evidence + inversion_other": 0.001959109999999997 + }, + "example_kernels": { + "curvature_matrix_F + psf_convolution_mapping_matrix": [ + "loop_divide_gather_fusion" + ], + "pdip_solve + psf_convolution_mapping_matrix": [ + "loop_broadcast_fusion.4" + ], + "data_vector_D + pdip_solve": [ + "input_reduce_fusion.5", + "input_reduce_fusion.21" + ], + "mapped_reconstruction + pdip_solve": [ + "input_reduce_fusion.9" + ], + "mapping_matrix + pdip_solve": [ + "loop_broadcast_fusion.2", + "loop_divide_fusion" + ], + "curvature_reg_reduce_gather + inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": [ + "input_multiply_transpose_fusion" + ], + "pdip_solve + regularization_H": [ + "loop_select_fusion.2", + "input_transpose_fusion.3" + ], + "inversion_other + pdip_solve + regularization_H": [ + "input_transpose_fusion.4" + ], + "inversion_other + pdip_solve": [ + "input_reduce_fusion.7", + "loop_log_fusion", + "input_reduce_fusion.8", + "input_reduce_fusion.12" + ], + "inversion_other + mapping_matrix + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin + pdip_solve": [ + "input_scatter_fusion.6", + "input_scatter_fusion.3" + ] + }, + "prorated_estimate_ms": { + "psf_convolution_mapping_matrix": 0.6223591109999999, + "curvature_matrix_F": 0.5087965409999998, + "pdip_solve": 0.39462946825714296, + "mapped_reconstruction": 0.08198017086666673, + "inversion_other": 0.06855563279047636, + "data_vector_D": 0.06272911000000003, + "mapping_matrix": 0.0624338013333332, + "regularization_H": 0.043047128390476246, + "reconstruction_scatter": 0.023195272200000006, + "curvature_reg_reduce_gather": 0.02198561720000001, + "mesh_construction": 0.01448933225714287, + "ray_trace_data_grid": 0.012702504333333295, + "mesh_locate_walk": 0.012685022390476258, + "mesh_interpolation_weights": 0.012461504057142863, + "mesh_seed_argmin": 0.011229527257142857, + "mesh_dual_areas": 0.008505365000000067, + "grids_and_structures": 0.007404260333333328, + "mass_profile_deflections": 0.007404260333333328, + "border_relocator": 0.006679055999999973, + "chi_squared_evidence": 0.004813810999999992 + }, + "prorated_note": "ESTIMATE ONLY \u2014 a mixed fusion's time split equally across the stages its constituents span. Never summed into the measured table, never reconciled." + }, + "other_sources_ms": { + "copy.80": 0.042013890000002906, + "copy.48": 0.01694752399999989, + "copy.53": 0.0020209240000000064, + "copy.39": 0.0016531839999999976, + "copy.78": 0.001652293999999998, + "copy.79": 0.0016482640000000034 + }, + "device_span_ms": 35.635434496, + "device_busy_ms": 28.889184276, + "device_idle_ms": 6.74625022, + "largest_idle_gaps": [ + { + "gap_ms": 5.648069, + "after": "pure_callback.4", + "before": "pure_callback.4" + }, + { + "gap_ms": 0.035071, + "after": "pure_callback.4", + "before": "copy.79" + }, + { + "gap_ms": 0.030176, + "after": "copy.48", + "before": "input_reduce_fusion.1" + }, + { + "gap_ms": 0.029056, + "after": "input_reduce_fusion", + "before": "loop_dynamic_update_slice_fusion" + }, + { + "gap_ms": 0.028351, + "after": "input_concatenate_fusion.7", + "before": "pure_callback.4" + }, + { + "gap_ms": 0.025535, + "after": "while.26", + "before": "input_reduce_select_fusion" + }, + { + "gap_ms": 0.023584, + "after": "input_scatter_fusion.7", + "before": "loop_reduce_fusion.1" + }, + { + "gap_ms": 0.021184, + "after": "while.26", + "before": "loop_select_fusion.5" + } + ], + "kernel_ms": 24.716643500000004, + "sum_ms": 31.462893720000004, + "wall_ms": 35.637704199994914, + "host_outside_span_ms": 0.00226970399491222, + "reconciliation_pct": -11.714588730425305, + "unjoined_ms": 0.0, + "unjoined_pct": 0.0, + "other_ms": 0.065856, + "other_pct": 0.18479304848152758, + "note": "Stage rows attribute the command-buffers-OFF program (see the module docstring): kernel times are the same, the launch overhead the CUDA graphs remove is not. sum_ms = kernel rows + device_idle_ms; the residual against wall_ms is host_outside_span_ms (dispatch before the first kernel, teardown after the last).", + "per_stage_ms_per_lane": { + "border_relocator": 0.10140749999999998, + "chi_squared_evidence": 0.002976, + "curvature_matrix_F": 4.2873885000000005, + "inversion_other": 1.8000515, + "mapping_matrix": 0.002912, + "memset": 0.023711499999999996, + "mesh_construction": 0.002048, + "mesh_locate_walk": 0.150146, + "mesh_qhull_callback": 0.010624, + "mesh_seed_argmin": 0.22784400000000016, + "mixed_fusion": 1.9871890000000003, + "other": 0.065856, + "pdip_solve": 8.940318000000001, + "psf_convolution_mapping_matrix": 7.1034515, + "regularization_H": 0.01072 + }, + "per_lane_divisor": 1, + "host_callback": { + "pure_callback_span_ms": 256.14753520000005, + "qhull_ms": 239.00725419999998, + "callback_body_ms_note": "the OUTERMOST matching body event, not a sum: under the probe the body appears twice (the wrapper and the timed re-implementation it calls) and summing them would count the same work twice", + "events_by_name": { + "pure_callback.4": { + "count": 500, + "ms": 256.14753520000005 + }, + "$callback.py:815 _wrapped_callback": { + "count": 500, + "ms": 251.73777559999988 + }, + "$callback.py:224 _callback": { + "count": 500, + "ms": 250.54260450000004 + }, + "$callback.py:74 pure_callback_impl": { + "count": 500, + "ms": 250.10687889999983 + }, + "$callback.py:69 __call__": { + "count": 500, + "ms": 239.77683659999997 + }, + "$delaunay.py:162 ": { + "count": 500, + "ms": 239.44376130000003 + }, + "$host_callback_probe.py:225 wrapped": { + "count": 500, + "ms": 239.00725419999998 + }, + "$host_callback_probe.py:160 _timed_tri_only": { + "count": 500, + "ms": 238.59765389999987 + }, + "ThenExecuteCallback:GetEventForComputeStreamSyncPoint": { + "count": 500, + "ms": 1.0067121000000008 + }, + "$callback.py:822 ": { + "count": 2000, + "ms": 0.7241742000000015 + }, + "$__init__.py:132 _xla_gc_callback": { + "count": 8, + "ms": 0.0031368999999999998 + } + }, + "note": "HOST milliseconds per traced BATCH (the whole invocation), aggregated by name because the events nest. Not a row of the device table: the device pays for them as the idle gaps largest_idle_gaps names." + }, + "host_callback_ms": 256.14753520000005 + }, + "hlo_census": { + "status": "excluded", + "reason": "The legacy census anchors PyAutoArray source line numbers that moved after the phase-1 run. No batched attribution is published from unsupported anchors; the device-event table and wall reconciliation remain valid." + }, + "trace_split": { + "expected_calls": 500, + "executions_per_invocation": 50, + "method": "per-call (first-instruction recurrence)", + "note": "DECIDED IN CODE: the scalar arm's trace is split by trace_calls * B, so every lane's execution is its own block and the per-stage median is taken over all of them. The vmap arm's is split by trace_calls, one block per batched execution, and per_stage_ms_per_lane divides those rows by B." + } + } + }, + "certification_report": { + "source": "vmap arm, library solve observed through its stats= out-dict (PyAutoArray #566) and jax.debug.callback(..., ordered=True); ordered because the unordered batching rule returns the lanes permuted. Untimed, separately compiled; max rel diff of its log likelihoods vs the timed arm's: 4.866e-05", + "rows": 50, + "pdip_iter": "NOT AVAILABLE per lane without changing library numerics. The fallback branch calls the library's own reconstruction_positive_only_from, which returns the solution alone \u2014 jax_nnls.solve_nnls' iteration count is discarded inside the library's custom_vjp primal. The PDIP while_loop's cost is in the pdip_solve stage row of each arm's device table instead, which is a max-over-lanes quantity under vmap because every lane runs the same fixed kernel sequence.", + "passes_semantics": "library `passes`: restricted active-set passes run (jax_active_set.solve_certified)" + }, + "lane_construction": { + "draws_sha256": "246b41aea1e860763cb7b206a7f43d5e3145e5c63c8c9df4985518ebf778c02e", + "lane_rows": [ + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349 + ], + "calls": [ + 15, + 16, + 17 + ], + "stage": "pix1", + "regularization_range": { + "galaxies.source.pixelization.regularization.inner_coefficient": { + "min": 2.1069031993440453e-06, + "max": 4381.27190482627 + }, + "galaxies.source.pixelization.regularization.outer_coefficient": { + "min": 2.002369440956339e-06, + "max": 350.8013530115919 + }, + "galaxies.source.pixelization.regularization.signal_scale": { + "min": 0.015870361716511128, + "max": 0.971901829834744 + } + }, + "phases": [ + "exploration" + ], + "window_rule": "nautilus_batches.timed_window: consecutive captured calls, in call order, from the FIRST call that is not a prior batch, concatenated and truncated to B; at B == n_batch exactly one real Nautilus batch. Falls back to the latest B lanes if the post-prior lanes run out; never repeats a lane.", + "note": "Lane k is captured lane lane_rows[k]: the mass AND shear of a real Nautilus proposal (nautilus_batch_capture.py), lens light fixed at S3, the S3 light-subtracted dataset shared by every lane. `offsets` in the lane table are the mass offsets from the fiducial; the shear is in the capture file." + }, + "captured": { + "batches_path": "/mnt/ral/jnightin/autolens_profiling_wt/certified-solver-phase-c1-lane-rate/results/breakdown/imaging/nautilus_batches_delaunay_pix1.npz", + "batches_sha256": "e71a5e23026b342d1ff4359b8fb914a87980d8aea0060659d2334dcfa3215c00", + "schema_version": 2, + "n_calls": 932, + "n_lanes": 18640, + "call_sizes_seen": [ + 20 + ], + "calls_by_phase": { + "prior": 15, + "exploration": 917 + }, + "parameter_paths": [ + "galaxies.source.pixelization.regularization.inner_coefficient", + "galaxies.source.pixelization.regularization.outer_coefficient", + "galaxies.source.pixelization.regularization.signal_scale", + "galaxies.lens.mass.centre.centre_0", + "galaxies.lens.mass.centre.centre_1", + "galaxies.lens.mass.einstein_radius", + "galaxies.lens.mass.ell_comps.ell_comps_0", + "galaxies.lens.mass.ell_comps.ell_comps_1", + "galaxies.lens.shear.gamma_1", + "galaxies.lens.shear.gamma_2" + ], + "stage": "pix1", + "regularization": { + "class": "AdaptSplit", + "free": true, + "priors": { + "inner_coefficient": [ + "LogUniform", + 1e-06, + 1000000.0 + ], + "outer_coefficient": [ + "LogUniform", + 1e-06, + 1000000.0 + ], + "signal_scale": [ + "Uniform", + 0.0, + 1.0 + ] + }, + "priors_source": "PyAutoGalaxy packaged config/priors/regularization (adapt_split.yaml / constant.yaml); adapt_split.yaml is identical to euclid_strong_lens_modeling_pipeline/config/priors/regularization/adapt_split.yaml" + }, + "nautilus": { + "departures_from_production": [ + "mass/shear priors are the phase-B cell's Gaussians, not chained from source_lp", + "no positions likelihood", + "the cell's mesh (Hilbert 1500, weight_power 1) in both stages; source_pix_2 redraws a 500-vertex Hilbert grid at weight_power 3.5", + "seeded (production passes no seed)", + "quick updates disabled (iterations_per_quick_update=1e12; render-only)", + "NullPaths: no output directory, so no checkpoint and one Sampler.run call", + "post-fit perform_update skipped (samples / latent variables never built)" + ], + "n_batch": 20, + "n_like_max": 40000, + "n_live": 150, + "number_of_cores": 1, + "production_reference": "euclid_strong_lens_modeling_pipeline/scripts/full_model.py source_pix_1 (n_live=150) / source_pix_2 (n_live=75): af.Nautilus(n_batch=20, **SettingsSearch.search_dict) with use_jax_vmap=True and number_of_cores=1 (SettingsSearch defaults)", + "production_stage": "source_pix_1", + "seed": 1, + "stage": "pix1", + "use_jax_vmap": true, + "version": "1.0.5" + }, + "capture_fit_status": "sampling complete (n_like_max or convergence); post-fit result skipped", + "capture_library_revisions": { + "PyAutoArray": { + "head": "7fa8d2714f7da43fec2b23c31bff580764831670", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoArray" + }, + "PyAutoFit": { + "head": "a736840127be7a3c21e15a5c945e94d8f1082983", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoFit" + }, + "PyAutoGalaxy": { + "head": "70a61e26cd715cefe7012a38285698091246a8a4", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy" + }, + "PyAutoLens": { + "head": "86054bbc19baa2f710a12e04a94fa27ab37cc354", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoLens" + }, + "PyAutoNerves": { + "head": "1fa613aa8d89a79613009fb66f5b4e2d21deb57a", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoNerves" + } + }, + "fingerprint_check": { + "fields": [ + "mesh", + "source_pixels", + "dataset_sha256", + "regularization_class", + "regularization_s0_fiducial", + "border_relocator", + "use_mixed_precision", + "log_evidence_s3_library" + ], + "not_identity": "the regularization coefficients: free per lane since the capture frees them", + "log_evidence_s3_library_rel_diff": 0.0, + "passed": true + }, + "timed_window_vs_capture_pdip": { + "reference": "the capture's own figure of merit (library PDIP, Fitness.call_wrap jax.jit(jax.vmap(call)) over parameter vectors) for the same lanes", + "compared_against": "this cell's jit(vmap) library-PDIP reference", + "n_compared": 50, + "max_rel_diff": NaN, + "max_abs_diff_nats": NaN, + "gated": false, + "note": "RECORDED, NOT GATED: proves the lane trees rebuilt here are the models the sampler evaluated (a wrong parameter mapping shows up as nats, not 1e-10)." + } + }, + "matched": { + "vmap_wall_per_lane_ms": 26.698250825997093, + "scalar_wall_per_lane_ms": 34.301709966006456, + "speedup_vmap_over_scalar": 1.2847924079208062, + "note": "Both walls are the PRODUCTION nesting of their arm, measured in one process on the same B lanes with the SAME library Settings (no injection). A speedup below 1 means the batch is slower per lane than B sequential jitted calls." + }, + "solver_source": "library", + "solver": "certified", + "certified_fallback": "none", + "certified_pass_budget": 16, + "certified_pass_budget_basis": "config default (Settings().certified_pass_budget)", + "certified_tau_rel": 1e-09, + "solver_used": "certified", + "solver_check": { + "solver_used": "certified", + "solver_used_source": "AbstractInversion.positive_only_solver_used on the fiducial S3 inversion, built eagerly on the JAX backend (AnalysisImaging(use_jax=True).fit_from) with the arms' Settings", + "reference_solver_used": "pdip", + "traced_solver_kwargs_jax": [ + "certified" + ], + "observed_calls_jax": 1, + "report_rows": 50, + "report_vs_timed_arm_max_rel_diff": 4.8661620603430036e-05 + }, + "lanes_certified": [ + false, + false, + true, + true, + false, + true, + true, + true, + true, + true, + true, + false, + false, + true, + true, + false, + false, + false, + false, + false, + true, + true, + false, + true, + true, + true, + true, + true, + true, + false, + true, + false, + false, + false, + true, + false, + false, + true, + false, + true, + false, + false, + true, + true, + true, + false, + false, + false, + false, + true + ], + "lanes_passes": [ + 16, + 16, + 1, + 3, + 16, + 10, + 3, + 9, + 10, + 2, + 5, + 16, + 16, + 9, + 15, + 16, + 16, + 16, + 16, + 16, + 13, + 6, + 16, + 13, + 13, + 0, + 1, + 11, + 3, + 16, + 11, + 16, + 16, + 16, + 2, + 16, + 16, + 15, + 16, + 4, + 16, + 16, + 6, + 2, + 8, + 16, + 16, + 16, + 16, + 2 + ], + "uncertified_lanes": 24, + "per_lane_certification_note": "certified / passes come from the library's own solve through its stats= out-dict (PyAutoArray #566): passes is the number of restricted active-set passes the library ran (0 when the unconstrained solve was already non-negative), certified is its KKT certificate. With certified_fallback=pdip a False lane returned the PDIP solution; with none it returned the last uncertified iterate. null for a library-PDIP row (no certificate).", + "gate": { + "pre_registered": true, + "gated": [ + "per lane: jit(vmap) arm vs jit(vmap) library PDIP <= lane_rtol relative", + "per lane: scalar jit arm vs scalar jit library PDIP <= lane_rtol relative" + ], + "recorded_not_gated": [ + "per lane: jit(vmap) arm vs scalar jit arm (rel_diff, abs_diff_nats)", + "per lane: jit(vmap) library PDIP vs scalar jit library PDIP", + "uncertified_lanes (certified_fallback=none rows)" + ], + "lanes_failed": 36, + "passed": false, + "policy_eligible": false, + "note": "Pre-registered before submission (module docstring; submit header). Phase 3 (results/notes/hst_gpu_residue_phase3_psf_2026_09.md) placed phase 2's ~2.5e-9 certified-vs-PDIP residual BETWEEN the jit(vmap) and scalar-jit compositions, not in the solver \u2014 so each arm is gated against the library-PDIP reference of its OWN composition, and the cross-composition difference is recorded with its nats. A certified_fallback=none row is policy-eligible only if every lane certifies AND passes the gate. Timing is never gated." + }, + "library_revisions": { + "PyAutoArray": { + "head": "3de624b5b91a4efa130dc3cb0a3a0f06f85025a3", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoArray", + "module_file": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/__init__.py" + }, + "PyAutoFit": { + "head": "dd9fbe0aab60c4a57702b1444ca031b317c91331", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoFit", + "module_file": "/mnt/ral/jnightin/PyAuto/PyAutoFit/autofit/__init__.py" + }, + "PyAutoGalaxy": { + "head": "70a61e26cd715cefe7012a38285698091246a8a4", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy", + "module_file": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/__init__.py" + }, + "PyAutoLens": { + "head": "86054bbc19baa2f710a12e04a94fa27ab37cc354", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoLens", + "module_file": "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/__init__.py" + }, + "autoarray_file": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/__init__.py" + } + }, + "headline_arm_note": "`trace`, `hlo_census`, `command_buffers` and `trace_timing` above describe the scalar arm \u2014 the program phase 1 traced. Both arms' full blocks, the lane table and the matched comparison are under `vmap`." +} \ No newline at end of file diff --git a/results/breakdown/imaging/fixed_light_trace_delaunay_jitvmap50_captured_pix1_libcertified_fboff_b16_hpc_a100_fp64_fixed_light_trace.png b/results/breakdown/imaging/fixed_light_trace_delaunay_jitvmap50_captured_pix1_libcertified_fboff_b16_hpc_a100_fp64_fixed_light_trace.png new file mode 100644 index 000000000..272fb59d9 Binary files /dev/null and b/results/breakdown/imaging/fixed_light_trace_delaunay_jitvmap50_captured_pix1_libcertified_fboff_b16_hpc_a100_fp64_fixed_light_trace.png differ diff --git a/results/breakdown/imaging/fixed_light_trace_delaunay_jitvmap50_captured_pix1_libcertified_fbon_b16_hpc_a100_fp64_fixed_light_trace.json b/results/breakdown/imaging/fixed_light_trace_delaunay_jitvmap50_captured_pix1_libcertified_fbon_b16_hpc_a100_fp64_fixed_light_trace.json new file mode 100644 index 000000000..0f88e3a16 --- /dev/null +++ b/results/breakdown/imaging/fixed_light_trace_delaunay_jitvmap50_captured_pix1_libcertified_fbon_b16_hpc_a100_fp64_fixed_light_trace.json @@ -0,0 +1,8483 @@ +{ + "device": { + "backend": "gpu", + "device": "cuda:0", + "hostname": "euclid-ral-gpu-1", + "xla_flags": "--xla_disable_hlo_passes=constant_folding --xla_gpu_autotune_level=0 --xla_gpu_enable_triton_gemm=false", + "omp_num_threads": null, + "cpu_count": 124, + "jax_compilation_cache_dir": "/mnt/ral/jnightin/autolens_profiling_wt/certified-solver-phase-c1-lane-rate/output/jax_cache/fixed_light_lanerate_delaunay_pix1_time_50_certified_on_350768_15", + "autotune_cache_entries_at_start": 0, + "cache_fresh": true, + "nvidia_smi": "NVIDIA A100 80GB PCIe, 61395 MiB, 81920 MiB" + }, + "machine": { + "cpu_model": "AMD EPYC 7702 64-Core Processor", + "cpu_count_os": 124, + "nproc": 4, + "nproc_all": 124, + "nproc_note": "GNU nproc honours OMP_NUM_THREADS, so `nproc` can print 1 on a multi-core host; `nproc_all` is the core count.", + "ram_total": "928298200 kB", + "kernel": "5.14.0-687.50.1.el9_8.x86_64", + "platform": "Linux-5.14.0-687.50.1.el9_8.x86_64-x86_64-with-glibc2.34", + "python": "3.12.4", + "jax_thread_env": { + "NPROC": null + }, + "blas_thread_env": { + "OMP_NUM_THREADS": null, + "OPENBLAS_NUM_THREADS": null, + "MKL_NUM_THREADS": null, + "VECLIB_MAXIMUM_THREADS": null, + "NUMEXPR_NUM_THREADS": null + }, + "thread_env_note": "NPROC sizes XLA's CPU intra-op pool (the JAX rows); the BLAS knobs pin OpenBLAS/MKL/OpenMP (the numpy/scipy rows) and do not touch JAX. Two disjoint families; both are recorded on every CPU timing.", + "gpu": "NVIDIA A100 80GB PCIe, 81920 MiB, 610.57.04" + }, + "precision": "fp64", + "configuration": { + "pixel_scale_arcsec": 0.05, + "mask_radius_arcsec": 3.5, + "image_pixels_masked": 15361, + "over_sampled_pixels": 62752, + "mesh": "delaunay", + "mesh_shape": null, + "source_pixels": 1500, + "source_pixels_requested": null, + "dataset": "hst", + "dataset_sha256": { + "data.fits": "e4e833a28e9c6f6fb023cd85c0d3dde74068720256bc77a240633500e5b04fac", + "noise_map.fits": "315c6266a0acd3ac9c8da82fcd2b45a08697362481fd7a35072bab1658530ba3", + "psf.fits": "8389ba0e8bf4a09b4a561cfc246181a2fb944ed396754cd0ff76fdd22910d303" + }, + "cell_source_sha256": "06a162fcdae6b329384ec33322f443df07215d86e56f0505ac15b3d3473eb432", + "inversion_path": "dense", + "pass_budget": 7, + "pass_budget_basis": "phase 3 (autolens_profiling#255): the smallest ZERO-fallback budget per mesh, the budget a production run fixes. NOT phase 0's certifying budget (2 for Delaunay), which falls back on 67.5 % of a graded draw set and is not a production cost.", + "border_relocator_mode": "cell", + "border_relocator": true, + "border_relocator_note": "'cell' is use_border_relocator=True, which every profiling cell in this family forces; 'library' passes None and takes the shipped config default, which is what production runs. The resolved boolean is what this leg actually ran.", + "routes_selected": [ + "b", + "d" + ], + "trace_calls": 10, + "command_buffers_traced": "off", + "use_mixed_precision": false, + "tau_rel": 1e-09, + "regularization": { + "scheme": "adapt_split", + "inner_coefficient": 0.1, + "outer_coefficient": 10.0, + "signal_scale": 0.1 + }, + "thread_env": { + "n_threads": null, + "vars": [ + "OPENBLAS_NUM_THREADS", + "MKL_NUM_THREADS", + "OMP_NUM_THREADS", + "VECLIB_MAXIMUM_THREADS", + "NUMEXPR_NUM_THREADS" + ], + "set_to": null, + "preexisting": {}, + "overridden": {}, + "note": "Not pinned (legacy variant): recorded as found." + }, + "over_sample_size_lp_rule": { + "sub_size_list": [ + 4, + 2, + 2 + ], + "radial_list": [ + 0.3, + 0.6 + ], + "centre": [ + 0.0, + 0.0 + ] + }, + "vmap_batch": 50, + "lanes": "captured", + "arms": [ + "vmap", + "scalar" + ], + "fallback": "on", + "draw_seed": 0, + "vmap_composition": "jax.jit(jax.vmap(fn))", + "lane_rtol": 1e-09, + "vmap_flags_note": "Strict ProfileCLI.parse_cell_args rejects unknown flags. These keys record the exact batching program and prevent historical vmap(jit) artifacts from being mistaken for current jit(vmap) measurements.", + "solver_source": "library", + "solver": "certified", + "certified_fallback": "pdip", + "certified_pass_budget": 16, + "captured_pass": "time", + "batches": "/mnt/ral/jnightin/autolens_profiling_wt/certified-solver-phase-c1-lane-rate/results/breakdown/imaging/nautilus_batches_delaunay_pix1.npz" + }, + "solver_injection": { + "patched": null, + "part_v": "none \u2014 library mode selects the solver through al.Settings", + "part_b_route_d": { + "patched": "autoarray.inversion.inversion.inversion_util.reconstruction_positive_only_from", + "pass_budget": 7, + "fallback": true + }, + "note": "Library mode (phase B, #300): PART V's arms and references run the library's own positive-only solve, selected by Settings(positive_only_solver, certified_fallback, certified_pass_budget); nothing is injected. PART B's single-call route d (the fiducial d == b pin) still uses the phase-1 harness injection at the phase-3 budget and is not a phase-B row. The untimed certification report observes the library solve (library_solver_observed) without changing it." + }, + "routes": { + "b_s3_pdip": { + "label": "S3 PDIP (source-only)", + "status": "ok", + "solver": "library", + "ms": 50.58619160008675, + "log_likelihood": 29155.000175243844 + }, + "d_s3_certified_fallback": { + "label": "S3 certified active set, budget 7, PDIP fallback", + "status": "ok", + "solver": "harness-injected certified active set", + "pass_budget": 7, + "fallback": true, + "injected_solver_calls_jax": 1, + "injected_solver_calls_numpy": 0, + "ms": 31.482476900055193, + "log_likelihood": 29155.000172627064 + } + }, + "equivalence_pins": [ + { + "pin": "route d (certified, fallback) == route b (library PDIP)", + "route": "d_s3_certified_fallback", + "reference": "b_s3_pdip", + "expectation": "the certified active set returns the library's own positive solution", + "rtol": 1e-09, + "got": 29155.000172627064, + "reference_value": 29155.000175243844, + "rel_diff": 8.975407135373641e-11, + "status": "PASS" + } + ], + "equivalence_rtol": 1e-09, + "reference": { + "log_evidence_s0_library": 29155.00017433923, + "log_evidence_s3_library": 29155.000174339304, + "s3": { + "n_params": 1500, + "n_mapper": 1500, + "n_funcs": 0, + "edge_zeroed_pixels": 0, + "subtracted_light_flux": 5105.448603818575 + } + }, + "command_buffers": { + "wall_on_ms": 2211.692346900236, + "wall_off_ms": 2227.529951899851, + "command_buffer_delta_ms": 15.837604999614996, + "command_buffer_delta_pct": 0.7160853552625415, + "traced": "off", + "compiler_option": "xla_gpu_enable_command_buffer", + "probe": { + "note": "Not taken in --vmap-batch mode: the CUPTI-inside-a-CUDA-graph probe is a phase-1 diagnostic about the JOIN, and this mode already compiles and times both the command-buffers ON and OFF executable of every arm." + }, + "note": "ONE lowering, TWO compilations, one process. wall_on_ms is the PRODUCTION program (CUDA graphs as XLA ships them) and is the number comparable to phase 5's row; wall_off_ms is the graph-less program the stage rows attribute. The delta is the launch overhead the graphs remove \u2014 it lands in device_idle and host_outside_span, not in any stage. Reconciliation is computed against wall_off_ms." + }, + "trace": { + "parser": "ProfileData.from_file(xplane) + as_text() + stack_frame_index(proto field 17)", + "stage_audit": { + "mixed_fusion": [ + { + "instruction": "loop_divide_gather_fusion", + "ms": 1.0147081019999997, + "opcode": "fusion", + "shape": "(f64[15361,1,1,1500]{3,2,1,0}, f64[15361,1,1,1500]{3,2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_broadcast_fusion.4", + "ms": 0.2257948400000001, + "opcode": "fusion", + "shape": "f64[1500,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_reduce_fusion.13", + "ms": 0.1211949, + "opcode": "fusion", + "shape": "f64[92,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123 (data_vector_via_blurred_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:67 (InversionImagingMapping.data_vector)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:699 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_reduce_fusion.17", + "ms": 0.114598196, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163 (mapped_reconstructed_data_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:120 (InversionImagingMapping._mapped_reconstructed_data_dict_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:196 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "loop_broadcast_fusion.2", + "ms": 0.11043403600000004, + "opcode": "fusion", + "shape": "f64[15361,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:342", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:342 (mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:283 (Mapper.mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:91 (AbstractInversionImaging._mapping_matrix_for_convolution_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:137 (AbstractInversionImaging.operated_mapping_matrix_list)" + ] + }, + { + "instruction": "input_multiply_transpose_fusion", + "ms": 0.10947590399999996, + "opcode": "fusion", + "shape": "(f64[1500,1500]{1,0}, f64[1500,1500]{1,0}, f64[1500,1500]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:237 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:274 (_certified_positive_only_from)" + ] + } + ], + "border_relocator": [ + { + "instruction": "eigh.45", + "ms": 0.07467376400000175, + "opcode": "custom-call", + "shape": "(f64[2,2]{0,1}, f64[2]{0}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "custom-call.2", + "ms": 0.007956532000000032, + "opcode": "custom-call", + "shape": "(f64[2,2]{1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_reduce_fusion.18", + "ms": 0.005939429999999981, + "opcode": "fusion", + "shape": "(f64[], f64[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:269", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:269 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_add_fusion.7", + "ms": 0.0035494579999999915, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:423 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:208 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_add_fusion.9", + "ms": 0.0034543699999999883, + "opcode": "fusion", + "shape": "f64[1500]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:458 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_concatenate_fusion.12", + "ms": 0.002402639999999993, + "opcode": "fusion", + "shape": "f64[392,2]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:238", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:238 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + } + ], + "mesh_construction": [ + { + "instruction": "input_concatenate_fusion.7", + "ms": 0.0019305759999999996, + "opcode": "fusion", + "shape": "f64[1500,2]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:820", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:820 (InterpolatorDelaunay.mesh_grid_xy)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:847 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + } + ], + "mesh_qhull_callback": [ + { + "instruction": "pure_callback.4", + "ms": 0.010630603999999938, + "opcode": "custom-call", + "shape": "(s32[3000,3]{1,0}, s32[3000,3]{1,0}, s32[1500]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:161", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:161 (_jax_delaunay_tables)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:405 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + } + ], + "other": [ + { + "instruction": "copy.106", + "ms": 0.041848820000001674, + "opcode": "copy", + "shape": "f64[1,1024,2]{2,1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.70", + "ms": 0.01687242399999937, + "opcode": "copy", + "shape": "s32[21361]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.75", + "ms": 0.0019623840000000084, + "opcode": "copy", + "shape": "s64[1500]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.61", + "ms": 0.001654087999999997, + "opcode": "copy", + "shape": "s32[]", + "source": "", + "stack": [] + }, + { + "instruction": "copy.104", + "ms": 0.001651657999999998, + "opcode": "copy", + "shape": "s64[]", + "source": "", + "stack": [] + }, + { + "instruction": "copy.105", + "ms": 0.001639433999999996, + "opcode": "copy", + "shape": "s32[]", + "source": "", + "stack": [] + } + ], + "mesh_seed_argmin": [ + { + "instruction": "input_reduce_fusion", + "ms": 0.148111531999993, + "opcode": "fusion", + "shape": "(f64[1024]{0}, s64[1024]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:191", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:191 (_nearest_vertex_seed_from..argmin_chunk)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)" + ] + }, + { + "instruction": "loop_dynamic_update_slice_fusion", + "ms": 0.04092318799999643, + "opcode": "fusion", + "shape": "s32[21,1024]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_add_fusion", + "ms": 0.03184665599999613, + "opcode": "fusion", + "shape": "s64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_broadcast_fusion", + "ms": 0.001947906000000019, + "opcode": "fusion", + "shape": "s32[21,1024]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "pdip_solve": [ + { + "instruction": "cholesky.60", + "ms": 7.3568516539998265, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "cholesky.80", + "ms": 5.495896969999859, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:106", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:106 (factorize_kkt)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:212 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve.1", + "ms": 1.3107075099999719, + "opcode": "custom-call", + "shape": "(f64[1500,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "triangular-solve", + "ms": 1.135827262000028, + "opcode": "custom-call", + "shape": "(f64[1500,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "cholesky.110", + "ms": 0.8924842900000037, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:297 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:274 (_certified_positive_only_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:496 (reconstruction_positive_only_from)" + ] + }, + { + "instruction": "triangular-solve.2", + "ms": 0.8715290660000179, + "opcode": "custom-call", + "shape": "(f64[1500,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:213 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + } + ], + "regularization_H": [ + { + "instruction": "input_scatter_fusion.10", + "ms": 0.0020572860000000115, + "opcode": "fusion", + "shape": "f64[1500,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:615", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:615 (pixel_splitted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:137 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_concatenate_fusion.8", + "ms": 0.0018499239999999874, + "opcode": "fusion", + "shape": "pred[3]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:93", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:93 (split_points_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:410 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + }, + { + "instruction": "input_concatenate_fusion.10", + "ms": 0.0018477559999999864, + "opcode": "fusion", + "shape": "pred[3]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:90", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:90 (split_points_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:410 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + }, + { + "instruction": "input_concatenate_fusion.9", + "ms": 0.0018391719999999924, + "opcode": "fusion", + "shape": "pred[3]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:91", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:91 (split_points_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:410 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + }, + { + "instruction": "input_concatenate_fusion", + "ms": 0.0017546959999999875, + "opcode": "fusion", + "shape": "s32[1500,2]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:615", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:615 (pixel_splitted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:137 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_concatenate_fusion.11", + "ms": 0.001504771999999999, + "opcode": "fusion", + "shape": "pred[3]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:88", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:88 (split_points_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:410 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + } + ], + "mesh_locate_walk": [ + { + "instruction": "input_reduce_fusion.1", + "ms": 0.025060842, + "opcode": "fusion", + "shape": "pred[196]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:288", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:288 (_walk_from_seed..cond)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)" + ] + }, + { + "instruction": "loop_reduce_fusion", + "ms": 0.02501252400000029, + "opcode": "fusion", + "shape": "(f64[21361]{0}, s64[21361]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:264", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:264 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:264 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)" + ] + }, + { + "instruction": "loop_or_select_fusion", + "ms": 0.02211751599999975, + "opcode": "fusion", + "shape": "(s32[21361]{0}, pred[21361]{0}, pred[21361]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:270", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:270 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)" + ] + }, + { + "instruction": "loop_select_fusion", + "ms": 0.019843684000000437, + "opcode": "fusion", + "shape": "s32[21361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:242", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:242 (_walk_from_seed..weights_of)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:262 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)" + ] + }, + { + "instruction": "input_reduce_fusion.2", + "ms": 0.01620201999999949, + "opcode": "fusion", + "shape": "pred[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:288", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:288 (_walk_from_seed..cond)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)" + ] + }, + { + "instruction": "while.34", + "ms": 0.01440621800000083, + "opcode": "while", + "shape": "(s32[], s32[21361]{0}, pred[21361]{0}, pred[21361]{0}, s32[3000,3]{1,0}, /*index=5*/f64[1500,2]{1,0}, f64[21361,2]{1,0}, s32[3000,3]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "psf_convolution_mapping_matrix": [ + { + "instruction": "input_scatter_fusion", + "ms": 1.9798064759999974, + "opcode": "fusion", + "shape": "f64[1500,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.19.0", + "ms": 1.7557597519999995, + "opcode": "fft", + "shape": "f64[1500,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.15.0", + "ms": 1.3637167439999986, + "opcode": "fft", + "shape": "c128[1500,180,91]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.17.0", + "ms": 0.9788367500000004, + "opcode": "fft", + "shape": "c128[1500,91,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_transpose_fusion.4", + "ms": 0.5138481179999995, + "opcode": "fusion", + "shape": "c128[1500,91,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "wrapped_transpose", + "ms": 0.498117416, + "opcode": "fusion", + "shape": "c128[1500,180,91]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + } + ], + "inversion_other": [ + { + "instruction": "cholesky.120", + "ms": 0.8961964400000054, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1078 (AbstractInversion.log_det_curvature_reg_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:347 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "cholesky.130", + "ms": 0.8916410960000056, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1157 (AbstractInversion.log_det_regularization_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:348 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "loop_reduce_window_fusion.1", + "ms": 0.0027720500000000033, + "opcode": "fusion", + "shape": "s64[94,16]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "loop_reduce_window_fusion", + "ms": 0.002687965999999994, + "opcode": "fusion", + "shape": "s64[6,16]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "loop_broadcast_convert_fusion", + "ms": 0.0021780000000000002, + "opcode": "fusion", + "shape": "(s32[1500]{0}, s64[1500]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527 (AbstractInversion.zeroed_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:567 (AbstractInversion.solve_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:684 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_scatter_fusion.5", + "ms": 0.0019317339999999998, + "opcode": "fusion", + "shape": "s64[1500]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527 (AbstractInversion.zeroed_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:567 (AbstractInversion.solve_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:684 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "mapping_matrix": [ + { + "instruction": "input_reduce_fusion.31", + "ms": 0.00288795000000002, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:120 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + } + ], + "curvature_matrix_F": [ + { + "instruction": "cublas-lt-matmul.2", + "ms": 4.212703104000002, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "chi_squared_evidence": [ + { + "instruction": "loop_multiply_fusion.2", + "ms": 0.003015510000000009, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:300", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:300 (AbstractNDArray.__pow__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:60 (unwrap_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:35 (to_new_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:78 (chi_squared_map_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:78 (AbstractFit.chi_squared_map)" + ] + } + ] + }, + "stage_audit_note": "The HLO instructions that contributed most of each stage's milliseconds, with their full source stack. A stage row is only as good as the rules that built it; this is how a reader checks a row against the HLO instead of trusting it.", + "untraced_wall_ms": 44.54925777400058, + "reconciliation_vs_untraced_pct": -28.63822629935343, + "wall_basis": "wall_ms is the TRACED run's wall, the run these kernel durations came from. untraced_wall_ms is the same executable without the profiler; the difference is the profiler's overhead and belongs in neither the stages nor the idle row.", + "calls": 500, + "call_split": "per-call (first-instruction recurrence)", + "call_blocks": 500, + "events": 361000, + "streams": [ + "Stream #14(Memset,MemcpyD2H,Compute,MemcpyH2D,MemcpyD2D)" + ], + "per_stage_ms": { + "border_relocator": { + "median_ms": 0.10147300000000001, + "min_ms": 0.10067400000000001, + "max_ms": 0.10230600000000001 + }, + "chi_squared_evidence": { + "median_ms": 0.003008, + "min_ms": 0.002816, + "max_ms": 0.003488 + }, + "curvature_matrix_F": { + "median_ms": 4.211076, + "min_ms": 4.192884, + "max_ms": 4.322485 + }, + "inversion_other": { + "median_ms": 1.7970625, + "min_ms": 1.777718, + "max_ms": 1.841813 + }, + "mapping_matrix": { + "median_ms": 0.00288, + "min_ms": 0.002848, + "max_ms": 0.002913 + }, + "memset": { + "median_ms": 0.023728, + "min_ms": 0.009888000000000001, + "max_ms": 0.09891300000000001 + }, + "mesh_construction": { + "median_ms": 0.00192, + "min_ms": 0.001888, + "max_ms": 0.001953 + }, + "mesh_locate_walk": { + "median_ms": 0.14797050000000006, + "min_ms": 0.13011300000000003, + "max_ms": 0.1837410000000001 + }, + "mesh_qhull_callback": { + "median_ms": 0.010561000000000001, + "min_ms": 0.010464000000000001, + "max_ms": 0.011168 + }, + "mesh_seed_argmin": { + "median_ms": 0.22282000000000007, + "min_ms": 0.2224350000000001, + "max_ms": 0.2232690000000001 + }, + "mixed_fusion": { + "median_ms": 1.9793454999999995, + "min_ms": 1.9718319999999994, + "max_ms": 1.9932419999999993 + }, + "other": { + "median_ms": 0.0658245, + "min_ms": 0.06326299999999999, + "max_ms": 0.073409 + }, + "pdip_solve": { + "median_ms": 8.8988135, + "min_ms": 2.420607, + "max_ms": 52.51687400000008 + }, + "psf_convolution_mapping_matrix": { + "median_ms": 7.089864, + "min_ms": 7.076376000000001, + "max_ms": 7.105529000000001 + }, + "regularization_H": { + "median_ms": 0.010848, + "min_ms": 0.010656, + "max_ms": 0.011297 + } + }, + "stage_order": [ + "border_relocator", + "mesh_qhull_callback", + "mesh_seed_argmin", + "mesh_locate_walk", + "mesh_construction", + "mapping_matrix", + "psf_convolution_mapping_matrix", + "curvature_matrix_F", + "regularization_H", + "pdip_solve", + "chi_squared_evidence", + "inversion_other", + "mixed_fusion", + "other", + "memset" + ], + "mixed_fusion": { + "ms": 1.9793454999999995, + "constituent_stage_sets": { + "curvature_matrix_F + psf_convolution_mapping_matrix": 1.0147081019999997, + "pdip_solve + psf_convolution_mapping_matrix": 0.2257948400000001, + "data_vector_D + pdip_solve": 0.12487178999999989, + "mapped_reconstruction + pdip_solve": 0.114598196, + "mapping_matrix + pdip_solve": 0.1127868219999995, + "curvature_reg_reduce_gather + inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": 0.10947590399999996, + "pdip_solve + regularization_H": 0.04510727800000014, + "inversion_other + pdip_solve + regularization_H": 0.024210517999999997, + "inversion_other + pdip_solve": 0.022894710000000252, + "inversion_other + mapping_matrix + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin + pdip_solve": 0.021158711999999927, + "inversion_other + mesh_construction + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin + pdip_solve + regularization_H": 0.01877424599999999, + "inversion_other + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + pdip_solve + regularization_H": 0.014763329999999995, + "pdip_solve + ray_trace_data_grid": 0.013689534000000097, + "border_relocator + pdip_solve": 0.013573581999999999, + "inversion_other + mapping_matrix + mesh_construction + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin": 0.011661483999999995, + "grids_and_structures + mass_profile_deflections + pdip_solve": 0.010123599999999995, + "grids_and_structures + mass_profile_deflections + pdip_solve + ray_trace_data_grid": 0.008998284, + "chi_squared_evidence + pdip_solve": 0.007715376000000024, + "inversion_other + mesh_construction + mesh_seed_argmin + pdip_solve + regularization_H": 0.007110957999999991, + "inversion_other + mesh_dual_areas + mesh_locate_walk": 0.006664112000000127, + "inversion_other + mesh_construction + pdip_solve + regularization_H": 0.006312925999999992, + "grids_and_structures + mass_profile_deflections + ray_trace_data_grid": 0.0054836200000000015, + "inversion_other + pdip_solve + ray_trace_data_grid": 0.005315085999999961, + "inversion_other + regularization_H": 0.004865931999999971, + "inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": 0.004811862000000001, + "inversion_other + mapped_reconstruction": 0.003720097999999992, + "mapping_matrix + pdip_solve + regularization_H": 0.003487187999999997, + "inversion_other + mesh_construction + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin": 0.0030994140000000087, + "inversion_other + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin": 0.0029285260000000177, + "inversion_other + mesh_construction + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin + regularization_H": 0.0026811060000000086, + "inversion_other + mesh_dual_areas + mesh_locate_walk + pdip_solve": 0.002590290000000015, + "inversion_other + mesh_locate_walk + mesh_seed_argmin": 0.002479748000000007, + "inversion_other + mesh_interpolation_weights": 0.002154182000000006, + "chi_squared_evidence + inversion_other": 0.0018707900000000017 + }, + "example_kernels": { + "curvature_matrix_F + psf_convolution_mapping_matrix": [ + "loop_divide_gather_fusion" + ], + "pdip_solve + psf_convolution_mapping_matrix": [ + "loop_broadcast_fusion.4" + ], + "data_vector_D + pdip_solve": [ + "input_reduce_fusion.13", + "input_reduce_fusion.29" + ], + "mapped_reconstruction + pdip_solve": [ + "input_reduce_fusion.17" + ], + "mapping_matrix + pdip_solve": [ + "loop_broadcast_fusion.2", + "loop_divide_fusion" + ], + "curvature_reg_reduce_gather + inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": [ + "input_multiply_transpose_fusion" + ], + "pdip_solve + regularization_H": [ + "loop_select_fusion.5", + "input_transpose_fusion.5" + ], + "inversion_other + pdip_solve + regularization_H": [ + "input_transpose_fusion.6" + ], + "inversion_other + pdip_solve": [ + "input_reduce_fusion.15", + "loop_log_fusion", + "input_reduce_fusion.16", + "input_reduce_fusion.20" + ], + "inversion_other + mapping_matrix + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin + pdip_solve": [ + "input_scatter_fusion.6", + "input_scatter_fusion.3" + ] + }, + "prorated_estimate_ms": { + "psf_convolution_mapping_matrix": 0.6202514709999999, + "curvature_matrix_F": 0.5073540509999999, + "pdip_solve": 0.39167800337619035, + "mapped_reconstruction": 0.08225729329999998, + "inversion_other": 0.06867465050952395, + "data_vector_D": 0.06243589499999994, + "mapping_matrix": 0.0621442266666664, + "regularization_H": 0.04280903790952385, + "reconstruction_scatter": 0.02309814629999999, + "curvature_reg_reduce_gather": 0.02189518079999999, + "mesh_construction": 0.014286254376190466, + "ray_trace_data_grid": 0.012693906666666704, + "mesh_locate_walk": 0.012520802109523853, + "mesh_interpolation_weights": 0.012362922276190475, + "mesh_seed_argmin": 0.01107405054285714, + "mesh_dual_areas": 0.008462424833333372, + "grids_and_structures": 0.007451977666666666, + "mass_profile_deflections": 0.007451977666666666, + "border_relocator": 0.0067867909999999995, + "chi_squared_evidence": 0.004793083000000013 + }, + "prorated_note": "ESTIMATE ONLY \u2014 a mixed fusion's time split equally across the stages its constituents span. Never summed into the measured table, never reconciled." + }, + "other_sources_ms": { + "copy.106": 0.041848820000001674, + "copy.70": 0.01687242399999937, + "copy.75": 0.0019623840000000084, + "copy.61": 0.001654087999999997, + "copy.104": 0.001651657999999998, + "copy.105": 0.001639433999999996, + "copy.103": 0.0006567739999999985, + "copy.40": 0.0005587200000000002 + }, + "device_span_ms": 45.881268817999995, + "device_busy_ms": 38.6573228, + "device_idle_ms": 7.223946017999992, + "largest_idle_gaps": [ + { + "gap_ms": 5.429953, + "after": "pure_callback.4", + "before": "pure_callback.4" + }, + { + "gap_ms": 0.041119, + "after": "input_concatenate_fusion.7", + "before": "pure_callback.4" + }, + { + "gap_ms": 0.032543, + "after": "pure_callback.4", + "before": "copy.105" + }, + { + "gap_ms": 0.028608, + "after": "copy.70", + "before": "input_reduce_fusion.1" + }, + { + "gap_ms": 0.023872, + "after": "copy.105", + "before": "copy.61" + }, + { + "gap_ms": 0.021055, + "after": "loop_or_select_fusion", + "before": "copy.70" + }, + { + "gap_ms": 0.02032, + "after": "while.40", + "before": "input_reduce_select_fusion" + }, + { + "gap_ms": 0.019423, + "after": "input_reduce_fusion.28", + "before": "loop_broadcast_fusion.4" + } + ], + "kernel_ms": 24.5671945, + "sum_ms": 31.79114051799999, + "wall_ms": 45.88357532199734, + "host_outside_span_ms": 0.002306503997345999, + "reconciliation_pct": -30.713462726260573, + "unjoined_ms": 0.0, + "unjoined_pct": 0.0, + "other_ms": 0.0658245, + "other_pct": 0.14345983184192415, + "note": "Stage rows attribute the command-buffers-OFF program (see the module docstring): kernel times are the same, the launch overhead the CUDA graphs remove is not. sum_ms = kernel rows + device_idle_ms; the residual against wall_ms is host_outside_span_ms (dispatch before the first kernel, teardown after the last).", + "per_stage_ms_per_lane": { + "border_relocator": 0.10147300000000001, + "chi_squared_evidence": 0.003008, + "curvature_matrix_F": 4.211076, + "inversion_other": 1.7970625, + "mapping_matrix": 0.00288, + "memset": 0.023728, + "mesh_construction": 0.00192, + "mesh_locate_walk": 0.14797050000000006, + "mesh_qhull_callback": 0.010561000000000001, + "mesh_seed_argmin": 0.22282000000000007, + "mixed_fusion": 1.9793454999999995, + "other": 0.0658245, + "pdip_solve": 8.8988135, + "psf_convolution_mapping_matrix": 7.089864, + "regularization_H": 0.010848 + }, + "per_lane_divisor": 1, + "host_callback": { + "pure_callback_span_ms": 252.1864798000001, + "qhull_ms": 235.4625997999999, + "callback_body_ms_note": "the OUTERMOST matching body event, not a sum: under the probe the body appears twice (the wrapper and the timed re-implementation it calls) and summing them would count the same work twice", + "events_by_name": { + "pure_callback.4": { + "count": 500, + "ms": 252.1864798000001 + }, + "$callback.py:815 _wrapped_callback": { + "count": 500, + "ms": 247.94798569999986 + }, + "$callback.py:224 _callback": { + "count": 500, + "ms": 246.77904789999994 + }, + "$callback.py:74 pure_callback_impl": { + "count": 500, + "ms": 246.33716370000008 + }, + "$callback.py:69 __call__": { + "count": 500, + "ms": 236.22453499999978 + }, + "$delaunay.py:162 ": { + "count": 500, + "ms": 235.90392849999995 + }, + "$host_callback_probe.py:225 wrapped": { + "count": 500, + "ms": 235.4625997999999 + }, + "$host_callback_probe.py:160 _timed_tri_only": { + "count": 500, + "ms": 235.06521530000015 + }, + "ThenExecuteCallback:GetEventForComputeStreamSyncPoint": { + "count": 500, + "ms": 0.8981313000000002 + }, + "$callback.py:822 ": { + "count": 2000, + "ms": 0.7075121000000016 + }, + "$__init__.py:132 _xla_gc_callback": { + "count": 8, + "ms": 0.0033020000000000002 + } + }, + "note": "HOST milliseconds per traced BATCH (the whole invocation), aggregated by name because the events nest. Not a row of the device table: the device pays for them as the idle gaps largest_idle_gaps names." + }, + "host_callback_ms": 252.1864798000001 + }, + "hlo_census": { + "status": "excluded", + "reason": "The legacy census anchors PyAutoArray source line numbers that moved after the phase-1 run. No batched attribution is published from unsupported anchors; the device-event table and wall reconciliation remain valid." + }, + "stage_map_provenance": [ + { + "label": "log_det_curvature_reg", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 850, + 882 + ], + "requires": { + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 884, + 896 + ] + }, + "function": null + }, + { + "label": "log_det_regularization", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 850, + 882 + ], + "requires": { + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 897, + 943 + ] + }, + "function": null + }, + { + "label": "curvature_reg_add", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 359, + 372 + ], + "requires": null, + "function": null + }, + { + "label": "curvature_reg_reduce_gather", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 374, + 398 + ], + "requires": null, + "function": null + }, + { + "label": "edge_subset_gather", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 606, + 614 + ], + "requires": null, + "function": null + }, + { + "label": "regularization_term", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 786, + 849 + ], + "requires": null, + "function": null + }, + { + "label": "mapped_reconstruction", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 722, + 785 + ], + "requires": null, + "function": null + }, + { + "label": "reconstruction_scatter", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 583, + 605 + ], + "requires": null, + "function": null + }, + { + "label": "reconstruction_scatter", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 615, + 721 + ], + "requires": null, + "function": null + }, + { + "label": "certified_active_set_solve", + "path": "likelihood_breakdown/active_set_steps.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "certified_active_set_solve", + "path": "likelihood_breakdown/library_solver_injection.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "pdip_solve", + "path": "PyAutoArray/autoarray/util/jax_nnls.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "pdip_solve", + "path": "PyAutoArray/autoarray/inversion/inversion/inversion_util.py", + "lines": [ + 256, + 488 + ], + "requires": null, + "function": null + }, + { + "label": "mapped_reconstruction", + "path": "PyAutoArray/autoarray/inversion/inversion/inversion_util.py", + "lines": [ + 156, + 200 + ], + "requires": null, + "function": null + }, + { + "label": "curvature_matrix_F", + "path": "PyAutoArray/autoarray/inversion/inversion/inversion_util.py", + "lines": [ + 12, + 155 + ], + "requires": null, + "function": null + }, + { + "label": "reconstruction_scatter", + "path": "PyAutoArray/autoarray/inversion/inversion/inversion_util.py", + "lines": [ + 201, + 255 + ], + "requires": null, + "function": null + }, + { + "label": "data_vector_D", + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py", + "lines": [ + 54, + 73 + ], + "requires": null, + "function": null + }, + { + "label": "curvature_matrix_F", + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py", + "lines": [ + 74, + 110 + ], + "requires": null, + "function": null + }, + { + "label": "data_vector_D", + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py", + "lines": null, + "requires": null, + "function": "data_vector_via_blurred_mapping_matrix_from" + }, + { + "label": "curvature_matrix_F", + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "likelihood_breakdown/psf_cube_injection.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": [ + 1086, + 1300 + ], + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": [ + 632, + 642 + ], + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": [ + 670, + 691 + ], + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": null, + "requires": { + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": [ + 1086, + 1300 + ] + }, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": null, + "requires": { + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py", + "lines": [ + 119, + 150 + ] + }, + "function": null + }, + { + "label": "psf_convolution_image", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py", + "lines": [ + 119, + 150 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_qhull_callback", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 139, + 172 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_seed_argmin", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 173, + 207 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_locate_walk", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 208, + 372 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_dual_areas", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 373, + 396 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_dual_areas", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 437, + 494 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_dual_areas", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 605, + 615 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_interpolation_weights", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 616, + 695 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_interpolation_weights", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 896, + 1000 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_construction", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "border_relocator", + "path": "PyAutoArray/autoarray/inversion/mesh/border_relocator.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "mesh_construction", + "path": "PyAutoArray/autoarray/inversion/mesh/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "mapping_matrix", + "path": "PyAutoArray/autoarray/inversion/mappers/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "mapping_matrix", + "path": "PyAutoArray/autoarray/inversion/mappings/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "mapping_matrix", + "path": "PyAutoArray/autoarray/inversion/linear_obj/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "regularization_H", + "path": "PyAutoArray/autoarray/inversion/regularization/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "chi_squared_evidence", + "path": "PyAutoArray/autoarray/fit/fit_util.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "chi_squared_evidence", + "path": "PyAutoArray/autoarray/fit/fit_dataset.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "ray_trace_mesh_grid", + "path": "PyAutoLens/autolens/lens/to_inversion.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "ray_trace_mesh_grid", + "path": "PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "mass_profile_deflections", + "path": "PyAutoGalaxy/autogalaxy/profiles/mass/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "light_profile_image", + "path": "PyAutoGalaxy/autogalaxy/profiles/light/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "light_profile_image", + "path": "PyAutoGalaxy/autogalaxy/operate/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "ray_trace_data_grid", + "path": "PyAutoLens/autolens/lens/tracer.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "ray_trace_data_grid", + "path": "PyAutoLens/autolens/lens/tracer_util.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "grids_and_structures", + "path": "PyAutoArray/autoarray/structures/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "grids_and_structures", + "path": "PyAutoArray/autoarray/operators/over_sampling/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "grids_and_structures", + "path": "PyAutoArray/autoarray/geometry/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "inversion_other", + "path": "PyAutoArray/autoarray/inversion/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "fit_imaging_other", + "path": "PyAutoLens/autolens/imaging/fit_imaging.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "fit_imaging_other", + "path": "PyAutoGalaxy/autogalaxy/imaging/fit_imaging.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "fit_imaging_other", + "path": "PyAutoArray/autoarray/fit/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "analysis_other", + "path": "PyAutoLens/autolens/analysis/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "analysis_other", + "path": "PyAutoGalaxy/autogalaxy/analysis/", + "lines": null, + "requires": null, + "function": null + } + ], + "trace_timing": { + "traced_wall_ms": 45.88357532199734, + "untraced_wall_ms": 44.54925777400058, + "profiler_overhead_ms": 1.3343175479967613, + "profiler_overhead_pct": 2.995151018600097 + }, + "jit_phases": { + "b_s3_pdip_library_likelihood_jit": { + "lower_s": 1.5109468279988505, + "compile_s": 4.441316658001597, + "first_call_s": 0.13672840100116446, + "steady_per_call_s": 0.05058619160008675 + }, + "d_s3_certified_fallback_library_likelihood_jit": { + "lower_s": 0.4838310579980316, + "compile_s": 4.245811112999945, + "first_call_s": 0.04881459199896199, + "steady_per_call_s": 0.03148247690005519 + } + }, + "peak_bytes": { + "after_setup": 85108992, + "after_routes": 1181653248, + "after_all": 58804887808, + "note": "jax.devices()[0].memory_stats()['peak_bytes_in_use']; None on a backend that does not report it (CPU). Process-wide high-water marks." + }, + "note": "Every stage row is a MEASURED sum of GPU kernel durations joined to library source through the optimized HLO of ONE program \u2014 not arithmetic across compilations. The rows attribute the command-buffers-OFF program: kernel time is the same as production, the launch overhead the CUDA graphs remove is not, and command_buffers.* carries both walls and their delta. sum_ms = kernel rows + measured device_idle_ms; the residual against the wall is host_outside_span_ms and is reported, not absorbed. mixed_fusion.prorated_estimate_ms is an ESTIMATE and is never part of the table. No row may be quoted if reconciliation_pct is outside 5 % or unjoined_ms is non-zero.", + "vmap": { + "batch": 50, + "lanes_mode": "captured", + "arms": [ + "vmap", + "scalar" + ], + "draw_seed": 0, + "fallback": true, + "composition": "jax.jit(jax.vmap(fn))", + "composition_provenance": "Current Fitness._vmap after PyAutoFit#1638. Array 343376 used the retired jax.vmap(jax.jit(fn)) composition and is historical evidence only.", + "headline_arm": "scalar", + "lane_rtol": 1e-09, + "lanes": [ + { + "lane": 0, + "draw_name": "call00015_lane00", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.0033655095107821688, + "centre_1": 0.004631951955766499, + "ell_comps_0": 0.000564301988937442, + "ell_comps_1": -0.00879076787683888, + "einstein_radius": 0.018337010967920175 + }, + "log_likelihood_vmap": 18700.594048999155, + "log_likelihood_scalar": 24758.506194309353, + "log_likelihood_library_pdip": 18700.594049000425, + "log_likelihood_library_pdip_scalar": 24758.506194309135, + "rel_diff_vmap_vs_library_pdip": 6.78938113061105e-14, + "rel_diff_scalar_vs_library_pdip_scalar": 8.816312531637115e-15, + "abs_diff_nats": 6057.912145310198, + "rel_diff": 0.24468003431897623, + "rel_diff_scalar_vs_library_pdip": 0.32394223036100467, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6057.91214530871, + "rel_diff_library_pdip_vmap_vs_scalar": 0.24468003431891827, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 1, + "draw_name": "call00015_lane01", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.004311760382151672, + "centre_1": 0.0027192789928108052, + "ell_comps_0": 0.0061667694809026535, + "ell_comps_1": 0.003465536775180321, + "einstein_radius": -0.05732579988501185 + }, + "log_likelihood_vmap": 14200.2143078324, + "log_likelihood_scalar": 20551.004887772608, + "log_likelihood_library_pdip": 14200.214306774666, + "log_likelihood_library_pdip_scalar": 20551.00488777298, + "rel_diff_vmap_vs_library_pdip": 7.448726049857396e-11, + "rel_diff_scalar_vs_library_pdip_scalar": 1.8056238142599476e-14, + "abs_diff_nats": 6350.790579940207, + "rel_diff": 0.30902579288075527, + "rel_diff_scalar_vs_library_pdip": 0.4472320236722128, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6350.790580998313, + "rel_diff_library_pdip_vmap_vs_scalar": 0.30902579293223653, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 2, + "draw_name": "call00015_lane02", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.0002796502552123051, + "centre_1": 0.0016003321376979894, + "ell_comps_0": -0.002094430657472772, + "ell_comps_1": 0.006146479068253558, + "einstein_radius": -0.025968910196758177 + }, + "log_likelihood_vmap": -23119.397918166338, + "log_likelihood_scalar": -189709.07359119633, + "log_likelihood_library_pdip": -23119.269283083646, + "log_likelihood_library_pdip_scalar": -189709.07575724524, + "rel_diff_vmap_vs_library_pdip": 5.563977006242197e-06, + "rel_diff_scalar_vs_library_pdip_scalar": 1.1417740063377248e-08, + "abs_diff_nats": 166589.67567303, + "rel_diff": 0.8781323556089559, + "rel_diff_scalar_vs_library_pdip": 7.205669100883147, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 166589.8064741616, + "rel_diff_library_pdip_vmap_vs_scalar": 0.8781330350653996, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": true, + "passes": 1, + "pdip_iter": null + }, + { + "lane": 3, + "draw_name": "call00015_lane03", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.004594602299816973, + "centre_1": 0.004924922434755804, + "ell_comps_0": 0.028601845732661953, + "ell_comps_1": 0.003760187047606014, + "einstein_radius": -0.03088526730480501 + }, + "log_likelihood_vmap": 18502.010125207293, + "log_likelihood_scalar": -141741.96888570738, + "log_likelihood_library_pdip": 18502.009486267387, + "log_likelihood_library_pdip_scalar": -141741.9662042298, + "rel_diff_vmap_vs_library_pdip": 3.453354114783693e-08, + "rel_diff_scalar_vs_library_pdip_scalar": 1.8918021593985197e-08, + "abs_diff_nats": 160243.97901091469, + "rel_diff": 1.1305330402184992, + "rel_diff_scalar_vs_library_pdip": 8.660895914625463, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 160243.9756904972, + "rel_diff_library_pdip_vmap_vs_scalar": 1.1305330381801582, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": true, + "passes": 3, + "pdip_iter": null + }, + { + "lane": 4, + "draw_name": "call00015_lane04", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.0060950290987001, + "centre_1": -0.0006121094560707545, + "ell_comps_0": 0.009637314264800585, + "ell_comps_1": 0.006641580028105454, + "einstein_radius": -0.03125810931551931 + }, + "log_likelihood_vmap": 18751.91028804102, + "log_likelihood_scalar": 24880.545932988724, + "log_likelihood_library_pdip": 18751.91028803973, + "log_likelihood_library_pdip_scalar": 24880.545932988734, + "rel_diff_vmap_vs_library_pdip": 6.887204859023277e-14, + "rel_diff_scalar_vs_library_pdip_scalar": 4.386534142245053e-16, + "abs_diff_nats": 6128.6356449477025, + "rel_diff": 0.24632239426956629, + "rel_diff_scalar_vs_library_pdip": 0.3268272699052926, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6128.635644949005, + "rel_diff_library_pdip_vmap_vs_scalar": 0.24632239426961852, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 5, + "draw_name": "call00015_lane05", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.008435952123169364, + "centre_1": -0.007849511137408794, + "ell_comps_0": -0.01598149485178925, + "ell_comps_1": 0.01654417876136871, + "einstein_radius": 0.014294380855379263 + }, + "log_likelihood_vmap": 24935.95274065376, + "log_likelihood_scalar": 25472.51918677797, + "log_likelihood_library_pdip": 24935.952740667337, + "log_likelihood_library_pdip_scalar": 25472.519186809055, + "rel_diff_vmap_vs_library_pdip": 5.444723548069624e-13, + "rel_diff_scalar_vs_library_pdip_scalar": 1.2203947587051716e-12, + "abs_diff_nats": 536.5664461242086, + "rel_diff": 0.02106452220880942, + "rel_diff_scalar_vs_library_pdip": 0.021517784048233325, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 536.5664461417182, + "rel_diff_library_pdip_vmap_vs_scalar": 0.021064522209471106, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 10, + "pdip_iter": null + }, + { + "lane": 6, + "draw_name": "call00015_lane06", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.0031698313356290646, + "centre_1": -0.0038584140676992847, + "ell_comps_0": 0.01810147576636289, + "ell_comps_1": -0.011577480306416508, + "einstein_radius": 0.016136835525067283 + }, + "log_likelihood_vmap": 28315.201514570836, + "log_likelihood_scalar": -83383.91553783754, + "log_likelihood_library_pdip": 28315.201450716388, + "log_likelihood_library_pdip_scalar": -83383.91543299965, + "rel_diff_vmap_vs_library_pdip": 2.255129565490238e-09, + "rel_diff_scalar_vs_library_pdip_scalar": 1.2572915326225146e-09, + "abs_diff_nats": 111699.11705240837, + "rel_diff": 1.3395762999606573, + "rel_diff_scalar_vs_library_pdip": 3.944846275700005, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 111699.11688371604, + "rel_diff_library_pdip_vmap_vs_scalar": 1.339576299621815, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": true, + "passes": 3, + "pdip_iter": null + }, + { + "lane": 7, + "draw_name": "call00015_lane07", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.006158729760195174, + "centre_1": 0.004883559265258847, + "ell_comps_0": 0.007613883677130215, + "ell_comps_1": -0.005800175617006949, + "einstein_radius": 0.0662922007765554 + }, + "log_likelihood_vmap": 23338.89001398478, + "log_likelihood_scalar": -11960.284429561456, + "log_likelihood_library_pdip": 23338.89001459252, + "log_likelihood_library_pdip_scalar": -11960.284429931584, + "rel_diff_vmap_vs_library_pdip": 2.6039908034988732e-11, + "rel_diff_scalar_vs_library_pdip_scalar": 3.094641820617874e-11, + "abs_diff_nats": 35299.17444354623, + "rel_diff": 2.9513658016610007, + "rel_diff_scalar_vs_library_pdip": 1.5124615790246816, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 35299.174444524106, + "rel_diff_library_pdip_vmap_vs_scalar": 2.9513658016514266, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 9, + "pdip_iter": null + }, + { + "lane": 8, + "draw_name": "call00015_lane08", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.0030335293924908615, + "centre_1": 0.0012117081273721316, + "ell_comps_0": 0.0008852687687036301, + "ell_comps_1": -0.0027113633212058814, + "einstein_radius": -0.03873713959923952 + }, + "log_likelihood_vmap": 24869.037000609715, + "log_likelihood_scalar": 23223.5503914968, + "log_likelihood_library_pdip": 24869.037000618693, + "log_likelihood_library_pdip_scalar": 23223.550391490266, + "rel_diff_vmap_vs_library_pdip": 3.6103254402970966e-13, + "rel_diff_scalar_vs_library_pdip_scalar": 2.8134414537799874e-13, + "abs_diff_nats": 1645.4866091129152, + "rel_diff": 0.07085422260480047, + "rel_diff_scalar_vs_library_pdip": 0.06616607667924404, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 1645.4866091284275, + "rel_diff_library_pdip_vmap_vs_scalar": 0.07085422260548835, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 10, + "pdip_iter": null + }, + { + "lane": 9, + "draw_name": "call00015_lane09", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.0008035510098975272, + "centre_1": 0.005559773241319952, + "ell_comps_0": -0.003701655436278317, + "ell_comps_1": -0.012378591445614512, + "einstein_radius": 0.032284336889985665 + }, + "log_likelihood_vmap": -31749.513230927652, + "log_likelihood_scalar": -177117.70707592083, + "log_likelihood_library_pdip": -31750.031116865313, + "log_likelihood_library_pdip_scalar": -177117.67871082143, + "rel_diff_vmap_vs_library_pdip": 1.631135212922525e-05, + "rel_diff_scalar_vs_library_pdip_scalar": 1.6014832399351334e-07, + "abs_diff_nats": 145368.1938449932, + "rel_diff": 0.8207434267578999, + "rel_diff_scalar_vs_library_pdip": 4.578504991821491, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 145367.64759395612, + "rel_diff_library_pdip_vmap_vs_scalar": 0.8207404740850103, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": true, + "passes": 2, + "pdip_iter": null + }, + { + "lane": 10, + "draw_name": "call00015_lane10", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.008473569241265282, + "centre_1": -0.0051993251621340235, + "ell_comps_0": -0.0031466996514049606, + "ell_comps_1": -0.0076036423480284636, + "einstein_radius": 0.08283321334626792 + }, + "log_likelihood_vmap": 6560.779755510557, + "log_likelihood_scalar": -101745.38334612483, + "log_likelihood_library_pdip": 6560.779574232118, + "log_likelihood_library_pdip_scalar": -101745.38351063897, + "rel_diff_vmap_vs_library_pdip": 2.7630624891784683e-08, + "rel_diff_scalar_vs_library_pdip_scalar": 1.6169200007374225e-09, + "abs_diff_nats": 108306.16310163538, + "rel_diff": 1.0644823336425164, + "rel_diff_scalar_vs_library_pdip": 16.508124026256933, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 108306.16308487109, + "rel_diff_library_pdip_vmap_vs_scalar": 1.0644823317565666, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": true, + "passes": 5, + "pdip_iter": null + }, + { + "lane": 11, + "draw_name": "call00015_lane11", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.001017060353322001, + "centre_1": 0.003035861051809724, + "ell_comps_0": 0.0014054844842678396, + "ell_comps_1": -0.00019678252877009805, + "einstein_radius": -0.04179610309843307 + }, + "log_likelihood_vmap": 12667.92491578938, + "log_likelihood_scalar": 18957.52834973713, + "log_likelihood_library_pdip": 12667.924904351159, + "log_likelihood_library_pdip_scalar": 18957.52834974321, + "rel_diff_vmap_vs_library_pdip": 9.029276843243341e-10, + "rel_diff_scalar_vs_library_pdip_scalar": 3.206674664808082e-13, + "abs_diff_nats": 6289.603433947752, + "rel_diff": 0.3317733893318938, + "rel_diff_scalar_vs_library_pdip": 0.4964983209859121, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6289.603445392051, + "rel_diff_library_pdip_vmap_vs_scalar": 0.3317733899354684, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 12, + "draw_name": "call00015_lane12", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.0012508260776529923, + "centre_1": -0.0075763258203543175, + "ell_comps_0": -0.0003476568325791879, + "ell_comps_1": 0.0070528223693464365, + "einstein_radius": -0.005182936058341969 + }, + "log_likelihood_vmap": 18842.279796744107, + "log_likelihood_scalar": 24810.049660195124, + "log_likelihood_library_pdip": 18842.279796748757, + "log_likelihood_library_pdip_scalar": 24810.0496601949, + "rel_diff_vmap_vs_library_pdip": 2.467502322232501e-13, + "rel_diff_scalar_vs_library_pdip_scalar": 8.94462970739782e-15, + "abs_diff_nats": 5967.769863451016, + "rel_diff": 0.24053840863630424, + "rel_diff_scalar_vs_library_pdip": 0.31672228243188005, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 5967.769863446145, + "rel_diff_library_pdip_vmap_vs_scalar": 0.24053840863611006, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 13, + "draw_name": "call00015_lane13", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.0039046265841316857, + "centre_1": 0.008586063066835778, + "ell_comps_0": 0.01612319103606081, + "ell_comps_1": -0.006478405394829051, + "einstein_radius": -0.06420305523683667 + }, + "log_likelihood_vmap": 22879.75598926498, + "log_likelihood_scalar": -3605.706216041661, + "log_likelihood_library_pdip": 22879.75598895483, + "log_likelihood_library_pdip_scalar": -3605.7062159501947, + "rel_diff_vmap_vs_library_pdip": 1.3555749692851728e-11, + "rel_diff_scalar_vs_library_pdip_scalar": 2.5367031502259044e-11, + "abs_diff_nats": 26485.46220530664, + "rel_diff": 7.345429887624717, + "rel_diff_scalar_vs_library_pdip": 1.1575937356054982, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 26485.462204905023, + "rel_diff_library_pdip_vmap_vs_scalar": 7.345429887699665, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 9, + "pdip_iter": null + }, + { + "lane": 14, + "draw_name": "call00015_lane14", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.007195835212073937, + "centre_1": -0.0022675171274400335, + "ell_comps_0": 0.004220685262914858, + "ell_comps_1": 0.006581974817750368, + "einstein_radius": 0.08589577997501685 + }, + "log_likelihood_vmap": 4357.021950291826, + "log_likelihood_scalar": 11126.921475785763, + "log_likelihood_library_pdip": 4357.021950280177, + "log_likelihood_library_pdip_scalar": 11126.921475785763, + "rel_diff_vmap_vs_library_pdip": 2.673571139470296e-12, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 6769.899525493936, + "rel_diff": 0.6084252090954797, + "rel_diff_scalar_vs_library_pdip": 1.5537905483974548, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6769.899525505585, + "rel_diff_library_pdip_vmap_vs_scalar": 0.6084252090965266, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 15, + "pdip_iter": null + }, + { + "lane": 15, + "draw_name": "call00015_lane15", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.0024446743118905125, + "centre_1": 0.0028324231769206983, + "ell_comps_0": -0.017159158004659933, + "ell_comps_1": 0.008265799441903459, + "einstein_radius": -0.03860302877433641 + }, + "log_likelihood_vmap": 14146.464614111494, + "log_likelihood_scalar": 20410.34397371921, + "log_likelihood_library_pdip": 14146.464613419455, + "log_likelihood_library_pdip_scalar": 20410.343973721156, + "rel_diff_vmap_vs_library_pdip": 4.89195127877643e-11, + "rel_diff_scalar_vs_library_pdip_scalar": 9.53594248240011e-14, + "abs_diff_nats": 6263.879359607716, + "rel_diff": 0.30689729519861203, + "rel_diff_scalar_vs_library_pdip": 0.4427876173639727, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6263.8793603017, + "rel_diff_library_pdip_vmap_vs_scalar": 0.30689729523258436, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 16, + "draw_name": "call00015_lane16", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.00546338030193603, + "centre_1": 0.0029217319844296002, + "ell_comps_0": 0.018887239108742314, + "ell_comps_1": 0.01610145140759906, + "einstein_radius": 0.09308737119031596 + }, + "log_likelihood_vmap": 2903.043598923672, + "log_likelihood_scalar": 9734.862241681745, + "log_likelihood_library_pdip": 2903.0436000279587, + "log_likelihood_library_pdip_scalar": 9734.862241683033, + "rel_diff_vmap_vs_library_pdip": 3.8038927111160565e-10, + "rel_diff_scalar_vs_library_pdip_scalar": 1.3229201048127153e-13, + "abs_diff_nats": 6831.818642758073, + "rel_diff": 0.7017889388825951, + "rel_diff_scalar_vs_library_pdip": 2.3533296715171588, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6831.818641655074, + "rel_diff_library_pdip_vmap_vs_scalar": 0.7017889387691982, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 17, + "draw_name": "call00015_lane17", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.0033403521024317102, + "centre_1": -0.004078467297591464, + "ell_comps_0": -0.01076606265657356, + "ell_comps_1": 0.014404445881011321, + "einstein_radius": -0.016103243806114165 + }, + "log_likelihood_vmap": 13360.530937095456, + "log_likelihood_scalar": 19481.557217641563, + "log_likelihood_library_pdip": 13360.530937095456, + "log_likelihood_library_pdip_scalar": 19481.557217641563, + "rel_diff_vmap_vs_library_pdip": 0.0, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 6121.026280546106, + "rel_diff": 0.3141959450245178, + "rel_diff_scalar_vs_library_pdip": 0.4581424427940287, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6121.026280546106, + "rel_diff_library_pdip_vmap_vs_scalar": 0.3141959450245178, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 18, + "draw_name": "call00015_lane18", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.0036504937209151113, + "centre_1": -0.0003963555596475738, + "ell_comps_0": -0.008227000946306733, + "ell_comps_1": -0.02487475830854786, + "einstein_radius": -0.0327871904693704 + }, + "log_likelihood_vmap": 12594.119293045376, + "log_likelihood_scalar": 18812.946857997056, + "log_likelihood_library_pdip": 12594.119293045376, + "log_likelihood_library_pdip_scalar": 18812.946857997056, + "rel_diff_vmap_vs_library_pdip": 0.0, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 6218.82756495168, + "rel_diff": 0.3305610552080077, + "rel_diff_scalar_vs_library_pdip": 0.49378820545123714, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6218.82756495168, + "rel_diff_library_pdip_vmap_vs_scalar": 0.3305610552080077, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 19, + "draw_name": "call00015_lane19", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.00840275144875603, + "centre_1": -0.003628185056462521, + "ell_comps_0": 0.005265994929748281, + "ell_comps_1": 0.009958068668923414, + "einstein_radius": -0.06501253116347949 + }, + "log_likelihood_vmap": 10415.233657552137, + "log_likelihood_scalar": 16927.632549568836, + "log_likelihood_library_pdip": 10415.233657528348, + "log_likelihood_library_pdip_scalar": 16927.63254956867, + "rel_diff_vmap_vs_library_pdip": 2.284033580214277e-12, + "rel_diff_scalar_vs_library_pdip_scalar": 9.886026568463228e-15, + "abs_diff_nats": 6512.398892016699, + "rel_diff": 0.38472000576256465, + "rel_diff_scalar_vs_library_pdip": 0.6252763121961445, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6512.398892040321, + "rel_diff_library_pdip_vmap_vs_scalar": 0.38472000576396387, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 20, + "draw_name": "call00016_lane00", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.00884193513479277, + "centre_1": -0.0043653741820675615, + "ell_comps_0": 0.013534779280882363, + "ell_comps_1": -0.002720977381459688, + "einstein_radius": 0.03143265344345525 + }, + "log_likelihood_vmap": 23125.781207506512, + "log_likelihood_scalar": 27642.806005943028, + "log_likelihood_library_pdip": 23125.78120750651, + "log_likelihood_library_pdip_scalar": 27642.8060059429, + "rel_diff_vmap_vs_library_pdip": 1.573126881400592e-16, + "rel_diff_scalar_vs_library_pdip_scalar": 4.606234917715501e-15, + "abs_diff_nats": 4517.024798436516, + "rel_diff": 0.16340688414430085, + "rel_diff_scalar_vs_library_pdip": 0.19532420366280714, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 4517.024798436392, + "rel_diff_library_pdip_vmap_vs_scalar": 0.16340688414429713, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 13, + "pdip_iter": null + }, + { + "lane": 21, + "draw_name": "call00016_lane01", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.004620853605949627, + "centre_1": -0.006101969080571725, + "ell_comps_0": 0.006298490627944492, + "ell_comps_1": -0.0011939165979551265, + "einstein_radius": -0.008698400624736369 + }, + "log_likelihood_vmap": 25204.95975364132, + "log_likelihood_scalar": 27788.39615110059, + "log_likelihood_library_pdip": 25204.95975365577, + "log_likelihood_library_pdip_scalar": 27788.396151112443, + "rel_diff_vmap_vs_library_pdip": 5.733019200585084e-13, + "rel_diff_scalar_vs_library_pdip_scalar": 4.265282130372361e-13, + "abs_diff_nats": 2583.4363974592707, + "rel_diff": 0.09296817216120444, + "rel_diff_scalar_vs_library_pdip": 0.10249714431978471, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 2583.436397456673, + "rel_diff_library_pdip_vmap_vs_scalar": 0.09296817216107131, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 6, + "pdip_iter": null + }, + { + "lane": 22, + "draw_name": "call00016_lane02", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.0023954075319476313, + "centre_1": 0.005058697427718103, + "ell_comps_0": -0.012832403546307256, + "ell_comps_1": 0.008158705801962226, + "einstein_radius": -0.04064267210128203 + }, + "log_likelihood_vmap": 11553.07472359277, + "log_likelihood_scalar": 17852.91967933103, + "log_likelihood_library_pdip": 11553.07472359277, + "log_likelihood_library_pdip_scalar": 17852.91967933103, + "rel_diff_vmap_vs_library_pdip": 0.0, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 6299.844955738259, + "rel_diff": 0.3528747716840858, + "rel_diff_scalar_vs_library_pdip": 0.5452959585618551, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6299.844955738259, + "rel_diff_library_pdip_vmap_vs_scalar": 0.3528747716840858, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 23, + "draw_name": "call00016_lane03", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.0034553415111254126, + "centre_1": -0.0012095214967760579, + "ell_comps_0": -0.013572031583894487, + "ell_comps_1": 0.012809349042796288, + "einstein_radius": 0.016462197503162912 + }, + "log_likelihood_vmap": 21983.89953487791, + "log_likelihood_scalar": 27386.085836286547, + "log_likelihood_library_pdip": 21983.8995348776, + "log_likelihood_library_pdip_scalar": 27386.08583628653, + "rel_diff_vmap_vs_library_pdip": 1.4066121349954454e-14, + "rel_diff_scalar_vs_library_pdip_scalar": 6.642020383707766e-16, + "abs_diff_nats": 5402.1863014086375, + "rel_diff": 0.19726025594540217, + "rel_diff_scalar_vs_library_pdip": 0.2457337604203632, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 5402.186301408929, + "rel_diff_library_pdip_vmap_vs_scalar": 0.19726025594541294, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 13, + "pdip_iter": null + }, + { + "lane": 24, + "draw_name": "call00016_lane04", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.002118045409654518, + "centre_1": -0.002760233148797609, + "ell_comps_0": 0.017300773468951293, + "ell_comps_1": 0.0015174503365170395, + "einstein_radius": -0.009907496303277252 + }, + "log_likelihood_vmap": 23449.286728500934, + "log_likelihood_scalar": 28384.905983325858, + "log_likelihood_library_pdip": 23449.286728501105, + "log_likelihood_library_pdip_scalar": 28384.905983325836, + "rel_diff_vmap_vs_library_pdip": 7.291693172291214e-15, + "rel_diff_scalar_vs_library_pdip_scalar": 7.689957773815647e-16, + "abs_diff_nats": 4935.619254824924, + "rel_diff": 0.17388182499967603, + "rel_diff_scalar_vs_library_pdip": 0.21048057077257806, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 4935.619254824731, + "rel_diff_library_pdip_vmap_vs_scalar": 0.17388182499966937, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 13, + "pdip_iter": null + }, + { + "lane": 25, + "draw_name": "call00016_lane05", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.004055224824141611, + "centre_1": 0.008121383491444374, + "ell_comps_0": -0.002675674189352585, + "ell_comps_1": 0.022116535787456582, + "einstein_radius": 0.03951210569146424 + }, + "log_likelihood_vmap": -136892.73476270546, + "log_likelihood_scalar": -189785.101411741, + "log_likelihood_library_pdip": -136892.7373918455, + "log_likelihood_library_pdip_scalar": -189785.10368105007, + "rel_diff_vmap_vs_library_pdip": 1.9205840227843143e-08, + "rel_diff_scalar_vs_library_pdip_scalar": 1.195725601364047e-08, + "abs_diff_nats": 52892.36664903554, + "rel_diff": 0.278696094981054, + "rel_diff_scalar_vs_library_pdip": 0.3863781602123636, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 52892.36628920457, + "rel_diff_library_pdip_vmap_vs_scalar": 0.27869608975262183, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": true, + "passes": 0, + "pdip_iter": null + }, + { + "lane": 26, + "draw_name": "call00016_lane06", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.008657008236802587, + "centre_1": 0.00296353203184632, + "ell_comps_0": 0.001140204699970393, + "ell_comps_1": 0.0024587369167136715, + "einstein_radius": -0.02214717629190477 + }, + "log_likelihood_vmap": 20216.49120362533, + "log_likelihood_scalar": -186990.07770962076, + "log_likelihood_library_pdip": 20216.488710127065, + "log_likelihood_library_pdip_scalar": -186990.07871807058, + "rel_diff_vmap_vs_library_pdip": 1.233398292139061e-07, + "rel_diff_scalar_vs_library_pdip_scalar": 5.393065919406771e-09, + "abs_diff_nats": 207206.5689132461, + "rel_diff": 1.108115315268331, + "rel_diff_scalar_vs_library_pdip": 10.249384519278644, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 207206.56742819765, + "rel_diff_library_pdip_vmap_vs_scalar": 1.108115301350335, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": true, + "passes": 1, + "pdip_iter": null + }, + { + "lane": 27, + "draw_name": "call00016_lane07", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.008477184803652458, + "centre_1": 0.003915910494663854, + "ell_comps_0": -0.009104458058464132, + "ell_comps_1": 0.0040545395575112865, + "einstein_radius": -0.027672851325696968 + }, + "log_likelihood_vmap": 23997.437153357016, + "log_likelihood_scalar": 27662.094569021887, + "log_likelihood_library_pdip": 23997.437153352766, + "log_likelihood_library_pdip_scalar": 27662.094569021836, + "rel_diff_vmap_vs_library_pdip": 1.7706721011620424e-13, + "rel_diff_scalar_vs_library_pdip_scalar": 1.8412092103944024e-15, + "abs_diff_nats": 3664.657415664871, + "rel_diff": 0.13247939003754375, + "rel_diff_scalar_vs_library_pdip": 0.15271036620496445, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 3664.6574156690695, + "rel_diff_library_pdip_vmap_vs_scalar": 0.13247939003769577, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 11, + "pdip_iter": null + }, + { + "lane": 28, + "draw_name": "call00016_lane08", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.0016692556339188685, + "centre_1": -0.0020136329026704475, + "ell_comps_0": -0.01765507329375373, + "ell_comps_1": 0.007611548713690083, + "einstein_radius": 0.032934930918189 + }, + "log_likelihood_vmap": 15428.346339165015, + "log_likelihood_scalar": -74102.3544780082, + "log_likelihood_library_pdip": 15428.35495122485, + "log_likelihood_library_pdip_scalar": -74102.36803813929, + "rel_diff_vmap_vs_library_pdip": 5.581968954248514e-07, + "rel_diff_scalar_vs_library_pdip_scalar": 1.8299187258583624e-07, + "abs_diff_nats": 89530.70081717322, + "rel_diff": 1.2082031866307807, + "rel_diff_scalar_vs_library_pdip": 5.802997773403265, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 89530.72298936415, + "rel_diff_library_pdip_vmap_vs_scalar": 1.2082032647497059, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": true, + "passes": 3, + "pdip_iter": null + }, + { + "lane": 29, + "draw_name": "call00016_lane09", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.0004381888692729163, + "centre_1": -0.005611258255408329, + "ell_comps_0": -0.028212995885542408, + "ell_comps_1": 0.02032938084918439, + "einstein_radius": 0.08210563031665497 + }, + "log_likelihood_vmap": 9199.66418882041, + "log_likelihood_scalar": 15888.261826776452, + "log_likelihood_library_pdip": 9199.664188834518, + "log_likelihood_library_pdip_scalar": 15888.26182677463, + "rel_diff_vmap_vs_library_pdip": 1.533543129870372e-12, + "rel_diff_scalar_vs_library_pdip_scalar": 1.1471534156628055e-13, + "abs_diff_nats": 6688.597637956042, + "rel_diff": 0.42097730455849885, + "rel_diff_scalar_vs_library_pdip": 0.7270480205201159, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6688.597637940111, + "rel_diff_library_pdip_vmap_vs_scalar": 0.42097730455754445, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 30, + "draw_name": "call00016_lane10", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.006865422615785068, + "centre_1": 0.007672434011054661, + "ell_comps_0": -0.0004443754014717277, + "ell_comps_1": -0.009376937319187229, + "einstein_radius": 0.07069214800098655 + }, + "log_likelihood_vmap": 18699.68589006445, + "log_likelihood_scalar": -2303.2655718650058, + "log_likelihood_library_pdip": 18699.68588990701, + "log_likelihood_library_pdip_scalar": -2303.265571702592, + "rel_diff_vmap_vs_library_pdip": 8.419436014135689e-12, + "rel_diff_scalar_vs_library_pdip_scalar": 7.051463272806392e-11, + "abs_diff_nats": 21002.951461929457, + "rel_diff": 9.11877106942683, + "rel_diff_scalar_vs_library_pdip": 1.1231713508678867, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 21002.951461609602, + "rel_diff_library_pdip_vmap_vs_scalar": 9.118771069930967, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 11, + "pdip_iter": null + }, + { + "lane": 31, + "draw_name": "call00016_lane11", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.0009434846288846137, + "centre_1": -0.005019378037730504, + "ell_comps_0": -0.009906341245761709, + "ell_comps_1": 0.005337547203081457, + "einstein_radius": 0.021637810364502075 + }, + "log_likelihood_vmap": 13020.244793610349, + "log_likelihood_scalar": 19182.855515516767, + "log_likelihood_library_pdip": 13020.244793610349, + "log_likelihood_library_pdip_scalar": 19182.855515516767, + "rel_diff_vmap_vs_library_pdip": 0.0, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 6162.610721906418, + "rel_diff": 0.32125617152887176, + "rel_diff_scalar_vs_library_pdip": 0.4733098969791031, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6162.610721906418, + "rel_diff_library_pdip_vmap_vs_scalar": 0.32125617152887176, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 32, + "draw_name": "call00016_lane12", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.007501332281640899, + "centre_1": -0.004481729694563993, + "ell_comps_0": 0.010332412839169434, + "ell_comps_1": -0.003991142259489408, + "einstein_radius": 0.009192357179279576 + }, + "log_likelihood_vmap": 20526.007408227943, + "log_likelihood_scalar": 25770.812570519138, + "log_likelihood_library_pdip": 20526.007408524267, + "log_likelihood_library_pdip_scalar": 25770.81257052731, + "rel_diff_vmap_vs_library_pdip": 1.4436528345545684e-11, + "rel_diff_scalar_vs_library_pdip_scalar": 3.1706025482768854e-13, + "abs_diff_nats": 5244.805162291195, + "rel_diff": 0.20351725999866452, + "rel_diff_scalar_vs_library_pdip": 0.2555199877700887, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 5244.805162003042, + "rel_diff_library_pdip_vmap_vs_scalar": 0.2035172599874186, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 33, + "draw_name": "call00016_lane13", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.007387955150592393, + "centre_1": -0.012189283154464192, + "ell_comps_0": 0.008975668561402167, + "ell_comps_1": 0.007167944425996534, + "einstein_radius": -0.04724415035491503 + }, + "log_likelihood_vmap": 9476.347543144097, + "log_likelihood_scalar": 15902.910586796046, + "log_likelihood_library_pdip": 9476.347543144097, + "log_likelihood_library_pdip_scalar": 15902.910586796046, + "rel_diff_vmap_vs_library_pdip": 0.0, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 6426.56304365195, + "rel_diff": 0.4041123798424567, + "rel_diff_scalar_vs_library_pdip": 0.6781687790990115, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6426.56304365195, + "rel_diff_library_pdip_vmap_vs_scalar": 0.4041123798424567, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 34, + "draw_name": "call00016_lane14", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.000386125459039801, + "centre_1": 0.006915867404617462, + "ell_comps_0": 0.009873645974923177, + "ell_comps_1": 0.0016807669637177417, + "einstein_radius": -0.02988317231293447 + }, + "log_likelihood_vmap": 23033.791255159696, + "log_likelihood_scalar": -130304.42446636864, + "log_likelihood_library_pdip": 23033.791840214264, + "log_likelihood_library_pdip_scalar": -130304.42314719265, + "rel_diff_vmap_vs_library_pdip": 2.5399837408240072e-08, + "rel_diff_scalar_vs_library_pdip_scalar": 1.0123800571741685e-08, + "abs_diff_nats": 153338.21572152834, + "rel_diff": 1.176769064822543, + "rel_diff_scalar_vs_library_pdip": 6.657098291514148, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 153338.21498740691, + "rel_diff_library_pdip_vmap_vs_scalar": 1.1767690711020236, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": true, + "passes": 2, + "pdip_iter": null + }, + { + "lane": 35, + "draw_name": "call00016_lane15", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.007751700182654455, + "centre_1": 0.00045977673595488515, + "ell_comps_0": -0.0005571070710696721, + "ell_comps_1": 0.00652407778540843, + "einstein_radius": -0.018266703354617997 + }, + "log_likelihood_vmap": 12436.966956375622, + "log_likelihood_scalar": 18757.071353384385, + "log_likelihood_library_pdip": 12436.966956375636, + "log_likelihood_library_pdip_scalar": 18757.071353417698, + "rel_diff_vmap_vs_library_pdip": 1.170053380330565e-15, + "rel_diff_scalar_vs_library_pdip_scalar": 1.7760220297114191e-12, + "abs_diff_nats": 6320.104397008763, + "rel_diff": 0.33694515939816005, + "rel_diff_scalar_vs_library_pdip": 0.5081708763219666, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6320.1043970420615, + "rel_diff_library_pdip_vmap_vs_scalar": 0.3369451593993369, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 36, + "draw_name": "call00016_lane16", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.002391640344038076, + "centre_1": 0.005471319325782662, + "ell_comps_0": 0.007125369000849133, + "ell_comps_1": -0.005032810664097539, + "einstein_radius": -0.08700102338561888 + }, + "log_likelihood_vmap": 4935.957801232435, + "log_likelihood_scalar": 11735.12560234069, + "log_likelihood_library_pdip": 4935.957801232435, + "log_likelihood_library_pdip_scalar": 11735.12560247699, + "rel_diff_vmap_vs_library_pdip": 0.0, + "rel_diff_scalar_vs_library_pdip_scalar": 1.1614746923350229e-11, + "abs_diff_nats": 6799.167801108255, + "rel_diff": 0.5793860271723118, + "rel_diff_scalar_vs_library_pdip": 1.377476889978801, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6799.167801244555, + "rel_diff_library_pdip_vmap_vs_scalar": 0.5793860271771971, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 37, + "draw_name": "call00016_lane17", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.0026856669213289885, + "centre_1": -0.000701322842884467, + "ell_comps_0": -0.017963099482535792, + "ell_comps_1": -0.011368990220314417, + "einstein_radius": 0.1245417314838293 + }, + "log_likelihood_vmap": -10183.840807931541, + "log_likelihood_scalar": -3158.477740005619, + "log_likelihood_library_pdip": -10183.840810860973, + "log_likelihood_library_pdip_scalar": -3158.4777400088497, + "rel_diff_vmap_vs_library_pdip": 2.876548796386419e-10, + "rel_diff_scalar_vs_library_pdip_scalar": 1.0228108116058432e-12, + "abs_diff_nats": 7025.363067925922, + "rel_diff": 2.2242876620410894, + "rel_diff_scalar_vs_library_pdip": 0.6898539756594455, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 7025.363070852123, + "rel_diff_library_pdip_vmap_vs_scalar": 2.2242876629652737, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 15, + "pdip_iter": null + }, + { + "lane": 38, + "draw_name": "call00016_lane18", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.006475272480271436, + "centre_1": 0.00036104957026942186, + "ell_comps_0": 0.0058048443769378386, + "ell_comps_1": -0.006014005069002815, + "einstein_radius": -0.043358074001971 + }, + "log_likelihood_vmap": 12580.943015568031, + "log_likelihood_scalar": 18932.692618871544, + "log_likelihood_library_pdip": 12580.943017464866, + "log_likelihood_library_pdip_scalar": 18932.692618890847, + "rel_diff_vmap_vs_library_pdip": 1.5077048448807206e-10, + "rel_diff_scalar_vs_library_pdip_scalar": 1.0195652535534315e-12, + "abs_diff_nats": 6351.749603303513, + "rel_diff": 0.3354910857725688, + "rel_diff_scalar_vs_library_pdip": 0.5048707074333918, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6351.749601425981, + "rel_diff_library_pdip_vmap_vs_scalar": 0.33549108567305796, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 39, + "draw_name": "call00016_lane19", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.001791290147759792, + "centre_1": -0.0026344329251194233, + "ell_comps_0": 0.006109533754666233, + "ell_comps_1": 0.004739218846482723, + "einstein_radius": 0.0525326188965729 + }, + "log_likelihood_vmap": -2591.194896997622, + "log_likelihood_scalar": -92415.23122412137, + "log_likelihood_library_pdip": -2590.8224259740236, + "log_likelihood_library_pdip_scalar": -92415.18628955261, + "rel_diff_vmap_vs_library_pdip": 0.00014376555485399797, + "rel_diff_scalar_vs_library_pdip_scalar": 4.862249437152171e-07, + "abs_diff_nats": 89824.03632712374, + "rel_diff": 0.971961387071428, + "rel_diff_scalar_vs_library_pdip": 34.6702297685947, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 89824.36386357859, + "rel_diff_library_pdip_vmap_vs_scalar": 0.971965403847626, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": true, + "passes": 4, + "pdip_iter": null + }, + { + "lane": 40, + "draw_name": "call00017_lane00", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.00039504289511865966, + "centre_1": -0.0031177345874673803, + "ell_comps_0": -0.01319670439502501, + "ell_comps_1": -0.01412705504678942, + "einstein_radius": -0.08353374721414841 + }, + "log_likelihood_vmap": 6775.961380959467, + "log_likelihood_scalar": 13398.840222654067, + "log_likelihood_library_pdip": 6775.961380959467, + "log_likelihood_library_pdip_scalar": 13398.840222654067, + "rel_diff_vmap_vs_library_pdip": 0.0, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 6622.878841694601, + "rel_diff": 0.4942874705302463, + "rel_diff_scalar_vs_library_pdip": 0.9774079970858409, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6622.878841694601, + "rel_diff_library_pdip_vmap_vs_scalar": 0.4942874705302463, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 41, + "draw_name": "call00017_lane01", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.0035711364854704077, + "centre_1": 0.0013105492408737255, + "ell_comps_0": -0.00180015387363288, + "ell_comps_1": 0.0054914513398384235, + "einstein_radius": 0.0036721503557828328 + }, + "log_likelihood_vmap": 13539.215248048647, + "log_likelihood_scalar": 19660.903121931384, + "log_likelihood_library_pdip": 13539.215247391869, + "log_likelihood_library_pdip_scalar": 19660.903121956206, + "rel_diff_vmap_vs_library_pdip": 4.8509374728052583e-11, + "rel_diff_scalar_vs_library_pdip_scalar": 1.2625019942785335e-12, + "abs_diff_nats": 6121.687873882736, + "rel_diff": 0.31136351346211066, + "rel_diff_scalar_vs_library_pdip": 0.4521449554263323, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6121.687874564337, + "rel_diff_library_pdip_vmap_vs_scalar": 0.3113635134963854, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 42, + "draw_name": "call00017_lane02", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.0003080166678035941, + "centre_1": -0.0007105501404145155, + "ell_comps_0": 0.013423484811455881, + "ell_comps_1": -0.0026843168562135787, + "einstein_radius": -0.027211776311711677 + }, + "log_likelihood_vmap": 27099.01248330762, + "log_likelihood_scalar": 18324.103083663205, + "log_likelihood_library_pdip": 27099.012483295468, + "log_likelihood_library_pdip_scalar": 18324.1030840283, + "rel_diff_vmap_vs_library_pdip": 4.48387158874384e-13, + "rel_diff_scalar_vs_library_pdip_scalar": 1.9924194897305465e-11, + "abs_diff_nats": 8774.909399644413, + "rel_diff": 0.4788725188665663, + "rel_diff_scalar_vs_library_pdip": 0.32380919434024924, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 8774.90939926717, + "rel_diff_library_pdip_vmap_vs_scalar": 0.47887251883643783, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 6, + "pdip_iter": null + }, + { + "lane": 43, + "draw_name": "call00017_lane03", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.0007755113444017845, + "centre_1": -0.0035255229487048357, + "ell_comps_0": -0.00399848580683964, + "ell_comps_1": 0.0017146502467540014, + "einstein_radius": -0.08651392214907494 + }, + "log_likelihood_vmap": -89812.6972414867, + "log_likelihood_scalar": -175043.29720358102, + "log_likelihood_library_pdip": NaN, + "log_likelihood_library_pdip_scalar": -175043.31207082624, + "rel_diff_vmap_vs_library_pdip": NaN, + "rel_diff_scalar_vs_library_pdip_scalar": 8.493466584791472e-08, + "abs_diff_nats": 85230.59996209432, + "rel_diff": 0.48691153173930657, + "rel_diff_scalar_vs_library_pdip": NaN, + "abs_diff_library_pdip_vmap_vs_scalar_nats": NaN, + "rel_diff_library_pdip_vmap_vs_scalar": NaN, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": true, + "passes": 2, + "pdip_iter": null + }, + { + "lane": 44, + "draw_name": "call00017_lane04", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.007147765623305864, + "centre_1": 0.0010457566746408338, + "ell_comps_0": 0.013576209131653673, + "ell_comps_1": -0.02008708588032471, + "einstein_radius": 0.032831422062920224 + }, + "log_likelihood_vmap": 26462.671263610457, + "log_likelihood_scalar": 13759.133270745908, + "log_likelihood_library_pdip": 26462.67126365984, + "log_likelihood_library_pdip_scalar": 13759.133270653569, + "rel_diff_vmap_vs_library_pdip": 1.8660974863591035e-12, + "rel_diff_scalar_vs_library_pdip_scalar": 6.711118808518938e-12, + "abs_diff_nats": 12703.537992864549, + "rel_diff": 0.9232803944034962, + "rel_diff_scalar_vs_library_pdip": 0.48005501282703866, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 12703.53799300627, + "rel_diff_library_pdip_vmap_vs_scalar": 0.9232803944199927, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 8, + "pdip_iter": null + }, + { + "lane": 45, + "draw_name": "call00017_lane05", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.001330428459324805, + "centre_1": 0.0005227443143650849, + "ell_comps_0": 0.011495347238845648, + "ell_comps_1": 0.016282146756616874, + "einstein_radius": -0.03990716965121255 + }, + "log_likelihood_vmap": 13504.069127366387, + "log_likelihood_scalar": 19903.394044775134, + "log_likelihood_library_pdip": 13504.069127931114, + "log_likelihood_library_pdip_scalar": 19903.39404477302, + "rel_diff_vmap_vs_library_pdip": 4.1819031201165996e-11, + "rel_diff_scalar_vs_library_pdip_scalar": 1.0619624382482499e-13, + "abs_diff_nats": 6399.324917408747, + "rel_diff": 0.32151927972750166, + "rel_diff_scalar_vs_library_pdip": 0.4738812321101044, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6399.324916841906, + "rel_diff_library_pdip_vmap_vs_scalar": 0.3215192796990562, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 46, + "draw_name": "call00017_lane06", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.002687443649497539, + "centre_1": -0.0019369334469605598, + "ell_comps_0": -0.015185516697078849, + "ell_comps_1": -0.012687661440239377, + "einstein_radius": 0.024820286560815807 + }, + "log_likelihood_vmap": 12905.386047434527, + "log_likelihood_scalar": 19139.565581617124, + "log_likelihood_library_pdip": 12905.386047434527, + "log_likelihood_library_pdip_scalar": 19139.565581617124, + "rel_diff_vmap_vs_library_pdip": 0.0, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 6234.179534182596, + "rel_diff": 0.32572210208210295, + "rel_diff_scalar_vs_library_pdip": 0.48306803928751085, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6234.179534182596, + "rel_diff_library_pdip_vmap_vs_scalar": 0.32572210208210295, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 47, + "draw_name": "call00017_lane07", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.003693907069305896, + "centre_1": 0.002094959418050611, + "ell_comps_0": -0.003985235543017392, + "ell_comps_1": -0.01016688375069693, + "einstein_radius": -0.061293935299826074 + }, + "log_likelihood_vmap": 21569.14415018888, + "log_likelihood_scalar": 15503.419442045153, + "log_likelihood_library_pdip": 21569.144150171986, + "log_likelihood_library_pdip_scalar": 15503.419442032253, + "rel_diff_vmap_vs_library_pdip": 7.83284374312979e-13, + "rel_diff_scalar_vs_library_pdip_scalar": 8.320921005963696e-13, + "abs_diff_nats": 6065.724708143727, + "rel_diff": 0.3912507644406194, + "rel_diff_scalar_vs_library_pdip": 0.2812223176726493, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6065.724708139733, + "rel_diff_library_pdip_vmap_vs_scalar": 0.3912507644406873, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 48, + "draw_name": "call00017_lane08", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.003201023829002854, + "centre_1": 0.0051592827552293585, + "ell_comps_0": -0.016832634529093247, + "ell_comps_1": 0.018395875062653597, + "einstein_radius": -0.023696742396298376 + }, + "log_likelihood_vmap": 22376.164810427435, + "log_likelihood_scalar": 27530.814473047278, + "log_likelihood_library_pdip": 22376.16481042714, + "log_likelihood_library_pdip_scalar": 27530.81447304727, + "rel_diff_vmap_vs_library_pdip": 1.3169204189857933e-14, + "rel_diff_scalar_vs_library_pdip_scalar": 2.642841395523044e-16, + "abs_diff_nats": 5154.649662619842, + "rel_diff": 0.18723200752619412, + "rel_diff_scalar_vs_library_pdip": 0.23036341152698808, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 5154.64966262013, + "rel_diff_library_pdip_vmap_vs_scalar": 0.1872320075262046, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 49, + "draw_name": "call00017_lane09", + "draw_kind": "captured", + "offsets": { + "centre_0": 2.2604383701358236e-05, + "centre_1": -0.005697104995547526, + "ell_comps_0": -0.0005169325215696047, + "ell_comps_1": 0.0010224650903271142, + "einstein_radius": -0.016159263378539013 + }, + "log_likelihood_vmap": 26250.953420722253, + "log_likelihood_scalar": -177402.9202812782, + "log_likelihood_library_pdip": 26250.95031934693, + "log_likelihood_library_pdip_scalar": -177402.92200116633, + "rel_diff_vmap_vs_library_pdip": 1.181433541907e-07, + "rel_diff_scalar_vs_library_pdip_scalar": 9.694812834420552e-09, + "abs_diff_nats": 203653.87370200045, + "rel_diff": 1.1479736262464029, + "rel_diff_scalar_vs_library_pdip": 7.757961830834459, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 203653.87232051327, + "rel_diff_library_pdip_vmap_vs_scalar": 1.147973607329728, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": true, + "passes": 2, + "pdip_iter": null + } + ], + "lane_pins": [ + { + "pin": "lane 0: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 18700.594048999155, + "reference_value": 18700.594049000425, + "rel_diff": 6.78938113061105e-14, + "abs_diff_nats": 1.2696546036750078e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 0: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 24758.506194309353, + "reference_value": 24758.506194309135, + "rel_diff": 8.816312531637115e-15, + "abs_diff_nats": 2.1827872842550278e-10, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 0: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 18700.594048999155, + "reference_value": 24758.506194309353, + "rel_diff": 0.24468003431897623, + "abs_diff_nats": 6057.912145310198, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 0: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 18700.594049000425, + "reference_value": 24758.506194309135, + "rel_diff": 0.24468003431891827, + "abs_diff_nats": 6057.91214530871, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 1: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 14200.2143078324, + "reference_value": 14200.214306774666, + "rel_diff": 7.448726049857396e-11, + "abs_diff_nats": 1.0577350622043014e-06, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 1: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 20551.004887772608, + "reference_value": 20551.00488777298, + "rel_diff": 1.8056238142599476e-14, + "abs_diff_nats": 3.710738383233547e-10, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 1: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 14200.2143078324, + "reference_value": 20551.004887772608, + "rel_diff": 0.30902579288075527, + "abs_diff_nats": 6350.790579940207, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 1: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 14200.214306774666, + "reference_value": 20551.00488777298, + "rel_diff": 0.30902579293223653, + "abs_diff_nats": 6350.790580998313, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 2: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -23119.397918166338, + "reference_value": -23119.269283083646, + "rel_diff": 5.563977006242197e-06, + "abs_diff_nats": 0.12863508269219892, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 2: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -189709.07359119633, + "reference_value": -189709.07575724524, + "rel_diff": 1.1417740063377248e-08, + "abs_diff_nats": 0.0021660489146597683, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 2: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -23119.397918166338, + "reference_value": -189709.07359119633, + "rel_diff": 0.8781323556089559, + "abs_diff_nats": 166589.67567303, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 2: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -23119.269283083646, + "reference_value": -189709.07575724524, + "rel_diff": 0.8781330350653996, + "abs_diff_nats": 166589.8064741616, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 3: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 18502.010125207293, + "reference_value": 18502.009486267387, + "rel_diff": 3.453354114783693e-08, + "abs_diff_nats": 0.000638939905911684, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 3: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -141741.96888570738, + "reference_value": -141741.9662042298, + "rel_diff": 1.8918021593985197e-08, + "abs_diff_nats": 0.0026814775774255395, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 3: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 18502.010125207293, + "reference_value": -141741.96888570738, + "rel_diff": 1.1305330402184992, + "abs_diff_nats": 160243.97901091469, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 3: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 18502.009486267387, + "reference_value": -141741.9662042298, + "rel_diff": 1.1305330381801582, + "abs_diff_nats": 160243.9756904972, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 4: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 18751.91028804102, + "reference_value": 18751.91028803973, + "rel_diff": 6.887204859023277e-14, + "abs_diff_nats": 1.291482476517558e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 4: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 24880.545932988724, + "reference_value": 24880.545932988734, + "rel_diff": 4.386534142245053e-16, + "abs_diff_nats": 1.0913936421275139e-11, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 4: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 18751.91028804102, + "reference_value": 24880.545932988724, + "rel_diff": 0.24632239426956629, + "abs_diff_nats": 6128.6356449477025, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 4: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 18751.91028803973, + "reference_value": 24880.545932988734, + "rel_diff": 0.24632239426961852, + "abs_diff_nats": 6128.635644949005, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 5: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 24935.95274065376, + "reference_value": 24935.952740667337, + "rel_diff": 5.444723548069624e-13, + "abs_diff_nats": 1.3576936908066273e-08, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 5: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 25472.51918677797, + "reference_value": 25472.519186809055, + "rel_diff": 1.2203947587051716e-12, + "abs_diff_nats": 3.108652890659869e-08, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 5: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 24935.95274065376, + "reference_value": 25472.51918677797, + "rel_diff": 0.02106452220880942, + "abs_diff_nats": 536.5664461242086, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 5: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 24935.952740667337, + "reference_value": 25472.519186809055, + "rel_diff": 0.021064522209471106, + "abs_diff_nats": 536.5664461417182, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 6: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 28315.201514570836, + "reference_value": 28315.201450716388, + "rel_diff": 2.255129565490238e-09, + "abs_diff_nats": 6.38544479443226e-05, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 6: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -83383.91553783754, + "reference_value": -83383.91543299965, + "rel_diff": 1.2572915326225146e-09, + "abs_diff_nats": 0.00010483789083082229, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 6: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 28315.201514570836, + "reference_value": -83383.91553783754, + "rel_diff": 1.3395762999606573, + "abs_diff_nats": 111699.11705240837, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 6: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 28315.201450716388, + "reference_value": -83383.91543299965, + "rel_diff": 1.339576299621815, + "abs_diff_nats": 111699.11688371604, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 7: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 23338.89001398478, + "reference_value": 23338.89001459252, + "rel_diff": 2.6039908034988732e-11, + "abs_diff_nats": 6.077425496187061e-07, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 7: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -11960.284429561456, + "reference_value": -11960.284429931584, + "rel_diff": 3.094641820617874e-11, + "abs_diff_nats": 3.701279638335109e-07, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 7: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 23338.89001398478, + "reference_value": -11960.284429561456, + "rel_diff": 2.9513658016610007, + "abs_diff_nats": 35299.17444354623, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 7: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 23338.89001459252, + "reference_value": -11960.284429931584, + "rel_diff": 2.9513658016514266, + "abs_diff_nats": 35299.174444524106, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 8: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 24869.037000609715, + "reference_value": 24869.037000618693, + "rel_diff": 3.6103254402970966e-13, + "abs_diff_nats": 8.978531695902348e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 8: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 23223.5503914968, + "reference_value": 23223.550391490266, + "rel_diff": 2.8134414537799874e-13, + "abs_diff_nats": 6.5338099375367165e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 8: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 24869.037000609715, + "reference_value": 23223.5503914968, + "rel_diff": 0.07085422260480047, + "abs_diff_nats": 1645.4866091129152, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 8: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 24869.037000618693, + "reference_value": 23223.550391490266, + "rel_diff": 0.07085422260548835, + "abs_diff_nats": 1645.4866091284275, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 9: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -31749.513230927652, + "reference_value": -31750.031116865313, + "rel_diff": 1.631135212922525e-05, + "abs_diff_nats": 0.517885937661049, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 9: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -177117.70707592083, + "reference_value": -177117.67871082143, + "rel_diff": 1.6014832399351334e-07, + "abs_diff_nats": 0.028365099395159632, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 9: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -31749.513230927652, + "reference_value": -177117.70707592083, + "rel_diff": 0.8207434267578999, + "abs_diff_nats": 145368.1938449932, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 9: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -31750.031116865313, + "reference_value": -177117.67871082143, + "rel_diff": 0.8207404740850103, + "abs_diff_nats": 145367.64759395612, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 10: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 6560.779755510557, + "reference_value": 6560.779574232118, + "rel_diff": 2.7630624891784683e-08, + "abs_diff_nats": 0.00018127843941329047, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 10: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -101745.38334612483, + "reference_value": -101745.38351063897, + "rel_diff": 1.6169200007374225e-09, + "abs_diff_nats": 0.0001645141455810517, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 10: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 6560.779755510557, + "reference_value": -101745.38334612483, + "rel_diff": 1.0644823336425164, + "abs_diff_nats": 108306.16310163538, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 10: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 6560.779574232118, + "reference_value": -101745.38351063897, + "rel_diff": 1.0644823317565666, + "abs_diff_nats": 108306.16308487109, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 11: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 12667.92491578938, + "reference_value": 12667.924904351159, + "rel_diff": 9.029276843243341e-10, + "abs_diff_nats": 1.1438220099080354e-05, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 11: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 18957.52834973713, + "reference_value": 18957.52834974321, + "rel_diff": 3.206674664808082e-13, + "abs_diff_nats": 6.079062586650252e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 11: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 12667.92491578938, + "reference_value": 18957.52834973713, + "rel_diff": 0.3317733893318938, + "abs_diff_nats": 6289.603433947752, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 11: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 12667.924904351159, + "reference_value": 18957.52834974321, + "rel_diff": 0.3317733899354684, + "abs_diff_nats": 6289.603445392051, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 12: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 18842.279796744107, + "reference_value": 18842.279796748757, + "rel_diff": 2.467502322232501e-13, + "abs_diff_nats": 4.649336915463209e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 12: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 24810.049660195124, + "reference_value": 24810.0496601949, + "rel_diff": 8.94462970739782e-15, + "abs_diff_nats": 2.219167072325945e-10, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 12: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 18842.279796744107, + "reference_value": 24810.049660195124, + "rel_diff": 0.24053840863630424, + "abs_diff_nats": 5967.769863451016, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 12: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 18842.279796748757, + "reference_value": 24810.0496601949, + "rel_diff": 0.24053840863611006, + "abs_diff_nats": 5967.769863446145, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 13: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 22879.75598926498, + "reference_value": 22879.75598895483, + "rel_diff": 1.3555749692851728e-11, + "abs_diff_nats": 3.101522452197969e-07, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 13: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -3605.706216041661, + "reference_value": -3605.7062159501947, + "rel_diff": 2.5367031502259044e-11, + "abs_diff_nats": 9.146606316789985e-08, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 13: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 22879.75598926498, + "reference_value": -3605.706216041661, + "rel_diff": 7.345429887624717, + "abs_diff_nats": 26485.46220530664, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 13: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 22879.75598895483, + "reference_value": -3605.7062159501947, + "rel_diff": 7.345429887699665, + "abs_diff_nats": 26485.462204905023, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 14: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 4357.021950291826, + "reference_value": 4357.021950280177, + "rel_diff": 2.673571139470296e-12, + "abs_diff_nats": 1.1648808140307665e-08, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 14: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 11126.921475785763, + "reference_value": 11126.921475785763, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 14: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 4357.021950291826, + "reference_value": 11126.921475785763, + "rel_diff": 0.6084252090954797, + "abs_diff_nats": 6769.899525493936, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 14: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 4357.021950280177, + "reference_value": 11126.921475785763, + "rel_diff": 0.6084252090965266, + "abs_diff_nats": 6769.899525505585, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 15: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 14146.464614111494, + "reference_value": 14146.464613419455, + "rel_diff": 4.89195127877643e-11, + "abs_diff_nats": 6.920381565578282e-07, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 15: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 20410.34397371921, + "reference_value": 20410.343973721156, + "rel_diff": 9.53594248240011e-14, + "abs_diff_nats": 1.9463186617940664e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 15: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 14146.464614111494, + "reference_value": 20410.34397371921, + "rel_diff": 0.30689729519861203, + "abs_diff_nats": 6263.879359607716, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 15: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 14146.464613419455, + "reference_value": 20410.343973721156, + "rel_diff": 0.30689729523258436, + "abs_diff_nats": 6263.8793603017, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 16: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 2903.043598923672, + "reference_value": 2903.0436000279587, + "rel_diff": 3.8038927111160565e-10, + "abs_diff_nats": 1.104286639019847e-06, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 16: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 9734.862241681745, + "reference_value": 9734.862241683033, + "rel_diff": 1.3229201048127153e-13, + "abs_diff_nats": 1.2878444977104664e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 16: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 2903.043598923672, + "reference_value": 9734.862241681745, + "rel_diff": 0.7017889388825951, + "abs_diff_nats": 6831.818642758073, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 16: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 2903.0436000279587, + "reference_value": 9734.862241683033, + "rel_diff": 0.7017889387691982, + "abs_diff_nats": 6831.818641655074, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 17: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 13360.530937095456, + "reference_value": 13360.530937095456, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 17: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 19481.557217641563, + "reference_value": 19481.557217641563, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 17: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 13360.530937095456, + "reference_value": 19481.557217641563, + "rel_diff": 0.3141959450245178, + "abs_diff_nats": 6121.026280546106, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 17: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 13360.530937095456, + "reference_value": 19481.557217641563, + "rel_diff": 0.3141959450245178, + "abs_diff_nats": 6121.026280546106, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 18: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 12594.119293045376, + "reference_value": 12594.119293045376, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 18: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 18812.946857997056, + "reference_value": 18812.946857997056, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 18: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 12594.119293045376, + "reference_value": 18812.946857997056, + "rel_diff": 0.3305610552080077, + "abs_diff_nats": 6218.82756495168, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 18: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 12594.119293045376, + "reference_value": 18812.946857997056, + "rel_diff": 0.3305610552080077, + "abs_diff_nats": 6218.82756495168, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 19: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 10415.233657552137, + "reference_value": 10415.233657528348, + "rel_diff": 2.284033580214277e-12, + "abs_diff_nats": 2.378874341957271e-08, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 19: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 16927.632549568836, + "reference_value": 16927.63254956867, + "rel_diff": 9.886026568463228e-15, + "abs_diff_nats": 1.673470251262188e-10, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 19: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 10415.233657552137, + "reference_value": 16927.632549568836, + "rel_diff": 0.38472000576256465, + "abs_diff_nats": 6512.398892016699, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 19: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 10415.233657528348, + "reference_value": 16927.63254956867, + "rel_diff": 0.38472000576396387, + "abs_diff_nats": 6512.398892040321, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 20: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 23125.781207506512, + "reference_value": 23125.78120750651, + "rel_diff": 1.573126881400592e-16, + "abs_diff_nats": 3.637978807091713e-12, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 20: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 27642.806005943028, + "reference_value": 27642.8060059429, + "rel_diff": 4.606234917715501e-15, + "abs_diff_nats": 1.2732925824820995e-10, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 20: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 23125.781207506512, + "reference_value": 27642.806005943028, + "rel_diff": 0.16340688414430085, + "abs_diff_nats": 4517.024798436516, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 20: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 23125.78120750651, + "reference_value": 27642.8060059429, + "rel_diff": 0.16340688414429713, + "abs_diff_nats": 4517.024798436392, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 21: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 25204.95975364132, + "reference_value": 25204.95975365577, + "rel_diff": 5.733019200585084e-13, + "abs_diff_nats": 1.4450051821768284e-08, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 21: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 27788.39615110059, + "reference_value": 27788.396151112443, + "rel_diff": 4.265282130372361e-13, + "abs_diff_nats": 1.18525349535048e-08, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 21: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 25204.95975364132, + "reference_value": 27788.39615110059, + "rel_diff": 0.09296817216120444, + "abs_diff_nats": 2583.4363974592707, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 21: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 25204.95975365577, + "reference_value": 27788.396151112443, + "rel_diff": 0.09296817216107131, + "abs_diff_nats": 2583.436397456673, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 22: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 11553.07472359277, + "reference_value": 11553.07472359277, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 22: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 17852.91967933103, + "reference_value": 17852.91967933103, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 22: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 11553.07472359277, + "reference_value": 17852.91967933103, + "rel_diff": 0.3528747716840858, + "abs_diff_nats": 6299.844955738259, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 22: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 11553.07472359277, + "reference_value": 17852.91967933103, + "rel_diff": 0.3528747716840858, + "abs_diff_nats": 6299.844955738259, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 23: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 21983.89953487791, + "reference_value": 21983.8995348776, + "rel_diff": 1.4066121349954454e-14, + "abs_diff_nats": 3.092281986027956e-10, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 23: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 27386.085836286547, + "reference_value": 27386.08583628653, + "rel_diff": 6.642020383707766e-16, + "abs_diff_nats": 1.8189894035458565e-11, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 23: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 21983.89953487791, + "reference_value": 27386.085836286547, + "rel_diff": 0.19726025594540217, + "abs_diff_nats": 5402.1863014086375, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 23: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 21983.8995348776, + "reference_value": 27386.08583628653, + "rel_diff": 0.19726025594541294, + "abs_diff_nats": 5402.186301408929, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 24: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 23449.286728500934, + "reference_value": 23449.286728501105, + "rel_diff": 7.291693172291214e-15, + "abs_diff_nats": 1.709850039333105e-10, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 24: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 28384.905983325858, + "reference_value": 28384.905983325836, + "rel_diff": 7.689957773815647e-16, + "abs_diff_nats": 2.1827872842550278e-11, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 24: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 23449.286728500934, + "reference_value": 28384.905983325858, + "rel_diff": 0.17388182499967603, + "abs_diff_nats": 4935.619254824924, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 24: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 23449.286728501105, + "reference_value": 28384.905983325836, + "rel_diff": 0.17388182499966937, + "abs_diff_nats": 4935.619254824731, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 25: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -136892.73476270546, + "reference_value": -136892.7373918455, + "rel_diff": 1.9205840227843143e-08, + "abs_diff_nats": 0.0026291400426998734, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 25: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -189785.101411741, + "reference_value": -189785.10368105007, + "rel_diff": 1.195725601364047e-08, + "abs_diff_nats": 0.002269309072289616, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 25: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -136892.73476270546, + "reference_value": -189785.101411741, + "rel_diff": 0.278696094981054, + "abs_diff_nats": 52892.36664903554, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 25: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -136892.7373918455, + "reference_value": -189785.10368105007, + "rel_diff": 0.27869608975262183, + "abs_diff_nats": 52892.36628920457, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 26: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 20216.49120362533, + "reference_value": 20216.488710127065, + "rel_diff": 1.233398292139061e-07, + "abs_diff_nats": 0.002493498264811933, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 26: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -186990.07770962076, + "reference_value": -186990.07871807058, + "rel_diff": 5.393065919406771e-09, + "abs_diff_nats": 0.0010084498208016157, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 26: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 20216.49120362533, + "reference_value": -186990.07770962076, + "rel_diff": 1.108115315268331, + "abs_diff_nats": 207206.5689132461, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 26: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 20216.488710127065, + "reference_value": -186990.07871807058, + "rel_diff": 1.108115301350335, + "abs_diff_nats": 207206.56742819765, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 27: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 23997.437153357016, + "reference_value": 23997.437153352766, + "rel_diff": 1.7706721011620424e-13, + "abs_diff_nats": 4.249159246683121e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 27: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 27662.094569021887, + "reference_value": 27662.094569021836, + "rel_diff": 1.8412092103944024e-15, + "abs_diff_nats": 5.093170329928398e-11, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 27: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 23997.437153357016, + "reference_value": 27662.094569021887, + "rel_diff": 0.13247939003754375, + "abs_diff_nats": 3664.657415664871, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 27: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 23997.437153352766, + "reference_value": 27662.094569021836, + "rel_diff": 0.13247939003769577, + "abs_diff_nats": 3664.6574156690695, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 28: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 15428.346339165015, + "reference_value": 15428.35495122485, + "rel_diff": 5.581968954248514e-07, + "abs_diff_nats": 0.008612059835286345, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 28: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -74102.3544780082, + "reference_value": -74102.36803813929, + "rel_diff": 1.8299187258583624e-07, + "abs_diff_nats": 0.01356013109034393, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 28: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 15428.346339165015, + "reference_value": -74102.3544780082, + "rel_diff": 1.2082031866307807, + "abs_diff_nats": 89530.70081717322, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 28: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 15428.35495122485, + "reference_value": -74102.36803813929, + "rel_diff": 1.2082032647497059, + "abs_diff_nats": 89530.72298936415, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 29: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 9199.66418882041, + "reference_value": 9199.664188834518, + "rel_diff": 1.533543129870372e-12, + "abs_diff_nats": 1.4108081813901663e-08, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 29: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 15888.261826776452, + "reference_value": 15888.26182677463, + "rel_diff": 1.1471534156628055e-13, + "abs_diff_nats": 1.8226273823529482e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 29: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 9199.66418882041, + "reference_value": 15888.261826776452, + "rel_diff": 0.42097730455849885, + "abs_diff_nats": 6688.597637956042, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 29: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 9199.664188834518, + "reference_value": 15888.26182677463, + "rel_diff": 0.42097730455754445, + "abs_diff_nats": 6688.597637940111, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 30: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 18699.68589006445, + "reference_value": 18699.68588990701, + "rel_diff": 8.419436014135689e-12, + "abs_diff_nats": 1.5744080883450806e-07, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 30: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -2303.2655718650058, + "reference_value": -2303.265571702592, + "rel_diff": 7.051463272806392e-11, + "abs_diff_nats": 1.6241392586380243e-07, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 30: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 18699.68589006445, + "reference_value": -2303.2655718650058, + "rel_diff": 9.11877106942683, + "abs_diff_nats": 21002.951461929457, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 30: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 18699.68588990701, + "reference_value": -2303.265571702592, + "rel_diff": 9.118771069930967, + "abs_diff_nats": 21002.951461609602, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 31: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 13020.244793610349, + "reference_value": 13020.244793610349, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 31: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 19182.855515516767, + "reference_value": 19182.855515516767, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 31: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 13020.244793610349, + "reference_value": 19182.855515516767, + "rel_diff": 0.32125617152887176, + "abs_diff_nats": 6162.610721906418, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 31: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 13020.244793610349, + "reference_value": 19182.855515516767, + "rel_diff": 0.32125617152887176, + "abs_diff_nats": 6162.610721906418, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 32: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 20526.007408227943, + "reference_value": 20526.007408524267, + "rel_diff": 1.4436528345545684e-11, + "abs_diff_nats": 2.963242877740413e-07, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 32: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 25770.812570519138, + "reference_value": 25770.81257052731, + "rel_diff": 3.1706025482768854e-13, + "abs_diff_nats": 8.170900400727987e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 32: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 20526.007408227943, + "reference_value": 25770.812570519138, + "rel_diff": 0.20351725999866452, + "abs_diff_nats": 5244.805162291195, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 32: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 20526.007408524267, + "reference_value": 25770.81257052731, + "rel_diff": 0.2035172599874186, + "abs_diff_nats": 5244.805162003042, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 33: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 9476.347543144097, + "reference_value": 9476.347543144097, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 33: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 15902.910586796046, + "reference_value": 15902.910586796046, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 33: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 9476.347543144097, + "reference_value": 15902.910586796046, + "rel_diff": 0.4041123798424567, + "abs_diff_nats": 6426.56304365195, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 33: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 9476.347543144097, + "reference_value": 15902.910586796046, + "rel_diff": 0.4041123798424567, + "abs_diff_nats": 6426.56304365195, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 34: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 23033.791255159696, + "reference_value": 23033.791840214264, + "rel_diff": 2.5399837408240072e-08, + "abs_diff_nats": 0.0005850545676366892, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 34: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -130304.42446636864, + "reference_value": -130304.42314719265, + "rel_diff": 1.0123800571741685e-08, + "abs_diff_nats": 0.0013191759935580194, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 34: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 23033.791255159696, + "reference_value": -130304.42446636864, + "rel_diff": 1.176769064822543, + "abs_diff_nats": 153338.21572152834, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 34: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 23033.791840214264, + "reference_value": -130304.42314719265, + "rel_diff": 1.1767690711020236, + "abs_diff_nats": 153338.21498740691, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 35: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 12436.966956375622, + "reference_value": 12436.966956375636, + "rel_diff": 1.170053380330565e-15, + "abs_diff_nats": 1.4551915228366852e-11, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 35: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 18757.071353384385, + "reference_value": 18757.071353417698, + "rel_diff": 1.7760220297114191e-12, + "abs_diff_nats": 3.3312971936538815e-08, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 35: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 12436.966956375622, + "reference_value": 18757.071353384385, + "rel_diff": 0.33694515939816005, + "abs_diff_nats": 6320.104397008763, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 35: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 12436.966956375636, + "reference_value": 18757.071353417698, + "rel_diff": 0.3369451593993369, + "abs_diff_nats": 6320.1043970420615, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 36: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 4935.957801232435, + "reference_value": 4935.957801232435, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 36: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 11735.12560234069, + "reference_value": 11735.12560247699, + "rel_diff": 1.1614746923350229e-11, + "abs_diff_nats": 1.3630051398649812e-07, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 36: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 4935.957801232435, + "reference_value": 11735.12560234069, + "rel_diff": 0.5793860271723118, + "abs_diff_nats": 6799.167801108255, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 36: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 4935.957801232435, + "reference_value": 11735.12560247699, + "rel_diff": 0.5793860271771971, + "abs_diff_nats": 6799.167801244555, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 37: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -10183.840807931541, + "reference_value": -10183.840810860973, + "rel_diff": 2.876548796386419e-10, + "abs_diff_nats": 2.9294315027073026e-06, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 37: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -3158.477740005619, + "reference_value": -3158.4777400088497, + "rel_diff": 1.0228108116058432e-12, + "abs_diff_nats": 3.230525180697441e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 37: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -10183.840807931541, + "reference_value": -3158.477740005619, + "rel_diff": 2.2242876620410894, + "abs_diff_nats": 7025.363067925922, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 37: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -10183.840810860973, + "reference_value": -3158.4777400088497, + "rel_diff": 2.2242876629652737, + "abs_diff_nats": 7025.363070852123, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 38: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 12580.943015568031, + "reference_value": 12580.943017464866, + "rel_diff": 1.5077048448807206e-10, + "abs_diff_nats": 1.896834874060005e-06, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 38: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 18932.692618871544, + "reference_value": 18932.692618890847, + "rel_diff": 1.0195652535534315e-12, + "abs_diff_nats": 1.930311555042863e-08, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 38: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 12580.943015568031, + "reference_value": 18932.692618871544, + "rel_diff": 0.3354910857725688, + "abs_diff_nats": 6351.749603303513, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 38: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 12580.943017464866, + "reference_value": 18932.692618890847, + "rel_diff": 0.33549108567305796, + "abs_diff_nats": 6351.749601425981, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 39: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -2591.194896997622, + "reference_value": -2590.8224259740236, + "rel_diff": 0.00014376555485399797, + "abs_diff_nats": 0.3724710235983366, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 39: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -92415.23122412137, + "reference_value": -92415.18628955261, + "rel_diff": 4.862249437152171e-07, + "abs_diff_nats": 0.044934568752069026, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 39: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -2591.194896997622, + "reference_value": -92415.23122412137, + "rel_diff": 0.971961387071428, + "abs_diff_nats": 89824.03632712374, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 39: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -2590.8224259740236, + "reference_value": -92415.18628955261, + "rel_diff": 0.971965403847626, + "abs_diff_nats": 89824.36386357859, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 40: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 6775.961380959467, + "reference_value": 6775.961380959467, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 40: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 13398.840222654067, + "reference_value": 13398.840222654067, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 40: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 6775.961380959467, + "reference_value": 13398.840222654067, + "rel_diff": 0.4942874705302463, + "abs_diff_nats": 6622.878841694601, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 40: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 6775.961380959467, + "reference_value": 13398.840222654067, + "rel_diff": 0.4942874705302463, + "abs_diff_nats": 6622.878841694601, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 41: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 13539.215248048647, + "reference_value": 13539.215247391869, + "rel_diff": 4.8509374728052583e-11, + "abs_diff_nats": 6.567788659594953e-07, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 41: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 19660.903121931384, + "reference_value": 19660.903121956206, + "rel_diff": 1.2625019942785335e-12, + "abs_diff_nats": 2.4821929400786757e-08, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 41: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 13539.215248048647, + "reference_value": 19660.903121931384, + "rel_diff": 0.31136351346211066, + "abs_diff_nats": 6121.687873882736, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 41: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 13539.215247391869, + "reference_value": 19660.903121956206, + "rel_diff": 0.3113635134963854, + "abs_diff_nats": 6121.687874564337, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 42: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 27099.01248330762, + "reference_value": 27099.012483295468, + "rel_diff": 4.48387158874384e-13, + "abs_diff_nats": 1.2150849215686321e-08, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 42: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 18324.103083663205, + "reference_value": 18324.1030840283, + "rel_diff": 1.9924194897305465e-11, + "abs_diff_nats": 3.6509300116449594e-07, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 42: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 27099.01248330762, + "reference_value": 18324.103083663205, + "rel_diff": 0.4788725188665663, + "abs_diff_nats": 8774.909399644413, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 42: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 27099.012483295468, + "reference_value": 18324.1030840283, + "rel_diff": 0.47887251883643783, + "abs_diff_nats": 8774.90939926717, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 43: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -89812.6972414867, + "reference_value": NaN, + "rel_diff": NaN, + "abs_diff_nats": NaN, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 43: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -175043.29720358102, + "reference_value": -175043.31207082624, + "rel_diff": 8.493466584791472e-08, + "abs_diff_nats": 0.014867245219647884, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 43: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -89812.6972414867, + "reference_value": -175043.29720358102, + "rel_diff": 0.48691153173930657, + "abs_diff_nats": 85230.59996209432, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 43: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": NaN, + "reference_value": -175043.31207082624, + "rel_diff": NaN, + "abs_diff_nats": NaN, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 44: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 26462.671263610457, + "reference_value": 26462.67126365984, + "rel_diff": 1.8660974863591035e-12, + "abs_diff_nats": 4.938192432746291e-08, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 44: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 13759.133270745908, + "reference_value": 13759.133270653569, + "rel_diff": 6.711118808518938e-12, + "abs_diff_nats": 9.233917808160186e-08, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 44: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 26462.671263610457, + "reference_value": 13759.133270745908, + "rel_diff": 0.9232803944034962, + "abs_diff_nats": 12703.537992864549, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 44: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 26462.67126365984, + "reference_value": 13759.133270653569, + "rel_diff": 0.9232803944199927, + "abs_diff_nats": 12703.53799300627, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 45: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 13504.069127366387, + "reference_value": 13504.069127931114, + "rel_diff": 4.1819031201165996e-11, + "abs_diff_nats": 5.647270882036537e-07, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 45: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 19903.394044775134, + "reference_value": 19903.39404477302, + "rel_diff": 1.0619624382482499e-13, + "abs_diff_nats": 2.1136656869202852e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 45: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 13504.069127366387, + "reference_value": 19903.394044775134, + "rel_diff": 0.32151927972750166, + "abs_diff_nats": 6399.324917408747, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 45: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 13504.069127931114, + "reference_value": 19903.39404477302, + "rel_diff": 0.3215192796990562, + "abs_diff_nats": 6399.324916841906, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 46: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 12905.386047434527, + "reference_value": 12905.386047434527, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 46: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 19139.565581617124, + "reference_value": 19139.565581617124, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 46: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 12905.386047434527, + "reference_value": 19139.565581617124, + "rel_diff": 0.32572210208210295, + "abs_diff_nats": 6234.179534182596, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 46: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 12905.386047434527, + "reference_value": 19139.565581617124, + "rel_diff": 0.32572210208210295, + "abs_diff_nats": 6234.179534182596, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 47: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 21569.14415018888, + "reference_value": 21569.144150171986, + "rel_diff": 7.83284374312979e-13, + "abs_diff_nats": 1.6894773580133915e-08, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 47: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 15503.419442045153, + "reference_value": 15503.419442032253, + "rel_diff": 8.320921005963696e-13, + "abs_diff_nats": 1.2900272849947214e-08, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 47: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 21569.14415018888, + "reference_value": 15503.419442045153, + "rel_diff": 0.3912507644406194, + "abs_diff_nats": 6065.724708143727, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 47: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 21569.144150171986, + "reference_value": 15503.419442032253, + "rel_diff": 0.3912507644406873, + "abs_diff_nats": 6065.724708139733, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 48: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 22376.164810427435, + "reference_value": 22376.16481042714, + "rel_diff": 1.3169204189857933e-14, + "abs_diff_nats": 2.9467628337442875e-10, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 48: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 27530.814473047278, + "reference_value": 27530.81447304727, + "rel_diff": 2.642841395523044e-16, + "abs_diff_nats": 7.275957614183426e-12, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 48: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 22376.164810427435, + "reference_value": 27530.814473047278, + "rel_diff": 0.18723200752619412, + "abs_diff_nats": 5154.649662619842, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 48: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 22376.16481042714, + "reference_value": 27530.81447304727, + "rel_diff": 0.1872320075262046, + "abs_diff_nats": 5154.64966262013, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 49: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 26250.953420722253, + "reference_value": 26250.95031934693, + "rel_diff": 1.181433541907e-07, + "abs_diff_nats": 0.0031013753214210737, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 49: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -177402.9202812782, + "reference_value": -177402.92200116633, + "rel_diff": 9.694812834420552e-09, + "abs_diff_nats": 0.0017198881250806153, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 49: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 26250.953420722253, + "reference_value": -177402.9202812782, + "rel_diff": 1.1479736262464029, + "abs_diff_nats": 203653.87370200045, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 49: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 26250.95031934693, + "reference_value": -177402.92200116633, + "rel_diff": 1.147973607329728, + "abs_diff_nats": 203653.87232051327, + "within_rtol": false, + "status": "RECORDED" + } + ], + "lanes_failed": 12, + "arm_rows": { + "vmap": { + "arm": "vmap", + "program": "jax.jit(jax.vmap(fn))", + "stands_for": "Nautilus(use_jax_vmap=True) \u2014 Fitness._vmap", + "hlo_source": "jax.jit(jax.vmap(fn)).lower(batched_tree) \u2014 the exact current Fitness._vmap composition (PyAutoFit#1638)", + "batch_wall_ms": 2009.2500456998096, + "wall_production_nesting_ms": 2009.2500456998096, + "wall_aot_command_buffers_on_ms": 2013.3909659001802, + "wall_aot_command_buffers_off_ms": 2013.0392838000262, + "command_buffer_delta_ms": -0.3516821001539938, + "production_nesting_vs_aot_on_delta_ms": -4.140920200370601, + "production_nesting_vs_aot_on_delta_pct": -0.20566895702341698, + "wall_per_lane_ms": 40.18500091399619, + "wall_per_lane_command_buffers_off_ms": 40.26078567600052, + "traced_batch_wall_ms": 2036.1315101999935, + "untraced_batch_wall_ms": 2019.0398877999542, + "traced_wall_per_lane_ms": 40.72263020399987, + "callback_count_per_call": 50.0, + "callback_count_per_lane": 1.0, + "callback_expectation": "B per batched call \u2014 the qhull pure_callback is vmap_method='sequential'", + "host_qhull_ms": 223.58365839972976, + "host_tables_ms": 5.634685496625025, + "host_qhull_ms_per_lane": 4.471673167994595, + "host_tables_ms_per_lane": 0.1126937099325005, + "host_callback_probe": { + "calls": 500, + "qhull_ms_total": 2235.8365839972976, + "tables_ms_total": 56.34685496625025, + "total_ms_total": 2292.183438963548, + "qhull_ms_mean": 4.471673167994595, + "tables_ms_mean": 0.1126937099325005, + "total_ms_mean": 4.584366877927096, + "non_finite_calls": 0, + "n_points": [ + 1500 + ] + }, + "host_callback_records_first": [ + { + "n_points": 1500, + "qhull_ms": 4.72813399755978, + "tables_ms": 0.1792290022422094, + "total_ms": 4.90736299980199, + "finite": true + }, + { + "n_points": 1500, + "qhull_ms": 4.44361699919682, + "tables_ms": 0.11078900206484832, + "total_ms": 4.554406001261668, + "finite": true + }, + { + "n_points": 1500, + "qhull_ms": 4.454556998098269, + "tables_ms": 0.10813900371431373, + "total_ms": 4.562696001812583, + "finite": true + }, + { + "n_points": 1500, + "qhull_ms": 4.520385999057908, + "tables_ms": 0.12075899940100498, + "total_ms": 4.641144998458913, + "finite": true + } + ], + "device_idle_ms": 284.383957, + "device_idle_ms_per_lane": 5.68767914, + "trace": { + "parser": "ProfileData.from_file(xplane) + as_text() + stack_frame_index(proto field 17)", + "stage_audit": { + "mixed_fusion": [ + { + "instruction": "loop_divide_gather_fusion", + "ms": 52.8569282, + "opcode": "fusion", + "shape": "(f64[15361,50,1,1,1500]{4,3,2,1,0}, f64[15361,50,1,1,1500]{4,3,2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_broadcast_fusion.7", + "ms": 11.7499662, + "opcode": "fusion", + "shape": "f64[50,1500,180,180]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_reduce_fusion.21", + "ms": 6.1222597, + "opcode": "fusion", + "shape": "f64[92,50,1500]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123 (data_vector_via_blurred_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:67 (InversionImagingMapping.data_vector)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:699 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_broadcast_fusion.8", + "ms": 5.5549953, + "opcode": "fusion", + "shape": "f64[15361,50,1500]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:353", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:353 (mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:283 (Mapper.mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:91 (AbstractInversionImaging._mapping_matrix_for_convolution_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:137 (AbstractInversionImaging.operated_mapping_matrix_list)" + ] + }, + { + "instruction": "input_reduce_fusion.25", + "ms": 5.5146478000000005, + "opcode": "fusion", + "shape": "f64[15361,50]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163 (mapped_reconstructed_data_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:120 (InversionImagingMapping._mapped_reconstructed_data_dict_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:196 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_multiply_transpose_fusion", + "ms": 4.8581932, + "opcode": "fusion", + "shape": "(f64[50,1500,1500]{2,1,0}, f64[50,1500,1500]{2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:491", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:491 (reconstruction_positive_only_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:706 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:113 (InversionImagingMapping._mapped_reconstructed_data_dict_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:196 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)" + ] + } + ], + "other": [ + { + "instruction": "copy.140", + "ms": 0.10097709999999976, + "opcode": "copy", + "shape": "s32[1,3000,3]{2,1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.141", + "ms": 0.09987280000000025, + "opcode": "copy", + "shape": "s32[1,3000,3]{2,1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.142", + "ms": 0.09971910000000034, + "opcode": "copy", + "shape": "f64[1,1500,2]{2,1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.139", + "ms": 0.0980749000000009, + "opcode": "copy", + "shape": "s32[1,1500]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.138", + "ms": 0.05825360000000002, + "opcode": "copy", + "shape": "f64[1,50,1024,2]{3,2,1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.122", + "ms": 0.03668219999999998, + "opcode": "copy", + "shape": "s32[50]{0}", + "source": "", + "stack": [] + } + ], + "mesh_qhull_callback": [ + { + "instruction": "pure_callback.0", + "ms": 0.5341306000000033, + "opcode": "custom-call", + "shape": "(s32[3000,3]{1,0}, s32[3000,3]{1,0}, s32[1500]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:161", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:161 (_jax_delaunay_tables)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:405 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + }, + { + "instruction": "loop_add_fusion.1", + "ms": 0.07600079999999985, + "opcode": "fusion", + "shape": "s64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:161", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:161 (_jax_delaunay_tables)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:405 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + }, + { + "instruction": "loop_broadcast_fusion.3", + "ms": 0.0021888000000000003, + "opcode": "fusion", + "shape": "s32[50,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:161", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:161 (_jax_delaunay_tables)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:405 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + } + ], + "border_relocator": [ + { + "instruction": "custom-call.2", + "ms": 0.0422661, + "opcode": "custom-call", + "shape": "(f64[50,2,2]{2,1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_add_rsqrt_fusion", + "ms": 0.0187682, + "opcode": "fusion", + "shape": "(f64[50,15361]{1,0}, f64[50,15361]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:311", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:311 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:423 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:208 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "eigh.36", + "ms": 0.014643299999999998, + "opcode": "custom-call", + "shape": "(f64[50,2,2]{1,2,0}, f64[50,2]{1,0}, s32[50]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_add_rsqrt_fusion.1", + "ms": 0.0038816, + "opcode": "fusion", + "shape": "(f64[50,1500]{1,0}, f64[50,1500]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:311", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:311 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:458 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_reduce_fusion.27", + "ms": 0.003331199999999999, + "opcode": "fusion", + "shape": "f64[50]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:269", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:269 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_reduce_fusion.26", + "ms": 0.0033026, + "opcode": "fusion", + "shape": "f64[50]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:270", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:270 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + } + ], + "mesh_construction": [ + { + "instruction": "loop_compare_fusion.5", + "ms": 0.0110594, + "opcode": "fusion", + "shape": "pred[50,15361,3]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:732", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:732 (DelaunayInterface.sizes)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:958 (InterpolatorDelaunay._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/abstract.py:36 (AbstractInterpolator.mappings)" + ] + }, + { + "instruction": "loop_compare_fusion.6", + "ms": 0.0058656, + "opcode": "fusion", + "shape": "pred[50,6000,3]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:736", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:736 (DelaunayInterface.splitted_sizes)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:997 (InterpolatorDelaunay._mappings_sizes_weights_split)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:124 (AdaptSplit.regularization_matrix_from)" + ] + }, + { + "instruction": "loop_multiply_fusion.4", + "ms": 0.0027040000000000002, + "opcode": "fusion", + "shape": "f64[50,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:412", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:412 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_concatenate_fusion.10", + "ms": 0.0026207999999999995, + "opcode": "fusion", + "shape": "f64[50,1500,2]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:820", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:820 (InterpolatorDelaunay.mesh_grid_xy)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:847 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + } + ], + "mesh_seed_argmin": [ + { + "instruction": "input_reduce_fusion", + "ms": 3.928828499999999, + "opcode": "fusion", + "shape": "(f64[50,1024]{1,0}, s64[50,1024]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:191", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:191 (_nearest_vertex_seed_from..argmin_chunk)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)" + ] + }, + { + "instruction": "loop_dynamic_update_slice_fusion", + "ms": 0.05091259999999987, + "opcode": "fusion", + "shape": "s32[21,50,1024]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_add_fusion", + "ms": 0.031878499999999935, + "opcode": "fusion", + "shape": "s64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_broadcast_fusion.4", + "ms": 0.004079999999999999, + "opcode": "fusion", + "shape": "s32[21,50,1024]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "pdip_solve": [ + { + "instruction": "cholesky.88", + "ms": 378.55732189995365, + "opcode": "custom-call", + "shape": "(f64[50,1500,1500]{1,2,0}, s32[50]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:106", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:106 (factorize_kkt)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:212 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "cholesky.66", + "ms": 214.6268899999894, + "opcode": "custom-call", + "shape": "(f64[50,1500,1500]{1,2,0}, s32[50]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "triangular-solve", + "ms": 57.22778909999948, + "opcode": "custom-call", + "shape": "(f64[50,1500,1]{1,2,0}, s8[800]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:213 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve.2", + "ms": 55.443527699998164, + "opcode": "custom-call", + "shape": "(f64[50,1500,1]{1,2,0}, s8[800]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:217 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve.1", + "ms": 53.72170989999854, + "opcode": "custom-call", + "shape": "(f64[50,1500,1]{1,2,0}, s8[800]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:213 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve.3", + "ms": 53.677886499998785, + "opcode": "custom-call", + "shape": "(f64[50,1500,1]{1,2,0}, s8[800]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:217 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + } + ], + "mesh_dual_areas": [ + { + "instruction": "input_scatter_fusion.7", + "ms": 0.0048672, + "opcode": "fusion", + "shape": "f64[50,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:393", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:393 (_dual_areas_padded_jnp)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:408 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + }, + { + "instruction": "input_scatter_fusion.9", + "ms": 0.0048448, + "opcode": "fusion", + "shape": "f64[50,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:393", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:393 (_dual_areas_padded_jnp)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:408 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + } + ], + "mesh_locate_walk": [ + { + "instruction": "loop_reduce_fusion", + "ms": 0.6012138000000001, + "opcode": "fusion", + "shape": "(f64[50,21361]{1,0}, s64[50,21361]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:264", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:264 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:264 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)" + ] + }, + { + "instruction": "loop_slice_subtract_fusion", + "ms": 0.5013109, + "opcode": "fusion", + "shape": "(f64[50,21361,1]{2,1,0}, f64[50,21361,1]{2,1,0}, f64[50,21361,1]{2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:236", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:236 (_walk_from_seed..cross)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:250 (_walk_from_seed..weights_of)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:262 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)" + ] + }, + { + "instruction": "loop_select_fusion", + "ms": 0.23899830000000002, + "opcode": "fusion", + "shape": "(pred[50,21361]{1,0}, pred[50,21361]{1,0}, s32[50,21361]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_gather_fusion.1", + "ms": 0.1629176, + "opcode": "fusion", + "shape": "s32[1068050,1,1,3]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:239", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:239 (_walk_from_seed..weights_of)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:262 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)" + ] + }, + { + "instruction": "loop_gather_fusion", + "ms": 0.1479119, + "opcode": "fusion", + "shape": "s32[1068050,1,1,1]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:267", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:267 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)" + ] + }, + { + "instruction": "input_concatenate_fusion", + "ms": 0.08578990000000002, + "opcode": "fusion", + "shape": "s32[50,21361,2]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:242", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:242 (_walk_from_seed..weights_of)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:262 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)" + ] + } + ], + "mapping_matrix": [ + { + "instruction": "input_scatter_fusion.3", + "ms": 0.1349518, + "opcode": "fusion", + "shape": "f64[50,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:71", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:71 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:120 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + }, + { + "instruction": "input_reduce_fusion.49", + "ms": 0.0037856000000000005, + "opcode": "fusion", + "shape": "f64[50]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:120 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + }, + { + "instruction": "loop_and_fusion.2", + "ms": 0.0020609, + "opcode": "fusion", + "shape": "pred[46083,1]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:338", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:338 (mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:283 (Mapper.mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:91 (AbstractInversionImaging._mapping_matrix_for_convolution_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:137 (AbstractInversionImaging.operated_mapping_matrix_list)" + ] + } + ], + "psf_convolution_mapping_matrix": [ + { + "instruction": "input_scatter_fusion", + "ms": 100.69721580000001, + "opcode": "fusion", + "shape": "f64[50,1500,180,180]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.25.0", + "ms": 75.8665442, + "opcode": "fft", + "shape": "c128[50,1500,180,91]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.27.0", + "ms": 48.599778799999996, + "opcode": "fft", + "shape": "c128[50,1500,91,180]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.29.0", + "ms": 47.0424031, + "opcode": "fft", + "shape": "f64[50,1500,180,180]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_transpose_fusion.4", + "ms": 26.356773599999997, + "opcode": "fusion", + "shape": "c128[50,1500,91,180]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "wrapped_transpose", + "ms": 24.605197099999998, + "opcode": "fusion", + "shape": "c128[50,1500,180,91]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + } + ], + "regularization_H": [ + { + "instruction": "input_scatter_fusion.10", + "ms": 0.0084259, + "opcode": "fusion", + "shape": "f64[50,1500,1500]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:615", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:615 (pixel_splitted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:137 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "curvature_matrix_F": [ + { + "instruction": "cublas-lt-matmul.2", + "ms": 212.17574299999998, + "opcode": "custom-call", + "shape": "(f64[50,1500,1500]{2,1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "inversion_other": [ + { + "instruction": "cholesky.132", + "ms": 14.861443999999912, + "opcode": "custom-call", + "shape": "(f64[50,1500,1500]{1,2,0}, s32[50]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1078 (AbstractInversion.log_det_curvature_reg_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:347 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "cholesky.143", + "ms": 14.458568400000052, + "opcode": "custom-call", + "shape": "(f64[50,1500,1500]{1,2,0}, s32[50]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1157 (AbstractInversion.log_det_regularization_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:348 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "loop_reduce_window_fusion", + "ms": 0.003283200000000001, + "opcode": "fusion", + "shape": "s64[94,16]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "loop_broadcast_convert_fusion", + "ms": 0.00256, + "opcode": "fusion", + "shape": "(s32[1500]{0}, s64[1500]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527 (AbstractInversion.zeroed_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:567 (AbstractInversion.solve_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:684 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_reduce_window_fusion.1", + "ms": 0.0022879999999999997, + "opcode": "fusion", + "shape": "s64[6,16]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "input_scatter_fusion.5", + "ms": 0.0022688000000000005, + "opcode": "fusion", + "shape": "s64[1500]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527 (AbstractInversion.zeroed_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:567 (AbstractInversion.solve_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:684 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ] + }, + "stage_audit_note": "The HLO instructions that contributed most of each stage's milliseconds, with their full source stack. A stage row is only as good as the rules that built it; this is how a reader checks a row against the HLO instead of trusting it.", + "untraced_wall_ms": 2019.0398877999542, + "reconciliation_vs_untraced_pct": 0.8786415418164226, + "wall_basis": "wall_ms is the TRACED run's wall, the run these kernel durations came from. untraced_wall_ms is the same executable without the profiler; the difference is the profiler's overhead and belongs in neither the stages nor the idle row.", + "calls": 10, + "call_split": "per-call (first-instruction recurrence)", + "call_blocks": 10, + "events": 300030, + "streams": [ + "Stream #14(MemcpyH2D,MemcpyD2H,Compute,MemcpyD2D)" + ], + "per_stage_ms": { + "border_relocator": { + "median_ms": 0.09764849999999999, + "min_ms": 0.09734499999999999, + "max_ms": 0.09824000000000001 + }, + "curvature_matrix_F": { + "median_ms": 212.7999845, + "min_ms": 208.080725, + "max_ms": 213.716375 + }, + "inversion_other": { + "median_ms": 29.508730999999983, + "min_ms": 28.80029700000005, + "max_ms": 29.635223999999962 + }, + "mapping_matrix": { + "median_ms": 0.140401, + "min_ms": 0.138818, + "max_ms": 0.143361 + }, + "mesh_construction": { + "median_ms": 0.022048, + "min_ms": 0.021728, + "max_ms": 0.024289 + }, + "mesh_dual_areas": { + "median_ms": 0.009696, + "min_ms": 0.009600000000000001, + "max_ms": 0.009856 + }, + "mesh_locate_walk": { + "median_ms": 2.032842500000001, + "min_ms": 2.0163160000000016, + "max_ms": 2.043668000000001 + }, + "mesh_qhull_callback": { + "median_ms": 0.6125649999999996, + "min_ms": 0.6107279999999993, + "max_ms": 0.6134109999999998 + }, + "mesh_seed_argmin": { + "median_ms": 4.013916500000002, + "min_ms": 4.013073000000003, + "max_ms": 4.0319550000000035 + }, + "mixed_fusion": { + "median_ms": 96.0064145, + "min_ms": 95.70107399999995, + "max_ms": 96.67638900000001 + }, + "other": { + "median_ms": 0.5738310000000006, + "min_ms": 0.5726170000000006, + "max_ms": 0.5761340000000008 + }, + "pdip_solve": { + "median_ms": 1083.3945950000082, + "min_ms": 1081.6075210000167, + "max_ms": 1084.2923540000077 + }, + "psf_convolution_mapping_matrix": { + "median_ms": 323.17494800000003, + "min_ms": 323.009763, + "max_ms": 323.325376 + }, + "regularization_H": { + "median_ms": 0.008432499999999999, + "min_ms": 0.008032, + "max_ms": 0.008768 + } + }, + "stage_order": [ + "border_relocator", + "mesh_qhull_callback", + "mesh_seed_argmin", + "mesh_locate_walk", + "mesh_dual_areas", + "mesh_construction", + "mapping_matrix", + "psf_convolution_mapping_matrix", + "curvature_matrix_F", + "regularization_H", + "pdip_solve", + "inversion_other", + "mixed_fusion", + "other" + ], + "mixed_fusion": { + "ms": 96.0064145, + "constituent_stage_sets": { + "curvature_matrix_F + psf_convolution_mapping_matrix": 52.8569282, + "pdip_solve + psf_convolution_mapping_matrix": 11.7499662, + "data_vector_D + pdip_solve": 6.1645451, + "pdip_solve + regularization_H": 6.096179399999999, + "mapping_matrix + pdip_solve": 5.558908999999998, + "mapped_reconstruction + pdip_solve": 5.5146478000000005, + "curvature_reg_reduce_gather + inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": 4.8581932, + "inversion_other + pdip_solve + regularization_H": 1.4732787999999994, + "inversion_other + pdip_solve": 0.5538119, + "inversion_other + regularization_H": 0.42992820000000026, + "inversion_other + mapping_matrix + mesh_construction + mesh_interpolation_weights + pdip_solve": 0.20382019999999998, + "mapping_matrix + mesh_interpolation_weights + pdip_solve": 0.160738, + "inversion_other + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + pdip_solve + regularization_H": 0.0619368, + "inversion_other + mesh_construction + mesh_dual_areas + mesh_interpolation_weights": 0.0561927, + "inversion_other + mesh_construction + mesh_interpolation_weights": 0.0559208, + "mesh_dual_areas + mesh_interpolation_weights": 0.044435600000000006, + "grids_and_structures + mass_profile_deflections + ray_trace_data_grid": 0.037479, + "grids_and_structures + mass_profile_deflections + pdip_solve + ray_trace_data_grid": 0.032205, + "inversion_other + mapping_matrix + mesh_construction + mesh_interpolation_weights": 0.029033899999999994, + "mesh_construction + pdip_solve + regularization_H": 0.028672500000000004, + "border_relocator + pdip_solve": 0.0242499, + "mesh_construction + mesh_seed_argmin + pdip_solve + regularization_H": 0.0222919, + "mesh_locate_walk + mesh_seed_argmin": 0.0185601, + "chi_squared_evidence + pdip_solve": 0.016505699999999998, + "pdip_solve + ray_trace_data_grid": 0.013311999999999994, + "inversion_other + mesh_dual_areas + mesh_locate_walk": 0.012713900000000002, + "inversion_other + mapped_reconstruction + reconstruction_scatter + regularization_H": 0.0123141, + "mesh_construction + mesh_dual_areas + mesh_interpolation_weights + pdip_solve + regularization_H": 0.011542600000000002, + "inversion_other + mapped_reconstruction": 0.011494599999999999, + "inversion_other + mapped_reconstruction + reconstruction_scatter": 0.0095809, + "inversion_other + mesh_locate_walk + mesh_seed_argmin": 0.0065696, + "mapping_matrix + pdip_solve + regularization_H": 0.0053634, + "inversion_other + mesh_dual_areas + mesh_locate_walk + pdip_solve": 0.0053472, + "grids_and_structures + mass_profile_deflections + pdip_solve": 0.0051746, + "inversion_other + pdip_solve + ray_trace_data_grid": 0.0047008, + "inversion_other + mesh_construction + mesh_interpolation_weights + regularization_H": 0.0044449, + "inversion_other + mesh_interpolation_weights": 0.0044, + "inversion_other + mesh_construction + regularization_H": 0.0037665000000000008, + "inversion_other + mapping_matrix": 0.0029569, + "chi_squared_evidence + inversion_other": 0.0023264 + }, + "example_kernels": { + "curvature_matrix_F + psf_convolution_mapping_matrix": [ + "loop_divide_gather_fusion" + ], + "pdip_solve + psf_convolution_mapping_matrix": [ + "loop_broadcast_fusion.7" + ], + "data_vector_D + pdip_solve": [ + "input_reduce_fusion.21", + "input_reduce_fusion.47" + ], + "pdip_solve + regularization_H": [ + "loop_broadcast_fusion", + "input_add_transpose_fusion", + "input_transpose_fusion.6" + ], + "mapping_matrix + pdip_solve": [ + "loop_broadcast_fusion.8", + "loop_divide_fusion" + ], + "mapped_reconstruction + pdip_solve": [ + "input_reduce_fusion.25" + ], + "curvature_reg_reduce_gather + inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": [ + "input_multiply_transpose_fusion" + ], + "inversion_other + pdip_solve + regularization_H": [ + "input_reduce_fusion.45", + "input_transpose_fusion.7", + "loop_log_fusion" + ], + "inversion_other + pdip_solve": [ + "input_reduce_fusion.23", + "input_reduce_fusion.24", + "input_transpose_fusion.3", + "input_reduce_fusion.29" + ], + "inversion_other + regularization_H": [ + "input_reduce_fusion.44", + "input_reduce_fusion.37", + "input_reduce_fusion.38", + "input_reduce_fusion.39" + ] + }, + "prorated_estimate_ms": { + "psf_convolution_mapping_matrix": 32.3034472, + "curvature_matrix_F": 26.4284641, + "pdip_solve": 19.445367891666663, + "regularization_H": 3.789141578333332, + "mapped_reconstruction": 3.7409819983333334, + "data_vector_D": 3.08227255, + "mapping_matrix": 2.8843225983333323, + "inversion_other": 2.07419478, + "reconstruction_scatter": 0.9779107983333333, + "curvature_reg_reduce_gather": 0.9716386399999999, + "mesh_interpolation_weights": 0.172450635, + "mesh_construction": 0.11083947666666666, + "mesh_dual_areas": 0.05447206166666667, + "ray_trace_data_grid": 0.028767183333333328, + "grids_and_structures": 0.022269116666666665, + "mass_profile_deflections": 0.022269116666666665, + "mesh_locate_walk": 0.017044683333333335, + "mesh_seed_argmin": 0.017042891666666667, + "border_relocator": 0.01212495, + "chi_squared_evidence": 0.009416049999999999 + }, + "prorated_note": "ESTIMATE ONLY \u2014 a mixed fusion's time split equally across the stages its constituents span. Never summed into the measured table, never reconciled." + }, + "other_sources_ms": { + "copy.140": 0.10097709999999976, + "copy.141": 0.09987280000000025, + "copy.142": 0.09971910000000034, + "copy.139": 0.0980749000000009, + "copy.138": 0.05825360000000002, + "copy.122": 0.03668219999999998, + "copy.121": 0.03484850000000002, + "copy.123": 0.033696600000000104, + "loop_broadcast_fusion.2": 0.0036256000000000005, + "copy.97": 0.0023711999999999995, + "copy.137": 0.0022848, + "copy.58": 0.0021953, + "loop_broadcast_fusion.5": 0.001312 + }, + "device_span_ms": 2036.0046376999999, + "device_busy_ms": 1751.6206806999999, + "device_idle_ms": 284.383957, + "largest_idle_gaps": [ + { + "gap_ms": 5.482229, + "after": "pure_callback.0", + "before": "pure_callback.0" + }, + { + "gap_ms": 5.408276, + "after": "pure_callback.0", + "before": "pure_callback.0" + }, + { + "gap_ms": 5.199634, + "after": "pure_callback.0", + "before": "pure_callback.0" + }, + { + "gap_ms": 5.093712, + "after": "pure_callback.0", + "before": "pure_callback.0" + }, + { + "gap_ms": 5.085937, + "after": "pure_callback.0", + "before": "pure_callback.0" + }, + { + "gap_ms": 5.012752, + "after": "pure_callback.0", + "before": "pure_callback.0" + }, + { + "gap_ms": 5.00472, + "after": "pure_callback.0", + "before": "pure_callback.0" + }, + { + "gap_ms": 4.999184, + "after": "pure_callback.0", + "before": "pure_callback.0" + } + ], + "kernel_ms": 1752.3960540000082, + "sum_ms": 2036.7800110000082, + "wall_ms": 2036.1315101999935, + "host_outside_span_ms": 0.12687249999362393, + "reconciliation_pct": 0.031849651987903634, + "unjoined_ms": 0.0, + "unjoined_pct": 0.0, + "other_ms": 0.5738310000000006, + "other_pct": 0.028182413421009217, + "note": "Stage rows attribute the command-buffers-OFF program (see the module docstring): kernel times are the same, the launch overhead the CUDA graphs remove is not. sum_ms = kernel rows + device_idle_ms; the residual against wall_ms is host_outside_span_ms (dispatch before the first kernel, teardown after the last).", + "per_stage_ms_per_lane": { + "border_relocator": 0.0019529699999999996, + "curvature_matrix_F": 4.2559996899999994, + "inversion_other": 0.5901746199999997, + "mapping_matrix": 0.00280802, + "mesh_construction": 0.00044096, + "mesh_dual_areas": 0.00019392, + "mesh_locate_walk": 0.04065685000000002, + "mesh_qhull_callback": 0.012251299999999991, + "mesh_seed_argmin": 0.08027833000000005, + "mixed_fusion": 1.92012829, + "other": 0.011476620000000014, + "pdip_solve": 21.667891900000164, + "psf_convolution_mapping_matrix": 6.463498960000001, + "regularization_H": 0.00016864999999999998 + }, + "per_lane_divisor": 50, + "host_callback": { + "pure_callback_span_ms": 262.2716595000004, + "qhull_ms": 229.64584760000022, + "callback_body_ms_note": "the OUTERMOST matching body event, not a sum: under the probe the body appears twice (the wrapper and the timed re-implementation it calls) and summing them would count the same work twice", + "events_by_name": { + "pure_callback.0": { + "count": 500, + "ms": 262.2716595000004 + }, + "$callback.py:815 _wrapped_callback": { + "count": 500, + "ms": 241.43280190000016 + }, + "$callback.py:224 _callback": { + "count": 500, + "ms": 240.30708929999992 + }, + "$callback.py:74 pure_callback_impl": { + "count": 500, + "ms": 239.89366789999997 + }, + "$callback.py:69 __call__": { + "count": 500, + "ms": 230.3962935999999 + }, + "$delaunay.py:162 ": { + "count": 500, + "ms": 230.08558550000004 + }, + "$host_callback_probe.py:225 wrapped": { + "count": 500, + "ms": 229.64584760000022 + }, + "$host_callback_probe.py:160 _timed_tri_only": { + "count": 500, + "ms": 229.27627980000005 + }, + "$callback.py:822 ": { + "count": 2000, + "ms": 0.7027242000000008 + }, + "ThenExecuteCallback:GetEventForComputeStreamSyncPoint": { + "count": 10, + "ms": 0.020968700000000003 + }, + "$__init__.py:132 _xla_gc_callback": { + "count": 4, + "ms": 0.0012829999999999999 + } + }, + "note": "HOST milliseconds per traced BATCH (the whole invocation), aggregated by name because the events nest. Not a row of the device table: the device pays for them as the idle gaps largest_idle_gaps names." + }, + "host_callback_ms": 262.2716595000004 + }, + "hlo_census": { + "status": "excluded", + "reason": "The legacy census anchors PyAutoArray source line numbers that moved after the phase-1 run. No batched attribution is published from unsupported anchors; the device-event table and wall reconciliation remain valid." + }, + "trace_split": { + "expected_calls": 10, + "executions_per_invocation": 1, + "method": "per-call (first-instruction recurrence)", + "note": "DECIDED IN CODE: the scalar arm's trace is split by trace_calls * B, so every lane's execution is its own block and the per-stage median is taken over all of them. The vmap arm's is split by trace_calls, one block per batched execution, and per_stage_ms_per_lane divides those rows by B." + } + }, + "scalar": { + "arm": "scalar", + "program": "jax.jit(fn), called B times", + "stands_for": "Nautilus(use_jax_vmap=False, use_jax_jit=True). Plain use_jax_vmap=False is UNJITTED and is NOT this arm", + "hlo_source": "jax.jit(fn).lower(lane_trees[0]) \u2014 the same program phase 1 traced", + "batch_wall_ms": 2208.2350181997754, + "wall_production_nesting_ms": 2208.2350181997754, + "wall_aot_command_buffers_on_ms": 2211.692346900236, + "wall_aot_command_buffers_off_ms": 2227.529951899851, + "command_buffer_delta_ms": 15.837604999614996, + "production_nesting_vs_aot_on_delta_ms": -3.4573287004604936, + "production_nesting_vs_aot_on_delta_pct": -0.1563205074750139, + "wall_per_lane_ms": 44.16470036399551, + "wall_per_lane_command_buffers_off_ms": 44.55059903799702, + "traced_batch_wall_ms": 2294.178766099867, + "untraced_batch_wall_ms": 2227.462888700029, + "traced_wall_per_lane_ms": 45.88357532199734, + "callback_count_per_call": 50.0, + "callback_count_per_lane": 1.0, + "callback_expectation": "1 per likelihood evaluation, B per batch", + "host_qhull_ms": 229.20175139443018, + "host_tables_ms": 5.79619670570537, + "host_qhull_ms_per_lane": 4.5840350278886035, + "host_tables_ms_per_lane": 0.1159239341141074, + "host_callback_probe": { + "calls": 500, + "qhull_ms_total": 2292.0175139443018, + "tables_ms_total": 57.9619670570537, + "total_ms_total": 2349.9794810013555, + "qhull_ms_mean": 4.5840350278886035, + "tables_ms_mean": 0.1159239341141074, + "total_ms_mean": 4.699958962002711, + "non_finite_calls": 0, + "n_points": [ + 1500 + ] + }, + "host_callback_records_first": [ + { + "n_points": 1500, + "qhull_ms": 4.718362000858178, + "tables_ms": 0.19707700266735628, + "total_ms": 4.915439003525535, + "finite": true + }, + { + "n_points": 1500, + "qhull_ms": 4.6097329977783374, + "tables_ms": 0.12480800432967953, + "total_ms": 4.734541002108017, + "finite": true + }, + { + "n_points": 1500, + "qhull_ms": 4.561943998851348, + "tables_ms": 0.13317900084075518, + "total_ms": 4.695122999692103, + "finite": true + }, + { + "n_points": 1500, + "qhull_ms": 4.543704999377951, + "tables_ms": 0.12166799933766015, + "total_ms": 4.665372998715611, + "finite": true + } + ], + "device_idle_ms": 7.223946017999992, + "device_idle_ms_per_lane": 7.223946017999992, + "trace": { + "parser": "ProfileData.from_file(xplane) + as_text() + stack_frame_index(proto field 17)", + "stage_audit": { + "mixed_fusion": [ + { + "instruction": "loop_divide_gather_fusion", + "ms": 1.0147081019999997, + "opcode": "fusion", + "shape": "(f64[15361,1,1,1500]{3,2,1,0}, f64[15361,1,1,1500]{3,2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_broadcast_fusion.4", + "ms": 0.2257948400000001, + "opcode": "fusion", + "shape": "f64[1500,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_reduce_fusion.13", + "ms": 0.1211949, + "opcode": "fusion", + "shape": "f64[92,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123 (data_vector_via_blurred_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:67 (InversionImagingMapping.data_vector)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:699 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_reduce_fusion.17", + "ms": 0.114598196, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163 (mapped_reconstructed_data_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:120 (InversionImagingMapping._mapped_reconstructed_data_dict_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:196 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "loop_broadcast_fusion.2", + "ms": 0.11043403600000004, + "opcode": "fusion", + "shape": "f64[15361,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:342", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:342 (mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:283 (Mapper.mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:91 (AbstractInversionImaging._mapping_matrix_for_convolution_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:137 (AbstractInversionImaging.operated_mapping_matrix_list)" + ] + }, + { + "instruction": "input_multiply_transpose_fusion", + "ms": 0.10947590399999996, + "opcode": "fusion", + "shape": "(f64[1500,1500]{1,0}, f64[1500,1500]{1,0}, f64[1500,1500]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:237 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:274 (_certified_positive_only_from)" + ] + } + ], + "border_relocator": [ + { + "instruction": "eigh.45", + "ms": 0.07467376400000175, + "opcode": "custom-call", + "shape": "(f64[2,2]{0,1}, f64[2]{0}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "custom-call.2", + "ms": 0.007956532000000032, + "opcode": "custom-call", + "shape": "(f64[2,2]{1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_reduce_fusion.18", + "ms": 0.005939429999999981, + "opcode": "fusion", + "shape": "(f64[], f64[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:269", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:269 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_add_fusion.7", + "ms": 0.0035494579999999915, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:423 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:208 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_add_fusion.9", + "ms": 0.0034543699999999883, + "opcode": "fusion", + "shape": "f64[1500]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:458 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_concatenate_fusion.12", + "ms": 0.002402639999999993, + "opcode": "fusion", + "shape": "f64[392,2]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:238", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:238 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + } + ], + "mesh_construction": [ + { + "instruction": "input_concatenate_fusion.7", + "ms": 0.0019305759999999996, + "opcode": "fusion", + "shape": "f64[1500,2]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:820", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:820 (InterpolatorDelaunay.mesh_grid_xy)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:847 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + } + ], + "mesh_qhull_callback": [ + { + "instruction": "pure_callback.4", + "ms": 0.010630603999999938, + "opcode": "custom-call", + "shape": "(s32[3000,3]{1,0}, s32[3000,3]{1,0}, s32[1500]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:161", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:161 (_jax_delaunay_tables)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:405 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + } + ], + "other": [ + { + "instruction": "copy.106", + "ms": 0.041848820000001674, + "opcode": "copy", + "shape": "f64[1,1024,2]{2,1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.70", + "ms": 0.01687242399999937, + "opcode": "copy", + "shape": "s32[21361]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.75", + "ms": 0.0019623840000000084, + "opcode": "copy", + "shape": "s64[1500]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.61", + "ms": 0.001654087999999997, + "opcode": "copy", + "shape": "s32[]", + "source": "", + "stack": [] + }, + { + "instruction": "copy.104", + "ms": 0.001651657999999998, + "opcode": "copy", + "shape": "s64[]", + "source": "", + "stack": [] + }, + { + "instruction": "copy.105", + "ms": 0.001639433999999996, + "opcode": "copy", + "shape": "s32[]", + "source": "", + "stack": [] + } + ], + "mesh_seed_argmin": [ + { + "instruction": "input_reduce_fusion", + "ms": 0.148111531999993, + "opcode": "fusion", + "shape": "(f64[1024]{0}, s64[1024]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:191", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:191 (_nearest_vertex_seed_from..argmin_chunk)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)" + ] + }, + { + "instruction": "loop_dynamic_update_slice_fusion", + "ms": 0.04092318799999643, + "opcode": "fusion", + "shape": "s32[21,1024]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_add_fusion", + "ms": 0.03184665599999613, + "opcode": "fusion", + "shape": "s64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_broadcast_fusion", + "ms": 0.001947906000000019, + "opcode": "fusion", + "shape": "s32[21,1024]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "pdip_solve": [ + { + "instruction": "cholesky.60", + "ms": 7.3568516539998265, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "cholesky.80", + "ms": 5.495896969999859, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:106", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:106 (factorize_kkt)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:212 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve.1", + "ms": 1.3107075099999719, + "opcode": "custom-call", + "shape": "(f64[1500,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "triangular-solve", + "ms": 1.135827262000028, + "opcode": "custom-call", + "shape": "(f64[1500,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "cholesky.110", + "ms": 0.8924842900000037, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:297 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:274 (_certified_positive_only_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:496 (reconstruction_positive_only_from)" + ] + }, + { + "instruction": "triangular-solve.2", + "ms": 0.8715290660000179, + "opcode": "custom-call", + "shape": "(f64[1500,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:213 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + } + ], + "regularization_H": [ + { + "instruction": "input_scatter_fusion.10", + "ms": 0.0020572860000000115, + "opcode": "fusion", + "shape": "f64[1500,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:615", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:615 (pixel_splitted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:137 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_concatenate_fusion.8", + "ms": 0.0018499239999999874, + "opcode": "fusion", + "shape": "pred[3]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:93", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:93 (split_points_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:410 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + }, + { + "instruction": "input_concatenate_fusion.10", + "ms": 0.0018477559999999864, + "opcode": "fusion", + "shape": "pred[3]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:90", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:90 (split_points_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:410 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + }, + { + "instruction": "input_concatenate_fusion.9", + "ms": 0.0018391719999999924, + "opcode": "fusion", + "shape": "pred[3]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:91", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:91 (split_points_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:410 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + }, + { + "instruction": "input_concatenate_fusion", + "ms": 0.0017546959999999875, + "opcode": "fusion", + "shape": "s32[1500,2]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:615", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:615 (pixel_splitted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:137 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_concatenate_fusion.11", + "ms": 0.001504771999999999, + "opcode": "fusion", + "shape": "pred[3]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:88", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:88 (split_points_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:410 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + } + ], + "mesh_locate_walk": [ + { + "instruction": "input_reduce_fusion.1", + "ms": 0.025060842, + "opcode": "fusion", + "shape": "pred[196]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:288", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:288 (_walk_from_seed..cond)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)" + ] + }, + { + "instruction": "loop_reduce_fusion", + "ms": 0.02501252400000029, + "opcode": "fusion", + "shape": "(f64[21361]{0}, s64[21361]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:264", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:264 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:264 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)" + ] + }, + { + "instruction": "loop_or_select_fusion", + "ms": 0.02211751599999975, + "opcode": "fusion", + "shape": "(s32[21361]{0}, pred[21361]{0}, pred[21361]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:270", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:270 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)" + ] + }, + { + "instruction": "loop_select_fusion", + "ms": 0.019843684000000437, + "opcode": "fusion", + "shape": "s32[21361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:242", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:242 (_walk_from_seed..weights_of)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:262 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)" + ] + }, + { + "instruction": "input_reduce_fusion.2", + "ms": 0.01620201999999949, + "opcode": "fusion", + "shape": "pred[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:288", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:288 (_walk_from_seed..cond)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)" + ] + }, + { + "instruction": "while.34", + "ms": 0.01440621800000083, + "opcode": "while", + "shape": "(s32[], s32[21361]{0}, pred[21361]{0}, pred[21361]{0}, s32[3000,3]{1,0}, /*index=5*/f64[1500,2]{1,0}, f64[21361,2]{1,0}, s32[3000,3]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "psf_convolution_mapping_matrix": [ + { + "instruction": "input_scatter_fusion", + "ms": 1.9798064759999974, + "opcode": "fusion", + "shape": "f64[1500,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.19.0", + "ms": 1.7557597519999995, + "opcode": "fft", + "shape": "f64[1500,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.15.0", + "ms": 1.3637167439999986, + "opcode": "fft", + "shape": "c128[1500,180,91]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.17.0", + "ms": 0.9788367500000004, + "opcode": "fft", + "shape": "c128[1500,91,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_transpose_fusion.4", + "ms": 0.5138481179999995, + "opcode": "fusion", + "shape": "c128[1500,91,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "wrapped_transpose", + "ms": 0.498117416, + "opcode": "fusion", + "shape": "c128[1500,180,91]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + } + ], + "inversion_other": [ + { + "instruction": "cholesky.120", + "ms": 0.8961964400000054, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1078 (AbstractInversion.log_det_curvature_reg_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:347 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "cholesky.130", + "ms": 0.8916410960000056, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1157 (AbstractInversion.log_det_regularization_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:348 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "loop_reduce_window_fusion.1", + "ms": 0.0027720500000000033, + "opcode": "fusion", + "shape": "s64[94,16]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "loop_reduce_window_fusion", + "ms": 0.002687965999999994, + "opcode": "fusion", + "shape": "s64[6,16]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "loop_broadcast_convert_fusion", + "ms": 0.0021780000000000002, + "opcode": "fusion", + "shape": "(s32[1500]{0}, s64[1500]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527 (AbstractInversion.zeroed_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:567 (AbstractInversion.solve_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:684 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_scatter_fusion.5", + "ms": 0.0019317339999999998, + "opcode": "fusion", + "shape": "s64[1500]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527 (AbstractInversion.zeroed_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:567 (AbstractInversion.solve_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:684 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "mapping_matrix": [ + { + "instruction": "input_reduce_fusion.31", + "ms": 0.00288795000000002, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:120 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + } + ], + "curvature_matrix_F": [ + { + "instruction": "cublas-lt-matmul.2", + "ms": 4.212703104000002, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "chi_squared_evidence": [ + { + "instruction": "loop_multiply_fusion.2", + "ms": 0.003015510000000009, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:300", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:300 (AbstractNDArray.__pow__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:60 (unwrap_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:35 (to_new_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:78 (chi_squared_map_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:78 (AbstractFit.chi_squared_map)" + ] + } + ] + }, + "stage_audit_note": "The HLO instructions that contributed most of each stage's milliseconds, with their full source stack. A stage row is only as good as the rules that built it; this is how a reader checks a row against the HLO instead of trusting it.", + "untraced_wall_ms": 44.54925777400058, + "reconciliation_vs_untraced_pct": -28.63822629935343, + "wall_basis": "wall_ms is the TRACED run's wall, the run these kernel durations came from. untraced_wall_ms is the same executable without the profiler; the difference is the profiler's overhead and belongs in neither the stages nor the idle row.", + "calls": 500, + "call_split": "per-call (first-instruction recurrence)", + "call_blocks": 500, + "events": 361000, + "streams": [ + "Stream #14(Memset,MemcpyD2H,Compute,MemcpyH2D,MemcpyD2D)" + ], + "per_stage_ms": { + "border_relocator": { + "median_ms": 0.10147300000000001, + "min_ms": 0.10067400000000001, + "max_ms": 0.10230600000000001 + }, + "chi_squared_evidence": { + "median_ms": 0.003008, + "min_ms": 0.002816, + "max_ms": 0.003488 + }, + "curvature_matrix_F": { + "median_ms": 4.211076, + "min_ms": 4.192884, + "max_ms": 4.322485 + }, + "inversion_other": { + "median_ms": 1.7970625, + "min_ms": 1.777718, + "max_ms": 1.841813 + }, + "mapping_matrix": { + "median_ms": 0.00288, + "min_ms": 0.002848, + "max_ms": 0.002913 + }, + "memset": { + "median_ms": 0.023728, + "min_ms": 0.009888000000000001, + "max_ms": 0.09891300000000001 + }, + "mesh_construction": { + "median_ms": 0.00192, + "min_ms": 0.001888, + "max_ms": 0.001953 + }, + "mesh_locate_walk": { + "median_ms": 0.14797050000000006, + "min_ms": 0.13011300000000003, + "max_ms": 0.1837410000000001 + }, + "mesh_qhull_callback": { + "median_ms": 0.010561000000000001, + "min_ms": 0.010464000000000001, + "max_ms": 0.011168 + }, + "mesh_seed_argmin": { + "median_ms": 0.22282000000000007, + "min_ms": 0.2224350000000001, + "max_ms": 0.2232690000000001 + }, + "mixed_fusion": { + "median_ms": 1.9793454999999995, + "min_ms": 1.9718319999999994, + "max_ms": 1.9932419999999993 + }, + "other": { + "median_ms": 0.0658245, + "min_ms": 0.06326299999999999, + "max_ms": 0.073409 + }, + "pdip_solve": { + "median_ms": 8.8988135, + "min_ms": 2.420607, + "max_ms": 52.51687400000008 + }, + "psf_convolution_mapping_matrix": { + "median_ms": 7.089864, + "min_ms": 7.076376000000001, + "max_ms": 7.105529000000001 + }, + "regularization_H": { + "median_ms": 0.010848, + "min_ms": 0.010656, + "max_ms": 0.011297 + } + }, + "stage_order": [ + "border_relocator", + "mesh_qhull_callback", + "mesh_seed_argmin", + "mesh_locate_walk", + "mesh_construction", + "mapping_matrix", + "psf_convolution_mapping_matrix", + "curvature_matrix_F", + "regularization_H", + "pdip_solve", + "chi_squared_evidence", + "inversion_other", + "mixed_fusion", + "other", + "memset" + ], + "mixed_fusion": { + "ms": 1.9793454999999995, + "constituent_stage_sets": { + "curvature_matrix_F + psf_convolution_mapping_matrix": 1.0147081019999997, + "pdip_solve + psf_convolution_mapping_matrix": 0.2257948400000001, + "data_vector_D + pdip_solve": 0.12487178999999989, + "mapped_reconstruction + pdip_solve": 0.114598196, + "mapping_matrix + pdip_solve": 0.1127868219999995, + "curvature_reg_reduce_gather + inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": 0.10947590399999996, + "pdip_solve + regularization_H": 0.04510727800000014, + "inversion_other + pdip_solve + regularization_H": 0.024210517999999997, + "inversion_other + pdip_solve": 0.022894710000000252, + "inversion_other + mapping_matrix + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin + pdip_solve": 0.021158711999999927, + "inversion_other + mesh_construction + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin + pdip_solve + regularization_H": 0.01877424599999999, + "inversion_other + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + pdip_solve + regularization_H": 0.014763329999999995, + "pdip_solve + ray_trace_data_grid": 0.013689534000000097, + "border_relocator + pdip_solve": 0.013573581999999999, + "inversion_other + mapping_matrix + mesh_construction + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin": 0.011661483999999995, + "grids_and_structures + mass_profile_deflections + pdip_solve": 0.010123599999999995, + "grids_and_structures + mass_profile_deflections + pdip_solve + ray_trace_data_grid": 0.008998284, + "chi_squared_evidence + pdip_solve": 0.007715376000000024, + "inversion_other + mesh_construction + mesh_seed_argmin + pdip_solve + regularization_H": 0.007110957999999991, + "inversion_other + mesh_dual_areas + mesh_locate_walk": 0.006664112000000127, + "inversion_other + mesh_construction + pdip_solve + regularization_H": 0.006312925999999992, + "grids_and_structures + mass_profile_deflections + ray_trace_data_grid": 0.0054836200000000015, + "inversion_other + pdip_solve + ray_trace_data_grid": 0.005315085999999961, + "inversion_other + regularization_H": 0.004865931999999971, + "inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": 0.004811862000000001, + "inversion_other + mapped_reconstruction": 0.003720097999999992, + "mapping_matrix + pdip_solve + regularization_H": 0.003487187999999997, + "inversion_other + mesh_construction + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin": 0.0030994140000000087, + "inversion_other + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin": 0.0029285260000000177, + "inversion_other + mesh_construction + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin + regularization_H": 0.0026811060000000086, + "inversion_other + mesh_dual_areas + mesh_locate_walk + pdip_solve": 0.002590290000000015, + "inversion_other + mesh_locate_walk + mesh_seed_argmin": 0.002479748000000007, + "inversion_other + mesh_interpolation_weights": 0.002154182000000006, + "chi_squared_evidence + inversion_other": 0.0018707900000000017 + }, + "example_kernels": { + "curvature_matrix_F + psf_convolution_mapping_matrix": [ + "loop_divide_gather_fusion" + ], + "pdip_solve + psf_convolution_mapping_matrix": [ + "loop_broadcast_fusion.4" + ], + "data_vector_D + pdip_solve": [ + "input_reduce_fusion.13", + "input_reduce_fusion.29" + ], + "mapped_reconstruction + pdip_solve": [ + "input_reduce_fusion.17" + ], + "mapping_matrix + pdip_solve": [ + "loop_broadcast_fusion.2", + "loop_divide_fusion" + ], + "curvature_reg_reduce_gather + inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": [ + "input_multiply_transpose_fusion" + ], + "pdip_solve + regularization_H": [ + "loop_select_fusion.5", + "input_transpose_fusion.5" + ], + "inversion_other + pdip_solve + regularization_H": [ + "input_transpose_fusion.6" + ], + "inversion_other + pdip_solve": [ + "input_reduce_fusion.15", + "loop_log_fusion", + "input_reduce_fusion.16", + "input_reduce_fusion.20" + ], + "inversion_other + mapping_matrix + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin + pdip_solve": [ + "input_scatter_fusion.6", + "input_scatter_fusion.3" + ] + }, + "prorated_estimate_ms": { + "psf_convolution_mapping_matrix": 0.6202514709999999, + "curvature_matrix_F": 0.5073540509999999, + "pdip_solve": 0.39167800337619035, + "mapped_reconstruction": 0.08225729329999998, + "inversion_other": 0.06867465050952395, + "data_vector_D": 0.06243589499999994, + "mapping_matrix": 0.0621442266666664, + "regularization_H": 0.04280903790952385, + "reconstruction_scatter": 0.02309814629999999, + "curvature_reg_reduce_gather": 0.02189518079999999, + "mesh_construction": 0.014286254376190466, + "ray_trace_data_grid": 0.012693906666666704, + "mesh_locate_walk": 0.012520802109523853, + "mesh_interpolation_weights": 0.012362922276190475, + "mesh_seed_argmin": 0.01107405054285714, + "mesh_dual_areas": 0.008462424833333372, + "grids_and_structures": 0.007451977666666666, + "mass_profile_deflections": 0.007451977666666666, + "border_relocator": 0.0067867909999999995, + "chi_squared_evidence": 0.004793083000000013 + }, + "prorated_note": "ESTIMATE ONLY \u2014 a mixed fusion's time split equally across the stages its constituents span. Never summed into the measured table, never reconciled." + }, + "other_sources_ms": { + "copy.106": 0.041848820000001674, + "copy.70": 0.01687242399999937, + "copy.75": 0.0019623840000000084, + "copy.61": 0.001654087999999997, + "copy.104": 0.001651657999999998, + "copy.105": 0.001639433999999996, + "copy.103": 0.0006567739999999985, + "copy.40": 0.0005587200000000002 + }, + "device_span_ms": 45.881268817999995, + "device_busy_ms": 38.6573228, + "device_idle_ms": 7.223946017999992, + "largest_idle_gaps": [ + { + "gap_ms": 5.429953, + "after": "pure_callback.4", + "before": "pure_callback.4" + }, + { + "gap_ms": 0.041119, + "after": "input_concatenate_fusion.7", + "before": "pure_callback.4" + }, + { + "gap_ms": 0.032543, + "after": "pure_callback.4", + "before": "copy.105" + }, + { + "gap_ms": 0.028608, + "after": "copy.70", + "before": "input_reduce_fusion.1" + }, + { + "gap_ms": 0.023872, + "after": "copy.105", + "before": "copy.61" + }, + { + "gap_ms": 0.021055, + "after": "loop_or_select_fusion", + "before": "copy.70" + }, + { + "gap_ms": 0.02032, + "after": "while.40", + "before": "input_reduce_select_fusion" + }, + { + "gap_ms": 0.019423, + "after": "input_reduce_fusion.28", + "before": "loop_broadcast_fusion.4" + } + ], + "kernel_ms": 24.5671945, + "sum_ms": 31.79114051799999, + "wall_ms": 45.88357532199734, + "host_outside_span_ms": 0.002306503997345999, + "reconciliation_pct": -30.713462726260573, + "unjoined_ms": 0.0, + "unjoined_pct": 0.0, + "other_ms": 0.0658245, + "other_pct": 0.14345983184192415, + "note": "Stage rows attribute the command-buffers-OFF program (see the module docstring): kernel times are the same, the launch overhead the CUDA graphs remove is not. sum_ms = kernel rows + device_idle_ms; the residual against wall_ms is host_outside_span_ms (dispatch before the first kernel, teardown after the last).", + "per_stage_ms_per_lane": { + "border_relocator": 0.10147300000000001, + "chi_squared_evidence": 0.003008, + "curvature_matrix_F": 4.211076, + "inversion_other": 1.7970625, + "mapping_matrix": 0.00288, + "memset": 0.023728, + "mesh_construction": 0.00192, + "mesh_locate_walk": 0.14797050000000006, + "mesh_qhull_callback": 0.010561000000000001, + "mesh_seed_argmin": 0.22282000000000007, + "mixed_fusion": 1.9793454999999995, + "other": 0.0658245, + "pdip_solve": 8.8988135, + "psf_convolution_mapping_matrix": 7.089864, + "regularization_H": 0.010848 + }, + "per_lane_divisor": 1, + "host_callback": { + "pure_callback_span_ms": 252.1864798000001, + "qhull_ms": 235.4625997999999, + "callback_body_ms_note": "the OUTERMOST matching body event, not a sum: under the probe the body appears twice (the wrapper and the timed re-implementation it calls) and summing them would count the same work twice", + "events_by_name": { + "pure_callback.4": { + "count": 500, + "ms": 252.1864798000001 + }, + "$callback.py:815 _wrapped_callback": { + "count": 500, + "ms": 247.94798569999986 + }, + "$callback.py:224 _callback": { + "count": 500, + "ms": 246.77904789999994 + }, + "$callback.py:74 pure_callback_impl": { + "count": 500, + "ms": 246.33716370000008 + }, + "$callback.py:69 __call__": { + "count": 500, + "ms": 236.22453499999978 + }, + "$delaunay.py:162 ": { + "count": 500, + "ms": 235.90392849999995 + }, + "$host_callback_probe.py:225 wrapped": { + "count": 500, + "ms": 235.4625997999999 + }, + "$host_callback_probe.py:160 _timed_tri_only": { + "count": 500, + "ms": 235.06521530000015 + }, + "ThenExecuteCallback:GetEventForComputeStreamSyncPoint": { + "count": 500, + "ms": 0.8981313000000002 + }, + "$callback.py:822 ": { + "count": 2000, + "ms": 0.7075121000000016 + }, + "$__init__.py:132 _xla_gc_callback": { + "count": 8, + "ms": 0.0033020000000000002 + } + }, + "note": "HOST milliseconds per traced BATCH (the whole invocation), aggregated by name because the events nest. Not a row of the device table: the device pays for them as the idle gaps largest_idle_gaps names." + }, + "host_callback_ms": 252.1864798000001 + }, + "hlo_census": { + "status": "excluded", + "reason": "The legacy census anchors PyAutoArray source line numbers that moved after the phase-1 run. No batched attribution is published from unsupported anchors; the device-event table and wall reconciliation remain valid." + }, + "trace_split": { + "expected_calls": 500, + "executions_per_invocation": 50, + "method": "per-call (first-instruction recurrence)", + "note": "DECIDED IN CODE: the scalar arm's trace is split by trace_calls * B, so every lane's execution is its own block and the per-stage median is taken over all of them. The vmap arm's is split by trace_calls, one block per batched execution, and per_stage_ms_per_lane divides those rows by B." + } + } + }, + "certification_report": { + "source": "vmap arm, library solve observed through its stats= out-dict (PyAutoArray #566) and jax.debug.callback(..., ordered=True); ordered because the unordered batching rule returns the lanes permuted. Untimed, separately compiled; max rel diff of its log likelihoods vs the timed arm's: nan", + "rows": 50, + "pdip_iter": "NOT AVAILABLE per lane without changing library numerics. The fallback branch calls the library's own reconstruction_positive_only_from, which returns the solution alone \u2014 jax_nnls.solve_nnls' iteration count is discarded inside the library's custom_vjp primal. The PDIP while_loop's cost is in the pdip_solve stage row of each arm's device table instead, which is a max-over-lanes quantity under vmap because every lane runs the same fixed kernel sequence.", + "passes_semantics": "library `passes`: restricted active-set passes run (jax_active_set.solve_certified)" + }, + "lane_construction": { + "draws_sha256": "246b41aea1e860763cb7b206a7f43d5e3145e5c63c8c9df4985518ebf778c02e", + "lane_rows": [ + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349 + ], + "calls": [ + 15, + 16, + 17 + ], + "stage": "pix1", + "regularization_range": { + "galaxies.source.pixelization.regularization.inner_coefficient": { + "min": 2.1069031993440453e-06, + "max": 4381.27190482627 + }, + "galaxies.source.pixelization.regularization.outer_coefficient": { + "min": 2.002369440956339e-06, + "max": 350.8013530115919 + }, + "galaxies.source.pixelization.regularization.signal_scale": { + "min": 0.015870361716511128, + "max": 0.971901829834744 + } + }, + "phases": [ + "exploration" + ], + "window_rule": "nautilus_batches.timed_window: consecutive captured calls, in call order, from the FIRST call that is not a prior batch, concatenated and truncated to B; at B == n_batch exactly one real Nautilus batch. Falls back to the latest B lanes if the post-prior lanes run out; never repeats a lane.", + "note": "Lane k is captured lane lane_rows[k]: the mass AND shear of a real Nautilus proposal (nautilus_batch_capture.py), lens light fixed at S3, the S3 light-subtracted dataset shared by every lane. `offsets` in the lane table are the mass offsets from the fiducial; the shear is in the capture file." + }, + "captured": { + "batches_path": "/mnt/ral/jnightin/autolens_profiling_wt/certified-solver-phase-c1-lane-rate/results/breakdown/imaging/nautilus_batches_delaunay_pix1.npz", + "batches_sha256": "e71a5e23026b342d1ff4359b8fb914a87980d8aea0060659d2334dcfa3215c00", + "schema_version": 2, + "n_calls": 932, + "n_lanes": 18640, + "call_sizes_seen": [ + 20 + ], + "calls_by_phase": { + "prior": 15, + "exploration": 917 + }, + "parameter_paths": [ + "galaxies.source.pixelization.regularization.inner_coefficient", + "galaxies.source.pixelization.regularization.outer_coefficient", + "galaxies.source.pixelization.regularization.signal_scale", + "galaxies.lens.mass.centre.centre_0", + "galaxies.lens.mass.centre.centre_1", + "galaxies.lens.mass.einstein_radius", + "galaxies.lens.mass.ell_comps.ell_comps_0", + "galaxies.lens.mass.ell_comps.ell_comps_1", + "galaxies.lens.shear.gamma_1", + "galaxies.lens.shear.gamma_2" + ], + "stage": "pix1", + "regularization": { + "class": "AdaptSplit", + "free": true, + "priors": { + "inner_coefficient": [ + "LogUniform", + 1e-06, + 1000000.0 + ], + "outer_coefficient": [ + "LogUniform", + 1e-06, + 1000000.0 + ], + "signal_scale": [ + "Uniform", + 0.0, + 1.0 + ] + }, + "priors_source": "PyAutoGalaxy packaged config/priors/regularization (adapt_split.yaml / constant.yaml); adapt_split.yaml is identical to euclid_strong_lens_modeling_pipeline/config/priors/regularization/adapt_split.yaml" + }, + "nautilus": { + "departures_from_production": [ + "mass/shear priors are the phase-B cell's Gaussians, not chained from source_lp", + "no positions likelihood", + "the cell's mesh (Hilbert 1500, weight_power 1) in both stages; source_pix_2 redraws a 500-vertex Hilbert grid at weight_power 3.5", + "seeded (production passes no seed)", + "quick updates disabled (iterations_per_quick_update=1e12; render-only)", + "NullPaths: no output directory, so no checkpoint and one Sampler.run call", + "post-fit perform_update skipped (samples / latent variables never built)" + ], + "n_batch": 20, + "n_like_max": 40000, + "n_live": 150, + "number_of_cores": 1, + "production_reference": "euclid_strong_lens_modeling_pipeline/scripts/full_model.py source_pix_1 (n_live=150) / source_pix_2 (n_live=75): af.Nautilus(n_batch=20, **SettingsSearch.search_dict) with use_jax_vmap=True and number_of_cores=1 (SettingsSearch defaults)", + "production_stage": "source_pix_1", + "seed": 1, + "stage": "pix1", + "use_jax_vmap": true, + "version": "1.0.5" + }, + "capture_fit_status": "sampling complete (n_like_max or convergence); post-fit result skipped", + "capture_library_revisions": { + "PyAutoArray": { + "head": "7fa8d2714f7da43fec2b23c31bff580764831670", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoArray" + }, + "PyAutoFit": { + "head": "a736840127be7a3c21e15a5c945e94d8f1082983", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoFit" + }, + "PyAutoGalaxy": { + "head": "70a61e26cd715cefe7012a38285698091246a8a4", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy" + }, + "PyAutoLens": { + "head": "86054bbc19baa2f710a12e04a94fa27ab37cc354", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoLens" + }, + "PyAutoNerves": { + "head": "1fa613aa8d89a79613009fb66f5b4e2d21deb57a", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoNerves" + } + }, + "fingerprint_check": { + "fields": [ + "mesh", + "source_pixels", + "dataset_sha256", + "regularization_class", + "regularization_s0_fiducial", + "border_relocator", + "use_mixed_precision", + "log_evidence_s3_library" + ], + "not_identity": "the regularization coefficients: free per lane since the capture frees them", + "log_evidence_s3_library_rel_diff": 0.0, + "passed": true + }, + "timed_window_vs_capture_pdip": { + "reference": "the capture's own figure of merit (library PDIP, Fitness.call_wrap jax.jit(jax.vmap(call)) over parameter vectors) for the same lanes", + "compared_against": "this cell's jit(vmap) library-PDIP reference", + "n_compared": 50, + "max_rel_diff": NaN, + "max_abs_diff_nats": NaN, + "gated": false, + "note": "RECORDED, NOT GATED: proves the lane trees rebuilt here are the models the sampler evaluated (a wrong parameter mapping shows up as nats, not 1e-10)." + } + }, + "matched": { + "vmap_wall_per_lane_ms": 40.18500091399619, + "scalar_wall_per_lane_ms": 44.16470036399551, + "speedup_vmap_over_scalar": 1.0990344496573898, + "note": "Both walls are the PRODUCTION nesting of their arm, measured in one process on the same B lanes with the SAME library Settings (no injection). A speedup below 1 means the batch is slower per lane than B sequential jitted calls." + }, + "solver_source": "library", + "solver": "certified", + "certified_fallback": "pdip", + "certified_pass_budget": 16, + "certified_pass_budget_basis": "config default (Settings().certified_pass_budget)", + "certified_tau_rel": 1e-09, + "solver_used": "certified", + "solver_check": { + "solver_used": "certified", + "solver_used_source": "AbstractInversion.positive_only_solver_used on the fiducial S3 inversion, built eagerly on the JAX backend (AnalysisImaging(use_jax=True).fit_from) with the arms' Settings", + "reference_solver_used": "pdip", + "traced_solver_kwargs_jax": [ + "certified" + ], + "observed_calls_jax": 1, + "report_rows": 50, + "report_vs_timed_arm_max_rel_diff": NaN + }, + "lanes_certified": [ + false, + false, + true, + true, + false, + true, + true, + true, + true, + true, + true, + false, + false, + true, + true, + false, + false, + false, + false, + false, + true, + true, + false, + true, + true, + true, + true, + true, + true, + false, + true, + false, + false, + false, + true, + false, + false, + true, + false, + true, + false, + false, + true, + true, + true, + false, + false, + false, + false, + true + ], + "lanes_passes": [ + 16, + 16, + 1, + 3, + 16, + 10, + 3, + 9, + 10, + 2, + 5, + 16, + 16, + 9, + 15, + 16, + 16, + 16, + 16, + 16, + 13, + 6, + 16, + 13, + 13, + 0, + 1, + 11, + 3, + 16, + 11, + 16, + 16, + 16, + 2, + 16, + 16, + 15, + 16, + 4, + 16, + 16, + 6, + 2, + 8, + 16, + 16, + 16, + 16, + 2 + ], + "uncertified_lanes": 24, + "per_lane_certification_note": "certified / passes come from the library's own solve through its stats= out-dict (PyAutoArray #566): passes is the number of restricted active-set passes the library ran (0 when the unconstrained solve was already non-negative), certified is its KKT certificate. With certified_fallback=pdip a False lane returned the PDIP solution; with none it returned the last uncertified iterate. null for a library-PDIP row (no certificate).", + "gate": { + "pre_registered": true, + "gated": [ + "per lane: jit(vmap) arm vs jit(vmap) library PDIP <= lane_rtol relative", + "per lane: scalar jit arm vs scalar jit library PDIP <= lane_rtol relative" + ], + "recorded_not_gated": [ + "per lane: jit(vmap) arm vs scalar jit arm (rel_diff, abs_diff_nats)", + "per lane: jit(vmap) library PDIP vs scalar jit library PDIP", + "uncertified_lanes (certified_fallback=none rows)" + ], + "lanes_failed": 12, + "passed": false, + "policy_eligible": false, + "note": "Pre-registered before submission (module docstring; submit header). Phase 3 (results/notes/hst_gpu_residue_phase3_psf_2026_09.md) placed phase 2's ~2.5e-9 certified-vs-PDIP residual BETWEEN the jit(vmap) and scalar-jit compositions, not in the solver \u2014 so each arm is gated against the library-PDIP reference of its OWN composition, and the cross-composition difference is recorded with its nats. A certified_fallback=none row is policy-eligible only if every lane certifies AND passes the gate. Timing is never gated." + }, + "library_revisions": { + "PyAutoArray": { + "head": "3de624b5b91a4efa130dc3cb0a3a0f06f85025a3", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoArray", + "module_file": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/__init__.py" + }, + "PyAutoFit": { + "head": "dd9fbe0aab60c4a57702b1444ca031b317c91331", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoFit", + "module_file": "/mnt/ral/jnightin/PyAuto/PyAutoFit/autofit/__init__.py" + }, + "PyAutoGalaxy": { + "head": "70a61e26cd715cefe7012a38285698091246a8a4", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy", + "module_file": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/__init__.py" + }, + "PyAutoLens": { + "head": "86054bbc19baa2f710a12e04a94fa27ab37cc354", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoLens", + "module_file": "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/__init__.py" + }, + "autoarray_file": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/__init__.py" + } + }, + "headline_arm_note": "`trace`, `hlo_census`, `command_buffers` and `trace_timing` above describe the scalar arm \u2014 the program phase 1 traced. Both arms' full blocks, the lane table and the matched comparison are under `vmap`." +} \ No newline at end of file diff --git a/results/breakdown/imaging/fixed_light_trace_delaunay_jitvmap50_captured_pix1_libcertified_fbon_b16_hpc_a100_fp64_fixed_light_trace.png b/results/breakdown/imaging/fixed_light_trace_delaunay_jitvmap50_captured_pix1_libcertified_fbon_b16_hpc_a100_fp64_fixed_light_trace.png new file mode 100644 index 000000000..b57584df9 Binary files /dev/null and b/results/breakdown/imaging/fixed_light_trace_delaunay_jitvmap50_captured_pix1_libcertified_fbon_b16_hpc_a100_fp64_fixed_light_trace.png differ diff --git a/results/breakdown/imaging/fixed_light_trace_delaunay_jitvmap50_captured_pix1_libpdip_fbon_b16_hpc_a100_fp64_fixed_light_trace.json b/results/breakdown/imaging/fixed_light_trace_delaunay_jitvmap50_captured_pix1_libpdip_fbon_b16_hpc_a100_fp64_fixed_light_trace.json new file mode 100644 index 000000000..88342ff91 --- /dev/null +++ b/results/breakdown/imaging/fixed_light_trace_delaunay_jitvmap50_captured_pix1_libpdip_fbon_b16_hpc_a100_fp64_fixed_light_trace.json @@ -0,0 +1,9081 @@ +{ + "device": { + "backend": "gpu", + "device": "cuda:0", + "hostname": "euclid-ral-gpu-2", + "xla_flags": "--xla_disable_hlo_passes=constant_folding --xla_gpu_autotune_level=0 --xla_gpu_enable_triton_gemm=false", + "omp_num_threads": null, + "cpu_count": 124, + "jax_compilation_cache_dir": "/mnt/ral/jnightin/autolens_profiling_wt/certified-solver-phase-c1-lane-rate/output/jax_cache/fixed_light_lanerate_delaunay_pix1_time_50_pdip_on_350768_14", + "autotune_cache_entries_at_start": 0, + "cache_fresh": true, + "nvidia_smi": "NVIDIA A100 80GB PCIe, 61395 MiB, 81920 MiB" + }, + "machine": { + "cpu_model": "AMD EPYC 7702 64-Core Processor", + "cpu_count_os": 124, + "nproc": 4, + "nproc_all": 124, + "nproc_note": "GNU nproc honours OMP_NUM_THREADS, so `nproc` can print 1 on a multi-core host; `nproc_all` is the core count.", + "ram_total": "928298204 kB", + "kernel": "5.14.0-687.50.1.el9_8.x86_64", + "platform": "Linux-5.14.0-687.50.1.el9_8.x86_64-x86_64-with-glibc2.34", + "python": "3.12.4", + "jax_thread_env": { + "NPROC": null + }, + "blas_thread_env": { + "OMP_NUM_THREADS": null, + "OPENBLAS_NUM_THREADS": null, + "MKL_NUM_THREADS": null, + "VECLIB_MAXIMUM_THREADS": null, + "NUMEXPR_NUM_THREADS": null + }, + "thread_env_note": "NPROC sizes XLA's CPU intra-op pool (the JAX rows); the BLAS knobs pin OpenBLAS/MKL/OpenMP (the numpy/scipy rows) and do not touch JAX. Two disjoint families; both are recorded on every CPU timing.", + "gpu": "NVIDIA A100 80GB PCIe, 81920 MiB, 610.57.04" + }, + "precision": "fp64", + "configuration": { + "pixel_scale_arcsec": 0.05, + "mask_radius_arcsec": 3.5, + "image_pixels_masked": 15361, + "over_sampled_pixels": 62752, + "mesh": "delaunay", + "mesh_shape": null, + "source_pixels": 1500, + "source_pixels_requested": null, + "dataset": "hst", + "dataset_sha256": { + "data.fits": "e4e833a28e9c6f6fb023cd85c0d3dde74068720256bc77a240633500e5b04fac", + "noise_map.fits": "315c6266a0acd3ac9c8da82fcd2b45a08697362481fd7a35072bab1658530ba3", + "psf.fits": "8389ba0e8bf4a09b4a561cfc246181a2fb944ed396754cd0ff76fdd22910d303" + }, + "cell_source_sha256": "06a162fcdae6b329384ec33322f443df07215d86e56f0505ac15b3d3473eb432", + "inversion_path": "dense", + "pass_budget": 7, + "pass_budget_basis": "phase 3 (autolens_profiling#255): the smallest ZERO-fallback budget per mesh, the budget a production run fixes. NOT phase 0's certifying budget (2 for Delaunay), which falls back on 67.5 % of a graded draw set and is not a production cost.", + "border_relocator_mode": "cell", + "border_relocator": true, + "border_relocator_note": "'cell' is use_border_relocator=True, which every profiling cell in this family forces; 'library' passes None and takes the shipped config default, which is what production runs. The resolved boolean is what this leg actually ran.", + "routes_selected": [ + "b", + "d" + ], + "trace_calls": 10, + "command_buffers_traced": "off", + "use_mixed_precision": false, + "tau_rel": 1e-09, + "regularization": { + "scheme": "adapt_split", + "inner_coefficient": 0.1, + "outer_coefficient": 10.0, + "signal_scale": 0.1 + }, + "thread_env": { + "n_threads": null, + "vars": [ + "OPENBLAS_NUM_THREADS", + "MKL_NUM_THREADS", + "OMP_NUM_THREADS", + "VECLIB_MAXIMUM_THREADS", + "NUMEXPR_NUM_THREADS" + ], + "set_to": null, + "preexisting": {}, + "overridden": {}, + "note": "Not pinned (legacy variant): recorded as found." + }, + "over_sample_size_lp_rule": { + "sub_size_list": [ + 4, + 2, + 2 + ], + "radial_list": [ + 0.3, + 0.6 + ], + "centre": [ + 0.0, + 0.0 + ] + }, + "vmap_batch": 50, + "lanes": "captured", + "arms": [ + "vmap", + "scalar" + ], + "fallback": "on", + "draw_seed": 0, + "vmap_composition": "jax.jit(jax.vmap(fn))", + "lane_rtol": 1e-09, + "vmap_flags_note": "Strict ProfileCLI.parse_cell_args rejects unknown flags. These keys record the exact batching program and prevent historical vmap(jit) artifacts from being mistaken for current jit(vmap) measurements.", + "solver_source": "library", + "solver": "pdip", + "certified_fallback": "pdip", + "certified_pass_budget": 16, + "captured_pass": "time", + "batches": "/mnt/ral/jnightin/autolens_profiling_wt/certified-solver-phase-c1-lane-rate/results/breakdown/imaging/nautilus_batches_delaunay_pix1.npz" + }, + "solver_injection": { + "patched": null, + "part_v": "none \u2014 library mode selects the solver through al.Settings", + "part_b_route_d": { + "patched": "autoarray.inversion.inversion.inversion_util.reconstruction_positive_only_from", + "pass_budget": 7, + "fallback": true + }, + "note": "Library mode (phase B, #300): PART V's arms and references run the library's own positive-only solve, selected by Settings(positive_only_solver, certified_fallback, certified_pass_budget); nothing is injected. PART B's single-call route d (the fiducial d == b pin) still uses the phase-1 harness injection at the phase-3 budget and is not a phase-B row. The untimed certification report observes the library solve (library_solver_observed) without changing it." + }, + "routes": { + "b_s3_pdip": { + "label": "S3 PDIP (source-only)", + "status": "ok", + "solver": "library", + "ms": 51.00313639995875, + "log_likelihood": 29155.000174201366 + }, + "d_s3_certified_fallback": { + "label": "S3 certified active set, budget 7, PDIP fallback", + "status": "ok", + "solver": "harness-injected certified active set", + "pass_budget": 7, + "fallback": true, + "injected_solver_calls_jax": 1, + "injected_solver_calls_numpy": 0, + "ms": 31.69604540016735, + "log_likelihood": 29155.000171217343 + } + }, + "equivalence_pins": [ + { + "pin": "route d (certified, fallback) == route b (library PDIP)", + "route": "d_s3_certified_fallback", + "reference": "b_s3_pdip", + "expectation": "the certified active set returns the library's own positive solution", + "rtol": 1e-09, + "got": 29155.000171217343, + "reference_value": 29155.000174201366, + "rel_diff": 1.0235029994364462e-10, + "status": "PASS" + } + ], + "equivalence_rtol": 1e-09, + "reference": { + "log_evidence_s0_library": 29155.00017433923, + "log_evidence_s3_library": 29155.000174339304, + "s3": { + "n_params": 1500, + "n_mapper": 1500, + "n_funcs": 0, + "edge_zeroed_pixels": 0, + "subtracted_light_flux": 5105.448603818575 + } + }, + "command_buffers": { + "wall_on_ms": 2511.1598409999715, + "wall_off_ms": 2534.2873237001186, + "command_buffer_delta_ms": 23.127482700147084, + "command_buffer_delta_pct": 0.9209880758103183, + "traced": "off", + "compiler_option": "xla_gpu_enable_command_buffer", + "probe": { + "note": "Not taken in --vmap-batch mode: the CUPTI-inside-a-CUDA-graph probe is a phase-1 diagnostic about the JOIN, and this mode already compiles and times both the command-buffers ON and OFF executable of every arm." + }, + "note": "ONE lowering, TWO compilations, one process. wall_on_ms is the PRODUCTION program (CUDA graphs as XLA ships them) and is the number comparable to phase 5's row; wall_off_ms is the graph-less program the stage rows attribute. The delta is the launch overhead the graphs remove \u2014 it lands in device_idle and host_outside_span, not in any stage. Reconciliation is computed against wall_off_ms." + }, + "trace": { + "parser": "ProfileData.from_file(xplane) + as_text() + stack_frame_index(proto field 17)", + "stage_audit": { + "chi_squared_evidence": [ + { + "instruction": "input_reduce_fusion.26", + "ms": 0.003919388, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:104", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:104 (noise_normalization_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:98 (AbstractFit.noise_normalization)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:306 (FitDataset.noise_normalization)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:349 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)" + ] + }, + { + "instruction": "input_reduce_fusion.28", + "ms": 0.0037901040000000003, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:90", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:90 (chi_squared_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:87 (AbstractFit.chi_squared)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:293 (FitDataset.chi_squared)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:345 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)" + ] + }, + { + "instruction": "loop_multiply_fusion.2", + "ms": 0.003026890000000005, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:300", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:300 (AbstractNDArray.__pow__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:60 (unwrap_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:35 (to_new_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:78 (chi_squared_map_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:78 (AbstractFit.chi_squared_map)" + ] + } + ], + "psf_convolution_mapping_matrix": [ + { + "instruction": "input_scatter_fusion", + "ms": 1.990607756, + "opcode": "fusion", + "shape": "f64[1500,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.19.0", + "ms": 1.76163641, + "opcode": "fft", + "shape": "f64[1500,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.15.0", + "ms": 1.368750455999999, + "opcode": "fft", + "shape": "c128[1500,180,91]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.17.0", + "ms": 0.9792810760000001, + "opcode": "fft", + "shape": "c128[1500,91,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_transpose_fusion.1", + "ms": 0.5133236019999997, + "opcode": "fusion", + "shape": "c128[1500,91,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "wrapped_transpose", + "ms": 0.4998654180000001, + "opcode": "fusion", + "shape": "c128[1500,180,91]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + } + ], + "mapping_matrix": [ + { + "instruction": "loop_broadcast_fusion.2", + "ms": 0.11105047399999984, + "opcode": "fusion", + "shape": "f64[15361,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:342", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:342 (mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:283 (Mapper.mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:91 (AbstractInversionImaging._mapping_matrix_for_convolution_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:137 (AbstractInversionImaging.operated_mapping_matrix_list)" + ] + }, + { + "instruction": "input_reduce_fusion.29", + "ms": 0.0029026840000000234, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:120 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + }, + { + "instruction": "loop_divide_fusion", + "ms": 0.002370827999999994, + "opcode": "fusion", + "shape": "f64[1500]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:92", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:92 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:120 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + } + ], + "mixed_fusion": [ + { + "instruction": "loop_divide_gather_fusion", + "ms": 1.0215624380000001, + "opcode": "fusion", + "shape": "(f64[15361,1,1,1500]{3,2,1,0}, f64[15361,1,1,1500]{3,2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_add_multiply_transpose_fusion", + "ms": 0.06107873599999999, + "opcode": "fusion", + "shape": "(f64[1500,1500]{1,0}, f64[1500,1500]{1,0}, f64[1500,1500]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:61", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:61 (initialize)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:72 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:508 (reconstruction_positive_only_from)" + ] + }, + { + "instruction": "input_transpose_fusion.3", + "ms": 0.024260194000000013, + "opcode": "fusion", + "shape": "f64[1500,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1157 (AbstractInversion.log_det_regularization_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:348 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "input_scatter_fusion.2", + "ms": 0.016409972000000012, + "opcode": "fusion", + "shape": "f64[1500,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:579", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:579 (pixel_splitted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:137 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_scatter_fusion.3", + "ms": 0.014906570000000003, + "opcode": "fusion", + "shape": "f64[1500]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:70", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:70 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:120 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + }, + { + "instruction": "loop_abs_fusion", + "ms": 0.014613888000000004, + "opcode": "fusion", + "shape": "(f64[6000,1]{1,0}, f64[6000,1]{1,0}, f64[6000,1]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:613", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:613 (triangle_area_xp)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:657 (pixel_weights_delaunay_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:982 (InterpolatorDelaunay._mappings_sizes_weights_split)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:124 (AdaptSplit.regularization_matrix_from)" + ] + } + ], + "ray_trace_data_grid": [ + { + "instruction": "input_reduce_fusion.18", + "ms": 0.003239702000000011, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:506", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:506 (FlatLambdaCDM._simpson_1d)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:644 (FlatLambdaCDM.angular_diameter_distance_kpc_z1z2)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:133 (LensingCosmology.angular_diameter_distance_to_earth_in_kpc_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:362 (LensingCosmology.scaling_factor_between_redshifts_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer_util.py:252 (traced_grid_2d_list_from)" + ] + }, + { + "instruction": "input_reduce_fusion.20", + "ms": 0.002753751999999984, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:506", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:506 (FlatLambdaCDM._simpson_1d)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:644 (FlatLambdaCDM.angular_diameter_distance_kpc_z1z2)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:151 (LensingCosmology.angular_diameter_distance_between_redshifts_in_kpc_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:355 (LensingCosmology.scaling_factor_between_redshifts_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer_util.py:252 (traced_grid_2d_list_from)" + ] + }, + { + "instruction": "input_reduce_fusion.19", + "ms": 0.0026018700000000118, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:503", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:503 (FlatLambdaCDM._simpson_1d)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:644 (FlatLambdaCDM.angular_diameter_distance_kpc_z1z2)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:133 (LensingCosmology.angular_diameter_distance_to_earth_in_kpc_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:362 (LensingCosmology.scaling_factor_between_redshifts_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer_util.py:252 (traced_grid_2d_list_from)" + ] + }, + { + "instruction": "input_reduce_fusion.21", + "ms": 0.0025937420000000195, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:503", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:503 (FlatLambdaCDM._simpson_1d)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:644 (FlatLambdaCDM.angular_diameter_distance_kpc_z1z2)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:151 (LensingCosmology.angular_diameter_distance_between_redshifts_in_kpc_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:355 (LensingCosmology.scaling_factor_between_redshifts_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer_util.py:252 (traced_grid_2d_list_from)" + ] + }, + { + "instruction": "loop_divide_fusion.1", + "ms": 0.002407555999999992, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:380", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:380 (LensingCosmology.scaling_factor_between_redshifts_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer_util.py:252 (traced_grid_2d_list_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer.py:632 (Tracer.traced_grid_2d_list_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/structures/decorators/abstract.py:93 (AbstractMaker.evaluate_func)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/structures/decorators/abstract.py:110 (AbstractMaker.result)" + ] + } + ], + "border_relocator": [ + { + "instruction": "eigh.45", + "ms": 0.07489312200000166, + "opcode": "custom-call", + "shape": "(f64[2,2]{0,1}, f64[2]{0}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "custom-call.2", + "ms": 0.007958090000000027, + "opcode": "custom-call", + "shape": "(f64[2,2]{1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_reduce_fusion.15", + "ms": 0.005655388000000012, + "opcode": "fusion", + "shape": "(f64[], f64[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:269", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:269 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_concatenate_fusion.3", + "ms": 0.003701535999999994, + "opcode": "fusion", + "shape": "f64[15361,2]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:323", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:323 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:423 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:208 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_add_fusion.5", + "ms": 0.003518159999999994, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:423 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:208 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_select_sine_fusion", + "ms": 0.003516563999999997, + "opcode": "fusion", + "shape": "(f64[], f64[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:301", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:301 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:458 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + } + ], + "mesh_construction": [ + { + "instruction": "input_concatenate_fusion.7", + "ms": 0.0020564660000000124, + "opcode": "fusion", + "shape": "f64[1500,2]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:820", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:820 (InterpolatorDelaunay.mesh_grid_xy)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:847 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + } + ], + "mesh_qhull_callback": [ + { + "instruction": "pure_callback.4", + "ms": 0.01067238399999995, + "opcode": "custom-call", + "shape": "(s32[3000,3]{1,0}, s32[3000,3]{1,0}, s32[1500]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:161", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:161 (_jax_delaunay_tables)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:405 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + } + ], + "other": [ + { + "instruction": "copy.72", + "ms": 0.04207180200000365, + "opcode": "copy", + "shape": "f64[1,1024,2]{2,1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.35", + "ms": 0.016947231999999895, + "opcode": "copy", + "shape": "s32[21361]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.40", + "ms": 0.001985231999999996, + "opcode": "copy", + "shape": "s64[1500]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "loop_broadcast_fusion.1", + "ms": 0.0019820140000000115, + "opcode": "fusion", + "shape": "(pred[21361]{0}, pred[21361]{0})", + "source": "", + "stack": [] + }, + { + "instruction": "loop_broadcast_fusion.4", + "ms": 0.0017839420000000104, + "opcode": "fusion", + "shape": "(f64[1500]{0}, f64[1500]{0}, f64[1500]{0}, f64[1500]{0})", + "source": "", + "stack": [] + }, + { + "instruction": "copy.71", + "ms": 0.001688267999999995, + "opcode": "copy", + "shape": "s32[]", + "source": "", + "stack": [] + } + ], + "mesh_seed_argmin": [ + { + "instruction": "input_reduce_fusion", + "ms": 0.15274307000001294, + "opcode": "fusion", + "shape": "(f64[1024]{0}, s64[1024]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:191", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:191 (_nearest_vertex_seed_from..argmin_chunk)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)" + ] + }, + { + "instruction": "loop_dynamic_update_slice_fusion", + "ms": 0.041346231999997825, + "opcode": "fusion", + "shape": "s32[21,1024]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_add_fusion", + "ms": 0.0318549099999961, + "opcode": "fusion", + "shape": "s64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_broadcast_fusion", + "ms": 0.001965440000000018, + "opcode": "fusion", + "shape": "s32[21,1024]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "regularization_H": [ + { + "instruction": "loop_select_fusion.3", + "ms": 0.020039702, + "opcode": "fusion", + "shape": "f64[1500,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:549", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:549 (pixel_splitted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:137 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_scatter_fusion.10", + "ms": 0.0020833440000000048, + "opcode": "fusion", + "shape": "f64[1500,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:615", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:615 (pixel_splitted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:137 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_concatenate_fusion.9", + "ms": 0.0018603019999999843, + "opcode": "fusion", + "shape": "pred[3]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:91", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:91 (split_points_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:410 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + }, + { + "instruction": "input_concatenate_fusion.8", + "ms": 0.001853195999999986, + "opcode": "fusion", + "shape": "pred[3]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:93", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:93 (split_points_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:410 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + }, + { + "instruction": "input_concatenate_fusion", + "ms": 0.0017644219999999905, + "opcode": "fusion", + "shape": "s32[1500,2]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:615", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:615 (pixel_splitted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:137 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_concatenate_fusion.10", + "ms": 0.0016968999999999964, + "opcode": "fusion", + "shape": "pred[3]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:90", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:90 (split_points_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:410 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + } + ], + "mesh_locate_walk": [ + { + "instruction": "loop_reduce_fusion", + "ms": 0.02578724399999979, + "opcode": "fusion", + "shape": "(f64[21361]{0}, s64[21361]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:264", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:264 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:264 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)" + ] + }, + { + "instruction": "input_reduce_fusion.1", + "ms": 0.025037913999999953, + "opcode": "fusion", + "shape": "pred[196]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:288", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:288 (_walk_from_seed..cond)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)" + ] + }, + { + "instruction": "loop_or_select_fusion", + "ms": 0.023437020000000287, + "opcode": "fusion", + "shape": "(s32[21361]{0}, pred[21361]{0}, pred[21361]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:270", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:270 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)" + ] + }, + { + "instruction": "loop_select_fusion", + "ms": 0.02014813199999979, + "opcode": "fusion", + "shape": "s32[21361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:242", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:242 (_walk_from_seed..weights_of)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:262 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)" + ] + }, + { + "instruction": "input_reduce_fusion.2", + "ms": 0.01618750399999952, + "opcode": "fusion", + "shape": "pred[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:288", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:288 (_walk_from_seed..cond)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)" + ] + }, + { + "instruction": "while.22", + "ms": 0.014539700000000235, + "opcode": "while", + "shape": "(s32[], s32[21361]{0}, pred[21361]{0}, pred[21361]{0}, s32[3000,3]{1,0}, /*index=5*/f64[1500,2]{1,0}, f64[21361,2]{1,0}, s32[3000,3]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "data_vector_D": [ + { + "instruction": "input_reduce_fusion.10", + "ms": 0.121802552, + "opcode": "fusion", + "shape": "f64[92,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123 (data_vector_via_blurred_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:67 (InversionImagingMapping.data_vector)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:699 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_reduce_fusion.27", + "ms": 0.0036935299999999965, + "opcode": "fusion", + "shape": "f64[1500]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123 (data_vector_via_blurred_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:67 (InversionImagingMapping.data_vector)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:699 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "inversion_other": [ + { + "instruction": "cholesky.60", + "ms": 0.8977823380000047, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1078 (AbstractInversion.log_det_curvature_reg_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:347 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "cholesky.70", + "ms": 0.8948461680000047, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1157 (AbstractInversion.log_det_regularization_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:348 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "input_reduce_fusion.17", + "ms": 0.013029934000000005, + "opcode": "fusion", + "shape": "f64[1500]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:946", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:946 (AbstractInversion.regularization_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:346 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)", + "/mnt/ral/jnightin/autolens_profiling_wt/certified-solver-phase-c1-lane-rate/scripts/imaging/likelihood_breakdown/fixed_light_trace.py:1195 (_captured_likelihood_fn.._likelihood)" + ] + }, + { + "instruction": "loop_reduce_window_fusion", + "ms": 0.002877652000000008, + "opcode": "fusion", + "shape": "s64[6,16]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "loop_reduce_window_fusion.1", + "ms": 0.002789264000000019, + "opcode": "fusion", + "shape": "s64[94,16]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "input_reduce_fusion.25", + "ms": 0.0026711860000000003, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:944", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:944 (AbstractInversion.regularization_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:346 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)", + "/mnt/ral/jnightin/autolens_profiling_wt/certified-solver-phase-c1-lane-rate/scripts/imaging/likelihood_breakdown/fixed_light_trace.py:1195 (_captured_likelihood_fn.._likelihood)" + ] + } + ], + "curvature_matrix_F": [ + { + "instruction": "cublas-lt-matmul.2", + "ms": 4.267420474000002, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "pdip_solve": [ + { + "instruction": "cholesky.20", + "ms": 15.98784528799969, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:106", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:106 (factorize_kkt)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:212 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve", + "ms": 2.541939273999906, + "opcode": "custom-call", + "shape": "(f64[1500,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:213 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve.2", + "ms": 2.4886216699998616, + "opcode": "custom-call", + "shape": "(f64[1500,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:217 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve.3", + "ms": 2.41211809800021, + "opcode": "custom-call", + "shape": "(f64[1500,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:217 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve.1", + "ms": 2.309823310000291, + "opcode": "custom-call", + "shape": "(f64[1500,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:213 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "cholesky.40", + "ms": 0.8675693959999949, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:62", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:62 (initialize)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:72 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:508 (reconstruction_positive_only_from)" + ] + } + ], + "mapped_reconstruction": [ + { + "instruction": "input_reduce_fusion.14", + "ms": 0.11525491200000006, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163 (mapped_reconstructed_data_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:120 (InversionImagingMapping._mapped_reconstructed_data_dict_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:196 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + } + ] + }, + "stage_audit_note": "The HLO instructions that contributed most of each stage's milliseconds, with their full source stack. A stage row is only as good as the rules that built it; this is how a reader checks a row against the HLO instead of trusting it.", + "untraced_wall_ms": 50.70896519199596, + "reconciliation_vs_untraced_pct": -0.1284397852516002, + "wall_basis": "wall_ms is the TRACED run's wall, the run these kernel durations came from. untraced_wall_ms is the same executable without the profiler; the difference is the profiler's overhead and belongs in neither the stages nor the idle row.", + "calls": 500, + "call_split": "per-call (first-instruction recurrence)", + "call_blocks": 500, + "events": 476880, + "streams": [ + "Stream #14(MemcpyD2D,MemcpyD2H,Compute,MemcpyH2D,Memset)" + ], + "per_stage_ms": { + "border_relocator": { + "median_ms": 0.11462149999999999, + "min_ms": 0.113826, + "max_ms": 0.11581 + }, + "chi_squared_evidence": { + "median_ms": 0.01072, + "min_ms": 0.010304, + "max_ms": 0.011647999999999999 + }, + "curvature_matrix_F": { + "median_ms": 4.265858, + "min_ms": 4.248178, + "max_ms": 4.355059 + }, + "data_vector_D": { + "median_ms": 0.125474, + "min_ms": 0.124545, + "max_ms": 0.126818 + }, + "inversion_other": { + "median_ms": 1.8217969999999999, + "min_ms": 1.801407, + "max_ms": 1.866463 + }, + "mapped_reconstruction": { + "median_ms": 0.1152615, + "min_ms": 0.114305, + "max_ms": 0.116254 + }, + "mapping_matrix": { + "median_ms": 0.116321, + "min_ms": 0.11533, + "max_ms": 0.11778999999999999 + }, + "memset": { + "median_ms": 0.05048000000000001, + "min_ms": 0.041152000000000015, + "max_ms": 0.08899300000000002 + }, + "mesh_construction": { + "median_ms": 0.002048, + "min_ms": 0.002016, + "max_ms": 0.002081 + }, + "mesh_locate_walk": { + "median_ms": 0.15046500000000004, + "min_ms": 0.13212900000000002, + "max_ms": 0.18681700000000007 + }, + "mesh_qhull_callback": { + "median_ms": 0.010624, + "min_ms": 0.010464000000000001, + "max_ms": 0.011201000000000001 + }, + "mesh_seed_argmin": { + "median_ms": 0.2279080000000001, + "min_ms": 0.22745900000000008, + "max_ms": 0.2283550000000002 + }, + "mixed_fusion": { + "median_ms": 1.2617045, + "min_ms": 1.2538059999999995, + "max_ms": 1.2667919999999997 + }, + "other": { + "median_ms": 0.07129699999999999, + "min_ms": 0.06880099999999999, + "max_ms": 0.07574499999999999 + }, + "pdip_solve": { + "median_ms": 27.35843900000004, + "min_ms": 22.74273600000003, + "max_ms": 50.527277000000055 + }, + "psf_convolution_mapping_matrix": { + "median_ms": 7.3407265, + "min_ms": 7.324859, + "max_ms": 7.425078999999999 + }, + "ray_trace_data_grid": { + "median_ms": 0.013568, + "min_ms": 0.01344, + "max_ms": 0.014177 + }, + "regularization_H": { + "median_ms": 0.0308, + "min_ms": 0.030209, + "max_ms": 0.031648 + } + }, + "stage_order": [ + "ray_trace_data_grid", + "border_relocator", + "mesh_qhull_callback", + "mesh_seed_argmin", + "mesh_locate_walk", + "mesh_construction", + "mapping_matrix", + "psf_convolution_mapping_matrix", + "data_vector_D", + "curvature_matrix_F", + "regularization_H", + "pdip_solve", + "mapped_reconstruction", + "chi_squared_evidence", + "inversion_other", + "mixed_fusion", + "other", + "memset" + ], + "mixed_fusion": { + "ms": 1.2617045, + "constituent_stage_sets": { + "curvature_matrix_F + psf_convolution_mapping_matrix": 1.0215624380000001, + "curvature_reg_reduce_gather + inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter + regularization_H": 0.06107873599999999, + "inversion_other + regularization_H": 0.029146561999999838, + "inversion_other + mesh_construction + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin + regularization_H": 0.021710695999999963, + "inversion_other + mapping_matrix + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin": 0.02130523799999998, + "inversion_other + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + regularization_H": 0.014613888000000004, + "grids_and_structures + mass_profile_deflections + ray_trace_data_grid": 0.01433572599999999, + "inversion_other + mapping_matrix + mesh_construction + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin": 0.011650641999999996, + "grids_and_structures + mass_profile_deflections": 0.00993355599999997, + "inversion_other + mesh_dual_areas + mesh_locate_walk": 0.00935706200000015, + "inversion_other + mesh_construction + mesh_seed_argmin + regularization_H": 0.007277492000000014, + "inversion_other + mesh_construction + regularization_H": 0.006316485999999993, + "inversion_other + ray_trace_data_grid": 0.005466850000000005, + "inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": 0.004779474000000001, + "inversion_other + mapped_reconstruction": 0.003808087999999994, + "mapping_matrix + regularization_H": 0.003491351999999997, + "inversion_other + mesh_construction + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin": 0.0031836320000000044, + "inversion_other + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin": 0.003010507999999999, + "inversion_other + pdip_solve": 0.0028958200000000107, + "inversion_other + mesh_locate_walk + mesh_seed_argmin": 0.002525893999999991, + "inversion_other + mesh_interpolation_weights": 0.0021667300000000034, + "chi_squared_evidence + inversion_other": 0.0018687580000000033 + }, + "example_kernels": { + "curvature_matrix_F + psf_convolution_mapping_matrix": [ + "loop_divide_gather_fusion" + ], + "curvature_reg_reduce_gather + inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter + regularization_H": [ + "input_add_multiply_transpose_fusion" + ], + "inversion_other + regularization_H": [ + "loop_reduce_slice_fusion", + "loop_reduce_fusion.1", + "loop_reduce_fusion.2", + "input_transpose_fusion.3" + ], + "inversion_other + mesh_construction + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin + regularization_H": [ + "input_reduce_fusion.24", + "loop_select_fusion.4", + "input_scatter_fusion.2" + ], + "inversion_other + mapping_matrix + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin": [ + "input_scatter_fusion.6", + "input_scatter_fusion.3" + ], + "inversion_other + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + regularization_H": [ + "loop_abs_fusion" + ], + "grids_and_structures + mass_profile_deflections + ray_trace_data_grid": [ + "loop_subtract_fusion.2", + "loop_subtract_fusion.1" + ], + "inversion_other + mapping_matrix + mesh_construction + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin": [ + "input_scatter_fusion.4" + ], + "grids_and_structures + mass_profile_deflections": [ + "loop_divide_minimum_multiply_sine_sqrt_fusion", + "loop_slice_fusion" + ], + "inversion_other + mesh_dual_areas + mesh_locate_walk": [ + "loop_select_fusion.6", + "input_scatter_fusion.9", + "input_scatter_fusion.8", + "input_scatter_fusion.7" + ] + }, + "prorated_estimate_ms": { + "curvature_matrix_F": 0.5107812190000001, + "psf_convolution_mapping_matrix": 0.5107812190000001, + "inversion_other": 0.05460199926190473, + "regularization_H": 0.036964841599999916, + "mesh_construction": 0.01658995209523809, + "mesh_interpolation_weights": 0.013748448761904754, + "mesh_locate_walk": 0.013703291495238133, + "mapped_reconstruction": 0.013278701833333328, + "pdip_solve": 0.012822567833333336, + "mesh_seed_argmin": 0.01240364382857142, + "reconstruction_scatter": 0.011374657833333331, + "curvature_reg_reduce_gather": 0.010179789333333331, + "grids_and_structures": 0.009745353333333314, + "mass_profile_deflections": 0.009745353333333314, + "mesh_dual_areas": 0.009587155028571477, + "ray_trace_data_grid": 0.007512000333333333, + "mapping_matrix": 0.00673105509523809, + "chi_squared_evidence": 0.0009343790000000017 + }, + "prorated_note": "ESTIMATE ONLY \u2014 a mixed fusion's time split equally across the stages its constituents span. Never summed into the measured table, never reconciled." + }, + "other_sources_ms": { + "copy.72": 0.04207180200000365, + "copy.35": 0.016947231999999895, + "copy.40": 0.001985231999999996, + "loop_broadcast_fusion.1": 0.0019820140000000115, + "loop_broadcast_fusion.4": 0.0017839420000000104, + "copy.71": 0.001688267999999995, + "copy.20": 0.0016628559999999942, + "copy.52": 0.001660284000000003, + "copy.70": 0.0016019320000000008 + }, + "device_span_ms": 52.07552502, + "device_busy_ms": 44.519803313999994, + "device_idle_ms": 7.555721706000007, + "largest_idle_gaps": [ + { + "gap_ms": 5.55734, + "after": "pure_callback.4", + "before": "pure_callback.4" + }, + { + "gap_ms": 0.037248, + "after": "pure_callback.4", + "before": "copy.71" + }, + { + "gap_ms": 0.036543, + "after": "copy.35", + "before": "input_reduce_fusion.1" + }, + { + "gap_ms": 0.030688, + "after": "input_reduce_fusion.3", + "before": "input_divide_reduce_subtract_fusion" + }, + { + "gap_ms": 0.029792, + "after": "input_concatenate_fusion.7", + "before": "pure_callback.4" + }, + { + "gap_ms": 0.022719, + "after": "loop_dynamic_update_slice_fusion", + "before": "loop_add_fusion" + }, + { + "gap_ms": 0.020511, + "after": "eigh.45", + "before": "eigh.45" + }, + { + "gap_ms": 0.019007, + "after": "while.28", + "before": "input_reduce_fusion.3" + } + ], + "kernel_ms": 43.08811300000004, + "sum_ms": 50.64383470600005, + "wall_ms": 52.07778352799505, + "host_outside_span_ms": 0.002258507995051673, + "reconciliation_pct": -2.75347513825001, + "unjoined_ms": 0.0, + "unjoined_pct": 0.0, + "other_ms": 0.07129699999999999, + "other_pct": 0.1369048280667963, + "note": "Stage rows attribute the command-buffers-OFF program (see the module docstring): kernel times are the same, the launch overhead the CUDA graphs remove is not. sum_ms = kernel rows + device_idle_ms; the residual against wall_ms is host_outside_span_ms (dispatch before the first kernel, teardown after the last).", + "per_stage_ms_per_lane": { + "border_relocator": 0.11462149999999999, + "chi_squared_evidence": 0.01072, + "curvature_matrix_F": 4.265858, + "data_vector_D": 0.125474, + "inversion_other": 1.8217969999999999, + "mapped_reconstruction": 0.1152615, + "mapping_matrix": 0.116321, + "memset": 0.05048000000000001, + "mesh_construction": 0.002048, + "mesh_locate_walk": 0.15046500000000004, + "mesh_qhull_callback": 0.010624, + "mesh_seed_argmin": 0.2279080000000001, + "mixed_fusion": 1.2617045, + "other": 0.07129699999999999, + "pdip_solve": 27.35843900000004, + "psf_convolution_mapping_matrix": 7.3407265, + "ray_trace_data_grid": 0.013568, + "regularization_H": 0.0308 + }, + "per_lane_divisor": 1, + "host_callback": { + "pure_callback_span_ms": 253.44177359999998, + "qhull_ms": 236.43602019999994, + "callback_body_ms_note": "the OUTERMOST matching body event, not a sum: under the probe the body appears twice (the wrapper and the timed re-implementation it calls) and summing them would count the same work twice", + "events_by_name": { + "pure_callback.4": { + "count": 500, + "ms": 253.44177359999998 + }, + "$callback.py:815 _wrapped_callback": { + "count": 500, + "ms": 249.06968640000014 + }, + "$callback.py:224 _callback": { + "count": 500, + "ms": 247.85900320000007 + }, + "$callback.py:74 pure_callback_impl": { + "count": 500, + "ms": 247.4164497000002 + }, + "$callback.py:69 __call__": { + "count": 500, + "ms": 237.21032869999976 + }, + "$delaunay.py:162 ": { + "count": 500, + "ms": 236.87959399999988 + }, + "$host_callback_probe.py:225 wrapped": { + "count": 500, + "ms": 236.43602019999994 + }, + "$host_callback_probe.py:160 _timed_tri_only": { + "count": 500, + "ms": 236.01510070000003 + }, + "ThenExecuteCallback:GetEventForComputeStreamSyncPoint": { + "count": 500, + "ms": 0.9465159999999991 + }, + "$callback.py:822 ": { + "count": 2000, + "ms": 0.7363693000000004 + }, + "$__init__.py:132 _xla_gc_callback": { + "count": 8, + "ms": 0.0014190000000000001 + } + }, + "note": "HOST milliseconds per traced BATCH (the whole invocation), aggregated by name because the events nest. Not a row of the device table: the device pays for them as the idle gaps largest_idle_gaps names." + }, + "host_callback_ms": 253.44177359999998 + }, + "hlo_census": { + "status": "excluded", + "reason": "The legacy census anchors PyAutoArray source line numbers that moved after the phase-1 run. No batched attribution is published from unsupported anchors; the device-event table and wall reconciliation remain valid." + }, + "stage_map_provenance": [ + { + "label": "log_det_curvature_reg", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 850, + 882 + ], + "requires": { + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 884, + 896 + ] + }, + "function": null + }, + { + "label": "log_det_regularization", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 850, + 882 + ], + "requires": { + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 897, + 943 + ] + }, + "function": null + }, + { + "label": "curvature_reg_add", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 359, + 372 + ], + "requires": null, + "function": null + }, + { + "label": "curvature_reg_reduce_gather", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 374, + 398 + ], + "requires": null, + "function": null + }, + { + "label": "edge_subset_gather", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 606, + 614 + ], + "requires": null, + "function": null + }, + { + "label": "regularization_term", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 786, + 849 + ], + "requires": null, + "function": null + }, + { + "label": "mapped_reconstruction", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 722, + 785 + ], + "requires": null, + "function": null + }, + { + "label": "reconstruction_scatter", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 583, + 605 + ], + "requires": null, + "function": null + }, + { + "label": "reconstruction_scatter", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 615, + 721 + ], + "requires": null, + "function": null + }, + { + "label": "certified_active_set_solve", + "path": "likelihood_breakdown/active_set_steps.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "certified_active_set_solve", + "path": "likelihood_breakdown/library_solver_injection.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "pdip_solve", + "path": "PyAutoArray/autoarray/util/jax_nnls.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "pdip_solve", + "path": "PyAutoArray/autoarray/inversion/inversion/inversion_util.py", + "lines": [ + 256, + 488 + ], + "requires": null, + "function": null + }, + { + "label": "mapped_reconstruction", + "path": "PyAutoArray/autoarray/inversion/inversion/inversion_util.py", + "lines": [ + 156, + 200 + ], + "requires": null, + "function": null + }, + { + "label": "curvature_matrix_F", + "path": "PyAutoArray/autoarray/inversion/inversion/inversion_util.py", + "lines": [ + 12, + 155 + ], + "requires": null, + "function": null + }, + { + "label": "reconstruction_scatter", + "path": "PyAutoArray/autoarray/inversion/inversion/inversion_util.py", + "lines": [ + 201, + 255 + ], + "requires": null, + "function": null + }, + { + "label": "data_vector_D", + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py", + "lines": [ + 54, + 73 + ], + "requires": null, + "function": null + }, + { + "label": "curvature_matrix_F", + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py", + "lines": [ + 74, + 110 + ], + "requires": null, + "function": null + }, + { + "label": "data_vector_D", + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py", + "lines": null, + "requires": null, + "function": "data_vector_via_blurred_mapping_matrix_from" + }, + { + "label": "curvature_matrix_F", + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "likelihood_breakdown/psf_cube_injection.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": [ + 1086, + 1300 + ], + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": [ + 632, + 642 + ], + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": [ + 670, + 691 + ], + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": null, + "requires": { + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": [ + 1086, + 1300 + ] + }, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": null, + "requires": { + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py", + "lines": [ + 119, + 150 + ] + }, + "function": null + }, + { + "label": "psf_convolution_image", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py", + "lines": [ + 119, + 150 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_qhull_callback", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 139, + 172 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_seed_argmin", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 173, + 207 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_locate_walk", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 208, + 372 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_dual_areas", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 373, + 396 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_dual_areas", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 437, + 494 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_dual_areas", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 605, + 615 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_interpolation_weights", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 616, + 695 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_interpolation_weights", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 896, + 1000 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_construction", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "border_relocator", + "path": "PyAutoArray/autoarray/inversion/mesh/border_relocator.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "mesh_construction", + "path": "PyAutoArray/autoarray/inversion/mesh/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "mapping_matrix", + "path": "PyAutoArray/autoarray/inversion/mappers/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "mapping_matrix", + "path": "PyAutoArray/autoarray/inversion/mappings/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "mapping_matrix", + "path": "PyAutoArray/autoarray/inversion/linear_obj/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "regularization_H", + "path": "PyAutoArray/autoarray/inversion/regularization/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "chi_squared_evidence", + "path": "PyAutoArray/autoarray/fit/fit_util.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "chi_squared_evidence", + "path": "PyAutoArray/autoarray/fit/fit_dataset.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "ray_trace_mesh_grid", + "path": "PyAutoLens/autolens/lens/to_inversion.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "ray_trace_mesh_grid", + "path": "PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "mass_profile_deflections", + "path": "PyAutoGalaxy/autogalaxy/profiles/mass/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "light_profile_image", + "path": "PyAutoGalaxy/autogalaxy/profiles/light/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "light_profile_image", + "path": "PyAutoGalaxy/autogalaxy/operate/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "ray_trace_data_grid", + "path": "PyAutoLens/autolens/lens/tracer.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "ray_trace_data_grid", + "path": "PyAutoLens/autolens/lens/tracer_util.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "grids_and_structures", + "path": "PyAutoArray/autoarray/structures/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "grids_and_structures", + "path": "PyAutoArray/autoarray/operators/over_sampling/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "grids_and_structures", + "path": "PyAutoArray/autoarray/geometry/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "inversion_other", + "path": "PyAutoArray/autoarray/inversion/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "fit_imaging_other", + "path": "PyAutoLens/autolens/imaging/fit_imaging.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "fit_imaging_other", + "path": "PyAutoGalaxy/autogalaxy/imaging/fit_imaging.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "fit_imaging_other", + "path": "PyAutoArray/autoarray/fit/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "analysis_other", + "path": "PyAutoLens/autolens/analysis/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "analysis_other", + "path": "PyAutoGalaxy/autogalaxy/analysis/", + "lines": null, + "requires": null, + "function": null + } + ], + "trace_timing": { + "traced_wall_ms": 52.07778352799505, + "untraced_wall_ms": 50.70896519199596, + "profiler_overhead_ms": 1.3688183359990944, + "profiler_overhead_pct": 2.6993616036462766 + }, + "jit_phases": { + "b_s3_pdip_library_likelihood_jit": { + "lower_s": 1.5246863440006564, + "compile_s": 4.384332739999081, + "first_call_s": 0.12422982099815272, + "steady_per_call_s": 0.05100313639995875 + }, + "d_s3_certified_fallback_library_likelihood_jit": { + "lower_s": 0.4940918300017074, + "compile_s": 4.264264093999373, + "first_call_s": 0.05011921400000574, + "steady_per_call_s": 0.03169604540016735 + } + }, + "peak_bytes": { + "after_setup": 85108992, + "after_routes": 1181653248, + "after_all": 58806084096, + "note": "jax.devices()[0].memory_stats()['peak_bytes_in_use']; None on a backend that does not report it (CPU). Process-wide high-water marks." + }, + "note": "Every stage row is a MEASURED sum of GPU kernel durations joined to library source through the optimized HLO of ONE program \u2014 not arithmetic across compilations. The rows attribute the command-buffers-OFF program: kernel time is the same as production, the launch overhead the CUDA graphs remove is not, and command_buffers.* carries both walls and their delta. sum_ms = kernel rows + measured device_idle_ms; the residual against the wall is host_outside_span_ms and is reported, not absorbed. mixed_fusion.prorated_estimate_ms is an ESTIMATE and is never part of the table. No row may be quoted if reconciliation_pct is outside 5 % or unjoined_ms is non-zero.", + "vmap": { + "batch": 50, + "lanes_mode": "captured", + "arms": [ + "vmap", + "scalar" + ], + "draw_seed": 0, + "fallback": true, + "composition": "jax.jit(jax.vmap(fn))", + "composition_provenance": "Current Fitness._vmap after PyAutoFit#1638. Array 343376 used the retired jax.vmap(jax.jit(fn)) composition and is historical evidence only.", + "headline_arm": "scalar", + "lane_rtol": 1e-09, + "lanes": [ + { + "lane": 0, + "draw_name": "call00015_lane00", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.0033655095107821688, + "centre_1": 0.004631951955766499, + "ell_comps_0": 0.000564301988937442, + "ell_comps_1": -0.00879076787683888, + "einstein_radius": 0.018337010967920175 + }, + "log_likelihood_vmap": 18700.594048999716, + "log_likelihood_scalar": 24758.506194309142, + "log_likelihood_library_pdip": 18700.59404900047, + "log_likelihood_library_pdip_scalar": 24758.506194309157, + "rel_diff_vmap_vs_library_pdip": 4.02693952445984e-14, + "rel_diff_scalar_vs_library_pdip_scalar": 5.877541687758072e-16, + "abs_diff_nats": 6057.912145309427, + "rel_diff": 0.24468003431894716, + "rel_diff_scalar_vs_library_pdip": 0.3239422303609903, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6057.912145308688, + "rel_diff_library_pdip_vmap_vs_scalar": 0.2446800343189172, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 1, + "draw_name": "call00015_lane01", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.004311760382151672, + "centre_1": 0.0027192789928108052, + "ell_comps_0": 0.0061667694809026535, + "ell_comps_1": 0.003465536775180321, + "einstein_radius": -0.05732579988501185 + }, + "log_likelihood_vmap": 14200.214307612092, + "log_likelihood_scalar": 20551.004887772862, + "log_likelihood_library_pdip": 14200.214307378097, + "log_likelihood_library_pdip_scalar": 20551.004887772713, + "rel_diff_vmap_vs_library_pdip": 1.647825813097488e-11, + "rel_diff_scalar_vs_library_pdip_scalar": 7.257899645554785e-15, + "abs_diff_nats": 6350.79058016077, + "rel_diff": 0.3090257928914839, + "rel_diff_scalar_vs_library_pdip": 0.4472320236107313, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6350.790580394616, + "rel_diff_library_pdip_vmap_vs_scalar": 0.30902579290286497, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 2, + "draw_name": "call00015_lane02", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.0002796502552123051, + "centre_1": 0.0016003321376979894, + "ell_comps_0": -0.002094430657472772, + "ell_comps_1": 0.006146479068253558, + "einstein_radius": -0.025968910196758177 + }, + "log_likelihood_vmap": -23119.316937414085, + "log_likelihood_scalar": -189709.04191844532, + "log_likelihood_library_pdip": -23119.464418166448, + "log_likelihood_library_pdip_scalar": -189709.04904877947, + "rel_diff_vmap_vs_library_pdip": 6.379073048373394e-06, + "rel_diff_scalar_vs_library_pdip_scalar": 3.758563015061023e-08, + "abs_diff_nats": 166589.72498103124, + "rel_diff": 0.8781327621307954, + "rel_diff_scalar_vs_library_pdip": 7.20559847266093, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 166589.58463061304, + "rel_diff_library_pdip_vmap_vs_scalar": 0.8781319893063099, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 3, + "draw_name": "call00015_lane03", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.004594602299816973, + "centre_1": 0.004924922434755804, + "ell_comps_0": 0.028601845732661953, + "ell_comps_1": 0.003760187047606014, + "einstein_radius": -0.03088526730480501 + }, + "log_likelihood_vmap": 18502.01091225886, + "log_likelihood_scalar": -141741.9662350511, + "log_likelihood_library_pdip": 18502.009653967685, + "log_likelihood_library_pdip_scalar": -141741.96606594877, + "rel_diff_vmap_vs_library_pdip": 6.80083513454663e-08, + "rel_diff_scalar_vs_library_pdip_scalar": 1.193029418471919e-09, + "abs_diff_nats": 160243.97714730995, + "rel_diff": 1.1305330482122486, + "rel_diff_scalar_vs_library_pdip": 8.66089570192474, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 160243.97571991646, + "rel_diff_library_pdip_vmap_vs_scalar": 1.1305330394906417, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 4, + "draw_name": "call00015_lane04", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.0060950290987001, + "centre_1": -0.0006121094560707545, + "ell_comps_0": 0.009637314264800585, + "ell_comps_1": 0.006641580028105454, + "einstein_radius": -0.03125810931551931 + }, + "log_likelihood_vmap": 18751.91028804238, + "log_likelihood_scalar": 24880.54593298872, + "log_likelihood_library_pdip": 18751.910288041527, + "log_likelihood_library_pdip_scalar": 24880.545932988745, + "rel_diff_vmap_vs_library_pdip": 4.559135610902296e-14, + "rel_diff_scalar_vs_library_pdip_scalar": 1.023524633190512e-15, + "abs_diff_nats": 6128.635644946338, + "rel_diff": 0.2463223942695115, + "rel_diff_scalar_vs_library_pdip": 0.32682726990516525, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6128.635644947219, + "rel_diff_library_pdip_vmap_vs_scalar": 0.24632239426954664, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 5, + "draw_name": "call00015_lane05", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.008435952123169364, + "centre_1": -0.007849511137408794, + "ell_comps_0": -0.01598149485178925, + "ell_comps_1": 0.01654417876136871, + "einstein_radius": 0.014294380855379263 + }, + "log_likelihood_vmap": 24935.952740676803, + "log_likelihood_scalar": 25472.519186791807, + "log_likelihood_library_pdip": 24935.95274067806, + "log_likelihood_library_pdip_scalar": 25472.51918678188, + "rel_diff_vmap_vs_library_pdip": 5.047894822163129e-14, + "rel_diff_scalar_vs_library_pdip_scalar": 3.8975509613925874e-13, + "abs_diff_nats": 536.5664461150045, + "rel_diff": 0.02106452220843664, + "rel_diff_scalar_vs_library_pdip": 0.021517784048348955, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 536.5664461038177, + "rel_diff_library_pdip_vmap_vs_scalar": 0.02106452220800568, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 6, + "draw_name": "call00015_lane06", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.0031698313356290646, + "centre_1": -0.0038584140676992847, + "ell_comps_0": 0.01810147576636289, + "ell_comps_1": -0.011577480306416508, + "einstein_radius": 0.016136835525067283 + }, + "log_likelihood_vmap": 28315.20147858392, + "log_likelihood_scalar": -83383.91554954817, + "log_likelihood_library_pdip": 28315.20140299416, + "log_likelihood_library_pdip_scalar": -83383.91545974431, + "rel_diff_vmap_vs_library_pdip": 2.6695822808702375e-09, + "rel_diff_scalar_vs_library_pdip_scalar": 1.0769925543059859e-09, + "abs_diff_nats": 111699.11702813208, + "rel_diff": 1.3395762994813853, + "rel_diff_scalar_vs_library_pdip": 3.944846281076808, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 111699.11686273848, + "rel_diff_library_pdip_vmap_vs_scalar": 1.3395762989405797, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 7, + "draw_name": "call00015_lane07", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.006158729760195174, + "centre_1": 0.004883559265258847, + "ell_comps_0": 0.007613883677130215, + "ell_comps_1": -0.005800175617006949, + "einstein_radius": 0.0662922007765554 + }, + "log_likelihood_vmap": 23338.89001450443, + "log_likelihood_scalar": -11960.2844297919, + "log_likelihood_library_pdip": 23338.89001397335, + "log_likelihood_library_pdip_scalar": -11960.284429868196, + "rel_diff_vmap_vs_library_pdip": 2.2755283557945645e-11, + "rel_diff_scalar_vs_library_pdip_scalar": 6.379086717352273e-12, + "abs_diff_nats": 35299.17444429633, + "rel_diff": 2.9513658016668516, + "rel_diff_scalar_vs_library_pdip": 1.512461579048151, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 35299.17444384155, + "rel_diff_library_pdip_vmap_vs_scalar": 2.9513658016099997, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 8, + "draw_name": "call00015_lane08", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.0030335293924908615, + "centre_1": 0.0012117081273721316, + "ell_comps_0": 0.0008852687687036301, + "ell_comps_1": -0.0027113633212058814, + "einstein_radius": -0.03873713959923952 + }, + "log_likelihood_vmap": 24869.037000615295, + "log_likelihood_scalar": 23223.55039149886, + "log_likelihood_library_pdip": 24869.037000609445, + "log_likelihood_library_pdip_scalar": 23223.550391489476, + "rel_diff_vmap_vs_library_pdip": 2.352270384116649e-13, + "rel_diff_scalar_vs_library_pdip_scalar": 4.040014203395787e-13, + "abs_diff_nats": 1645.4866091164367, + "rel_diff": 0.07085422260494582, + "rel_diff_scalar_vs_library_pdip": 0.066166076678814, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 1645.4866091199692, + "rel_diff_library_pdip_vmap_vs_scalar": 0.07085422260512655, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 9, + "draw_name": "call00015_lane09", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.0008035510098975272, + "centre_1": 0.005559773241319952, + "ell_comps_0": -0.003701655436278317, + "ell_comps_1": -0.012378591445614512, + "einstein_radius": 0.032284336889985665 + }, + "log_likelihood_vmap": -31749.968535649372, + "log_likelihood_scalar": -177117.77789004147, + "log_likelihood_library_pdip": -31749.305307205344, + "log_likelihood_library_pdip_scalar": -177117.69794166007, + "rel_diff_vmap_vs_library_pdip": 2.08895419162751e-05, + "rel_diff_scalar_vs_library_pdip_scalar": 4.5138561721102667e-07, + "abs_diff_nats": 145367.8093543921, + "rel_diff": 0.8207409277946089, + "rel_diff_scalar_vs_library_pdip": 4.5786347504695, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 145368.3926344547, + "rel_diff_library_pdip_vmap_vs_scalar": 0.8207445914430126, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 10, + "draw_name": "call00015_lane10", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.008473569241265282, + "centre_1": -0.0051993251621340235, + "ell_comps_0": -0.0031466996514049606, + "ell_comps_1": -0.0076036423480284636, + "einstein_radius": 0.08283321334626792 + }, + "log_likelihood_vmap": 6560.779511565073, + "log_likelihood_scalar": -101745.38335529093, + "log_likelihood_library_pdip": 6560.779593603307, + "log_likelihood_library_pdip_scalar": -101745.3835211835, + "rel_diff_vmap_vs_library_pdip": 1.2504342303062657e-08, + "rel_diff_scalar_vs_library_pdip_scalar": 1.6304676974813754e-09, + "abs_diff_nats": 108306.162866856, + "rel_diff": 1.0644823312390999, + "rel_diff_scalar_vs_library_pdip": 16.50812398186515, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 108306.1631147868, + "rel_diff_library_pdip_vmap_vs_scalar": 1.0644823319402728, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 11, + "draw_name": "call00015_lane11", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.001017060353322001, + "centre_1": 0.003035861051809724, + "ell_comps_0": 0.0014054844842678396, + "ell_comps_1": -0.00019678252877009805, + "einstein_radius": -0.04179610309843307 + }, + "log_likelihood_vmap": 12667.92492649478, + "log_likelihood_scalar": 18957.528349732384, + "log_likelihood_library_pdip": 12667.924906617816, + "log_likelihood_library_pdip_scalar": 18957.528349744887, + "rel_diff_vmap_vs_library_pdip": 1.5690780611683128e-09, + "rel_diff_scalar_vs_library_pdip_scalar": 6.59565578871598e-13, + "abs_diff_nats": 6289.603423237604, + "rel_diff": 0.33177338876702206, + "rel_diff_scalar_vs_library_pdip": 0.4964983207177706, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6289.603443127071, + "rel_diff_library_pdip_vmap_vs_scalar": 0.3317733898159625, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 12, + "draw_name": "call00015_lane12", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.0012508260776529923, + "centre_1": -0.0075763258203543175, + "ell_comps_0": -0.0003476568325791879, + "ell_comps_1": 0.0070528223693464365, + "einstein_radius": -0.005182936058341969 + }, + "log_likelihood_vmap": 18842.27979675187, + "log_likelihood_scalar": 24810.0496601949, + "log_likelihood_library_pdip": 18842.27979674931, + "log_likelihood_library_pdip_scalar": 24810.04966019489, + "rel_diff_vmap_vs_library_pdip": 1.359250105517707e-13, + "rel_diff_scalar_vs_library_pdip_scalar": 4.3989982167530276e-16, + "abs_diff_nats": 5967.769863443031, + "rel_diff": 0.24053840863598455, + "rel_diff_scalar_vs_library_pdip": 0.3167222824318296, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 5967.769863445581, + "rel_diff_library_pdip_vmap_vs_scalar": 0.24053840863608744, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 13, + "draw_name": "call00015_lane13", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.0039046265841316857, + "centre_1": 0.008586063066835778, + "ell_comps_0": 0.01612319103606081, + "ell_comps_1": -0.006478405394829051, + "einstein_radius": -0.06420305523683667 + }, + "log_likelihood_vmap": 22879.755989109253, + "log_likelihood_scalar": -3605.706215942817, + "log_likelihood_library_pdip": 22879.75598922863, + "log_likelihood_library_pdip_scalar": -3605.7062159744455, + "rel_diff_vmap_vs_library_pdip": 5.21756598418741e-12, + "rel_diff_scalar_vs_library_pdip_scalar": 8.771814966158493e-12, + "abs_diff_nats": 26485.46220505207, + "rel_diff": 7.3454298877554765, + "rel_diff_scalar_vs_library_pdip": 1.157593735599292, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 26485.462205203075, + "rel_diff_library_pdip_vmap_vs_scalar": 7.345429887732924, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 14, + "draw_name": "call00015_lane14", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.007195835212073937, + "centre_1": -0.0022675171274400335, + "ell_comps_0": 0.004220685262914858, + "ell_comps_1": 0.006581974817750368, + "einstein_radius": 0.08589577997501685 + }, + "log_likelihood_vmap": 4357.02195028017, + "log_likelihood_scalar": 11126.921475785763, + "log_likelihood_library_pdip": 4357.021950280177, + "log_likelihood_library_pdip_scalar": 11126.921475785763, + "rel_diff_vmap_vs_library_pdip": 1.6699382507622086e-15, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 6769.8995255055925, + "rel_diff": 0.6084252090965273, + "rel_diff_scalar_vs_library_pdip": 1.5537905483974548, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6769.899525505585, + "rel_diff_library_pdip_vmap_vs_scalar": 0.6084252090965266, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 15, + "draw_name": "call00015_lane15", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.0024446743118905125, + "centre_1": 0.0028324231769206983, + "ell_comps_0": -0.017159158004659933, + "ell_comps_1": 0.008265799441903459, + "einstein_radius": -0.03860302877433641 + }, + "log_likelihood_vmap": 14146.464614247743, + "log_likelihood_scalar": 20410.343973720603, + "log_likelihood_library_pdip": 14146.464613876353, + "log_likelihood_library_pdip_scalar": 20410.343973722156, + "rel_diff_vmap_vs_library_pdip": 2.6253226697734263e-11, + "rel_diff_scalar_vs_library_pdip_scalar": 7.610929794363826e-14, + "abs_diff_nats": 6263.8793594728595, + "rel_diff": 0.3068972951919838, + "rel_diff_scalar_vs_library_pdip": 0.44278761731747257, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6263.879359845803, + "rel_diff_library_pdip_vmap_vs_scalar": 0.30689729521023273, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 16, + "draw_name": "call00015_lane16", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.00546338030193603, + "centre_1": 0.0029217319844296002, + "ell_comps_0": 0.018887239108742314, + "ell_comps_1": 0.01610145140759906, + "einstein_radius": 0.09308737119031596 + }, + "log_likelihood_vmap": 2903.043598923672, + "log_likelihood_scalar": 9734.862241679926, + "log_likelihood_library_pdip": 2903.043598923672, + "log_likelihood_library_pdip_scalar": 9734.86224168224, + "rel_diff_vmap_vs_library_pdip": 0.0, + "rel_diff_scalar_vs_library_pdip_scalar": 2.3767717137315127e-13, + "abs_diff_nats": 6831.818642756254, + "rel_diff": 0.7017889388825393, + "rel_diff_scalar_vs_library_pdip": 2.353329672792103, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6831.818642758568, + "rel_diff_library_pdip_vmap_vs_scalar": 0.7017889388826103, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 17, + "draw_name": "call00015_lane17", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.0033403521024317102, + "centre_1": -0.004078467297591464, + "ell_comps_0": -0.01076606265657356, + "ell_comps_1": 0.014404445881011321, + "einstein_radius": -0.016103243806114165 + }, + "log_likelihood_vmap": 13360.530937095456, + "log_likelihood_scalar": 19481.557217641563, + "log_likelihood_library_pdip": 13360.530937095456, + "log_likelihood_library_pdip_scalar": 19481.557217641563, + "rel_diff_vmap_vs_library_pdip": 0.0, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 6121.026280546106, + "rel_diff": 0.3141959450245178, + "rel_diff_scalar_vs_library_pdip": 0.4581424427940287, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6121.026280546106, + "rel_diff_library_pdip_vmap_vs_scalar": 0.3141959450245178, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 18, + "draw_name": "call00015_lane18", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.0036504937209151113, + "centre_1": -0.0003963555596475738, + "ell_comps_0": -0.008227000946306733, + "ell_comps_1": -0.02487475830854786, + "einstein_radius": -0.0327871904693704 + }, + "log_likelihood_vmap": 12594.119293045376, + "log_likelihood_scalar": 18812.946857997056, + "log_likelihood_library_pdip": 12594.119293045376, + "log_likelihood_library_pdip_scalar": 18812.946857997056, + "rel_diff_vmap_vs_library_pdip": 0.0, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 6218.82756495168, + "rel_diff": 0.3305610552080077, + "rel_diff_scalar_vs_library_pdip": 0.49378820545123714, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6218.82756495168, + "rel_diff_library_pdip_vmap_vs_scalar": 0.3305610552080077, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 19, + "draw_name": "call00015_lane19", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.00840275144875603, + "centre_1": -0.003628185056462521, + "ell_comps_0": 0.005265994929748281, + "ell_comps_1": 0.009958068668923414, + "einstein_radius": -0.06501253116347949 + }, + "log_likelihood_vmap": 10415.233658037694, + "log_likelihood_scalar": 16927.632549569014, + "log_likelihood_library_pdip": 10415.23365811746, + "log_likelihood_library_pdip_scalar": 16927.63254956904, + "rel_diff_vmap_vs_library_pdip": 7.658620626540083e-12, + "rel_diff_scalar_vs_library_pdip_scalar": 1.5043953473748062e-15, + "abs_diff_nats": 6512.39889153132, + "rel_diff": 0.3847200057338868, + "rel_diff_scalar_vs_library_pdip": 0.6252763121042318, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6512.398891451579, + "rel_diff_library_pdip_vmap_vs_scalar": 0.38472000572917553, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 20, + "draw_name": "call00016_lane00", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.00884193513479277, + "centre_1": -0.0043653741820675615, + "ell_comps_0": 0.013534779280882363, + "ell_comps_1": -0.002720977381459688, + "einstein_radius": 0.03143265344345525 + }, + "log_likelihood_vmap": 23125.781207506523, + "log_likelihood_scalar": 27642.80600594327, + "log_likelihood_library_pdip": 23125.78120750677, + "log_likelihood_library_pdip_scalar": 27642.806005943028, + "rel_diff_vmap_vs_library_pdip": 1.0697262793523905e-14, + "rel_diff_scalar_vs_library_pdip_scalar": 8.686042987692048e-15, + "abs_diff_nats": 4517.024798436745, + "rel_diff": 0.1634068841443077, + "rel_diff_scalar_vs_library_pdip": 0.195324203662804, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 4517.024798436258, + "rel_diff_library_pdip_vmap_vs_scalar": 0.1634068841442915, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 21, + "draw_name": "call00016_lane01", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.004620853605949627, + "centre_1": -0.006101969080571725, + "ell_comps_0": 0.006298490627944492, + "ell_comps_1": -0.0011939165979551265, + "einstein_radius": -0.008698400624736369 + }, + "log_likelihood_vmap": 25204.959753670475, + "log_likelihood_scalar": 27788.396151208093, + "log_likelihood_library_pdip": 25204.959753667667, + "log_likelihood_library_pdip_scalar": 27788.39615112006, + "rel_diff_vmap_vs_library_pdip": 1.1142726140104725e-13, + "rel_diff_scalar_vs_library_pdip_scalar": 3.1679342231651965e-12, + "abs_diff_nats": 2583.436397537618, + "rel_diff": 0.09296817216366422, + "rel_diff_scalar_vs_library_pdip": 0.10249714432352948, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 2583.436397452395, + "rel_diff_library_pdip_vmap_vs_scalar": 0.09296817216089187, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 22, + "draw_name": "call00016_lane02", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.0023954075319476313, + "centre_1": 0.005058697427718103, + "ell_comps_0": -0.012832403546307256, + "ell_comps_1": 0.008158705801962226, + "einstein_radius": -0.04064267210128203 + }, + "log_likelihood_vmap": 11553.07472359277, + "log_likelihood_scalar": 17852.91967933103, + "log_likelihood_library_pdip": 11553.07472359277, + "log_likelihood_library_pdip_scalar": 17852.91967933103, + "rel_diff_vmap_vs_library_pdip": 0.0, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 6299.844955738259, + "rel_diff": 0.3528747716840858, + "rel_diff_scalar_vs_library_pdip": 0.5452959585618551, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6299.844955738259, + "rel_diff_library_pdip_vmap_vs_scalar": 0.3528747716840858, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 23, + "draw_name": "call00016_lane03", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.0034553415111254126, + "centre_1": -0.0012095214967760579, + "ell_comps_0": -0.013572031583894487, + "ell_comps_1": 0.012809349042796288, + "einstein_radius": 0.016462197503162912 + }, + "log_likelihood_vmap": 21983.899534877724, + "log_likelihood_scalar": 27386.085836286504, + "log_likelihood_library_pdip": 21983.899534877615, + "log_likelihood_library_pdip_scalar": 27386.08583628653, + "rel_diff_vmap_vs_library_pdip": 4.9645134176309806e-15, + "rel_diff_scalar_vs_library_pdip_scalar": 9.298828537190872e-16, + "abs_diff_nats": 5402.186301408779, + "rel_diff": 0.19726025594540766, + "rel_diff_scalar_vs_library_pdip": 0.2457337604203604, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 5402.186301408914, + "rel_diff_library_pdip_vmap_vs_scalar": 0.19726025594541238, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 24, + "draw_name": "call00016_lane04", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.002118045409654518, + "centre_1": -0.002760233148797609, + "ell_comps_0": 0.017300773468951293, + "ell_comps_1": 0.0015174503365170395, + "einstein_radius": -0.009907496303277252 + }, + "log_likelihood_vmap": 23449.28672850131, + "log_likelihood_scalar": 28384.90598332632, + "log_likelihood_library_pdip": 23449.286728501065, + "log_likelihood_library_pdip_scalar": 28384.905983326335, + "rel_diff_vmap_vs_library_pdip": 1.0394541330713026e-14, + "rel_diff_scalar_vs_library_pdip_scalar": 5.126638515877007e-16, + "abs_diff_nats": 4935.619254825011, + "rel_diff": 0.17388182499967628, + "rel_diff_scalar_vs_library_pdip": 0.21048057077259985, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 4935.619254825269, + "rel_diff_library_pdip_vmap_vs_scalar": 0.17388182499968527, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 25, + "draw_name": "call00016_lane05", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.004055224824141611, + "centre_1": 0.008121383491444374, + "ell_comps_0": -0.002675674189352585, + "ell_comps_1": 0.022116535787456582, + "einstein_radius": 0.03951210569146424 + }, + "log_likelihood_vmap": -136892.6666871641, + "log_likelihood_scalar": -189785.11040523922, + "log_likelihood_library_pdip": -136892.82101562357, + "log_likelihood_library_pdip_scalar": -189785.06952934078, + "rel_diff_vmap_vs_library_pdip": 1.1273670768223002e-06, + "rel_diff_scalar_vs_library_pdip_scalar": 2.1537994818386058e-07, + "abs_diff_nats": 52892.44371807511, + "rel_diff": 0.2786964878600664, + "rel_diff_scalar_vs_library_pdip": 0.3863773790122935, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 52892.248513717204, + "rel_diff_library_pdip_vmap_vs_scalar": 0.2786955193308295, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 26, + "draw_name": "call00016_lane06", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.008657008236802587, + "centre_1": 0.00296353203184632, + "ell_comps_0": 0.001140204699970393, + "ell_comps_1": 0.0024587369167136715, + "einstein_radius": -0.02214717629190477 + }, + "log_likelihood_vmap": 20216.485753679586, + "log_likelihood_scalar": -186990.07885292446, + "log_likelihood_library_pdip": 20216.492407061978, + "log_likelihood_library_pdip_scalar": -186990.08329202014, + "rel_diff_vmap_vs_library_pdip": 3.291066648948336e-07, + "rel_diff_scalar_vs_library_pdip_scalar": 2.373973847878948e-08, + "abs_diff_nats": 207206.56460660405, + "rel_diff": 1.1081152854616458, + "rel_diff_scalar_vs_library_pdip": 10.249382884421905, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 207206.5756990821, + "rel_diff_library_pdip_vmap_vs_scalar": 1.1081153184764891, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 27, + "draw_name": "call00016_lane07", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.008477184803652458, + "centre_1": 0.003915910494663854, + "ell_comps_0": -0.009104458058464132, + "ell_comps_1": 0.0040545395575112865, + "einstein_radius": -0.027672851325696968 + }, + "log_likelihood_vmap": 23997.43715335727, + "log_likelihood_scalar": 27662.094569019268, + "log_likelihood_library_pdip": 23997.437153354946, + "log_likelihood_library_pdip_scalar": 27662.09456901923, + "rel_diff_vmap_vs_library_pdip": 9.687153019198994e-14, + "rel_diff_scalar_vs_library_pdip_scalar": 1.3151494359961256e-15, + "abs_diff_nats": 3664.657415661997, + "rel_diff": 0.1324793900374524, + "rel_diff_scalar_vs_library_pdip": 0.15271036620475062, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 3664.6574156642855, + "rel_diff_library_pdip_vmap_vs_scalar": 0.13247939003753528, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 28, + "draw_name": "call00016_lane08", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.0016692556339188685, + "centre_1": -0.0020136329026704475, + "ell_comps_0": -0.01765507329375373, + "ell_comps_1": 0.007611548713690083, + "einstein_radius": 0.032934930918189 + }, + "log_likelihood_vmap": 15428.355976304025, + "log_likelihood_scalar": -74102.36862721092, + "log_likelihood_library_pdip": 15428.36951848779, + "log_likelihood_library_pdip_scalar": -74102.36796310006, + "rel_diff_vmap_vs_library_pdip": 8.777456198202808e-07, + "rel_diff_scalar_vs_library_pdip_scalar": 8.96207342969017e-09, + "abs_diff_nats": 89530.72460351494, + "rel_diff": 1.2082032769278932, + "rel_diff_scalar_vs_library_pdip": 5.802994155566093, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 89530.73748158784, + "rel_diff_library_pdip_vmap_vs_scalar": 1.2082034615435027, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 29, + "draw_name": "call00016_lane09", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.0004381888692729163, + "centre_1": -0.005611258255408329, + "ell_comps_0": -0.028212995885542408, + "ell_comps_1": 0.02032938084918439, + "einstein_radius": 0.08210563031665497 + }, + "log_likelihood_vmap": 9199.66418883179, + "log_likelihood_scalar": 15888.26182677699, + "log_likelihood_library_pdip": 9199.664188830415, + "log_likelihood_library_pdip_scalar": 15888.261826777096, + "rel_diff_vmap_vs_library_pdip": 1.4947893323652892e-13, + "rel_diff_scalar_vs_library_pdip_scalar": 6.640209392059121e-15, + "abs_diff_nats": 6688.5976379452, + "rel_diff": 0.42097730455780225, + "rel_diff_scalar_vs_library_pdip": 0.7270480205209447, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6688.597637946681, + "rel_diff_library_pdip_vmap_vs_scalar": 0.4209773045578926, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 30, + "draw_name": "call00016_lane10", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.006865422615785068, + "centre_1": 0.007672434011054661, + "ell_comps_0": -0.0004443754014717277, + "ell_comps_1": -0.009376937319187229, + "einstein_radius": 0.07069214800098655 + }, + "log_likelihood_vmap": 18699.685890165503, + "log_likelihood_scalar": -2303.2655719854956, + "log_likelihood_library_pdip": 18699.685890304027, + "log_likelihood_library_pdip_scalar": -2303.2655717178277, + "rel_diff_vmap_vs_library_pdip": 7.407788550579711e-12, + "rel_diff_scalar_vs_library_pdip_scalar": 1.1621236039704577e-10, + "abs_diff_nats": 21002.951462151, + "rel_diff": 9.118771069045989, + "rel_diff_scalar_vs_library_pdip": 1.123171350871715, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 21002.951462021854, + "rel_diff_library_pdip_vmap_vs_scalar": 9.118771070049632, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 31, + "draw_name": "call00016_lane11", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.0009434846288846137, + "centre_1": -0.005019378037730504, + "ell_comps_0": -0.009906341245761709, + "ell_comps_1": 0.005337547203081457, + "einstein_radius": 0.021637810364502075 + }, + "log_likelihood_vmap": 13020.244793610349, + "log_likelihood_scalar": 19182.855515516767, + "log_likelihood_library_pdip": 13020.244793610349, + "log_likelihood_library_pdip_scalar": 19182.855515516767, + "rel_diff_vmap_vs_library_pdip": 0.0, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 6162.610721906418, + "rel_diff": 0.32125617152887176, + "rel_diff_scalar_vs_library_pdip": 0.4733098969791031, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6162.610721906418, + "rel_diff_library_pdip_vmap_vs_scalar": 0.32125617152887176, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 32, + "draw_name": "call00016_lane12", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.007501332281640899, + "centre_1": -0.004481729694563993, + "ell_comps_0": 0.010332412839169434, + "ell_comps_1": -0.003991142259489408, + "einstein_radius": 0.009192357179279576 + }, + "log_likelihood_vmap": 20526.007408480735, + "log_likelihood_scalar": 25770.8125705254, + "log_likelihood_library_pdip": 20526.007408406545, + "log_likelihood_library_pdip_scalar": 25770.812570514885, + "rel_diff_vmap_vs_library_pdip": 3.614404902856882e-12, + "rel_diff_scalar_vs_library_pdip_scalar": 4.0797156565114053e-13, + "abs_diff_nats": 5244.805162044664, + "rel_diff": 0.20351725998904877, + "rel_diff_scalar_vs_library_pdip": 0.25551998777759444, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 5244.80516210834, + "rel_diff_library_pdip_vmap_vs_scalar": 0.20351725999160264, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 33, + "draw_name": "call00016_lane13", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.007387955150592393, + "centre_1": -0.012189283154464192, + "ell_comps_0": 0.008975668561402167, + "ell_comps_1": 0.007167944425996534, + "einstein_radius": -0.04724415035491503 + }, + "log_likelihood_vmap": 9476.34754314409, + "log_likelihood_scalar": 15902.910586796046, + "log_likelihood_library_pdip": 9476.347543144097, + "log_likelihood_library_pdip_scalar": 15902.910586796046, + "rel_diff_vmap_vs_library_pdip": 7.678018963590462e-16, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 6426.563043651957, + "rel_diff": 0.4041123798424571, + "rel_diff_scalar_vs_library_pdip": 0.6781687790990115, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6426.56304365195, + "rel_diff_library_pdip_vmap_vs_scalar": 0.4041123798424567, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 34, + "draw_name": "call00016_lane14", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.000386125459039801, + "centre_1": 0.006915867404617462, + "ell_comps_0": 0.009873645974923177, + "ell_comps_1": 0.0016807669637177417, + "einstein_radius": -0.02988317231293447 + }, + "log_likelihood_vmap": 23033.79075623095, + "log_likelihood_scalar": -130304.42436466076, + "log_likelihood_library_pdip": 23033.79321236343, + "log_likelihood_library_pdip_scalar": -130304.42384542034, + "rel_diff_vmap_vs_library_pdip": 1.0663169804366194e-07, + "rel_diff_scalar_vs_library_pdip_scalar": 3.984825727486374e-09, + "abs_diff_nats": 153338.21512089172, + "rel_diff": 1.1767690611315715, + "rel_diff_scalar_vs_library_pdip": 6.657097950098797, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 153338.21705778377, + "rel_diff_library_pdip_vmap_vs_scalar": 1.1767690806851525, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 35, + "draw_name": "call00016_lane15", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.007751700182654455, + "centre_1": 0.00045977673595488515, + "ell_comps_0": -0.0005571070710696721, + "ell_comps_1": 0.00652407778540843, + "einstein_radius": -0.018266703354617997 + }, + "log_likelihood_vmap": 12436.966956375636, + "log_likelihood_scalar": 18757.07135333741, + "log_likelihood_library_pdip": 12436.966956375622, + "log_likelihood_library_pdip_scalar": 18757.071353384385, + "rel_diff_vmap_vs_library_pdip": 1.1700533803305664e-15, + "rel_diff_scalar_vs_library_pdip_scalar": 2.504313251902869e-12, + "abs_diff_nats": 6320.104396961775, + "rel_diff": 0.3369451593964988, + "rel_diff_scalar_vs_library_pdip": 0.5081708763181915, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6320.104397008763, + "rel_diff_library_pdip_vmap_vs_scalar": 0.33694515939816005, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 36, + "draw_name": "call00016_lane16", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.002391640344038076, + "centre_1": 0.005471319325782662, + "ell_comps_0": 0.007125369000849133, + "ell_comps_1": -0.005032810664097539, + "einstein_radius": -0.08700102338561888 + }, + "log_likelihood_vmap": 4935.957801232435, + "log_likelihood_scalar": 11735.12560234069, + "log_likelihood_library_pdip": 4935.957801232442, + "log_likelihood_library_pdip_scalar": 11735.12560234069, + "rel_diff_vmap_vs_library_pdip": 1.474072086346994e-15, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 6799.167801108255, + "rel_diff": 0.5793860271723118, + "rel_diff_scalar_vs_library_pdip": 1.3774768899787975, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6799.167801108248, + "rel_diff_library_pdip_vmap_vs_scalar": 0.5793860271723112, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 37, + "draw_name": "call00016_lane17", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.0026856669213289885, + "centre_1": -0.000701322842884467, + "ell_comps_0": -0.017963099482535792, + "ell_comps_1": -0.011368990220314417, + "einstein_radius": 0.1245417314838293 + }, + "log_likelihood_vmap": -10183.840812325674, + "log_likelihood_scalar": -3158.4777400105595, + "log_likelihood_library_pdip": -10183.840812322262, + "log_likelihood_library_pdip_scalar": -3158.4777400070816, + "rel_diff_vmap_vs_library_pdip": 3.3508223311219237e-13, + "rel_diff_scalar_vs_library_pdip_scalar": 1.1011341620447449e-12, + "abs_diff_nats": 7025.363072315115, + "rel_diff": 2.2242876634272646, + "rel_diff_scalar_vs_library_pdip": 0.6898539757034635, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 7025.36307231518, + "rel_diff_library_pdip_vmap_vs_scalar": 2.2242876634297346, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 38, + "draw_name": "call00016_lane18", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.006475272480271436, + "centre_1": 0.00036104957026942186, + "ell_comps_0": 0.0058048443769378386, + "ell_comps_1": -0.006014005069002815, + "einstein_radius": -0.043358074001971 + }, + "log_likelihood_vmap": 12580.943014183555, + "log_likelihood_scalar": 18932.6926188687, + "log_likelihood_library_pdip": 12580.943028265006, + "log_likelihood_library_pdip_scalar": 18932.692618848578, + "rel_diff_vmap_vs_library_pdip": 1.1192683869084872e-09, + "rel_diff_scalar_vs_library_pdip_scalar": 1.062799739430196e-12, + "abs_diff_nats": 6351.749604685145, + "rel_diff": 0.33549108584559517, + "rel_diff_scalar_vs_library_pdip": 0.5048707061413059, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6351.749590583571, + "rel_diff_library_pdip_vmap_vs_scalar": 0.3354910851011251, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 39, + "draw_name": "call00016_lane19", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.001791290147759792, + "centre_1": -0.0026344329251194233, + "ell_comps_0": 0.006109533754666233, + "ell_comps_1": 0.004739218846482723, + "einstein_radius": 0.0525326188965729 + }, + "log_likelihood_vmap": -2591.298263703502, + "log_likelihood_scalar": -92415.29466688, + "log_likelihood_library_pdip": -2590.88352512697, + "log_likelihood_library_pdip_scalar": -92415.1359782449, + "rel_diff_vmap_vs_library_pdip": 0.0001600761178607953, + "rel_diff_scalar_vs_library_pdip_scalar": 1.7171281892290406e-06, + "abs_diff_nats": 89823.9964031765, + "rel_diff": 0.9719602878176812, + "rel_diff_scalar_vs_library_pdip": 34.66941306724741, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 89824.25245311792, + "rel_diff_library_pdip_vmap_vs_scalar": 0.9719647274474942, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 40, + "draw_name": "call00017_lane00", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.00039504289511865966, + "centre_1": -0.0031177345874673803, + "ell_comps_0": -0.01319670439502501, + "ell_comps_1": -0.01412705504678942, + "einstein_radius": -0.08353374721414841 + }, + "log_likelihood_vmap": 6775.961380959467, + "log_likelihood_scalar": 13398.840222654067, + "log_likelihood_library_pdip": 6775.961380959467, + "log_likelihood_library_pdip_scalar": 13398.840222654067, + "rel_diff_vmap_vs_library_pdip": 0.0, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 6622.878841694601, + "rel_diff": 0.4942874705302463, + "rel_diff_scalar_vs_library_pdip": 0.9774079970858409, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6622.878841694601, + "rel_diff_library_pdip_vmap_vs_scalar": 0.4942874705302463, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 41, + "draw_name": "call00017_lane01", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.0035711364854704077, + "centre_1": 0.0013105492408737255, + "ell_comps_0": -0.00180015387363288, + "ell_comps_1": 0.0054914513398384235, + "einstein_radius": 0.0036721503557828328 + }, + "log_likelihood_vmap": 13539.215248048655, + "log_likelihood_scalar": 19660.903121941425, + "log_likelihood_library_pdip": 13539.215247391854, + "log_likelihood_library_pdip_scalar": 19660.90312195964, + "rel_diff_vmap_vs_library_pdip": 4.8510986924361186e-11, + "rel_diff_scalar_vs_library_pdip_scalar": 9.264762546316156e-13, + "abs_diff_nats": 6121.68787389277, + "rel_diff": 0.311363513462462, + "rel_diff_scalar_vs_library_pdip": 0.4521449554270755, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6121.687874567786, + "rel_diff_library_pdip_vmap_vs_scalar": 0.3113635134965064, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 42, + "draw_name": "call00017_lane02", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.0003080166678035941, + "centre_1": -0.0007105501404145155, + "ell_comps_0": 0.013423484811455881, + "ell_comps_1": -0.0026843168562135787, + "einstein_radius": -0.027211776311711677 + }, + "log_likelihood_vmap": 27099.012483442064, + "log_likelihood_scalar": 18324.103083947335, + "log_likelihood_library_pdip": 27099.012483026338, + "log_likelihood_library_pdip_scalar": 18324.103084286315, + "rel_diff_vmap_vs_library_pdip": 1.534101622566474e-11, + "rel_diff_scalar_vs_library_pdip_scalar": 1.8499109491360635e-11, + "abs_diff_nats": 8774.909399494729, + "rel_diff": 0.47887251885097226, + "rel_diff_scalar_vs_library_pdip": 0.3238091943230489, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 8774.909398740023, + "rel_diff_library_pdip_vmap_vs_scalar": 0.478872518800927, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 43, + "draw_name": "call00017_lane03", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.0007755113444017845, + "centre_1": -0.0035255229487048357, + "ell_comps_0": -0.00399848580683964, + "ell_comps_1": 0.0017146502467540014, + "einstein_radius": -0.08651392214907494 + }, + "log_likelihood_vmap": -89811.75397468379, + "log_likelihood_scalar": -175043.27920898062, + "log_likelihood_library_pdip": -89812.07647228788, + "log_likelihood_library_pdip_scalar": -175043.3948294912, + "rel_diff_vmap_vs_library_pdip": 3.5908044526081896e-06, + "rel_diff_scalar_vs_library_pdip_scalar": 6.605248413233698e-07, + "abs_diff_nats": 85231.52523429683, + "rel_diff": 0.48691686775669146, + "rel_diff_scalar_vs_library_pdip": 0.9489949022945862, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 85231.31835720333, + "rel_diff_library_pdip_vmap_vs_scalar": 0.4869153642742514, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 44, + "draw_name": "call00017_lane04", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.007147765623305864, + "centre_1": 0.0010457566746408338, + "ell_comps_0": 0.013576209131653673, + "ell_comps_1": -0.02008708588032471, + "einstein_radius": 0.032831422062920224 + }, + "log_likelihood_vmap": 26462.671263571254, + "log_likelihood_scalar": 13759.133270842864, + "log_likelihood_library_pdip": 26462.671263586228, + "log_likelihood_library_pdip_scalar": 13759.13327099567, + "rel_diff_vmap_vs_library_pdip": 5.658506891023602e-13, + "rel_diff_scalar_vs_library_pdip_scalar": 1.1105788484249162e-11, + "abs_diff_nats": 12703.53799272839, + "rel_diff": 0.9232803943870943, + "rel_diff_scalar_vs_library_pdip": 0.4800550128219285, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 12703.537992590558, + "rel_diff_library_pdip_vmap_vs_scalar": 0.9232803943668231, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 45, + "draw_name": "call00017_lane05", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.001330428459324805, + "centre_1": 0.0005227443143650849, + "ell_comps_0": 0.011495347238845648, + "ell_comps_1": 0.016282146756616874, + "einstein_radius": -0.03990716965121255 + }, + "log_likelihood_vmap": 13504.069127819737, + "log_likelihood_scalar": 19903.394044774566, + "log_likelihood_library_pdip": 13504.069127758157, + "log_likelihood_library_pdip_scalar": 19903.394044773173, + "rel_diff_vmap_vs_library_pdip": 4.560111969588568e-12, + "rel_diff_scalar_vs_library_pdip_scalar": 7.000544128211301e-14, + "abs_diff_nats": 6399.324916954829, + "rel_diff": 0.3215192797047048, + "rel_diff_scalar_vs_library_pdip": 0.4738812321289395, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6399.324917015016, + "rel_diff_library_pdip_vmap_vs_scalar": 0.32151927970775124, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 46, + "draw_name": "call00017_lane06", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.002687443649497539, + "centre_1": -0.0019369334469605598, + "ell_comps_0": -0.015185516697078849, + "ell_comps_1": -0.012687661440239377, + "einstein_radius": 0.024820286560815807 + }, + "log_likelihood_vmap": 12905.386047434527, + "log_likelihood_scalar": 19139.565581617124, + "log_likelihood_library_pdip": 12905.386047434527, + "log_likelihood_library_pdip_scalar": 19139.565581617124, + "rel_diff_vmap_vs_library_pdip": 0.0, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 6234.179534182596, + "rel_diff": 0.32572210208210295, + "rel_diff_scalar_vs_library_pdip": 0.48306803928751085, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6234.179534182596, + "rel_diff_library_pdip_vmap_vs_scalar": 0.32572210208210295, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 47, + "draw_name": "call00017_lane07", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.003693907069305896, + "centre_1": 0.002094959418050611, + "ell_comps_0": -0.003985235543017392, + "ell_comps_1": -0.01016688375069693, + "einstein_radius": -0.061293935299826074 + }, + "log_likelihood_vmap": 21569.144150194, + "log_likelihood_scalar": 15503.419442060345, + "log_likelihood_library_pdip": 21569.144150175754, + "log_likelihood_library_pdip_scalar": 15503.41944204284, + "rel_diff_vmap_vs_library_pdip": 8.458594179971799e-13, + "rel_diff_scalar_vs_library_pdip_scalar": 1.1291672837188372e-12, + "abs_diff_nats": 6065.724708133654, + "rel_diff": 0.39125076443958623, + "rel_diff_scalar_vs_library_pdip": 0.2812223176720706, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6065.724708132915, + "rel_diff_library_pdip_vmap_vs_scalar": 0.3912507644399804, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 48, + "draw_name": "call00017_lane08", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.003201023829002854, + "centre_1": 0.0051592827552293585, + "ell_comps_0": -0.016832634529093247, + "ell_comps_1": 0.018395875062653597, + "einstein_radius": -0.023696742396298376 + }, + "log_likelihood_vmap": 22376.164810427315, + "log_likelihood_scalar": 27530.814473047358, + "log_likelihood_library_pdip": 22376.1648104272, + "log_likelihood_library_pdip_scalar": 27530.814473047285, + "rel_diff_vmap_vs_library_pdip": 5.20264856883275e-15, + "rel_diff_scalar_vs_library_pdip_scalar": 2.6428413955230423e-15, + "abs_diff_nats": 5154.649662620042, + "rel_diff": 0.18723200752620087, + "rel_diff_scalar_vs_library_pdip": 0.23036341152698847, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 5154.649662620086, + "rel_diff_library_pdip_vmap_vs_scalar": 0.18723200752620295, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 49, + "draw_name": "call00017_lane09", + "draw_kind": "captured", + "offsets": { + "centre_0": 2.2604383701358236e-05, + "centre_1": -0.005697104995547526, + "ell_comps_0": -0.0005169325215696047, + "ell_comps_1": 0.0010224650903271142, + "einstein_radius": -0.016159263378539013 + }, + "log_likelihood_vmap": 26250.95091871082, + "log_likelihood_scalar": -177402.91878373944, + "log_likelihood_library_pdip": 26250.952011758898, + "log_likelihood_library_pdip_scalar": -177402.92030821444, + "rel_diff_vmap_vs_library_pdip": 4.1638416693765445e-08, + "rel_diff_scalar_vs_library_pdip_scalar": 8.59329143526979e-09, + "abs_diff_nats": 203653.86970245026, + "rel_diff": 1.1479736133919627, + "rel_diff_scalar_vs_library_pdip": 7.757961338098262, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 203653.87231997334, + "rel_diff_library_pdip_vmap_vs_scalar": 1.1479736182817695, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": null, + "passes": null, + "pdip_iter": null + } + ], + "lane_pins": [ + { + "pin": "lane 0: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 18700.594048999716, + "reference_value": 18700.59404900047, + "rel_diff": 4.02693952445984e-14, + "abs_diff_nats": 7.530616130679846e-10, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 0: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 24758.506194309142, + "reference_value": 24758.506194309157, + "rel_diff": 5.877541687758072e-16, + "abs_diff_nats": 1.4551915228366852e-11, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 0: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 18700.594048999716, + "reference_value": 24758.506194309142, + "rel_diff": 0.24468003431894716, + "abs_diff_nats": 6057.912145309427, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 0: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 18700.59404900047, + "reference_value": 24758.506194309157, + "rel_diff": 0.2446800343189172, + "abs_diff_nats": 6057.912145308688, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 1: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 14200.214307612092, + "reference_value": 14200.214307378097, + "rel_diff": 1.647825813097488e-11, + "abs_diff_nats": 2.3399479687213898e-07, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 1: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 20551.004887772862, + "reference_value": 20551.004887772713, + "rel_diff": 7.257899645554785e-15, + "abs_diff_nats": 1.4915713109076023e-10, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 1: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 14200.214307612092, + "reference_value": 20551.004887772862, + "rel_diff": 0.3090257928914839, + "abs_diff_nats": 6350.79058016077, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 1: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 14200.214307378097, + "reference_value": 20551.004887772713, + "rel_diff": 0.30902579290286497, + "abs_diff_nats": 6350.790580394616, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 2: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -23119.316937414085, + "reference_value": -23119.464418166448, + "rel_diff": 6.379073048373394e-06, + "abs_diff_nats": 0.14748075236275326, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 2: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -189709.04191844532, + "reference_value": -189709.04904877947, + "rel_diff": 3.758563015061023e-08, + "abs_diff_nats": 0.0071303341537714005, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 2: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -23119.316937414085, + "reference_value": -189709.04191844532, + "rel_diff": 0.8781327621307954, + "abs_diff_nats": 166589.72498103124, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 2: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -23119.464418166448, + "reference_value": -189709.04904877947, + "rel_diff": 0.8781319893063099, + "abs_diff_nats": 166589.58463061304, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 3: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 18502.01091225886, + "reference_value": 18502.009653967685, + "rel_diff": 6.80083513454663e-08, + "abs_diff_nats": 0.0012582911731442437, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 3: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -141741.9662350511, + "reference_value": -141741.96606594877, + "rel_diff": 1.193029418471919e-09, + "abs_diff_nats": 0.00016910233534872532, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 3: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 18502.01091225886, + "reference_value": -141741.9662350511, + "rel_diff": 1.1305330482122486, + "abs_diff_nats": 160243.97714730995, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 3: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 18502.009653967685, + "reference_value": -141741.96606594877, + "rel_diff": 1.1305330394906417, + "abs_diff_nats": 160243.97571991646, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 4: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 18751.91028804238, + "reference_value": 18751.910288041527, + "rel_diff": 4.559135610902296e-14, + "abs_diff_nats": 8.549250196665525e-10, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 4: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 24880.54593298872, + "reference_value": 24880.545932988745, + "rel_diff": 1.023524633190512e-15, + "abs_diff_nats": 2.546585164964199e-11, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 4: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 18751.91028804238, + "reference_value": 24880.54593298872, + "rel_diff": 0.2463223942695115, + "abs_diff_nats": 6128.635644946338, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 4: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 18751.910288041527, + "reference_value": 24880.545932988745, + "rel_diff": 0.24632239426954664, + "abs_diff_nats": 6128.635644947219, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 5: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 24935.952740676803, + "reference_value": 24935.95274067806, + "rel_diff": 5.047894822163129e-14, + "abs_diff_nats": 1.2587406672537327e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 5: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 25472.519186791807, + "reference_value": 25472.51918678188, + "rel_diff": 3.8975509613925874e-13, + "abs_diff_nats": 9.928044164553285e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 5: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 24935.952740676803, + "reference_value": 25472.519186791807, + "rel_diff": 0.02106452220843664, + "abs_diff_nats": 536.5664461150045, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 5: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 24935.95274067806, + "reference_value": 25472.51918678188, + "rel_diff": 0.02106452220800568, + "abs_diff_nats": 536.5664461038177, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 6: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 28315.20147858392, + "reference_value": 28315.20140299416, + "rel_diff": 2.6695822808702375e-09, + "abs_diff_nats": 7.558975994470529e-05, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 6: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -83383.91554954817, + "reference_value": -83383.91545974431, + "rel_diff": 1.0769925543059859e-09, + "abs_diff_nats": 8.980385609902442e-05, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 6: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 28315.20147858392, + "reference_value": -83383.91554954817, + "rel_diff": 1.3395762994813853, + "abs_diff_nats": 111699.11702813208, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 6: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 28315.20140299416, + "reference_value": -83383.91545974431, + "rel_diff": 1.3395762989405797, + "abs_diff_nats": 111699.11686273848, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 7: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 23338.89001450443, + "reference_value": 23338.89001397335, + "rel_diff": 2.2755283557945645e-11, + "abs_diff_nats": 5.310830601956695e-07, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 7: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -11960.2844297919, + "reference_value": -11960.284429868196, + "rel_diff": 6.379086717352273e-12, + "abs_diff_nats": 7.62956915423274e-08, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 7: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 23338.89001450443, + "reference_value": -11960.2844297919, + "rel_diff": 2.9513658016668516, + "abs_diff_nats": 35299.17444429633, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 7: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 23338.89001397335, + "reference_value": -11960.284429868196, + "rel_diff": 2.9513658016099997, + "abs_diff_nats": 35299.17444384155, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 8: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 24869.037000615295, + "reference_value": 24869.037000609445, + "rel_diff": 2.352270384116649e-13, + "abs_diff_nats": 5.8498699218034744e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 8: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 23223.55039149886, + "reference_value": 23223.550391489476, + "rel_diff": 4.040014203395787e-13, + "abs_diff_nats": 9.382347343489528e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 8: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 24869.037000615295, + "reference_value": 23223.55039149886, + "rel_diff": 0.07085422260494582, + "abs_diff_nats": 1645.4866091164367, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 8: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 24869.037000609445, + "reference_value": 23223.550391489476, + "rel_diff": 0.07085422260512655, + "abs_diff_nats": 1645.4866091199692, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 9: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -31749.968535649372, + "reference_value": -31749.305307205344, + "rel_diff": 2.08895419162751e-05, + "abs_diff_nats": 0.6632284440274816, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 9: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -177117.77789004147, + "reference_value": -177117.69794166007, + "rel_diff": 4.5138561721102667e-07, + "abs_diff_nats": 0.07994838140439242, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 9: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -31749.968535649372, + "reference_value": -177117.77789004147, + "rel_diff": 0.8207409277946089, + "abs_diff_nats": 145367.8093543921, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 9: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -31749.305307205344, + "reference_value": -177117.69794166007, + "rel_diff": 0.8207445914430126, + "abs_diff_nats": 145368.3926344547, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 10: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 6560.779511565073, + "reference_value": 6560.779593603307, + "rel_diff": 1.2504342303062657e-08, + "abs_diff_nats": 8.203823381336406e-05, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 10: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -101745.38335529093, + "reference_value": -101745.3835211835, + "rel_diff": 1.6304676974813754e-09, + "abs_diff_nats": 0.00016589256119914353, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 10: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 6560.779511565073, + "reference_value": -101745.38335529093, + "rel_diff": 1.0644823312390999, + "abs_diff_nats": 108306.162866856, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 10: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 6560.779593603307, + "reference_value": -101745.3835211835, + "rel_diff": 1.0644823319402728, + "abs_diff_nats": 108306.1631147868, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 11: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 12667.92492649478, + "reference_value": 12667.924906617816, + "rel_diff": 1.5690780611683128e-09, + "abs_diff_nats": 1.987696305150166e-05, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 11: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 18957.528349732384, + "reference_value": 18957.528349744887, + "rel_diff": 6.59565578871598e-13, + "abs_diff_nats": 1.2503733159974217e-08, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 11: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 12667.92492649478, + "reference_value": 18957.528349732384, + "rel_diff": 0.33177338876702206, + "abs_diff_nats": 6289.603423237604, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 11: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 12667.924906617816, + "reference_value": 18957.528349744887, + "rel_diff": 0.3317733898159625, + "abs_diff_nats": 6289.603443127071, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 12: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 18842.27979675187, + "reference_value": 18842.27979674931, + "rel_diff": 1.359250105517707e-13, + "abs_diff_nats": 2.561137080192566e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 12: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 24810.0496601949, + "reference_value": 24810.04966019489, + "rel_diff": 4.3989982167530276e-16, + "abs_diff_nats": 1.0913936421275139e-11, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 12: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 18842.27979675187, + "reference_value": 24810.0496601949, + "rel_diff": 0.24053840863598455, + "abs_diff_nats": 5967.769863443031, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 12: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 18842.27979674931, + "reference_value": 24810.04966019489, + "rel_diff": 0.24053840863608744, + "abs_diff_nats": 5967.769863445581, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 13: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 22879.755989109253, + "reference_value": 22879.75598922863, + "rel_diff": 5.21756598418741e-12, + "abs_diff_nats": 1.1937663657590747e-07, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 13: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -3605.706215942817, + "reference_value": -3605.7062159744455, + "rel_diff": 8.771814966158493e-12, + "abs_diff_nats": 3.162858774885535e-08, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 13: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 22879.755989109253, + "reference_value": -3605.706215942817, + "rel_diff": 7.3454298877554765, + "abs_diff_nats": 26485.46220505207, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 13: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 22879.75598922863, + "reference_value": -3605.7062159744455, + "rel_diff": 7.345429887732924, + "abs_diff_nats": 26485.462205203075, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 14: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 4357.02195028017, + "reference_value": 4357.021950280177, + "rel_diff": 1.6699382507622086e-15, + "abs_diff_nats": 7.275957614183426e-12, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 14: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 11126.921475785763, + "reference_value": 11126.921475785763, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 14: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 4357.02195028017, + "reference_value": 11126.921475785763, + "rel_diff": 0.6084252090965273, + "abs_diff_nats": 6769.8995255055925, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 14: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 4357.021950280177, + "reference_value": 11126.921475785763, + "rel_diff": 0.6084252090965266, + "abs_diff_nats": 6769.899525505585, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 15: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 14146.464614247743, + "reference_value": 14146.464613876353, + "rel_diff": 2.6253226697734263e-11, + "abs_diff_nats": 3.713903424795717e-07, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 15: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 20410.343973720603, + "reference_value": 20410.343973722156, + "rel_diff": 7.610929794363826e-14, + "abs_diff_nats": 1.5534169506281614e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 15: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 14146.464614247743, + "reference_value": 20410.343973720603, + "rel_diff": 0.3068972951919838, + "abs_diff_nats": 6263.8793594728595, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 15: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 14146.464613876353, + "reference_value": 20410.343973722156, + "rel_diff": 0.30689729521023273, + "abs_diff_nats": 6263.879359845803, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 16: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 2903.043598923672, + "reference_value": 2903.043598923672, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 16: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 9734.862241679926, + "reference_value": 9734.86224168224, + "rel_diff": 2.3767717137315127e-13, + "abs_diff_nats": 2.3137545213103294e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 16: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 2903.043598923672, + "reference_value": 9734.862241679926, + "rel_diff": 0.7017889388825393, + "abs_diff_nats": 6831.818642756254, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 16: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 2903.043598923672, + "reference_value": 9734.86224168224, + "rel_diff": 0.7017889388826103, + "abs_diff_nats": 6831.818642758568, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 17: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 13360.530937095456, + "reference_value": 13360.530937095456, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 17: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 19481.557217641563, + "reference_value": 19481.557217641563, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 17: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 13360.530937095456, + "reference_value": 19481.557217641563, + "rel_diff": 0.3141959450245178, + "abs_diff_nats": 6121.026280546106, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 17: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 13360.530937095456, + "reference_value": 19481.557217641563, + "rel_diff": 0.3141959450245178, + "abs_diff_nats": 6121.026280546106, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 18: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 12594.119293045376, + "reference_value": 12594.119293045376, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 18: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 18812.946857997056, + "reference_value": 18812.946857997056, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 18: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 12594.119293045376, + "reference_value": 18812.946857997056, + "rel_diff": 0.3305610552080077, + "abs_diff_nats": 6218.82756495168, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 18: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 12594.119293045376, + "reference_value": 18812.946857997056, + "rel_diff": 0.3305610552080077, + "abs_diff_nats": 6218.82756495168, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 19: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 10415.233658037694, + "reference_value": 10415.23365811746, + "rel_diff": 7.658620626540083e-12, + "abs_diff_nats": 7.97663233242929e-08, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 19: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 16927.632549569014, + "reference_value": 16927.63254956904, + "rel_diff": 1.5043953473748062e-15, + "abs_diff_nats": 2.546585164964199e-11, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 19: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 10415.233658037694, + "reference_value": 16927.632549569014, + "rel_diff": 0.3847200057338868, + "abs_diff_nats": 6512.39889153132, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 19: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 10415.23365811746, + "reference_value": 16927.63254956904, + "rel_diff": 0.38472000572917553, + "abs_diff_nats": 6512.398891451579, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 20: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 23125.781207506523, + "reference_value": 23125.78120750677, + "rel_diff": 1.0697262793523905e-14, + "abs_diff_nats": 2.473825588822365e-10, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 20: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 27642.80600594327, + "reference_value": 27642.806005943028, + "rel_diff": 8.686042987692048e-15, + "abs_diff_nats": 2.4010660126805305e-10, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 20: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 23125.781207506523, + "reference_value": 27642.80600594327, + "rel_diff": 0.1634068841443077, + "abs_diff_nats": 4517.024798436745, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 20: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 23125.78120750677, + "reference_value": 27642.806005943028, + "rel_diff": 0.1634068841442915, + "abs_diff_nats": 4517.024798436258, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 21: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 25204.959753670475, + "reference_value": 25204.959753667667, + "rel_diff": 1.1142726140104725e-13, + "abs_diff_nats": 2.8085196390748024e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 21: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 27788.396151208093, + "reference_value": 27788.39615112006, + "rel_diff": 3.1679342231651965e-12, + "abs_diff_nats": 8.803181117400527e-08, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 21: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 25204.959753670475, + "reference_value": 27788.396151208093, + "rel_diff": 0.09296817216366422, + "abs_diff_nats": 2583.436397537618, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 21: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 25204.959753667667, + "reference_value": 27788.39615112006, + "rel_diff": 0.09296817216089187, + "abs_diff_nats": 2583.436397452395, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 22: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 11553.07472359277, + "reference_value": 11553.07472359277, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 22: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 17852.91967933103, + "reference_value": 17852.91967933103, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 22: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 11553.07472359277, + "reference_value": 17852.91967933103, + "rel_diff": 0.3528747716840858, + "abs_diff_nats": 6299.844955738259, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 22: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 11553.07472359277, + "reference_value": 17852.91967933103, + "rel_diff": 0.3528747716840858, + "abs_diff_nats": 6299.844955738259, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 23: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 21983.899534877724, + "reference_value": 21983.899534877615, + "rel_diff": 4.9645134176309806e-15, + "abs_diff_nats": 1.0913936421275139e-10, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 23: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 27386.085836286504, + "reference_value": 27386.08583628653, + "rel_diff": 9.298828537190872e-16, + "abs_diff_nats": 2.546585164964199e-11, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 23: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 21983.899534877724, + "reference_value": 27386.085836286504, + "rel_diff": 0.19726025594540766, + "abs_diff_nats": 5402.186301408779, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 23: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 21983.899534877615, + "reference_value": 27386.08583628653, + "rel_diff": 0.19726025594541238, + "abs_diff_nats": 5402.186301408914, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 24: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 23449.28672850131, + "reference_value": 23449.286728501065, + "rel_diff": 1.0394541330713026e-14, + "abs_diff_nats": 2.4374458007514477e-10, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 24: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 28384.90598332632, + "reference_value": 28384.905983326335, + "rel_diff": 5.126638515877007e-16, + "abs_diff_nats": 1.4551915228366852e-11, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 24: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 23449.28672850131, + "reference_value": 28384.90598332632, + "rel_diff": 0.17388182499967628, + "abs_diff_nats": 4935.619254825011, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 24: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 23449.286728501065, + "reference_value": 28384.905983326335, + "rel_diff": 0.17388182499968527, + "abs_diff_nats": 4935.619254825269, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 25: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -136892.6666871641, + "reference_value": -136892.82101562357, + "rel_diff": 1.1273670768223002e-06, + "abs_diff_nats": 0.15432845946634188, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 25: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -189785.11040523922, + "reference_value": -189785.06952934078, + "rel_diff": 2.1537994818386058e-07, + "abs_diff_nats": 0.040875898441299796, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 25: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -136892.6666871641, + "reference_value": -189785.11040523922, + "rel_diff": 0.2786964878600664, + "abs_diff_nats": 52892.44371807511, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 25: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -136892.82101562357, + "reference_value": -189785.06952934078, + "rel_diff": 0.2786955193308295, + "abs_diff_nats": 52892.248513717204, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 26: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 20216.485753679586, + "reference_value": 20216.492407061978, + "rel_diff": 3.291066648948336e-07, + "abs_diff_nats": 0.0066533823919598944, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 26: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -186990.07885292446, + "reference_value": -186990.08329202014, + "rel_diff": 2.373973847878948e-08, + "abs_diff_nats": 0.004439095675479621, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 26: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 20216.485753679586, + "reference_value": -186990.07885292446, + "rel_diff": 1.1081152854616458, + "abs_diff_nats": 207206.56460660405, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 26: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 20216.492407061978, + "reference_value": -186990.08329202014, + "rel_diff": 1.1081153184764891, + "abs_diff_nats": 207206.5756990821, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 27: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 23997.43715335727, + "reference_value": 23997.437153354946, + "rel_diff": 9.687153019198994e-14, + "abs_diff_nats": 2.3246684577316046e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 27: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 27662.094569019268, + "reference_value": 27662.09456901923, + "rel_diff": 1.3151494359961256e-15, + "abs_diff_nats": 3.637978807091713e-11, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 27: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 23997.43715335727, + "reference_value": 27662.094569019268, + "rel_diff": 0.1324793900374524, + "abs_diff_nats": 3664.657415661997, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 27: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 23997.437153354946, + "reference_value": 27662.09456901923, + "rel_diff": 0.13247939003753528, + "abs_diff_nats": 3664.6574156642855, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 28: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 15428.355976304025, + "reference_value": 15428.36951848779, + "rel_diff": 8.777456198202808e-07, + "abs_diff_nats": 0.013542183765821392, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 28: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -74102.36862721092, + "reference_value": -74102.36796310006, + "rel_diff": 8.96207342969017e-09, + "abs_diff_nats": 0.0006641108629992232, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 28: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 15428.355976304025, + "reference_value": -74102.36862721092, + "rel_diff": 1.2082032769278932, + "abs_diff_nats": 89530.72460351494, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 28: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 15428.36951848779, + "reference_value": -74102.36796310006, + "rel_diff": 1.2082034615435027, + "abs_diff_nats": 89530.73748158784, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 29: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 9199.66418883179, + "reference_value": 9199.664188830415, + "rel_diff": 1.4947893323652892e-13, + "abs_diff_nats": 1.3751559890806675e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 29: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 15888.26182677699, + "reference_value": 15888.261826777096, + "rel_diff": 6.640209392059121e-15, + "abs_diff_nats": 1.0550138540565968e-10, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 29: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 9199.66418883179, + "reference_value": 15888.26182677699, + "rel_diff": 0.42097730455780225, + "abs_diff_nats": 6688.5976379452, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 29: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 9199.664188830415, + "reference_value": 15888.261826777096, + "rel_diff": 0.4209773045578926, + "abs_diff_nats": 6688.597637946681, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 30: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 18699.685890165503, + "reference_value": 18699.685890304027, + "rel_diff": 7.407788550579711e-12, + "abs_diff_nats": 1.3852331903763115e-07, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 30: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -2303.2655719854956, + "reference_value": -2303.2655717178277, + "rel_diff": 1.1621236039704577e-10, + "abs_diff_nats": 2.6766792871057987e-07, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 30: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 18699.685890165503, + "reference_value": -2303.2655719854956, + "rel_diff": 9.118771069045989, + "abs_diff_nats": 21002.951462151, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 30: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 18699.685890304027, + "reference_value": -2303.2655717178277, + "rel_diff": 9.118771070049632, + "abs_diff_nats": 21002.951462021854, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 31: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 13020.244793610349, + "reference_value": 13020.244793610349, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 31: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 19182.855515516767, + "reference_value": 19182.855515516767, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 31: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 13020.244793610349, + "reference_value": 19182.855515516767, + "rel_diff": 0.32125617152887176, + "abs_diff_nats": 6162.610721906418, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 31: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 13020.244793610349, + "reference_value": 19182.855515516767, + "rel_diff": 0.32125617152887176, + "abs_diff_nats": 6162.610721906418, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 32: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 20526.007408480735, + "reference_value": 20526.007408406545, + "rel_diff": 3.614404902856882e-12, + "abs_diff_nats": 7.41893018130213e-08, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 32: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 25770.8125705254, + "reference_value": 25770.812570514885, + "rel_diff": 4.0797156565114053e-13, + "abs_diff_nats": 1.051375875249505e-08, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 32: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 20526.007408480735, + "reference_value": 25770.8125705254, + "rel_diff": 0.20351725998904877, + "abs_diff_nats": 5244.805162044664, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 32: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 20526.007408406545, + "reference_value": 25770.812570514885, + "rel_diff": 0.20351725999160264, + "abs_diff_nats": 5244.80516210834, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 33: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 9476.34754314409, + "reference_value": 9476.347543144097, + "rel_diff": 7.678018963590462e-16, + "abs_diff_nats": 7.275957614183426e-12, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 33: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 15902.910586796046, + "reference_value": 15902.910586796046, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 33: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 9476.34754314409, + "reference_value": 15902.910586796046, + "rel_diff": 0.4041123798424571, + "abs_diff_nats": 6426.563043651957, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 33: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 9476.347543144097, + "reference_value": 15902.910586796046, + "rel_diff": 0.4041123798424567, + "abs_diff_nats": 6426.56304365195, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 34: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 23033.79075623095, + "reference_value": 23033.79321236343, + "rel_diff": 1.0663169804366194e-07, + "abs_diff_nats": 0.0024561324826208875, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 34: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -130304.42436466076, + "reference_value": -130304.42384542034, + "rel_diff": 3.984825727486374e-09, + "abs_diff_nats": 0.00051924042054452, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 34: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 23033.79075623095, + "reference_value": -130304.42436466076, + "rel_diff": 1.1767690611315715, + "abs_diff_nats": 153338.21512089172, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 34: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 23033.79321236343, + "reference_value": -130304.42384542034, + "rel_diff": 1.1767690806851525, + "abs_diff_nats": 153338.21705778377, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 35: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 12436.966956375636, + "reference_value": 12436.966956375622, + "rel_diff": 1.1700533803305664e-15, + "abs_diff_nats": 1.4551915228366852e-11, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 35: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 18757.07135333741, + "reference_value": 18757.071353384385, + "rel_diff": 2.504313251902869e-12, + "abs_diff_nats": 4.69735823571682e-08, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 35: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 12436.966956375636, + "reference_value": 18757.07135333741, + "rel_diff": 0.3369451593964988, + "abs_diff_nats": 6320.104396961775, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 35: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 12436.966956375622, + "reference_value": 18757.071353384385, + "rel_diff": 0.33694515939816005, + "abs_diff_nats": 6320.104397008763, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 36: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 4935.957801232435, + "reference_value": 4935.957801232442, + "rel_diff": 1.474072086346994e-15, + "abs_diff_nats": 7.275957614183426e-12, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 36: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 11735.12560234069, + "reference_value": 11735.12560234069, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 36: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 4935.957801232435, + "reference_value": 11735.12560234069, + "rel_diff": 0.5793860271723118, + "abs_diff_nats": 6799.167801108255, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 36: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 4935.957801232442, + "reference_value": 11735.12560234069, + "rel_diff": 0.5793860271723112, + "abs_diff_nats": 6799.167801108248, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 37: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -10183.840812325674, + "reference_value": -10183.840812322262, + "rel_diff": 3.3508223311219237e-13, + "abs_diff_nats": 3.4124241210520267e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 37: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -3158.4777400105595, + "reference_value": -3158.4777400070816, + "rel_diff": 1.1011341620447449e-12, + "abs_diff_nats": 3.4779077395796776e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 37: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -10183.840812325674, + "reference_value": -3158.4777400105595, + "rel_diff": 2.2242876634272646, + "abs_diff_nats": 7025.363072315115, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 37: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -10183.840812322262, + "reference_value": -3158.4777400070816, + "rel_diff": 2.2242876634297346, + "abs_diff_nats": 7025.36307231518, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 38: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 12580.943014183555, + "reference_value": 12580.943028265006, + "rel_diff": 1.1192683869084872e-09, + "abs_diff_nats": 1.4081451809033751e-05, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 38: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 18932.6926188687, + "reference_value": 18932.692618848578, + "rel_diff": 1.062799739430196e-12, + "abs_diff_nats": 2.0121660782024264e-08, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 38: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 12580.943014183555, + "reference_value": 18932.6926188687, + "rel_diff": 0.33549108584559517, + "abs_diff_nats": 6351.749604685145, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 38: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 12580.943028265006, + "reference_value": 18932.692618848578, + "rel_diff": 0.3354910851011251, + "abs_diff_nats": 6351.749590583571, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 39: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -2591.298263703502, + "reference_value": -2590.88352512697, + "rel_diff": 0.0001600761178607953, + "abs_diff_nats": 0.41473857653181767, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 39: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -92415.29466688, + "reference_value": -92415.1359782449, + "rel_diff": 1.7171281892290406e-06, + "abs_diff_nats": 0.15868863509967923, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 39: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -2591.298263703502, + "reference_value": -92415.29466688, + "rel_diff": 0.9719602878176812, + "abs_diff_nats": 89823.9964031765, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 39: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -2590.88352512697, + "reference_value": -92415.1359782449, + "rel_diff": 0.9719647274474942, + "abs_diff_nats": 89824.25245311792, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 40: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 6775.961380959467, + "reference_value": 6775.961380959467, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 40: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 13398.840222654067, + "reference_value": 13398.840222654067, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 40: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 6775.961380959467, + "reference_value": 13398.840222654067, + "rel_diff": 0.4942874705302463, + "abs_diff_nats": 6622.878841694601, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 40: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 6775.961380959467, + "reference_value": 13398.840222654067, + "rel_diff": 0.4942874705302463, + "abs_diff_nats": 6622.878841694601, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 41: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 13539.215248048655, + "reference_value": 13539.215247391854, + "rel_diff": 4.8510986924361186e-11, + "abs_diff_nats": 6.568006938323379e-07, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 41: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 19660.903121941425, + "reference_value": 19660.90312195964, + "rel_diff": 9.264762546316156e-13, + "abs_diff_nats": 1.8215359887108207e-08, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 41: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 13539.215248048655, + "reference_value": 19660.903121941425, + "rel_diff": 0.311363513462462, + "abs_diff_nats": 6121.68787389277, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 41: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 13539.215247391854, + "reference_value": 19660.90312195964, + "rel_diff": 0.3113635134965064, + "abs_diff_nats": 6121.687874567786, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 42: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 27099.012483442064, + "reference_value": 27099.012483026338, + "rel_diff": 1.534101622566474e-11, + "abs_diff_nats": 4.157263902015984e-07, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 42: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 18324.103083947335, + "reference_value": 18324.103084286315, + "rel_diff": 1.8499109491360635e-11, + "abs_diff_nats": 3.3897958928719163e-07, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 42: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 27099.012483442064, + "reference_value": 18324.103083947335, + "rel_diff": 0.47887251885097226, + "abs_diff_nats": 8774.909399494729, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 42: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 27099.012483026338, + "reference_value": 18324.103084286315, + "rel_diff": 0.478872518800927, + "abs_diff_nats": 8774.909398740023, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 43: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -89811.75397468379, + "reference_value": -89812.07647228788, + "rel_diff": 3.5908044526081896e-06, + "abs_diff_nats": 0.32249760409467854, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 43: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -175043.27920898062, + "reference_value": -175043.3948294912, + "rel_diff": 6.605248413233698e-07, + "abs_diff_nats": 0.11562051059445366, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 43: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -89811.75397468379, + "reference_value": -175043.27920898062, + "rel_diff": 0.48691686775669146, + "abs_diff_nats": 85231.52523429683, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 43: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -89812.07647228788, + "reference_value": -175043.3948294912, + "rel_diff": 0.4869153642742514, + "abs_diff_nats": 85231.31835720333, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 44: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 26462.671263571254, + "reference_value": 26462.671263586228, + "rel_diff": 5.658506891023602e-13, + "abs_diff_nats": 1.497392076998949e-08, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 44: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 13759.133270842864, + "reference_value": 13759.13327099567, + "rel_diff": 1.1105788484249162e-11, + "abs_diff_nats": 1.5280602383427322e-07, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 44: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 26462.671263571254, + "reference_value": 13759.133270842864, + "rel_diff": 0.9232803943870943, + "abs_diff_nats": 12703.53799272839, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 44: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 26462.671263586228, + "reference_value": 13759.13327099567, + "rel_diff": 0.9232803943668231, + "abs_diff_nats": 12703.537992590558, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 45: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 13504.069127819737, + "reference_value": 13504.069127758157, + "rel_diff": 4.560111969588568e-12, + "abs_diff_nats": 6.158006726764143e-08, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 45: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 19903.394044774566, + "reference_value": 19903.394044773173, + "rel_diff": 7.000544128211301e-14, + "abs_diff_nats": 1.393345883116126e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 45: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 13504.069127819737, + "reference_value": 19903.394044774566, + "rel_diff": 0.3215192797047048, + "abs_diff_nats": 6399.324916954829, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 45: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 13504.069127758157, + "reference_value": 19903.394044773173, + "rel_diff": 0.32151927970775124, + "abs_diff_nats": 6399.324917015016, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 46: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 12905.386047434527, + "reference_value": 12905.386047434527, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 46: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 19139.565581617124, + "reference_value": 19139.565581617124, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 46: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 12905.386047434527, + "reference_value": 19139.565581617124, + "rel_diff": 0.32572210208210295, + "abs_diff_nats": 6234.179534182596, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 46: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 12905.386047434527, + "reference_value": 19139.565581617124, + "rel_diff": 0.32572210208210295, + "abs_diff_nats": 6234.179534182596, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 47: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 21569.144150194, + "reference_value": 21569.144150175754, + "rel_diff": 8.458594179971799e-13, + "abs_diff_nats": 1.824446371756494e-08, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 47: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 15503.419442060345, + "reference_value": 15503.41944204284, + "rel_diff": 1.1291672837188372e-12, + "abs_diff_nats": 1.7505954019725323e-08, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 47: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 21569.144150194, + "reference_value": 15503.419442060345, + "rel_diff": 0.39125076443958623, + "abs_diff_nats": 6065.724708133654, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 47: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 21569.144150175754, + "reference_value": 15503.41944204284, + "rel_diff": 0.3912507644399804, + "abs_diff_nats": 6065.724708132915, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 48: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 22376.164810427315, + "reference_value": 22376.1648104272, + "rel_diff": 5.20264856883275e-15, + "abs_diff_nats": 1.1641532182693481e-10, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 48: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 27530.814473047358, + "reference_value": 27530.814473047285, + "rel_diff": 2.6428413955230423e-15, + "abs_diff_nats": 7.275957614183426e-11, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 48: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 22376.164810427315, + "reference_value": 27530.814473047358, + "rel_diff": 0.18723200752620087, + "abs_diff_nats": 5154.649662620042, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 48: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 22376.1648104272, + "reference_value": 27530.814473047285, + "rel_diff": 0.18723200752620295, + "abs_diff_nats": 5154.649662620086, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 49: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 26250.95091871082, + "reference_value": 26250.952011758898, + "rel_diff": 4.1638416693765445e-08, + "abs_diff_nats": 0.0010930480784736574, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 49: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -177402.91878373944, + "reference_value": -177402.92030821444, + "rel_diff": 8.59329143526979e-09, + "abs_diff_nats": 0.001524474995676428, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 49: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 26250.95091871082, + "reference_value": -177402.91878373944, + "rel_diff": 1.1479736133919627, + "abs_diff_nats": 203653.86970245026, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 49: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 26250.952011758898, + "reference_value": -177402.92030821444, + "rel_diff": 1.1479736182817695, + "abs_diff_nats": 203653.87231997334, + "within_rtol": false, + "status": "RECORDED" + } + ], + "lanes_failed": 14, + "arm_rows": { + "vmap": { + "arm": "vmap", + "program": "jax.jit(jax.vmap(fn))", + "stands_for": "Nautilus(use_jax_vmap=True) \u2014 Fitness._vmap", + "hlo_source": "jax.jit(jax.vmap(fn)).lower(batched_tree) \u2014 the exact current Fitness._vmap composition (PyAutoFit#1638)", + "batch_wall_ms": 1631.2400945000263, + "wall_production_nesting_ms": 1631.2400945000263, + "wall_aot_command_buffers_on_ms": 1635.791891700137, + "wall_aot_command_buffers_off_ms": 1639.0278569000657, + "command_buffer_delta_ms": 3.2359651999286143, + "production_nesting_vs_aot_on_delta_ms": -4.551797200110741, + "production_nesting_vs_aot_on_delta_pct": -0.27826260927237484, + "wall_per_lane_ms": 32.624801890000526, + "wall_per_lane_command_buffers_off_ms": 32.78055713800131, + "traced_batch_wall_ms": 1660.119595100332, + "untraced_batch_wall_ms": 1640.3460579000239, + "traced_wall_per_lane_ms": 33.20239190200664, + "callback_count_per_call": 50.0, + "callback_count_per_lane": 1.0, + "callback_expectation": "B per batched call \u2014 the qhull pure_callback is vmap_method='sequential'", + "host_qhull_ms": 224.54846200089378, + "host_tables_ms": 5.621927292668261, + "host_qhull_ms_per_lane": 4.490969240017876, + "host_tables_ms_per_lane": 0.11243854585336521, + "host_callback_probe": { + "calls": 500, + "qhull_ms_total": 2245.484620008938, + "tables_ms_total": 56.219272926682606, + "total_ms_total": 2301.7038929356204, + "qhull_ms_mean": 4.490969240017876, + "tables_ms_mean": 0.11243854585336521, + "total_ms_mean": 4.603407785871241, + "non_finite_calls": 0, + "n_points": [ + 1500 + ] + }, + "host_callback_records_first": [ + { + "n_points": 1500, + "qhull_ms": 4.815570002392633, + "tables_ms": 0.17441899763070978, + "total_ms": 4.989989000023343, + "finite": true + }, + { + "n_points": 1500, + "qhull_ms": 4.503602998738643, + "tables_ms": 0.10974000178975984, + "total_ms": 4.613343000528403, + "finite": true + }, + { + "n_points": 1500, + "qhull_ms": 4.537831999186892, + "tables_ms": 0.10903899965342134, + "total_ms": 4.646870998840313, + "finite": true + }, + { + "n_points": 1500, + "qhull_ms": 4.560370998660801, + "tables_ms": 0.1078710010915529, + "total_ms": 4.668241999752354, + "finite": true + } + ], + "device_idle_ms": 273.92656809999994, + "device_idle_ms_per_lane": 5.478531361999999, + "trace": { + "parser": "ProfileData.from_file(xplane) + as_text() + stack_frame_index(proto field 17)", + "stage_audit": { + "chi_squared_evidence": [ + { + "instruction": "input_reduce_fusion.18", + "ms": 0.0098466, + "opcode": "fusion", + "shape": "f64[92,50]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:90", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:90 (chi_squared_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:87 (AbstractFit.chi_squared)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:293 (FitDataset.chi_squared)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:345 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)" + ] + }, + { + "instruction": "input_reduce_fusion.44", + "ms": 0.0040127999999999995, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:104", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:104 (noise_normalization_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:98 (AbstractFit.noise_normalization)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:306 (FitDataset.noise_normalization)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:349 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)" + ] + }, + { + "instruction": "input_reduce_fusion.46", + "ms": 0.0028928, + "opcode": "fusion", + "shape": "f64[50]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:90", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:90 (chi_squared_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:87 (AbstractFit.chi_squared)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:293 (FitDataset.chi_squared)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:345 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)" + ] + } + ], + "psf_convolution_mapping_matrix": [ + { + "instruction": "input_scatter_fusion", + "ms": 101.0336657, + "opcode": "fusion", + "shape": "f64[50,1500,180,180]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.25.0", + "ms": 76.3287065, + "opcode": "fft", + "shape": "c128[50,1500,180,91]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.27.0", + "ms": 48.963247800000005, + "opcode": "fft", + "shape": "c128[50,1500,91,180]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.29.0", + "ms": 47.28036060000001, + "opcode": "fft", + "shape": "f64[50,1500,180,180]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_transpose_fusion.2", + "ms": 26.349922799999998, + "opcode": "fusion", + "shape": "c128[50,1500,91,180]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "wrapped_transpose", + "ms": 24.726837399999997, + "opcode": "fusion", + "shape": "c128[50,1500,180,91]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + } + ], + "mapping_matrix": [ + { + "instruction": "loop_broadcast_fusion.7", + "ms": 5.665904800000001, + "opcode": "fusion", + "shape": "f64[15361,50,1500]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:353", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:353 (mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:283 (Mapper.mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:91 (AbstractInversionImaging._mapping_matrix_for_convolution_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:137 (AbstractInversionImaging.operated_mapping_matrix_list)" + ] + }, + { + "instruction": "input_scatter_fusion.3", + "ms": 0.1389135, + "opcode": "fusion", + "shape": "f64[50,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:71", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:71 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:120 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + }, + { + "instruction": "loop_divide_fusion", + "ms": 0.0040545, + "opcode": "fusion", + "shape": "f64[50,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:92", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:92 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:120 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + }, + { + "instruction": "input_reduce_fusion.47", + "ms": 0.0038560999999999995, + "opcode": "fusion", + "shape": "f64[50]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:120 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + }, + { + "instruction": "loop_and_fusion.2", + "ms": 0.0020992000000000003, + "opcode": "fusion", + "shape": "pred[46083,1]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:338", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:338 (mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:283 (Mapper.mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:91 (AbstractInversionImaging._mapping_matrix_for_convolution_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:137 (AbstractInversionImaging.operated_mapping_matrix_list)" + ] + } + ], + "other": [ + { + "instruction": "copy.107", + "ms": 0.10212330000000037, + "opcode": "copy", + "shape": "s32[1,3000,3]{2,1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.108", + "ms": 0.10080099999999997, + "opcode": "copy", + "shape": "s32[1,3000,3]{2,1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.109", + "ms": 0.1006061000000001, + "opcode": "copy", + "shape": "f64[1,1500,2]{2,1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.106", + "ms": 0.09933850000000043, + "opcode": "copy", + "shape": "s32[1,1500]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.105", + "ms": 0.05873000000000005, + "opcode": "copy", + "shape": "f64[1,50,1024,2]{3,2,1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "loop_broadcast_fusion.6", + "ms": 0.0048384, + "opcode": "fusion", + "shape": "(pred[50,21361]{1,0}, pred[50,21361]{1,0})", + "source": "", + "stack": [] + } + ], + "mesh_qhull_callback": [ + { + "instruction": "pure_callback.0", + "ms": 0.5385581999999985, + "opcode": "custom-call", + "shape": "(s32[3000,3]{1,0}, s32[3000,3]{1,0}, s32[1500]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:161", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:161 (_jax_delaunay_tables)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:405 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + }, + { + "instruction": "loop_add_fusion.1", + "ms": 0.0763971999999998, + "opcode": "fusion", + "shape": "s64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:161", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:161 (_jax_delaunay_tables)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:405 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + }, + { + "instruction": "loop_broadcast_fusion.3", + "ms": 0.0022594, + "opcode": "fusion", + "shape": "s32[50,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:161", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:161 (_jax_delaunay_tables)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:405 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + } + ], + "mixed_fusion": [ + { + "instruction": "loop_divide_gather_fusion", + "ms": 54.805799500000006, + "opcode": "fusion", + "shape": "(f64[15361,50,1,1,1500]{4,3,2,1,0}, f64[15361,50,1,1,1500]{4,3,2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_add_multiply_transpose_fusion", + "ms": 5.1975917, + "opcode": "fusion", + "shape": "(f64[50,1500,1500]{2,1,0}, f64[50,1500,1500]{2,1,0}, f64[50,1500,1500]{2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:61", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:61 (initialize)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:72 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:508 (reconstruction_positive_only_from)" + ] + }, + { + "instruction": "input_transpose_fusion.3", + "ms": 1.4619218, + "opcode": "fusion", + "shape": "f64[50,1500,1500]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1157 (AbstractInversion.log_det_regularization_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:348 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "input_scatter_fusion.1", + "ms": 0.4247018, + "opcode": "fusion", + "shape": "f64[50,1500,1500]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:579", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:579 (pixel_splitted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:137 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_scatter_fusion.6", + "ms": 0.20282440000000002, + "opcode": "fusion", + "shape": "f64[15361,50,1500]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:353", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:353 (mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:283 (Mapper.mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:91 (AbstractInversionImaging._mapping_matrix_for_convolution_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:137 (AbstractInversionImaging.operated_mapping_matrix_list)" + ] + }, + { + "instruction": "input_scatter_fusion.2", + "ms": 0.1654833, + "opcode": "fusion", + "shape": "f64[50,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:70", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:70 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:120 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + } + ], + "ray_trace_data_grid": [ + { + "instruction": "input_reduce_fusion.29", + "ms": 0.0028384, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:506", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:506 (FlatLambdaCDM._simpson_1d)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:644 (FlatLambdaCDM.angular_diameter_distance_kpc_z1z2)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:133 (LensingCosmology.angular_diameter_distance_to_earth_in_kpc_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:362 (LensingCosmology.scaling_factor_between_redshifts_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer_util.py:252 (traced_grid_2d_list_from)" + ] + }, + { + "instruction": "input_reduce_fusion.31", + "ms": 0.0028255999999999997, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:506", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:506 (FlatLambdaCDM._simpson_1d)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:644 (FlatLambdaCDM.angular_diameter_distance_kpc_z1z2)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:151 (LensingCosmology.angular_diameter_distance_between_redshifts_in_kpc_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:355 (LensingCosmology.scaling_factor_between_redshifts_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer_util.py:252 (traced_grid_2d_list_from)" + ] + }, + { + "instruction": "input_reduce_fusion.30", + "ms": 0.0026688, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:503", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:503 (FlatLambdaCDM._simpson_1d)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:644 (FlatLambdaCDM.angular_diameter_distance_kpc_z1z2)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:133 (LensingCosmology.angular_diameter_distance_to_earth_in_kpc_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:362 (LensingCosmology.scaling_factor_between_redshifts_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer_util.py:252 (traced_grid_2d_list_from)" + ] + }, + { + "instruction": "input_reduce_fusion.32", + "ms": 0.0026271999999999997, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:503", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:503 (FlatLambdaCDM._simpson_1d)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:644 (FlatLambdaCDM.angular_diameter_distance_kpc_z1z2)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:151 (LensingCosmology.angular_diameter_distance_between_redshifts_in_kpc_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:355 (LensingCosmology.scaling_factor_between_redshifts_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer_util.py:252 (traced_grid_2d_list_from)" + ] + }, + { + "instruction": "loop_divide_fusion.1", + "ms": 0.0024672, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:380", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:380 (LensingCosmology.scaling_factor_between_redshifts_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer_util.py:252 (traced_grid_2d_list_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer.py:632 (Tracer.traced_grid_2d_list_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/structures/decorators/abstract.py:93 (AbstractMaker.evaluate_func)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/structures/decorators/abstract.py:110 (AbstractMaker.result)" + ] + } + ], + "border_relocator": [ + { + "instruction": "custom-call.2", + "ms": 0.043046600000000004, + "opcode": "custom-call", + "shape": "(f64[50,2,2]{2,1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_add_rsqrt_fusion", + "ms": 0.0196705, + "opcode": "fusion", + "shape": "(f64[50,15361]{1,0}, f64[50,15361]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:311", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:311 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:423 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:208 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "eigh.36", + "ms": 0.014928299999999999, + "opcode": "custom-call", + "shape": "(f64[50,2,2]{1,2,0}, f64[50,2]{1,0}, s32[50]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_concatenate_fusion.7", + "ms": 0.013673699999999999, + "opcode": "fusion", + "shape": "f64[50,15361,2]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:323", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:323 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:423 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:208 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_add_rsqrt_fusion.1", + "ms": 0.003971199999999999, + "opcode": "fusion", + "shape": "(f64[50,1500]{1,0}, f64[50,1500]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:311", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:311 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:458 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_cosine_sine_fusion", + "ms": 0.0038721, + "opcode": "fusion", + "shape": "(f64[50]{0}, f64[50]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:301", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:301 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:458 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + } + ], + "mesh_locate_walk": [ + { + "instruction": "loop_reduce_fusion", + "ms": 0.5966102000000001, + "opcode": "fusion", + "shape": "(f64[50,21361]{1,0}, s64[50,21361]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:264", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:264 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:264 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)" + ] + }, + { + "instruction": "loop_slice_subtract_fusion", + "ms": 0.5114101000000002, + "opcode": "fusion", + "shape": "(f64[50,21361,1]{2,1,0}, f64[50,21361,1]{2,1,0}, f64[50,21361,1]{2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:236", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:236 (_walk_from_seed..cross)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:250 (_walk_from_seed..weights_of)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:262 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)" + ] + }, + { + "instruction": "loop_select_fusion", + "ms": 0.23996750000000003, + "opcode": "fusion", + "shape": "(pred[50,21361]{1,0}, pred[50,21361]{1,0}, s32[50,21361]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_gather_fusion.1", + "ms": 0.16270249999999997, + "opcode": "fusion", + "shape": "s32[1068050,1,1,3]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:239", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:239 (_walk_from_seed..weights_of)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:262 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)" + ] + }, + { + "instruction": "loop_gather_fusion", + "ms": 0.14548350000000007, + "opcode": "fusion", + "shape": "s32[1068050,1,1,1]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:267", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:267 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)" + ] + }, + { + "instruction": "input_concatenate_fusion", + "ms": 0.0859146, + "opcode": "fusion", + "shape": "s32[50,21361,2]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:242", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:242 (_walk_from_seed..weights_of)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:262 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)" + ] + } + ], + "mesh_construction": [ + { + "instruction": "loop_compare_fusion.4", + "ms": 0.0110433, + "opcode": "fusion", + "shape": "pred[50,15361,3]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:732", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:732 (DelaunayInterface.sizes)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:958 (InterpolatorDelaunay._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/abstract.py:36 (AbstractInterpolator.mappings)" + ] + }, + { + "instruction": "loop_compare_fusion.5", + "ms": 0.0068769, + "opcode": "fusion", + "shape": "pred[50,6000,3]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:736", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:736 (DelaunayInterface.splitted_sizes)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:997 (InterpolatorDelaunay._mappings_sizes_weights_split)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:124 (AdaptSplit.regularization_matrix_from)" + ] + }, + { + "instruction": "loop_transpose_fusion.1", + "ms": 0.0030465, + "opcode": "fusion", + "shape": "f64[50,1500,2]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:820", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:820 (InterpolatorDelaunay.mesh_grid_xy)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:847 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + }, + { + "instruction": "loop_multiply_fusion.4", + "ms": 0.0028191999999999996, + "opcode": "fusion", + "shape": "f64[50,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:412", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:412 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "mesh_seed_argmin": [ + { + "instruction": "input_reduce_fusion", + "ms": 3.9399414000000013, + "opcode": "fusion", + "shape": "(f64[50,1024]{1,0}, s64[50,1024]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:191", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:191 (_nearest_vertex_seed_from..argmin_chunk)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)" + ] + }, + { + "instruction": "loop_dynamic_update_slice_fusion", + "ms": 0.05092849999999988, + "opcode": "fusion", + "shape": "s32[21,50,1024]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_add_fusion", + "ms": 0.03184979999999993, + "opcode": "fusion", + "shape": "s64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_broadcast_fusion.4", + "ms": 0.0039809, + "opcode": "fusion", + "shape": "s32[21,50,1024]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "mesh_dual_areas": [ + { + "instruction": "input_scatter_fusion.9", + "ms": 0.0051521, + "opcode": "fusion", + "shape": "f64[50,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:393", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:393 (_dual_areas_padded_jnp)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:408 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + }, + { + "instruction": "input_scatter_fusion.7", + "ms": 0.005110600000000002, + "opcode": "fusion", + "shape": "f64[50,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:393", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:393 (_dual_areas_padded_jnp)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:408 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + } + ], + "regularization_H": [ + { + "instruction": "loop_broadcast_fusion", + "ms": 0.9053372000000002, + "opcode": "fusion", + "shape": "f64[50,1500,1500]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:579", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:579 (pixel_splitted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:137 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_scatter_fusion.10", + "ms": 0.008848199999999999, + "opcode": "fusion", + "shape": "f64[50,1500,1500]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:615", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:615 (pixel_splitted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:137 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "curvature_matrix_F": [ + { + "instruction": "cublas-lt-matmul.2", + "ms": 220.05394200000003, + "opcode": "custom-call", + "shape": "(f64[50,1500,1500]{2,1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "inversion_other": [ + { + "instruction": "cholesky.66", + "ms": 15.32045429999997, + "opcode": "custom-call", + "shape": "(f64[50,1500,1500]{1,2,0}, s32[50]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1078 (AbstractInversion.log_det_curvature_reg_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:347 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "cholesky.77", + "ms": 14.939852699999955, + "opcode": "custom-call", + "shape": "(f64[50,1500,1500]{1,2,0}, s32[50]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1157 (AbstractInversion.log_det_regularization_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:348 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "input_reduce_fusion.27", + "ms": 0.5269170999999999, + "opcode": "fusion", + "shape": "f64[50,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:946", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:946 (AbstractInversion.regularization_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:346 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)", + "/mnt/ral/jnightin/autolens_profiling_wt/certified-solver-phase-c1-lane-rate/scripts/imaging/likelihood_breakdown/fixed_light_trace.py:1195 (_captured_likelihood_fn.._likelihood)" + ] + }, + { + "instruction": "input_reduce_fusion.21", + "ms": 0.007811199999999999, + "opcode": "fusion", + "shape": "f64[50]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:985", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:985 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1157 (AbstractInversion.log_det_regularization_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:348 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "input_reduce_fusion.22", + "ms": 0.0078048, + "opcode": "fusion", + "shape": "f64[50]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:985", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:985 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1078 (AbstractInversion.log_det_curvature_reg_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:347 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "input_reduce_fusion.28", + "ms": 0.0056833000000000005, + "opcode": "fusion", + "shape": "f64[50]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:944", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:944 (AbstractInversion.regularization_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:346 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)", + "/mnt/ral/jnightin/autolens_profiling_wt/certified-solver-phase-c1-lane-rate/scripts/imaging/likelihood_breakdown/fixed_light_trace.py:1195 (_captured_likelihood_fn.._likelihood)" + ] + } + ], + "pdip_solve": [ + { + "instruction": "cholesky.22", + "ms": 385.256094299974, + "opcode": "custom-call", + "shape": "(f64[50,1500,1500]{1,2,0}, s32[50]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:106", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:106 (factorize_kkt)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:212 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve", + "ms": 57.985238499999674, + "opcode": "custom-call", + "shape": "(f64[50,1500,1]{1,2,0}, s8[800]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:213 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve.2", + "ms": 56.42095830000068, + "opcode": "custom-call", + "shape": "(f64[50,1500,1]{1,2,0}, s8[800]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:217 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve.3", + "ms": 54.835582500000335, + "opcode": "custom-call", + "shape": "(f64[50,1500,1]{1,2,0}, s8[800]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:217 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve.1", + "ms": 54.71606110000037, + "opcode": "custom-call", + "shape": "(f64[50,1500,1]{1,2,0}, s8[800]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:213 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "input_transpose_fusion", + "ms": 32.34523870000001, + "opcode": "fusion", + "shape": "f64[50,1500,1500]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:106", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:106 (factorize_kkt)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:212 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + } + ], + "data_vector_D": [ + { + "instruction": "input_reduce_fusion.19", + "ms": 6.1533866999999995, + "opcode": "fusion", + "shape": "f64[92,50,1500]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123 (data_vector_via_blurred_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:67 (InversionImagingMapping.data_vector)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:699 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_reduce_fusion.45", + "ms": 0.0422278, + "opcode": "fusion", + "shape": "f64[50,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123 (data_vector_via_blurred_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:67 (InversionImagingMapping.data_vector)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:699 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "mapped_reconstruction": [ + { + "instruction": "input_reduce_fusion.23", + "ms": 5.520571, + "opcode": "fusion", + "shape": "f64[15361,50]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163 (mapped_reconstructed_data_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:120 (InversionImagingMapping._mapped_reconstructed_data_dict_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:196 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + } + ] + }, + "stage_audit_note": "The HLO instructions that contributed most of each stage's milliseconds, with their full source stack. A stage row is only as good as the rules that built it; this is how a reader checks a row against the HLO instead of trusting it.", + "untraced_wall_ms": 1640.3460579000239, + "reconciliation_vs_untraced_pct": 1.1533456680588061, + "wall_basis": "wall_ms is the TRACED run's wall, the run these kernel durations came from. untraced_wall_ms is the same executable without the profiler; the difference is the profiler's overhead and belongs in neither the stages nor the idle row.", + "calls": 10, + "call_split": "per-call (first-instruction recurrence)", + "call_blocks": 10, + "events": 212350, + "streams": [ + "Stream #14(MemcpyD2D,Compute,MemcpyD2H,MemcpyH2D)" + ], + "per_stage_ms": { + "border_relocator": { + "median_ms": 0.1244815, + "min_ms": 0.12393700000000002, + "max_ms": 0.125281 + }, + "chi_squared_evidence": { + "median_ms": 0.0168, + "min_ms": 0.016257, + "max_ms": 0.017152 + }, + "curvature_matrix_F": { + "median_ms": 219.5533085, + "min_ms": 218.473615, + "max_ms": 222.128423 + }, + "data_vector_D": { + "median_ms": 6.1951225, + "min_ms": 6.163362, + "max_ms": 6.21773 + }, + "inversion_other": { + "median_ms": 30.77405999999999, + "min_ms": 30.379458000000003, + "max_ms": 31.200743999999958 + }, + "mapped_reconstruction": { + "median_ms": 5.522114500000001, + "min_ms": 5.510139, + "max_ms": 5.52854 + }, + "mapping_matrix": { + "median_ms": 5.808398500000001, + "min_ms": 5.735051, + "max_ms": 5.892574000000001 + }, + "mesh_construction": { + "median_ms": 0.023535999999999998, + "min_ms": 0.023296, + "max_ms": 0.026272 + }, + "mesh_dual_areas": { + "median_ms": 0.0102725, + "min_ms": 0.010144, + "max_ms": 0.010369 + }, + "mesh_locate_walk": { + "median_ms": 2.0361475, + "min_ms": 2.0267700000000013, + "max_ms": 2.046071 + }, + "mesh_qhull_callback": { + "median_ms": 0.617202999999999, + "min_ms": 0.6146919999999994, + "max_ms": 0.6192389999999992 + }, + "mesh_seed_argmin": { + "median_ms": 4.022386000000003, + "min_ms": 4.014906000000003, + "max_ms": 4.0409700000000015 + }, + "mixed_fusion": { + "median_ms": 62.823379499999994, + "min_ms": 62.387893999999996, + "max_ms": 63.231229 + }, + "other": { + "median_ms": 0.4803885, + "min_ms": 0.47908000000000023, + "max_ms": 0.4827249999999999 + }, + "pdip_solve": { + "median_ms": 709.7905464999872, + "min_ms": 708.9586439999897, + "max_ms": 711.2571399999891 + }, + "psf_convolution_mapping_matrix": { + "median_ms": 336.610339, + "min_ms": 336.191826, + "max_ms": 337.291494 + }, + "ray_trace_data_grid": { + "median_ms": 0.013392000000000001, + "min_ms": 0.013248000000000001, + "max_ms": 0.013664000000000003 + }, + "regularization_H": { + "median_ms": 0.916474, + "min_ms": 0.90577, + "max_ms": 0.924587 + } + }, + "stage_order": [ + "ray_trace_data_grid", + "border_relocator", + "mesh_qhull_callback", + "mesh_seed_argmin", + "mesh_locate_walk", + "mesh_dual_areas", + "mesh_construction", + "mapping_matrix", + "psf_convolution_mapping_matrix", + "data_vector_D", + "curvature_matrix_F", + "regularization_H", + "pdip_solve", + "mapped_reconstruction", + "chi_squared_evidence", + "inversion_other", + "mixed_fusion", + "other" + ], + "mixed_fusion": { + "ms": 62.823379499999994, + "constituent_stage_sets": { + "curvature_matrix_F + psf_convolution_mapping_matrix": 54.805799500000006, + "curvature_reg_reduce_gather + inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter + regularization_H": 5.1975917, + "inversion_other + regularization_H": 1.9066653999999998, + "inversion_other + mapping_matrix + mesh_construction + mesh_interpolation_weights": 0.23201489999999997, + "mapping_matrix + mesh_interpolation_weights": 0.1654833, + "grids_and_structures + mass_profile_deflections + ray_trace_data_grid": 0.0713064, + "inversion_other + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + regularization_H": 0.0632552, + "inversion_other + mesh_construction + mesh_dual_areas + mesh_interpolation_weights": 0.056589400000000005, + "inversion_other + mesh_construction + mesh_interpolation_weights": 0.055990999999999985, + "mesh_dual_areas + mesh_interpolation_weights": 0.04413469999999999, + "mesh_construction + regularization_H": 0.029385799999999997, + "mesh_seed_argmin + regularization_H": 0.0222049, + "inversion_other + mesh_dual_areas + mesh_locate_walk": 0.018598600000000003, + "mesh_locate_walk + mesh_seed_argmin": 0.0185825, + "inversion_other + pdip_solve + regularization_H": 0.0182114, + "inversion_other + mapped_reconstruction + reconstruction_scatter + regularization_H": 0.0127905, + "inversion_other + mapped_reconstruction": 0.0122881, + "mesh_dual_areas + mesh_interpolation_weights + regularization_H": 0.0118178, + "inversion_other + mapped_reconstruction + reconstruction_scatter": 0.0099104, + "inversion_other + mesh_locate_walk + mesh_seed_argmin": 0.006636899999999999, + "mapping_matrix + regularization_H": 0.0055424, + "grids_and_structures + mass_profile_deflections": 0.005216, + "inversion_other + ray_trace_data_grid": 0.0049282, + "inversion_other + mesh_construction + mesh_interpolation_weights + regularization_H": 0.0044704, + "inversion_other + mesh_interpolation_weights": 0.0043297, + "inversion_other + mesh_construction + regularization_H": 0.0039265, + "inversion_other + mapping_matrix": 0.0028321, + "chi_squared_evidence + inversion_other": 0.0023584000000000005 + }, + "example_kernels": { + "curvature_matrix_F + psf_convolution_mapping_matrix": [ + "loop_divide_gather_fusion" + ], + "curvature_reg_reduce_gather + inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter + regularization_H": [ + "input_add_multiply_transpose_fusion" + ], + "inversion_other + regularization_H": [ + "input_reduce_fusion.42", + "input_reduce_fusion.35", + "input_reduce_fusion.36", + "input_reduce_fusion.37" + ], + "inversion_other + mapping_matrix + mesh_construction + mesh_interpolation_weights": [ + "input_scatter_fusion.6", + "loop_compare_fusion.3", + "input_concatenate_fusion.3" + ], + "mapping_matrix + mesh_interpolation_weights": [ + "input_scatter_fusion.2" + ], + "grids_and_structures + mass_profile_deflections + ray_trace_data_grid": [ + "loop_sqrt_fusion.1", + "loop_slice_fusion.3", + "loop_subtract_fusion.2", + "loop_sqrt_fusion" + ], + "inversion_other + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + regularization_H": [ + "loop_abs_fusion", + "loop_convert_select_fusion" + ], + "inversion_other + mesh_construction + mesh_dual_areas + mesh_interpolation_weights": [ + "loop_abs_add_fusion" + ], + "inversion_other + mesh_construction + mesh_interpolation_weights": [ + "loop_slice_fusion.1", + "loop_slice_fusion" + ], + "mesh_dual_areas + mesh_interpolation_weights": [ + "input_concatenate_fusion.8" + ] + }, + "prorated_estimate_ms": { + "curvature_matrix_F": 27.402899750000003, + "psf_convolution_mapping_matrix": 27.402899750000003, + "inversion_other": 1.95984184, + "regularization_H": 1.8764493650000003, + "mapped_reconstruction": 0.878910425, + "reconstruction_scatter": 0.8727663750000001, + "pdip_solve": 0.8723357500000001, + "curvature_reg_reduce_gather": 0.8662652833333334, + "mesh_interpolation_weights": 0.21549649833333331, + "mapping_matrix": 0.144932625, + "mesh_construction": 0.12058511499999998, + "mesh_dual_areas": 0.059004539999999994, + "grids_and_structures": 0.026376800000000002, + "mass_profile_deflections": 0.026376800000000002, + "ray_trace_data_grid": 0.026232900000000003, + "mesh_seed_argmin": 0.022606, + "mesh_locate_walk": 0.017703083333333335, + "chi_squared_evidence": 0.0011792000000000003 + }, + "prorated_note": "ESTIMATE ONLY \u2014 a mixed fusion's time split equally across the stages its constituents span. Never summed into the measured table, never reconciled." + }, + "other_sources_ms": { + "copy.107": 0.10212330000000037, + "copy.108": 0.10080099999999997, + "copy.109": 0.1006061000000001, + "copy.106": 0.09933850000000043, + "copy.105": 0.05873000000000005, + "loop_broadcast_fusion.6": 0.0048384, + "loop_broadcast_fusion.2": 0.0038304000000000003, + "loop_broadcast_fusion.9": 0.0032864, + "copy.76": 0.0024896, + "copy.104": 0.0023264, + "copy.37": 0.0022048 + }, + "device_span_ms": 1660.0121586, + "device_busy_ms": 1386.0855905, + "device_idle_ms": 273.92656809999994, + "largest_idle_gaps": [ + { + "gap_ms": 5.546698, + "after": "pure_callback.0", + "before": "pure_callback.0" + }, + { + "gap_ms": 5.225639, + "after": "pure_callback.0", + "before": "pure_callback.0" + }, + { + "gap_ms": 5.150119, + "after": "pure_callback.0", + "before": "pure_callback.0" + }, + { + "gap_ms": 5.149543, + "after": "pure_callback.0", + "before": "pure_callback.0" + }, + { + "gap_ms": 5.035975, + "after": "pure_callback.0", + "before": "pure_callback.0" + }, + { + "gap_ms": 5.012902, + "after": "pure_callback.0", + "before": "pure_callback.0" + }, + { + "gap_ms": 5.010086, + "after": "pure_callback.0", + "before": "pure_callback.0" + }, + { + "gap_ms": 4.987878, + "after": "pure_callback.0", + "before": "pure_callback.0" + } + ], + "kernel_ms": 1385.3383499999873, + "sum_ms": 1659.2649180999872, + "wall_ms": 1660.119595100332, + "host_outside_span_ms": 0.10743650033191443, + "reconciliation_pct": -0.05148285719096537, + "unjoined_ms": 0.0, + "unjoined_pct": 0.0, + "other_ms": 0.4803885, + "other_pct": 0.028936981493250004, + "note": "Stage rows attribute the command-buffers-OFF program (see the module docstring): kernel times are the same, the launch overhead the CUDA graphs remove is not. sum_ms = kernel rows + device_idle_ms; the residual against wall_ms is host_outside_span_ms (dispatch before the first kernel, teardown after the last).", + "per_stage_ms_per_lane": { + "border_relocator": 0.00248963, + "chi_squared_evidence": 0.000336, + "curvature_matrix_F": 4.39106617, + "data_vector_D": 0.12390245, + "inversion_other": 0.6154811999999998, + "mapped_reconstruction": 0.11044229000000001, + "mapping_matrix": 0.11616797000000002, + "mesh_construction": 0.00047071999999999994, + "mesh_dual_areas": 0.00020545, + "mesh_locate_walk": 0.04072295000000001, + "mesh_qhull_callback": 0.01234405999999998, + "mesh_seed_argmin": 0.08044772000000006, + "mixed_fusion": 1.25646759, + "other": 0.00960777, + "pdip_solve": 14.195810929999743, + "psf_convolution_mapping_matrix": 6.73220678, + "ray_trace_data_grid": 0.00026784000000000004, + "regularization_H": 0.01832948 + }, + "per_lane_divisor": 50, + "host_callback": { + "pure_callback_span_ms": 264.0023656999999, + "qhull_ms": 230.61412299999992, + "callback_body_ms_note": "the OUTERMOST matching body event, not a sum: under the probe the body appears twice (the wrapper and the timed re-implementation it calls) and summing them would count the same work twice", + "events_by_name": { + "pure_callback.0": { + "count": 500, + "ms": 264.0023656999999 + }, + "$callback.py:815 _wrapped_callback": { + "count": 500, + "ms": 242.46257949999992 + }, + "$callback.py:224 _callback": { + "count": 500, + "ms": 241.3029058000001 + }, + "$callback.py:74 pure_callback_impl": { + "count": 500, + "ms": 240.88512830000033 + }, + "$callback.py:69 __call__": { + "count": 500, + "ms": 231.3596381 + }, + "$delaunay.py:162 ": { + "count": 500, + "ms": 231.04208280000012 + }, + "$host_callback_probe.py:225 wrapped": { + "count": 500, + "ms": 230.61412299999992 + }, + "$host_callback_probe.py:160 _timed_tri_only": { + "count": 500, + "ms": 230.23205680000007 + }, + "$callback.py:822 ": { + "count": 2000, + "ms": 0.7266732999999993 + }, + "ThenExecuteCallback:GetEventForComputeStreamSyncPoint": { + "count": 10, + "ms": 0.0321138 + }, + "$__init__.py:132 _xla_gc_callback": { + "count": 4, + "ms": 0.0008500000000000001 + } + }, + "note": "HOST milliseconds per traced BATCH (the whole invocation), aggregated by name because the events nest. Not a row of the device table: the device pays for them as the idle gaps largest_idle_gaps names." + }, + "host_callback_ms": 264.0023656999999 + }, + "hlo_census": { + "status": "excluded", + "reason": "The legacy census anchors PyAutoArray source line numbers that moved after the phase-1 run. No batched attribution is published from unsupported anchors; the device-event table and wall reconciliation remain valid." + }, + "trace_split": { + "expected_calls": 10, + "executions_per_invocation": 1, + "method": "per-call (first-instruction recurrence)", + "note": "DECIDED IN CODE: the scalar arm's trace is split by trace_calls * B, so every lane's execution is its own block and the per-stage median is taken over all of them. The vmap arm's is split by trace_calls, one block per batched execution, and per_stage_ms_per_lane divides those rows by B." + } + }, + "scalar": { + "arm": "scalar", + "program": "jax.jit(fn), called B times", + "stands_for": "Nautilus(use_jax_vmap=False, use_jax_jit=True). Plain use_jax_vmap=False is UNJITTED and is NOT this arm", + "hlo_source": "jax.jit(fn).lower(lane_trees[0]) \u2014 the same program phase 1 traced", + "batch_wall_ms": 2507.076561800204, + "wall_production_nesting_ms": 2507.076561800204, + "wall_aot_command_buffers_on_ms": 2511.1598409999715, + "wall_aot_command_buffers_off_ms": 2534.2873237001186, + "command_buffer_delta_ms": 23.127482700147084, + "production_nesting_vs_aot_on_delta_ms": -4.083279199767276, + "production_nesting_vs_aot_on_delta_pct": -0.1626053082364231, + "wall_per_lane_ms": 50.141531236004084, + "wall_per_lane_command_buffers_off_ms": 50.68574647400237, + "traced_batch_wall_ms": 2603.8891763997526, + "untraced_batch_wall_ms": 2535.448259599798, + "traced_wall_per_lane_ms": 52.07778352799505, + "callback_count_per_call": 50.0, + "callback_count_per_lane": 1.0, + "callback_expectation": "1 per likelihood evaluation, B per batch", + "host_qhull_ms": 230.09632370012696, + "host_tables_ms": 5.85484240182268, + "host_qhull_ms_per_lane": 4.601926474002539, + "host_tables_ms_per_lane": 0.1170968480364536, + "host_callback_probe": { + "calls": 500, + "qhull_ms_total": 2300.9632370012696, + "tables_ms_total": 58.5484240182268, + "total_ms_total": 2359.5116610194964, + "qhull_ms_mean": 4.601926474002539, + "tables_ms_mean": 0.1170968480364536, + "total_ms_mean": 4.719023322038993, + "non_finite_calls": 0, + "n_points": [ + 1500 + ] + }, + "host_callback_records_first": [ + { + "n_points": 1500, + "qhull_ms": 4.813151001144433, + "tables_ms": 0.19559900101739913, + "total_ms": 5.0087500021618325, + "finite": true + }, + { + "n_points": 1500, + "qhull_ms": 4.6260109993454535, + "tables_ms": 0.12312000035308301, + "total_ms": 4.7491309996985365, + "finite": true + }, + { + "n_points": 1500, + "qhull_ms": 4.5573320021503605, + "tables_ms": 0.14070899851503782, + "total_ms": 4.698041000665398, + "finite": true + }, + { + "n_points": 1500, + "qhull_ms": 4.593382000166457, + "tables_ms": 0.12009900092380121, + "total_ms": 4.713481001090258, + "finite": true + } + ], + "device_idle_ms": 7.555721706000007, + "device_idle_ms_per_lane": 7.555721706000007, + "trace": { + "parser": "ProfileData.from_file(xplane) + as_text() + stack_frame_index(proto field 17)", + "stage_audit": { + "chi_squared_evidence": [ + { + "instruction": "input_reduce_fusion.26", + "ms": 0.003919388, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:104", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:104 (noise_normalization_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:98 (AbstractFit.noise_normalization)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:306 (FitDataset.noise_normalization)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:349 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)" + ] + }, + { + "instruction": "input_reduce_fusion.28", + "ms": 0.0037901040000000003, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:90", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:90 (chi_squared_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:87 (AbstractFit.chi_squared)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:293 (FitDataset.chi_squared)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:345 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)" + ] + }, + { + "instruction": "loop_multiply_fusion.2", + "ms": 0.003026890000000005, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:300", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:300 (AbstractNDArray.__pow__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:60 (unwrap_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:35 (to_new_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:78 (chi_squared_map_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:78 (AbstractFit.chi_squared_map)" + ] + } + ], + "psf_convolution_mapping_matrix": [ + { + "instruction": "input_scatter_fusion", + "ms": 1.990607756, + "opcode": "fusion", + "shape": "f64[1500,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.19.0", + "ms": 1.76163641, + "opcode": "fft", + "shape": "f64[1500,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.15.0", + "ms": 1.368750455999999, + "opcode": "fft", + "shape": "c128[1500,180,91]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.17.0", + "ms": 0.9792810760000001, + "opcode": "fft", + "shape": "c128[1500,91,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_transpose_fusion.1", + "ms": 0.5133236019999997, + "opcode": "fusion", + "shape": "c128[1500,91,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "wrapped_transpose", + "ms": 0.4998654180000001, + "opcode": "fusion", + "shape": "c128[1500,180,91]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + } + ], + "mapping_matrix": [ + { + "instruction": "loop_broadcast_fusion.2", + "ms": 0.11105047399999984, + "opcode": "fusion", + "shape": "f64[15361,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:342", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:342 (mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:283 (Mapper.mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:91 (AbstractInversionImaging._mapping_matrix_for_convolution_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:137 (AbstractInversionImaging.operated_mapping_matrix_list)" + ] + }, + { + "instruction": "input_reduce_fusion.29", + "ms": 0.0029026840000000234, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:120 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + }, + { + "instruction": "loop_divide_fusion", + "ms": 0.002370827999999994, + "opcode": "fusion", + "shape": "f64[1500]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:92", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:92 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:120 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + } + ], + "mixed_fusion": [ + { + "instruction": "loop_divide_gather_fusion", + "ms": 1.0215624380000001, + "opcode": "fusion", + "shape": "(f64[15361,1,1,1500]{3,2,1,0}, f64[15361,1,1,1500]{3,2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_add_multiply_transpose_fusion", + "ms": 0.06107873599999999, + "opcode": "fusion", + "shape": "(f64[1500,1500]{1,0}, f64[1500,1500]{1,0}, f64[1500,1500]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:61", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:61 (initialize)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:72 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:508 (reconstruction_positive_only_from)" + ] + }, + { + "instruction": "input_transpose_fusion.3", + "ms": 0.024260194000000013, + "opcode": "fusion", + "shape": "f64[1500,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1157 (AbstractInversion.log_det_regularization_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:348 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "input_scatter_fusion.2", + "ms": 0.016409972000000012, + "opcode": "fusion", + "shape": "f64[1500,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:579", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:579 (pixel_splitted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:137 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_scatter_fusion.3", + "ms": 0.014906570000000003, + "opcode": "fusion", + "shape": "f64[1500]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:70", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:70 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:120 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + }, + { + "instruction": "loop_abs_fusion", + "ms": 0.014613888000000004, + "opcode": "fusion", + "shape": "(f64[6000,1]{1,0}, f64[6000,1]{1,0}, f64[6000,1]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:613", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:613 (triangle_area_xp)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:657 (pixel_weights_delaunay_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:982 (InterpolatorDelaunay._mappings_sizes_weights_split)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:124 (AdaptSplit.regularization_matrix_from)" + ] + } + ], + "ray_trace_data_grid": [ + { + "instruction": "input_reduce_fusion.18", + "ms": 0.003239702000000011, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:506", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:506 (FlatLambdaCDM._simpson_1d)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:644 (FlatLambdaCDM.angular_diameter_distance_kpc_z1z2)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:133 (LensingCosmology.angular_diameter_distance_to_earth_in_kpc_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:362 (LensingCosmology.scaling_factor_between_redshifts_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer_util.py:252 (traced_grid_2d_list_from)" + ] + }, + { + "instruction": "input_reduce_fusion.20", + "ms": 0.002753751999999984, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:506", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:506 (FlatLambdaCDM._simpson_1d)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:644 (FlatLambdaCDM.angular_diameter_distance_kpc_z1z2)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:151 (LensingCosmology.angular_diameter_distance_between_redshifts_in_kpc_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:355 (LensingCosmology.scaling_factor_between_redshifts_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer_util.py:252 (traced_grid_2d_list_from)" + ] + }, + { + "instruction": "input_reduce_fusion.19", + "ms": 0.0026018700000000118, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:503", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:503 (FlatLambdaCDM._simpson_1d)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:644 (FlatLambdaCDM.angular_diameter_distance_kpc_z1z2)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:133 (LensingCosmology.angular_diameter_distance_to_earth_in_kpc_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:362 (LensingCosmology.scaling_factor_between_redshifts_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer_util.py:252 (traced_grid_2d_list_from)" + ] + }, + { + "instruction": "input_reduce_fusion.21", + "ms": 0.0025937420000000195, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:503", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:503 (FlatLambdaCDM._simpson_1d)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:644 (FlatLambdaCDM.angular_diameter_distance_kpc_z1z2)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:151 (LensingCosmology.angular_diameter_distance_between_redshifts_in_kpc_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:355 (LensingCosmology.scaling_factor_between_redshifts_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer_util.py:252 (traced_grid_2d_list_from)" + ] + }, + { + "instruction": "loop_divide_fusion.1", + "ms": 0.002407555999999992, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:380", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:380 (LensingCosmology.scaling_factor_between_redshifts_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer_util.py:252 (traced_grid_2d_list_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer.py:632 (Tracer.traced_grid_2d_list_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/structures/decorators/abstract.py:93 (AbstractMaker.evaluate_func)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/structures/decorators/abstract.py:110 (AbstractMaker.result)" + ] + } + ], + "border_relocator": [ + { + "instruction": "eigh.45", + "ms": 0.07489312200000166, + "opcode": "custom-call", + "shape": "(f64[2,2]{0,1}, f64[2]{0}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "custom-call.2", + "ms": 0.007958090000000027, + "opcode": "custom-call", + "shape": "(f64[2,2]{1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_reduce_fusion.15", + "ms": 0.005655388000000012, + "opcode": "fusion", + "shape": "(f64[], f64[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:269", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:269 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:454 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_concatenate_fusion.3", + "ms": 0.003701535999999994, + "opcode": "fusion", + "shape": "f64[15361,2]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:323", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:323 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:423 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:208 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_add_fusion.5", + "ms": 0.003518159999999994, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:423 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:208 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_select_sine_fusion", + "ms": 0.003516563999999997, + "opcode": "fusion", + "shape": "(f64[], f64[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:301", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:301 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:458 (BorderRelocator.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:176 (AbstractMesh.relocated_mesh_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/delaunay.py:214 (Delaunay.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + } + ], + "mesh_construction": [ + { + "instruction": "input_concatenate_fusion.7", + "ms": 0.0020564660000000124, + "opcode": "fusion", + "shape": "f64[1500,2]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:820", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:820 (InterpolatorDelaunay.mesh_grid_xy)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:847 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + } + ], + "mesh_qhull_callback": [ + { + "instruction": "pure_callback.4", + "ms": 0.01067238399999995, + "opcode": "custom-call", + "shape": "(s32[3000,3]{1,0}, s32[3000,3]{1,0}, s32[1500]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:161", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:161 (_jax_delaunay_tables)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:405 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + } + ], + "other": [ + { + "instruction": "copy.72", + "ms": 0.04207180200000365, + "opcode": "copy", + "shape": "f64[1,1024,2]{2,1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.35", + "ms": 0.016947231999999895, + "opcode": "copy", + "shape": "s32[21361]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.40", + "ms": 0.001985231999999996, + "opcode": "copy", + "shape": "s64[1500]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "loop_broadcast_fusion.1", + "ms": 0.0019820140000000115, + "opcode": "fusion", + "shape": "(pred[21361]{0}, pred[21361]{0})", + "source": "", + "stack": [] + }, + { + "instruction": "loop_broadcast_fusion.4", + "ms": 0.0017839420000000104, + "opcode": "fusion", + "shape": "(f64[1500]{0}, f64[1500]{0}, f64[1500]{0}, f64[1500]{0})", + "source": "", + "stack": [] + }, + { + "instruction": "copy.71", + "ms": 0.001688267999999995, + "opcode": "copy", + "shape": "s32[]", + "source": "", + "stack": [] + } + ], + "mesh_seed_argmin": [ + { + "instruction": "input_reduce_fusion", + "ms": 0.15274307000001294, + "opcode": "fusion", + "shape": "(f64[1024]{0}, s64[1024]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:191", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:191 (_nearest_vertex_seed_from..argmin_chunk)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)" + ] + }, + { + "instruction": "loop_dynamic_update_slice_fusion", + "ms": 0.041346231999997825, + "opcode": "fusion", + "shape": "s32[21,1024]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_add_fusion", + "ms": 0.0318549099999961, + "opcode": "fusion", + "shape": "s64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_broadcast_fusion", + "ms": 0.001965440000000018, + "opcode": "fusion", + "shape": "s32[21,1024]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:204 (_nearest_vertex_seed_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:351 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "regularization_H": [ + { + "instruction": "loop_select_fusion.3", + "ms": 0.020039702, + "opcode": "fusion", + "shape": "f64[1500,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:549", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:549 (pixel_splitted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:137 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_scatter_fusion.10", + "ms": 0.0020833440000000048, + "opcode": "fusion", + "shape": "f64[1500,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:615", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:615 (pixel_splitted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:137 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_concatenate_fusion.9", + "ms": 0.0018603019999999843, + "opcode": "fusion", + "shape": "pred[3]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:91", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:91 (split_points_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:410 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + }, + { + "instruction": "input_concatenate_fusion.8", + "ms": 0.001853195999999986, + "opcode": "fusion", + "shape": "pred[3]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:93", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:93 (split_points_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:410 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + }, + { + "instruction": "input_concatenate_fusion", + "ms": 0.0017644219999999905, + "opcode": "fusion", + "shape": "s32[1500,2]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:615", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:615 (pixel_splitted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt_split.py:137 (AdaptSplit.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_concatenate_fusion.10", + "ms": 0.0016968999999999964, + "opcode": "fusion", + "shape": "pred[3]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:90", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/regularization_util.py:90 (split_points_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:410 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:957 (InterpolatorDelaunay._mappings_sizes_weights)" + ] + } + ], + "mesh_locate_walk": [ + { + "instruction": "loop_reduce_fusion", + "ms": 0.02578724399999979, + "opcode": "fusion", + "shape": "(f64[21361]{0}, s64[21361]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:264", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:264 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:264 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)" + ] + }, + { + "instruction": "input_reduce_fusion.1", + "ms": 0.025037913999999953, + "opcode": "fusion", + "shape": "pred[196]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:288", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:288 (_walk_from_seed..cond)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)" + ] + }, + { + "instruction": "loop_or_select_fusion", + "ms": 0.023437020000000287, + "opcode": "fusion", + "shape": "(s32[21361]{0}, pred[21361]{0}, pred[21361]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:270", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:270 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)" + ] + }, + { + "instruction": "loop_select_fusion", + "ms": 0.02014813199999979, + "opcode": "fusion", + "shape": "s32[21361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:242", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:242 (_walk_from_seed..weights_of)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:262 (_walk_from_seed..walk_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:292 (_walk_from_seed..body)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)" + ] + }, + { + "instruction": "input_reduce_fusion.2", + "ms": 0.01618750399999952, + "opcode": "fusion", + "shape": "pred[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:288", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:288 (_walk_from_seed..cond)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)" + ] + }, + { + "instruction": "while.22", + "ms": 0.014539700000000235, + "opcode": "while", + "shape": "(s32[], s32[21361]{0}, pred[21361]{0}, pred[21361]{0}, s32[3000,3]{1,0}, /*index=5*/f64[1500,2]{1,0}, f64[21361,2]{1,0}, s32[3000,3]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:295 (_walk_from_seed)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:353 (pix_indexes_delaunay_walk_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:423 (jax_delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py:846 (InterpolatorDelaunay.delaunay)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "data_vector_D": [ + { + "instruction": "input_reduce_fusion.10", + "ms": 0.121802552, + "opcode": "fusion", + "shape": "f64[92,1500]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123 (data_vector_via_blurred_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:67 (InversionImagingMapping.data_vector)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:699 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_reduce_fusion.27", + "ms": 0.0036935299999999965, + "opcode": "fusion", + "shape": "f64[1500]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123 (data_vector_via_blurred_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:67 (InversionImagingMapping.data_vector)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:699 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "inversion_other": [ + { + "instruction": "cholesky.60", + "ms": 0.8977823380000047, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1078 (AbstractInversion.log_det_curvature_reg_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:347 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "cholesky.70", + "ms": 0.8948461680000047, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1157 (AbstractInversion.log_det_regularization_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:348 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "input_reduce_fusion.17", + "ms": 0.013029934000000005, + "opcode": "fusion", + "shape": "f64[1500]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:946", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:946 (AbstractInversion.regularization_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:346 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)", + "/mnt/ral/jnightin/autolens_profiling_wt/certified-solver-phase-c1-lane-rate/scripts/imaging/likelihood_breakdown/fixed_light_trace.py:1195 (_captured_likelihood_fn.._likelihood)" + ] + }, + { + "instruction": "loop_reduce_window_fusion", + "ms": 0.002877652000000008, + "opcode": "fusion", + "shape": "s64[6,16]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "loop_reduce_window_fusion.1", + "ms": 0.002789264000000019, + "opcode": "fusion", + "shape": "s64[94,16]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "input_reduce_fusion.25", + "ms": 0.0026711860000000003, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:944", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:944 (AbstractInversion.regularization_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:346 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)", + "/mnt/ral/jnightin/autolens_profiling_wt/certified-solver-phase-c1-lane-rate/scripts/imaging/likelihood_breakdown/fixed_light_trace.py:1195 (_captured_likelihood_fn.._likelihood)" + ] + } + ], + "curvature_matrix_F": [ + { + "instruction": "cublas-lt-matmul.2", + "ms": 4.267420474000002, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "pdip_solve": [ + { + "instruction": "cholesky.20", + "ms": 15.98784528799969, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:106", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:106 (factorize_kkt)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:212 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve", + "ms": 2.541939273999906, + "opcode": "custom-call", + "shape": "(f64[1500,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:213 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve.2", + "ms": 2.4886216699998616, + "opcode": "custom-call", + "shape": "(f64[1500,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:217 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve.3", + "ms": 2.41211809800021, + "opcode": "custom-call", + "shape": "(f64[1500,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:217 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve.1", + "ms": 2.309823310000291, + "opcode": "custom-call", + "shape": "(f64[1500,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:213 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "cholesky.40", + "ms": 0.8675693959999949, + "opcode": "custom-call", + "shape": "(f64[1500,1500]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:62", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:62 (initialize)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:72 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:508 (reconstruction_positive_only_from)" + ] + } + ], + "mapped_reconstruction": [ + { + "instruction": "input_reduce_fusion.14", + "ms": 0.11525491200000006, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163 (mapped_reconstructed_data_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:120 (InversionImagingMapping._mapped_reconstructed_data_dict_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:196 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + } + ] + }, + "stage_audit_note": "The HLO instructions that contributed most of each stage's milliseconds, with their full source stack. A stage row is only as good as the rules that built it; this is how a reader checks a row against the HLO instead of trusting it.", + "untraced_wall_ms": 50.70896519199596, + "reconciliation_vs_untraced_pct": -0.1284397852516002, + "wall_basis": "wall_ms is the TRACED run's wall, the run these kernel durations came from. untraced_wall_ms is the same executable without the profiler; the difference is the profiler's overhead and belongs in neither the stages nor the idle row.", + "calls": 500, + "call_split": "per-call (first-instruction recurrence)", + "call_blocks": 500, + "events": 476880, + "streams": [ + "Stream #14(MemcpyD2D,MemcpyD2H,Compute,MemcpyH2D,Memset)" + ], + "per_stage_ms": { + "border_relocator": { + "median_ms": 0.11462149999999999, + "min_ms": 0.113826, + "max_ms": 0.11581 + }, + "chi_squared_evidence": { + "median_ms": 0.01072, + "min_ms": 0.010304, + "max_ms": 0.011647999999999999 + }, + "curvature_matrix_F": { + "median_ms": 4.265858, + "min_ms": 4.248178, + "max_ms": 4.355059 + }, + "data_vector_D": { + "median_ms": 0.125474, + "min_ms": 0.124545, + "max_ms": 0.126818 + }, + "inversion_other": { + "median_ms": 1.8217969999999999, + "min_ms": 1.801407, + "max_ms": 1.866463 + }, + "mapped_reconstruction": { + "median_ms": 0.1152615, + "min_ms": 0.114305, + "max_ms": 0.116254 + }, + "mapping_matrix": { + "median_ms": 0.116321, + "min_ms": 0.11533, + "max_ms": 0.11778999999999999 + }, + "memset": { + "median_ms": 0.05048000000000001, + "min_ms": 0.041152000000000015, + "max_ms": 0.08899300000000002 + }, + "mesh_construction": { + "median_ms": 0.002048, + "min_ms": 0.002016, + "max_ms": 0.002081 + }, + "mesh_locate_walk": { + "median_ms": 0.15046500000000004, + "min_ms": 0.13212900000000002, + "max_ms": 0.18681700000000007 + }, + "mesh_qhull_callback": { + "median_ms": 0.010624, + "min_ms": 0.010464000000000001, + "max_ms": 0.011201000000000001 + }, + "mesh_seed_argmin": { + "median_ms": 0.2279080000000001, + "min_ms": 0.22745900000000008, + "max_ms": 0.2283550000000002 + }, + "mixed_fusion": { + "median_ms": 1.2617045, + "min_ms": 1.2538059999999995, + "max_ms": 1.2667919999999997 + }, + "other": { + "median_ms": 0.07129699999999999, + "min_ms": 0.06880099999999999, + "max_ms": 0.07574499999999999 + }, + "pdip_solve": { + "median_ms": 27.35843900000004, + "min_ms": 22.74273600000003, + "max_ms": 50.527277000000055 + }, + "psf_convolution_mapping_matrix": { + "median_ms": 7.3407265, + "min_ms": 7.324859, + "max_ms": 7.425078999999999 + }, + "ray_trace_data_grid": { + "median_ms": 0.013568, + "min_ms": 0.01344, + "max_ms": 0.014177 + }, + "regularization_H": { + "median_ms": 0.0308, + "min_ms": 0.030209, + "max_ms": 0.031648 + } + }, + "stage_order": [ + "ray_trace_data_grid", + "border_relocator", + "mesh_qhull_callback", + "mesh_seed_argmin", + "mesh_locate_walk", + "mesh_construction", + "mapping_matrix", + "psf_convolution_mapping_matrix", + "data_vector_D", + "curvature_matrix_F", + "regularization_H", + "pdip_solve", + "mapped_reconstruction", + "chi_squared_evidence", + "inversion_other", + "mixed_fusion", + "other", + "memset" + ], + "mixed_fusion": { + "ms": 1.2617045, + "constituent_stage_sets": { + "curvature_matrix_F + psf_convolution_mapping_matrix": 1.0215624380000001, + "curvature_reg_reduce_gather + inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter + regularization_H": 0.06107873599999999, + "inversion_other + regularization_H": 0.029146561999999838, + "inversion_other + mesh_construction + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin + regularization_H": 0.021710695999999963, + "inversion_other + mapping_matrix + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin": 0.02130523799999998, + "inversion_other + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + regularization_H": 0.014613888000000004, + "grids_and_structures + mass_profile_deflections + ray_trace_data_grid": 0.01433572599999999, + "inversion_other + mapping_matrix + mesh_construction + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin": 0.011650641999999996, + "grids_and_structures + mass_profile_deflections": 0.00993355599999997, + "inversion_other + mesh_dual_areas + mesh_locate_walk": 0.00935706200000015, + "inversion_other + mesh_construction + mesh_seed_argmin + regularization_H": 0.007277492000000014, + "inversion_other + mesh_construction + regularization_H": 0.006316485999999993, + "inversion_other + ray_trace_data_grid": 0.005466850000000005, + "inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": 0.004779474000000001, + "inversion_other + mapped_reconstruction": 0.003808087999999994, + "mapping_matrix + regularization_H": 0.003491351999999997, + "inversion_other + mesh_construction + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin": 0.0031836320000000044, + "inversion_other + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin": 0.003010507999999999, + "inversion_other + pdip_solve": 0.0028958200000000107, + "inversion_other + mesh_locate_walk + mesh_seed_argmin": 0.002525893999999991, + "inversion_other + mesh_interpolation_weights": 0.0021667300000000034, + "chi_squared_evidence + inversion_other": 0.0018687580000000033 + }, + "example_kernels": { + "curvature_matrix_F + psf_convolution_mapping_matrix": [ + "loop_divide_gather_fusion" + ], + "curvature_reg_reduce_gather + inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter + regularization_H": [ + "input_add_multiply_transpose_fusion" + ], + "inversion_other + regularization_H": [ + "loop_reduce_slice_fusion", + "loop_reduce_fusion.1", + "loop_reduce_fusion.2", + "input_transpose_fusion.3" + ], + "inversion_other + mesh_construction + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin + regularization_H": [ + "input_reduce_fusion.24", + "loop_select_fusion.4", + "input_scatter_fusion.2" + ], + "inversion_other + mapping_matrix + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin": [ + "input_scatter_fusion.6", + "input_scatter_fusion.3" + ], + "inversion_other + mesh_construction + mesh_dual_areas + mesh_interpolation_weights + regularization_H": [ + "loop_abs_fusion" + ], + "grids_and_structures + mass_profile_deflections + ray_trace_data_grid": [ + "loop_subtract_fusion.2", + "loop_subtract_fusion.1" + ], + "inversion_other + mapping_matrix + mesh_construction + mesh_interpolation_weights + mesh_locate_walk + mesh_seed_argmin": [ + "input_scatter_fusion.4" + ], + "grids_and_structures + mass_profile_deflections": [ + "loop_divide_minimum_multiply_sine_sqrt_fusion", + "loop_slice_fusion" + ], + "inversion_other + mesh_dual_areas + mesh_locate_walk": [ + "loop_select_fusion.6", + "input_scatter_fusion.9", + "input_scatter_fusion.8", + "input_scatter_fusion.7" + ] + }, + "prorated_estimate_ms": { + "curvature_matrix_F": 0.5107812190000001, + "psf_convolution_mapping_matrix": 0.5107812190000001, + "inversion_other": 0.05460199926190473, + "regularization_H": 0.036964841599999916, + "mesh_construction": 0.01658995209523809, + "mesh_interpolation_weights": 0.013748448761904754, + "mesh_locate_walk": 0.013703291495238133, + "mapped_reconstruction": 0.013278701833333328, + "pdip_solve": 0.012822567833333336, + "mesh_seed_argmin": 0.01240364382857142, + "reconstruction_scatter": 0.011374657833333331, + "curvature_reg_reduce_gather": 0.010179789333333331, + "grids_and_structures": 0.009745353333333314, + "mass_profile_deflections": 0.009745353333333314, + "mesh_dual_areas": 0.009587155028571477, + "ray_trace_data_grid": 0.007512000333333333, + "mapping_matrix": 0.00673105509523809, + "chi_squared_evidence": 0.0009343790000000017 + }, + "prorated_note": "ESTIMATE ONLY \u2014 a mixed fusion's time split equally across the stages its constituents span. Never summed into the measured table, never reconciled." + }, + "other_sources_ms": { + "copy.72": 0.04207180200000365, + "copy.35": 0.016947231999999895, + "copy.40": 0.001985231999999996, + "loop_broadcast_fusion.1": 0.0019820140000000115, + "loop_broadcast_fusion.4": 0.0017839420000000104, + "copy.71": 0.001688267999999995, + "copy.20": 0.0016628559999999942, + "copy.52": 0.001660284000000003, + "copy.70": 0.0016019320000000008 + }, + "device_span_ms": 52.07552502, + "device_busy_ms": 44.519803313999994, + "device_idle_ms": 7.555721706000007, + "largest_idle_gaps": [ + { + "gap_ms": 5.55734, + "after": "pure_callback.4", + "before": "pure_callback.4" + }, + { + "gap_ms": 0.037248, + "after": "pure_callback.4", + "before": "copy.71" + }, + { + "gap_ms": 0.036543, + "after": "copy.35", + "before": "input_reduce_fusion.1" + }, + { + "gap_ms": 0.030688, + "after": "input_reduce_fusion.3", + "before": "input_divide_reduce_subtract_fusion" + }, + { + "gap_ms": 0.029792, + "after": "input_concatenate_fusion.7", + "before": "pure_callback.4" + }, + { + "gap_ms": 0.022719, + "after": "loop_dynamic_update_slice_fusion", + "before": "loop_add_fusion" + }, + { + "gap_ms": 0.020511, + "after": "eigh.45", + "before": "eigh.45" + }, + { + "gap_ms": 0.019007, + "after": "while.28", + "before": "input_reduce_fusion.3" + } + ], + "kernel_ms": 43.08811300000004, + "sum_ms": 50.64383470600005, + "wall_ms": 52.07778352799505, + "host_outside_span_ms": 0.002258507995051673, + "reconciliation_pct": -2.75347513825001, + "unjoined_ms": 0.0, + "unjoined_pct": 0.0, + "other_ms": 0.07129699999999999, + "other_pct": 0.1369048280667963, + "note": "Stage rows attribute the command-buffers-OFF program (see the module docstring): kernel times are the same, the launch overhead the CUDA graphs remove is not. sum_ms = kernel rows + device_idle_ms; the residual against wall_ms is host_outside_span_ms (dispatch before the first kernel, teardown after the last).", + "per_stage_ms_per_lane": { + "border_relocator": 0.11462149999999999, + "chi_squared_evidence": 0.01072, + "curvature_matrix_F": 4.265858, + "data_vector_D": 0.125474, + "inversion_other": 1.8217969999999999, + "mapped_reconstruction": 0.1152615, + "mapping_matrix": 0.116321, + "memset": 0.05048000000000001, + "mesh_construction": 0.002048, + "mesh_locate_walk": 0.15046500000000004, + "mesh_qhull_callback": 0.010624, + "mesh_seed_argmin": 0.2279080000000001, + "mixed_fusion": 1.2617045, + "other": 0.07129699999999999, + "pdip_solve": 27.35843900000004, + "psf_convolution_mapping_matrix": 7.3407265, + "ray_trace_data_grid": 0.013568, + "regularization_H": 0.0308 + }, + "per_lane_divisor": 1, + "host_callback": { + "pure_callback_span_ms": 253.44177359999998, + "qhull_ms": 236.43602019999994, + "callback_body_ms_note": "the OUTERMOST matching body event, not a sum: under the probe the body appears twice (the wrapper and the timed re-implementation it calls) and summing them would count the same work twice", + "events_by_name": { + "pure_callback.4": { + "count": 500, + "ms": 253.44177359999998 + }, + "$callback.py:815 _wrapped_callback": { + "count": 500, + "ms": 249.06968640000014 + }, + "$callback.py:224 _callback": { + "count": 500, + "ms": 247.85900320000007 + }, + "$callback.py:74 pure_callback_impl": { + "count": 500, + "ms": 247.4164497000002 + }, + "$callback.py:69 __call__": { + "count": 500, + "ms": 237.21032869999976 + }, + "$delaunay.py:162 ": { + "count": 500, + "ms": 236.87959399999988 + }, + "$host_callback_probe.py:225 wrapped": { + "count": 500, + "ms": 236.43602019999994 + }, + "$host_callback_probe.py:160 _timed_tri_only": { + "count": 500, + "ms": 236.01510070000003 + }, + "ThenExecuteCallback:GetEventForComputeStreamSyncPoint": { + "count": 500, + "ms": 0.9465159999999991 + }, + "$callback.py:822 ": { + "count": 2000, + "ms": 0.7363693000000004 + }, + "$__init__.py:132 _xla_gc_callback": { + "count": 8, + "ms": 0.0014190000000000001 + } + }, + "note": "HOST milliseconds per traced BATCH (the whole invocation), aggregated by name because the events nest. Not a row of the device table: the device pays for them as the idle gaps largest_idle_gaps names." + }, + "host_callback_ms": 253.44177359999998 + }, + "hlo_census": { + "status": "excluded", + "reason": "The legacy census anchors PyAutoArray source line numbers that moved after the phase-1 run. No batched attribution is published from unsupported anchors; the device-event table and wall reconciliation remain valid." + }, + "trace_split": { + "expected_calls": 500, + "executions_per_invocation": 50, + "method": "per-call (first-instruction recurrence)", + "note": "DECIDED IN CODE: the scalar arm's trace is split by trace_calls * B, so every lane's execution is its own block and the per-stage median is taken over all of them. The vmap arm's is split by trace_calls, one block per batched execution, and per_stage_ms_per_lane divides those rows by B." + } + } + }, + "certification_report": { + "source": "vmap arm, library solve observed through its stats= out-dict (PyAutoArray #566) and jax.debug.callback(..., ordered=True); ordered because the unordered batching rule returns the lanes permuted. Untimed, separately compiled; max rel diff of its log likelihoods vs the timed arm's: 6.283e-05", + "rows": 0, + "pdip_iter": "NOT AVAILABLE per lane without changing library numerics. The fallback branch calls the library's own reconstruction_positive_only_from, which returns the solution alone \u2014 jax_nnls.solve_nnls' iteration count is discarded inside the library's custom_vjp primal. The PDIP while_loop's cost is in the pdip_solve stage row of each arm's device table instead, which is a max-over-lanes quantity under vmap because every lane runs the same fixed kernel sequence.", + "passes_semantics": "library `passes`: restricted active-set passes run (jax_active_set.solve_certified)" + }, + "lane_construction": { + "draws_sha256": "246b41aea1e860763cb7b206a7f43d5e3145e5c63c8c9df4985518ebf778c02e", + "lane_rows": [ + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349 + ], + "calls": [ + 15, + 16, + 17 + ], + "stage": "pix1", + "regularization_range": { + "galaxies.source.pixelization.regularization.inner_coefficient": { + "min": 2.1069031993440453e-06, + "max": 4381.27190482627 + }, + "galaxies.source.pixelization.regularization.outer_coefficient": { + "min": 2.002369440956339e-06, + "max": 350.8013530115919 + }, + "galaxies.source.pixelization.regularization.signal_scale": { + "min": 0.015870361716511128, + "max": 0.971901829834744 + } + }, + "phases": [ + "exploration" + ], + "window_rule": "nautilus_batches.timed_window: consecutive captured calls, in call order, from the FIRST call that is not a prior batch, concatenated and truncated to B; at B == n_batch exactly one real Nautilus batch. Falls back to the latest B lanes if the post-prior lanes run out; never repeats a lane.", + "note": "Lane k is captured lane lane_rows[k]: the mass AND shear of a real Nautilus proposal (nautilus_batch_capture.py), lens light fixed at S3, the S3 light-subtracted dataset shared by every lane. `offsets` in the lane table are the mass offsets from the fiducial; the shear is in the capture file." + }, + "captured": { + "batches_path": "/mnt/ral/jnightin/autolens_profiling_wt/certified-solver-phase-c1-lane-rate/results/breakdown/imaging/nautilus_batches_delaunay_pix1.npz", + "batches_sha256": "e71a5e23026b342d1ff4359b8fb914a87980d8aea0060659d2334dcfa3215c00", + "schema_version": 2, + "n_calls": 932, + "n_lanes": 18640, + "call_sizes_seen": [ + 20 + ], + "calls_by_phase": { + "prior": 15, + "exploration": 917 + }, + "parameter_paths": [ + "galaxies.source.pixelization.regularization.inner_coefficient", + "galaxies.source.pixelization.regularization.outer_coefficient", + "galaxies.source.pixelization.regularization.signal_scale", + "galaxies.lens.mass.centre.centre_0", + "galaxies.lens.mass.centre.centre_1", + "galaxies.lens.mass.einstein_radius", + "galaxies.lens.mass.ell_comps.ell_comps_0", + "galaxies.lens.mass.ell_comps.ell_comps_1", + "galaxies.lens.shear.gamma_1", + "galaxies.lens.shear.gamma_2" + ], + "stage": "pix1", + "regularization": { + "class": "AdaptSplit", + "free": true, + "priors": { + "inner_coefficient": [ + "LogUniform", + 1e-06, + 1000000.0 + ], + "outer_coefficient": [ + "LogUniform", + 1e-06, + 1000000.0 + ], + "signal_scale": [ + "Uniform", + 0.0, + 1.0 + ] + }, + "priors_source": "PyAutoGalaxy packaged config/priors/regularization (adapt_split.yaml / constant.yaml); adapt_split.yaml is identical to euclid_strong_lens_modeling_pipeline/config/priors/regularization/adapt_split.yaml" + }, + "nautilus": { + "departures_from_production": [ + "mass/shear priors are the phase-B cell's Gaussians, not chained from source_lp", + "no positions likelihood", + "the cell's mesh (Hilbert 1500, weight_power 1) in both stages; source_pix_2 redraws a 500-vertex Hilbert grid at weight_power 3.5", + "seeded (production passes no seed)", + "quick updates disabled (iterations_per_quick_update=1e12; render-only)", + "NullPaths: no output directory, so no checkpoint and one Sampler.run call", + "post-fit perform_update skipped (samples / latent variables never built)" + ], + "n_batch": 20, + "n_like_max": 40000, + "n_live": 150, + "number_of_cores": 1, + "production_reference": "euclid_strong_lens_modeling_pipeline/scripts/full_model.py source_pix_1 (n_live=150) / source_pix_2 (n_live=75): af.Nautilus(n_batch=20, **SettingsSearch.search_dict) with use_jax_vmap=True and number_of_cores=1 (SettingsSearch defaults)", + "production_stage": "source_pix_1", + "seed": 1, + "stage": "pix1", + "use_jax_vmap": true, + "version": "1.0.5" + }, + "capture_fit_status": "sampling complete (n_like_max or convergence); post-fit result skipped", + "capture_library_revisions": { + "PyAutoArray": { + "head": "7fa8d2714f7da43fec2b23c31bff580764831670", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoArray" + }, + "PyAutoFit": { + "head": "a736840127be7a3c21e15a5c945e94d8f1082983", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoFit" + }, + "PyAutoGalaxy": { + "head": "70a61e26cd715cefe7012a38285698091246a8a4", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy" + }, + "PyAutoLens": { + "head": "86054bbc19baa2f710a12e04a94fa27ab37cc354", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoLens" + }, + "PyAutoNerves": { + "head": "1fa613aa8d89a79613009fb66f5b4e2d21deb57a", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoNerves" + } + }, + "fingerprint_check": { + "fields": [ + "mesh", + "source_pixels", + "dataset_sha256", + "regularization_class", + "regularization_s0_fiducial", + "border_relocator", + "use_mixed_precision", + "log_evidence_s3_library" + ], + "not_identity": "the regularization coefficients: free per lane since the capture frees them", + "log_evidence_s3_library_rel_diff": 0.0, + "passed": true + }, + "timed_window_vs_capture_pdip": { + "reference": "the capture's own figure of merit (library PDIP, Fitness.call_wrap jax.jit(jax.vmap(call)) over parameter vectors) for the same lanes", + "compared_against": "this cell's jit(vmap) library-PDIP reference", + "n_compared": 50, + "max_rel_diff": 9.118771059168179, + "max_abs_diff_nats": 207206.6708886897, + "gated": false, + "note": "RECORDED, NOT GATED: proves the lane trees rebuilt here are the models the sampler evaluated (a wrong parameter mapping shows up as nats, not 1e-10)." + } + }, + "matched": { + "vmap_wall_per_lane_ms": 32.624801890000526, + "scalar_wall_per_lane_ms": 50.141531236004084, + "speedup_vmap_over_scalar": 1.5369145046478403, + "note": "Both walls are the PRODUCTION nesting of their arm, measured in one process on the same B lanes with the SAME library Settings (no injection). A speedup below 1 means the batch is slower per lane than B sequential jitted calls." + }, + "solver_source": "library", + "solver": "pdip", + "certified_fallback": "pdip", + "certified_pass_budget": 16, + "certified_pass_budget_basis": "config default (Settings().certified_pass_budget)", + "certified_tau_rel": 1e-09, + "solver_used": "pdip", + "solver_check": { + "solver_used": "pdip", + "solver_used_source": "AbstractInversion.positive_only_solver_used on the fiducial S3 inversion, built eagerly on the JAX backend (AnalysisImaging(use_jax=True).fit_from) with the arms' Settings", + "reference_solver_used": "pdip", + "traced_solver_kwargs_jax": [ + "pdip" + ], + "observed_calls_jax": 1, + "report_rows": 0, + "report_vs_timed_arm_max_rel_diff": 6.282871362996316e-05 + }, + "lanes_certified": [ + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null + ], + "lanes_passes": [ + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null + ], + "uncertified_lanes": null, + "per_lane_certification_note": "Not applicable: a library-PDIP row has no certificate or pass count.", + "gate": { + "pre_registered": true, + "gated": [ + "per lane: jit(vmap) arm vs jit(vmap) library PDIP <= lane_rtol relative", + "per lane: scalar jit arm vs scalar jit library PDIP <= lane_rtol relative" + ], + "recorded_not_gated": [ + "per lane: jit(vmap) arm vs scalar jit arm (rel_diff, abs_diff_nats)", + "per lane: jit(vmap) library PDIP vs scalar jit library PDIP", + "uncertified_lanes (certified_fallback=none rows)" + ], + "lanes_failed": 14, + "passed": false, + "policy_eligible": false, + "note": "Pre-registered before submission (module docstring; submit header). Phase 3 (results/notes/hst_gpu_residue_phase3_psf_2026_09.md) placed phase 2's ~2.5e-9 certified-vs-PDIP residual BETWEEN the jit(vmap) and scalar-jit compositions, not in the solver \u2014 so each arm is gated against the library-PDIP reference of its OWN composition, and the cross-composition difference is recorded with its nats. A certified_fallback=none row is policy-eligible only if every lane certifies AND passes the gate. Timing is never gated." + }, + "library_revisions": { + "PyAutoArray": { + "head": "3de624b5b91a4efa130dc3cb0a3a0f06f85025a3", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoArray", + "module_file": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/__init__.py" + }, + "PyAutoFit": { + "head": "dd9fbe0aab60c4a57702b1444ca031b317c91331", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoFit", + "module_file": "/mnt/ral/jnightin/PyAuto/PyAutoFit/autofit/__init__.py" + }, + "PyAutoGalaxy": { + "head": "70a61e26cd715cefe7012a38285698091246a8a4", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy", + "module_file": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/__init__.py" + }, + "PyAutoLens": { + "head": "86054bbc19baa2f710a12e04a94fa27ab37cc354", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoLens", + "module_file": "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/__init__.py" + }, + "autoarray_file": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/__init__.py" + } + }, + "headline_arm_note": "`trace`, `hlo_census`, `command_buffers` and `trace_timing` above describe the scalar arm \u2014 the program phase 1 traced. Both arms' full blocks, the lane table and the matched comparison are under `vmap`." +} \ No newline at end of file diff --git a/results/breakdown/imaging/fixed_light_trace_delaunay_jitvmap50_captured_pix1_libpdip_fbon_b16_hpc_a100_fp64_fixed_light_trace.png b/results/breakdown/imaging/fixed_light_trace_delaunay_jitvmap50_captured_pix1_libpdip_fbon_b16_hpc_a100_fp64_fixed_light_trace.png new file mode 100644 index 000000000..2041edb53 Binary files /dev/null and b/results/breakdown/imaging/fixed_light_trace_delaunay_jitvmap50_captured_pix1_libpdip_fbon_b16_hpc_a100_fp64_fixed_light_trace.png differ diff --git a/results/breakdown/imaging/fixed_light_trace_rectangular_captured_rate_libcertified_fboff_b16_pix1_hpc_a100_fp64_fixed_light_trace.json b/results/breakdown/imaging/fixed_light_trace_rectangular_captured_rate_libcertified_fboff_b16_pix1_hpc_a100_fp64_fixed_light_trace.json new file mode 100644 index 000000000..9d93b9377 --- /dev/null +++ b/results/breakdown/imaging/fixed_light_trace_rectangular_captured_rate_libcertified_fboff_b16_pix1_hpc_a100_fp64_fixed_light_trace.json @@ -0,0 +1,61599 @@ +{ + "device": { + "backend": "gpu", + "device": "cuda:0", + "hostname": "euclid-ral-gpu-1", + "xla_flags": "--xla_disable_hlo_passes=constant_folding --xla_gpu_autotune_level=0 --xla_gpu_enable_triton_gemm=false", + "omp_num_threads": null, + "cpu_count": 124, + "jax_compilation_cache_dir": "/mnt/ral/jnightin/autolens_profiling_wt/certified-solver-phase-c1-lane-rate/output/jax_cache/fixed_light_lanerate_rectangular_pix1_rate_20_certified_off_350768_5", + "autotune_cache_entries_at_start": 0, + "cache_fresh": true, + "nvidia_smi": "NVIDIA A100 80GB PCIe, 35441 MiB, 81920 MiB" + }, + "machine": { + "cpu_model": "AMD EPYC 7702 64-Core Processor", + "cpu_count_os": 124, + "nproc": 4, + "nproc_all": 124, + "nproc_note": "GNU nproc honours OMP_NUM_THREADS, so `nproc` can print 1 on a multi-core host; `nproc_all` is the core count.", + "ram_total": "928298200 kB", + "kernel": "5.14.0-687.50.1.el9_8.x86_64", + "platform": "Linux-5.14.0-687.50.1.el9_8.x86_64-x86_64-with-glibc2.34", + "python": "3.12.4", + "jax_thread_env": { + "NPROC": null + }, + "blas_thread_env": { + "OMP_NUM_THREADS": null, + "OPENBLAS_NUM_THREADS": null, + "MKL_NUM_THREADS": null, + "VECLIB_MAXIMUM_THREADS": null, + "NUMEXPR_NUM_THREADS": null + }, + "thread_env_note": "NPROC sizes XLA's CPU intra-op pool (the JAX rows); the BLAS knobs pin OpenBLAS/MKL/OpenMP (the numpy/scipy rows) and do not touch JAX. Two disjoint families; both are recorded on every CPU timing.", + "gpu": "NVIDIA A100 80GB PCIe, 81920 MiB, 610.57.04" + }, + "precision": "fp64", + "configuration": { + "mesh": "rectangular", + "source_pixels": 1521, + "dataset": "hst", + "dataset_sha256": { + "data.fits": "e4e833a28e9c6f6fb023cd85c0d3dde74068720256bc77a240633500e5b04fac", + "noise_map.fits": "315c6266a0acd3ac9c8da82fcd2b45a08697362481fd7a35072bab1658530ba3", + "psf.fits": "8389ba0e8bf4a09b4a561cfc246181a2fb944ed396754cd0ff76fdd22910d303" + }, + "cell_source_sha256": "06a162fcdae6b329384ec33322f443df07215d86e56f0505ac15b3d3473eb432", + "border_relocator_mode": "cell", + "border_relocator": true, + "regularization": { + "scheme": "constant", + "coefficient": 1.0 + }, + "vmap_batch": 20, + "lanes": "captured", + "captured_pass": "rate", + "batch_sample": null, + "solver_source": "library", + "solver": "certified", + "certified_fallback": "none", + "certified_pass_budget": 16, + "certified_tau_rel": 1e-09, + "use_mixed_precision": false, + "thread_env": { + "n_threads": null, + "vars": [ + "OPENBLAS_NUM_THREADS", + "MKL_NUM_THREADS", + "OMP_NUM_THREADS", + "VECLIB_MAXIMUM_THREADS", + "NUMEXPR_NUM_THREADS" + ], + "set_to": null, + "preexisting": {}, + "overridden": {}, + "note": "Not pinned (legacy variant): recorded as found." + } + }, + "captured": { + "batches_path": "/mnt/ral/jnightin/autolens_profiling_wt/certified-solver-phase-c1-lane-rate/results/breakdown/imaging/nautilus_batches_rectangular_pix1.npz", + "batches_sha256": "c0b62fba544cb62c8a273c19837cf364127f5af7fdaa110f3a2c8a973e0b6cc0", + "schema_version": 2, + "n_calls": 972, + "n_lanes": 19440, + "call_sizes_seen": [ + 20 + ], + "calls_by_phase": { + "prior": 15, + "exploration": 957 + }, + "parameter_paths": [ + "galaxies.source.pixelization.regularization.inner_coefficient", + "galaxies.source.pixelization.regularization.outer_coefficient", + "galaxies.source.pixelization.regularization.signal_scale", + "galaxies.lens.mass.centre.centre_0", + "galaxies.lens.mass.centre.centre_1", + "galaxies.lens.mass.einstein_radius", + "galaxies.lens.mass.ell_comps.ell_comps_0", + "galaxies.lens.mass.ell_comps.ell_comps_1", + "galaxies.lens.shear.gamma_1", + "galaxies.lens.shear.gamma_2" + ], + "stage": "pix1", + "regularization": { + "class": "Adapt", + "free": true, + "priors": { + "inner_coefficient": [ + "LogUniform", + 1e-06, + 1000000.0 + ], + "outer_coefficient": [ + "LogUniform", + 1e-06, + 1000000.0 + ], + "signal_scale": [ + "Uniform", + 0.0, + 1.0 + ] + }, + "priors_source": "PyAutoGalaxy packaged config/priors/regularization (adapt_split.yaml / adapt.yaml / constant.yaml); adapt_split.yaml and adapt.yaml are identical to euclid_strong_lens_modeling_pipeline/config/priors/regularization/'s copies" + }, + "nautilus": { + "departures_from_production": [ + "mass/shear priors are the phase-B cell's Gaussians, not chained from source_lp", + "no positions likelihood", + "the cell's mesh (39x39 RectangularBilinearAdaptImage, weight_power 1, weight_floor 0) fixed in both stages; source_pix_1 uses RectangularBilinearAdaptDensity, source_pix_2 frees weight_power / weight_floor", + "seeded (production passes no seed)", + "quick updates disabled (iterations_per_quick_update=1e12; render-only)", + "NullPaths: no output directory, so no checkpoint and one Sampler.run call", + "post-fit perform_update skipped (samples / latent variables never built)" + ], + "n_batch": 20, + "n_like_max": 40000, + "n_live": 150, + "number_of_cores": 1, + "production_reference": "euclid_strong_lens_modeling_pipeline/scripts/full_model.py source_pix_1 (n_live=150) / source_pix_2 (n_live=75): af.Nautilus(n_batch=20, **SettingsSearch.search_dict) with use_jax_vmap=True and number_of_cores=1 (SettingsSearch defaults)", + "production_stage": "source_pix_1", + "seed": 1, + "stage": "pix1", + "use_jax_vmap": true, + "version": "1.0.5" + }, + "capture_fit_status": "sampling complete (n_like_max or convergence); post-fit result skipped", + "capture_library_revisions": { + "PyAutoArray": { + "head": "3de624b5b91a4efa130dc3cb0a3a0f06f85025a3", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoArray" + }, + "PyAutoFit": { + "head": "dd9fbe0aab60c4a57702b1444ca031b317c91331", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoFit" + }, + "PyAutoGalaxy": { + "head": "70a61e26cd715cefe7012a38285698091246a8a4", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy" + }, + "PyAutoLens": { + "head": "86054bbc19baa2f710a12e04a94fa27ab37cc354", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoLens" + }, + "PyAutoNerves": { + "head": "1fa613aa8d89a79613009fb66f5b4e2d21deb57a", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoNerves" + } + }, + "fingerprint_check": { + "fields": [ + "mesh", + "source_pixels", + "dataset_sha256", + "regularization_class", + "regularization_s0_fiducial", + "border_relocator", + "use_mixed_precision", + "log_evidence_s3_library" + ], + "not_identity": "the regularization coefficients: free per lane since the capture frees them", + "log_evidence_s3_library_rel_diff": 0.0, + "passed": true + } + }, + "rate": { + "pass": "rate", + "solver": "certified", + "certified_fallback": "none", + "certified_pass_budget": 16, + "certified_pass_budget_basis": "config default (Settings().certified_pass_budget)", + "composition": "jax.jit(jax.vmap(fn)) \u2014 the current Fitness._vmap composition", + "chunk_size": 20, + "chunk_rule": "the replayed lanes in capture order, split into chunks of --vmap-batch; the last chunk is padded by repeating its final lane and the padded rows are dropped. At --vmap-batch == n_batch every chunk is exactly one captured Nautilus batch.", + "batch_sample": null, + "stage": "pix1", + "regularization_range": { + "galaxies.source.pixelization.regularization.inner_coefficient": { + "min": 1.0077697054123213e-06, + "max": 797698.1658704937 + }, + "galaxies.source.pixelization.regularization.outer_coefficient": { + "min": 1.1079234913024822e-06, + "max": 994245.7042339334 + }, + "galaxies.source.pixelization.regularization.signal_scale": { + "min": 6.277279855516904e-05, + "max": 0.9998558026350854 + } + }, + "calls_replayed": 972, + "calls_rule": "all captured calls", + "report_source": "library solve observed through its stats= out-dict (PyAutoArray #566) and jax.debug.callback(..., ordered=True); untimed; one row per lane checked per chunk", + "traced_solver_kwargs_jax": [ + "certified" + ], + "overall": { + "n_lanes": 19440, + "n_uncertified": 365, + "uncertified_rate": 0.018775720164609055, + "max_passes": 16, + "mean_passes": 5.948251028806585, + "n_at_budget": 376, + "budget": 16, + "passes_histogram": { + "0": 1, + "1": 23, + "2": 132, + "3": 358, + "4": 719, + "5": 9222, + "6": 3935, + "7": 2722, + "8": 1406, + "9": 326, + "10": 131, + "11": 32, + "12": 19, + "13": 13, + "14": 9, + "15": 16, + "16": 376 + } + }, + "by_nautilus_phase": { + "prior": { + "n_lanes": 300, + "n_uncertified": 43, + "uncertified_rate": 0.14333333333333334, + "max_passes": 16, + "mean_passes": 5.626666666666667, + "n_at_budget": 46, + "budget": 16, + "passes_histogram": { + "0": 1, + "1": 8, + "2": 28, + "3": 141, + "4": 26, + "5": 13, + "6": 8, + "7": 12, + "8": 5, + "9": 4, + "10": 5, + "11": 1, + "12": 1, + "15": 1, + "16": 46 + } + }, + "exploration": { + "n_lanes": 19140, + "n_uncertified": 322, + "uncertified_rate": 0.01682340647857889, + "max_passes": 16, + "mean_passes": 5.953291536050156, + "n_at_budget": 330, + "budget": 16, + "passes_histogram": { + "1": 15, + "2": 104, + "3": 217, + "4": 693, + "5": 9209, + "6": 3927, + "7": 2710, + "8": 1401, + "9": 322, + "10": 126, + "11": 31, + "12": 18, + "13": 13, + "14": 9, + "15": 15, + "16": 330 + } + } + }, + "by_call_half": { + "early": { + "n_lanes": 9720, + "n_uncertified": 365, + "uncertified_rate": 0.03755144032921811, + "max_passes": 16, + "mean_passes": 6.660082304526749, + "n_at_budget": 376, + "budget": 16, + "passes_histogram": { + "0": 1, + "1": 23, + "2": 132, + "3": 357, + "4": 664, + "5": 1818, + "6": 1765, + "7": 2637, + "8": 1401, + "9": 326, + "10": 131, + "11": 32, + "12": 19, + "13": 13, + "14": 9, + "15": 16, + "16": 376 + } + }, + "late": { + "n_lanes": 9720, + "n_uncertified": 0, + "uncertified_rate": 0.0, + "max_passes": 8, + "mean_passes": 5.23641975308642, + "n_at_budget": 0, + "budget": 16, + "passes_histogram": { + "3": 1, + "4": 55, + "5": 7404, + "6": 2170, + "7": 85, + "8": 5 + } + } + }, + "phase_rule": "by_nautilus_phase: the sampler state when the batch was requested (nautilus_batches.phase_of) \u2014 prior = only the unit-cube bound (prior draws), exploration = more bounds and Sampler.explored False, sampling = explored True. by_call_half: early = call index below the median replayed call index, late = the rest.", + "vs_capture_pdip": { + "reference": "the capture's own figure of merit for the lane: library PDIP through Fitness.call_wrap's jax.jit(jax.vmap(call)) over parameter vectors", + "n_compared": 19324, + "n_excluded_resampled_or_nonfinite": 116, + "max_rel_diff": 0.05000479767687287, + "median_rel_diff": 1.0305711991384924e-11, + "max_abs_diff_nats": 140.81189957504466, + "n_above_lane_rtol": 518, + "n_above_lane_rtol_uncertified": 354, + "lane_rtol": 1e-09, + "gated": false, + "note": "RECORDED, NOT GATED: a cross-composition comparison (Fitness over vectors vs this cell over trees) and, for certified lanes, certified vs PDIP. The gated 1e-9 pin is the timed pass's (same composition, same lanes). It still shows whether a certified_fallback=none lane that FAILED its certificate returned a wrong answer." + }, + "uncertified_pdip_recheck": { + "n_uncertified": 365, + "n_rechecked": 256, + "cap": 256, + "max_rel_diff": 0.05000479731872855, + "rows": [ + { + "lane_row": 6, + "call_index": 0, + "lane_in_call": 6, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 18421.546221008975, + "log_likelihood_scalar_library_pdip": 18400.78331401105, + "rel_diff": 0.001128370822241951, + "abs_diff_nats": 20.76290699792662 + }, + { + "lane_row": 11, + "call_index": 0, + "lane_in_call": 11, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 15839.779812746834, + "log_likelihood_scalar_library_pdip": 15837.789694055693, + "rel_diff": 0.00012565634028389997, + "abs_diff_nats": 1.990118691141106 + }, + { + "lane_row": 24, + "call_index": 1, + "lane_in_call": 4, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 19072.87558330359, + "log_likelihood_scalar_library_pdip": 19067.77680971184, + "rel_diff": 0.00026740262604471815, + "abs_diff_nats": 5.098773591751524 + }, + { + "lane_row": 27, + "call_index": 1, + "lane_in_call": 7, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 13159.48113672431, + "log_likelihood_scalar_library_pdip": 13149.428943270654, + "rel_diff": 0.0007644585553504053, + "abs_diff_nats": 10.05219345365549 + }, + { + "lane_row": 29, + "call_index": 1, + "lane_in_call": 9, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 3574.805242943723, + "log_likelihood_scalar_library_pdip": 3538.7353157210455, + "rel_diff": 0.010192886442349806, + "abs_diff_nats": 36.06992722267751 + }, + { + "lane_row": 32, + "call_index": 1, + "lane_in_call": 12, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 8741.256932303033, + "log_likelihood_scalar_library_pdip": 8757.817299905091, + "rel_diff": 0.0018909240778792811, + "abs_diff_nats": 16.56036760205825 + }, + { + "lane_row": 51, + "call_index": 2, + "lane_in_call": 11, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 20693.827209023395, + "log_likelihood_scalar_library_pdip": 20694.450129406825, + "rel_diff": 3.010084247393738e-05, + "abs_diff_nats": 0.6229203834300279 + }, + { + "lane_row": 56, + "call_index": 2, + "lane_in_call": 16, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 14876.00353341199, + "log_likelihood_scalar_library_pdip": 14865.989557974695, + "rel_diff": 0.0006736164718965585, + "abs_diff_nats": 10.013975437293993 + }, + { + "lane_row": 60, + "call_index": 3, + "lane_in_call": 0, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 17458.39748955646, + "log_likelihood_scalar_library_pdip": 17448.72923030406, + "rel_diff": 0.000554095322633, + "abs_diff_nats": 9.668259252401185 + }, + { + "lane_row": 78, + "call_index": 3, + "lane_in_call": 18, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 19895.955653410576, + "log_likelihood_scalar_library_pdip": 19893.260831711454, + "rel_diff": 0.00013546405096275096, + "abs_diff_nats": 2.694821699122258 + }, + { + "lane_row": 84, + "call_index": 4, + "lane_in_call": 4, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 17991.13252963745, + "log_likelihood_scalar_library_pdip": 17991.27353993335, + "rel_diff": 7.837705073443825e-06, + "abs_diff_nats": 0.14101029590165126 + }, + { + "lane_row": 86, + "call_index": 4, + "lane_in_call": 6, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 18605.42823404949, + "log_likelihood_scalar_library_pdip": 18605.704732640676, + "rel_diff": 1.4860957709400876e-05, + "abs_diff_nats": 0.2764985911853728 + }, + { + "lane_row": 91, + "call_index": 4, + "lane_in_call": 11, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 19073.13211616996, + "log_likelihood_scalar_library_pdip": 19068.364389141097, + "rel_diff": 0.0002500333500852003, + "abs_diff_nats": 4.767727028862282 + }, + { + "lane_row": 98, + "call_index": 4, + "lane_in_call": 18, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 22082.684603414513, + "log_likelihood_scalar_library_pdip": 22082.684603409605, + "rel_diff": 2.2223898492889644e-13, + "abs_diff_nats": 4.907633410766721e-09 + }, + { + "lane_row": 112, + "call_index": 5, + "lane_in_call": 12, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 16281.98382742959, + "log_likelihood_scalar_library_pdip": 16266.98959274841, + "rel_diff": 0.0009217584234433027, + "abs_diff_nats": 14.994234681180387 + }, + { + "lane_row": 115, + "call_index": 5, + "lane_in_call": 15, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 18842.710412277716, + "log_likelihood_scalar_library_pdip": 18842.39100328466, + "rel_diff": 1.695161686216687e-05, + "abs_diff_nats": 0.3194089930548216 + }, + { + "lane_row": 122, + "call_index": 6, + "lane_in_call": 2, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 9134.022674840024, + "log_likelihood_scalar_library_pdip": 9131.78323442171, + "rel_diff": 0.000245235827529584, + "abs_diff_nats": 2.2394404183141887 + }, + { + "lane_row": 127, + "call_index": 6, + "lane_in_call": 7, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 19251.43319558834, + "log_likelihood_scalar_library_pdip": 19251.264132559158, + "rel_diff": 8.781918320651165e-06, + "abs_diff_nats": 0.1690630291814159 + }, + { + "lane_row": 131, + "call_index": 6, + "lane_in_call": 11, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 20693.09862158689, + "log_likelihood_scalar_library_pdip": 20692.968209388644, + "rel_diff": 6.302247069004908e-06, + "abs_diff_nats": 0.1304121982466313 + }, + { + "lane_row": 133, + "call_index": 6, + "lane_in_call": 13, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 18435.623281508393, + "log_likelihood_scalar_library_pdip": 18437.445007567054, + "rel_diff": 9.880577584980168e-05, + "abs_diff_nats": 1.8217260586607154 + }, + { + "lane_row": 137, + "call_index": 6, + "lane_in_call": 17, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 1268.2537371400394, + "log_likelihood_scalar_library_pdip": 1267.1710998384588, + "rel_diff": 0.0008543734162803318, + "abs_diff_nats": 1.0826373015806894 + }, + { + "lane_row": 138, + "call_index": 6, + "lane_in_call": 18, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 20751.9108486485, + "log_likelihood_scalar_library_pdip": 20754.54346537806, + "rel_diff": 0.00012684532107172102, + "abs_diff_nats": 2.6326167295628693 + }, + { + "lane_row": 145, + "call_index": 7, + "lane_in_call": 5, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 18520.405774003622, + "log_likelihood_scalar_library_pdip": 18522.401053261885, + "rel_diff": 0.00010772249518434979, + "abs_diff_nats": 1.9952792582625989 + }, + { + "lane_row": 159, + "call_index": 7, + "lane_in_call": 19, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 19027.50342365381, + "log_likelihood_scalar_library_pdip": 19024.088020681098, + "rel_diff": 0.0001795304441925255, + "abs_diff_nats": 3.415402972710581 + }, + { + "lane_row": 161, + "call_index": 8, + "lane_in_call": 1, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 16420.241962014417, + "log_likelihood_scalar_library_pdip": 16420.241962010226, + "rel_diff": 2.5523080570102523e-13, + "abs_diff_nats": 4.190951585769653e-09 + }, + { + "lane_row": 162, + "call_index": 8, + "lane_in_call": 2, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 16771.387770521338, + "log_likelihood_scalar_library_pdip": 16795.121565497408, + "rel_diff": 0.0014131362421827501, + "abs_diff_nats": 23.733794976069476 + }, + { + "lane_row": 169, + "call_index": 8, + "lane_in_call": 9, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": -1281.4521451736582, + "log_likelihood_scalar_library_pdip": -1348.9038066264766, + "rel_diff": 0.05000479731872855, + "abs_diff_nats": 67.45166145281837 + }, + { + "lane_row": 170, + "call_index": 8, + "lane_in_call": 10, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 16106.20215654446, + "log_likelihood_scalar_library_pdip": 16106.202136807471, + "rel_diff": 1.2254278203683474e-09, + "abs_diff_nats": 1.973698817892e-05 + }, + { + "lane_row": 184, + "call_index": 9, + "lane_in_call": 4, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 18681.757193178506, + "log_likelihood_scalar_library_pdip": 18684.596860679943, + "rel_diff": 0.00015197906182354872, + "abs_diff_nats": 2.8396675014373614 + }, + { + "lane_row": 185, + "call_index": 9, + "lane_in_call": 5, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 19162.883512805245, + "log_likelihood_scalar_library_pdip": 19158.74697543469, + "rel_diff": 0.00021590855476402523, + "abs_diff_nats": 4.136537370555743 + }, + { + "lane_row": 194, + "call_index": 9, + "lane_in_call": 14, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 7874.077596740972, + "log_likelihood_scalar_library_pdip": 7876.143002373472, + "rel_diff": 0.0002622356693977977, + "abs_diff_nats": 2.0654056325001875 + }, + { + "lane_row": 200, + "call_index": 10, + "lane_in_call": 0, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 17232.45006347257, + "log_likelihood_scalar_library_pdip": 17228.61918047958, + "rel_diff": 0.00022235577633109528, + "abs_diff_nats": 3.830882992988336 + }, + { + "lane_row": 210, + "call_index": 10, + "lane_in_call": 10, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 11265.98001294629, + "log_likelihood_scalar_library_pdip": 11222.198472371536, + "rel_diff": 0.0039013336542337196, + "abs_diff_nats": 43.78154057475331 + }, + { + "lane_row": 211, + "call_index": 10, + "lane_in_call": 11, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 17456.701447365027, + "log_likelihood_scalar_library_pdip": 17434.20400550346, + "rel_diff": 0.0012904197894246117, + "abs_diff_nats": 22.497441861567495 + }, + { + "lane_row": 215, + "call_index": 10, + "lane_in_call": 15, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 12339.3586796921, + "log_likelihood_scalar_library_pdip": 12329.945993231668, + "rel_diff": 0.0007634004614132233, + "abs_diff_nats": 9.412686460433179 + }, + { + "lane_row": 216, + "call_index": 10, + "lane_in_call": 16, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 16950.738169838107, + "log_likelihood_scalar_library_pdip": 16955.28697103611, + "rel_diff": 0.00026828217096955964, + "abs_diff_nats": 4.548801198001456 + }, + { + "lane_row": 238, + "call_index": 11, + "lane_in_call": 18, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 13961.651561334293, + "log_likelihood_scalar_library_pdip": 13937.93423810642, + "rel_diff": 0.0017016383362628798, + "abs_diff_nats": 23.71732322787284 + }, + { + "lane_row": 239, + "call_index": 11, + "lane_in_call": 19, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 13423.0540739042, + "log_likelihood_scalar_library_pdip": 13421.021939965402, + "rel_diff": 0.00015141424758035023, + "abs_diff_nats": 2.032133938799234 + }, + { + "lane_row": 241, + "call_index": 12, + "lane_in_call": 1, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 18288.829157042514, + "log_likelihood_scalar_library_pdip": 18285.305226076576, + "rel_diff": 0.00019271928591664227, + "abs_diff_nats": 3.523930965937325 + }, + { + "lane_row": 253, + "call_index": 12, + "lane_in_call": 13, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 18302.81187108045, + "log_likelihood_scalar_library_pdip": 18297.31272177783, + "rel_diff": 0.0003005440955311486, + "abs_diff_nats": 5.4991493026172975 + }, + { + "lane_row": 256, + "call_index": 12, + "lane_in_call": 16, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 17210.22031179483, + "log_likelihood_scalar_library_pdip": 17208.268824454368, + "rel_diff": 0.00011340404780805793, + "abs_diff_nats": 1.9514873404623359 + }, + { + "lane_row": 276, + "call_index": 13, + "lane_in_call": 16, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 17951.718345449422, + "log_likelihood_scalar_library_pdip": 17933.907135557507, + "rel_diff": 0.0009931583651730449, + "abs_diff_nats": 17.811209891915496 + }, + { + "lane_row": 283, + "call_index": 14, + "lane_in_call": 3, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 19020.849164870964, + "log_likelihood_scalar_library_pdip": 19013.67253337732, + "rel_diff": 0.0003774458343618226, + "abs_diff_nats": 7.176631493643072 + }, + { + "lane_row": 300, + "call_index": 15, + "lane_in_call": 0, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 18463.288067231657, + "log_likelihood_scalar_library_pdip": 18463.078970707007, + "rel_diff": 1.1325116736029837e-05, + "abs_diff_nats": 0.20909652464979445 + }, + { + "lane_row": 301, + "call_index": 15, + "lane_in_call": 1, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 15734.704790642205, + "log_likelihood_scalar_library_pdip": 15734.21749633948, + "rel_diff": 3.0970355077343616e-05, + "abs_diff_nats": 0.4872943027257861 + }, + { + "lane_row": 302, + "call_index": 15, + "lane_in_call": 2, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 18704.474460443, + "log_likelihood_scalar_library_pdip": 18706.16598652238, + "rel_diff": 9.042612369622558e-05, + "abs_diff_nats": 1.6915260793794005 + }, + { + "lane_row": 308, + "call_index": 15, + "lane_in_call": 8, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19066.421358553263, + "log_likelihood_scalar_library_pdip": 19060.20267912919, + "rel_diff": 0.00032626512575770043, + "abs_diff_nats": 6.218679424073343 + }, + { + "lane_row": 309, + "call_index": 15, + "lane_in_call": 9, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 12781.02635455443, + "log_likelihood_scalar_library_pdip": 12782.70332143049, + "rel_diff": 0.00013119031506029615, + "abs_diff_nats": 1.6769668760607601 + }, + { + "lane_row": 311, + "call_index": 15, + "lane_in_call": 11, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": -3234.471614889735, + "log_likelihood_scalar_library_pdip": -3234.481430921878, + "rel_diff": 3.034808624743709e-06, + "abs_diff_nats": 0.00981603214313509 + }, + { + "lane_row": 312, + "call_index": 15, + "lane_in_call": 12, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 18887.307347644703, + "log_likelihood_scalar_library_pdip": 18883.93355609074, + "rel_diff": 0.0001786593637360021, + "abs_diff_nats": 3.373791553964111 + }, + { + "lane_row": 316, + "call_index": 15, + "lane_in_call": 16, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 16093.515739414663, + "log_likelihood_scalar_library_pdip": 16088.259041698664, + "rel_diff": 0.0003267412404520542, + "abs_diff_nats": 5.256697715998598 + }, + { + "lane_row": 318, + "call_index": 15, + "lane_in_call": 18, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 18622.433656659538, + "log_likelihood_scalar_library_pdip": 18620.968710155976, + "rel_diff": 7.86718739698443e-05, + "abs_diff_nats": 1.464946503561805 + }, + { + "lane_row": 319, + "call_index": 15, + "lane_in_call": 19, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 7274.769367446595, + "log_likelihood_scalar_library_pdip": 7217.440786173451, + "rel_diff": 0.007943062225459445, + "abs_diff_nats": 57.328581273144664 + }, + { + "lane_row": 322, + "call_index": 16, + "lane_in_call": 2, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 10571.238213018223, + "log_likelihood_scalar_library_pdip": 10567.732718102652, + "rel_diff": 0.0003317168411693532, + "abs_diff_nats": 3.5054949155710347 + }, + { + "lane_row": 324, + "call_index": 16, + "lane_in_call": 4, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 14135.04200895291, + "log_likelihood_scalar_library_pdip": 14131.499763663749, + "rel_diff": 0.00025066308236227074, + "abs_diff_nats": 3.542245289161656 + }, + { + "lane_row": 326, + "call_index": 16, + "lane_in_call": 6, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 18496.516906199387, + "log_likelihood_scalar_library_pdip": 18491.477137097572, + "rel_diff": 0.00027254551188365614, + "abs_diff_nats": 5.039769101815182 + }, + { + "lane_row": 330, + "call_index": 16, + "lane_in_call": 10, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 18456.654040055975, + "log_likelihood_scalar_library_pdip": 18458.059022989044, + "rel_diff": 7.611758805836259e-05, + "abs_diff_nats": 1.4049829330688226 + }, + { + "lane_row": 332, + "call_index": 16, + "lane_in_call": 12, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19083.337271699602, + "log_likelihood_scalar_library_pdip": 19082.159112472924, + "rel_diff": 6.174140042191907e-05, + "abs_diff_nats": 1.1781592266779626 + }, + { + "lane_row": 335, + "call_index": 16, + "lane_in_call": 15, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 17579.3887001561, + "log_likelihood_scalar_library_pdip": 17571.275632183253, + "rel_diff": 0.000461723334302989, + "abs_diff_nats": 8.113067972848512 + }, + { + "lane_row": 336, + "call_index": 16, + "lane_in_call": 16, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 18668.585942099293, + "log_likelihood_scalar_library_pdip": 18664.94647956068, + "rel_diff": 0.0001949891762399805, + "abs_diff_nats": 3.639462538612861 + }, + { + "lane_row": 337, + "call_index": 16, + "lane_in_call": 17, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 15119.69716042437, + "log_likelihood_scalar_library_pdip": 15118.859355707224, + "rel_diff": 5.5414545332753016e-05, + "abs_diff_nats": 0.837804717146355 + }, + { + "lane_row": 338, + "call_index": 16, + "lane_in_call": 18, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 18913.042523045908, + "log_likelihood_scalar_library_pdip": 18915.856016800164, + "rel_diff": 0.0001487373213116832, + "abs_diff_nats": 2.813493754256342 + }, + { + "lane_row": 339, + "call_index": 16, + "lane_in_call": 19, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19091.996147961163, + "log_likelihood_scalar_library_pdip": 19083.97025057711, + "rel_diff": 0.0004205570056268019, + "abs_diff_nats": 8.025897384053678 + }, + { + "lane_row": 343, + "call_index": 17, + "lane_in_call": 3, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 17931.309208985793, + "log_likelihood_scalar_library_pdip": 17930.42303106947, + "rel_diff": 4.942314605673013e-05, + "abs_diff_nats": 0.8861779163235042 + }, + { + "lane_row": 344, + "call_index": 17, + "lane_in_call": 4, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 16076.33104036175, + "log_likelihood_scalar_library_pdip": 16076.3203998807, + "rel_diff": 6.61872915299576e-07, + "abs_diff_nats": 0.010640481050359085 + }, + { + "lane_row": 357, + "call_index": 17, + "lane_in_call": 17, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 18771.639661782632, + "log_likelihood_scalar_library_pdip": 18770.911828116296, + "rel_diff": 3.877455037887226e-05, + "abs_diff_nats": 0.7278336663366645 + }, + { + "lane_row": 358, + "call_index": 17, + "lane_in_call": 18, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 22546.633560121656, + "log_likelihood_scalar_library_pdip": 22546.604462890118, + "rel_diff": 1.2905371886831623e-06, + "abs_diff_nats": 0.029097231537889456 + }, + { + "lane_row": 359, + "call_index": 17, + "lane_in_call": 19, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 7734.280054678009, + "log_likelihood_scalar_library_pdip": 7812.09695498721, + "rel_diff": 0.009961077129172435, + "abs_diff_nats": 77.81690030920072 + }, + { + "lane_row": 362, + "call_index": 18, + "lane_in_call": 2, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 13291.473654460879, + "log_likelihood_scalar_library_pdip": 13260.25168841827, + "rel_diff": 0.0023545530489348693, + "abs_diff_nats": 31.221966042608983 + }, + { + "lane_row": 366, + "call_index": 18, + "lane_in_call": 6, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 7810.896171039018, + "log_likelihood_scalar_library_pdip": 7804.299245169263, + "rel_diff": 0.0008452938133860591, + "abs_diff_nats": 6.596925869755069 + }, + { + "lane_row": 374, + "call_index": 18, + "lane_in_call": 14, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 17531.67396060824, + "log_likelihood_scalar_library_pdip": 17529.778526225873, + "rel_diff": 0.00010812654475538601, + "abs_diff_nats": 1.8954343823679665 + }, + { + "lane_row": 376, + "call_index": 18, + "lane_in_call": 16, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 18873.723176518466, + "log_likelihood_scalar_library_pdip": 18873.21401302624, + "rel_diff": 2.6978101974215545e-05, + "abs_diff_nats": 0.5091634922246158 + }, + { + "lane_row": 378, + "call_index": 18, + "lane_in_call": 18, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19986.63747401181, + "log_likelihood_scalar_library_pdip": 19995.254723550373, + "rel_diff": 0.00043096472926710736, + "abs_diff_nats": 8.617249538561737 + }, + { + "lane_row": 380, + "call_index": 19, + "lane_in_call": 0, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 18798.97388205173, + "log_likelihood_scalar_library_pdip": 18783.815962903987, + "rel_diff": 0.0008069669750639776, + "abs_diff_nats": 15.157919147743087 + }, + { + "lane_row": 382, + "call_index": 19, + "lane_in_call": 2, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 18272.258407549605, + "log_likelihood_scalar_library_pdip": 18267.205813579974, + "rel_diff": 0.00027659369589380216, + "abs_diff_nats": 5.052593969630834 + }, + { + "lane_row": 386, + "call_index": 19, + "lane_in_call": 6, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 13701.684715387612, + "log_likelihood_scalar_library_pdip": 13721.263087942294, + "rel_diff": 0.0014268637245128896, + "abs_diff_nats": 19.578372554682574 + }, + { + "lane_row": 387, + "call_index": 19, + "lane_in_call": 7, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 17600.886279176797, + "log_likelihood_scalar_library_pdip": 17601.082237780687, + "rel_diff": 1.1133326987675304e-05, + "abs_diff_nats": 0.19595860389017616 + }, + { + "lane_row": 391, + "call_index": 19, + "lane_in_call": 11, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 11220.407702851615, + "log_likelihood_scalar_library_pdip": 11215.135969954568, + "rel_diff": 0.0004700551924800212, + "abs_diff_nats": 5.271732897046604 + }, + { + "lane_row": 392, + "call_index": 19, + "lane_in_call": 12, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19084.044959251005, + "log_likelihood_scalar_library_pdip": 19088.015083180366, + "rel_diff": 0.0002079904019386057, + "abs_diff_nats": 3.9701239293608523 + }, + { + "lane_row": 393, + "call_index": 19, + "lane_in_call": 13, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19617.704863749423, + "log_likelihood_scalar_library_pdip": 19617.474006642136, + "rel_diff": 1.1767932365202526e-05, + "abs_diff_nats": 0.23085710728628328 + }, + { + "lane_row": 395, + "call_index": 19, + "lane_in_call": 15, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19113.432446940613, + "log_likelihood_scalar_library_pdip": 19113.30154508107, + "rel_diff": 6.848730933968461e-06, + "abs_diff_nats": 0.1309018595420639 + }, + { + "lane_row": 396, + "call_index": 19, + "lane_in_call": 16, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 18821.94189147732, + "log_likelihood_scalar_library_pdip": 18833.80956098336, + "rel_diff": 0.0006301258100553135, + "abs_diff_nats": 11.867669506042148 + }, + { + "lane_row": 400, + "call_index": 20, + "lane_in_call": 0, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 20783.620816837734, + "log_likelihood_scalar_library_pdip": 20787.916151274992, + "rel_diff": 0.00020662650387853748, + "abs_diff_nats": 4.295334437258134 + }, + { + "lane_row": 406, + "call_index": 20, + "lane_in_call": 6, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 17529.944661908114, + "log_likelihood_scalar_library_pdip": 17527.47241674812, + "rel_diff": 0.00014104972475264337, + "abs_diff_nats": 2.4722451599918713 + }, + { + "lane_row": 413, + "call_index": 20, + "lane_in_call": 13, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19490.858826057018, + "log_likelihood_scalar_library_pdip": 19490.769825632862, + "rel_diff": 4.566285731745799e-06, + "abs_diff_nats": 0.08900042415552889 + }, + { + "lane_row": 418, + "call_index": 20, + "lane_in_call": 18, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 18549.013220055935, + "log_likelihood_scalar_library_pdip": 18544.783734615743, + "rel_diff": 0.00022806873893583721, + "abs_diff_nats": 4.229485440191638 + }, + { + "lane_row": 419, + "call_index": 20, + "lane_in_call": 19, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 22637.416650563304, + "log_likelihood_scalar_library_pdip": 22635.981564273956, + "rel_diff": 6.339845635909779e-05, + "abs_diff_nats": 1.4350862893479643 + }, + { + "lane_row": 422, + "call_index": 21, + "lane_in_call": 2, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 18904.977429940765, + "log_likelihood_scalar_library_pdip": 18902.15042473575, + "rel_diff": 0.0001495599781765766, + "abs_diff_nats": 2.8270052050138474 + }, + { + "lane_row": 423, + "call_index": 21, + "lane_in_call": 3, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 14899.589176653328, + "log_likelihood_scalar_library_pdip": 14894.645094963482, + "rel_diff": 0.00033193685773135487, + "abs_diff_nats": 4.944081689845916 + }, + { + "lane_row": 427, + "call_index": 21, + "lane_in_call": 7, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 21841.893619710452, + "log_likelihood_scalar_library_pdip": 21840.13667970527, + "rel_diff": 8.044546748720867e-05, + "abs_diff_nats": 1.7569400051834236 + }, + { + "lane_row": 434, + "call_index": 21, + "lane_in_call": 14, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 17610.041038876487, + "log_likelihood_scalar_library_pdip": 17598.780993226577, + "rel_diff": 0.0006398196360442927, + "abs_diff_nats": 11.260045649909443 + }, + { + "lane_row": 436, + "call_index": 21, + "lane_in_call": 16, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 18816.871852998003, + "log_likelihood_scalar_library_pdip": 18815.701296141517, + "rel_diff": 6.221170489811602e-05, + "abs_diff_nats": 1.1705568564866553 + }, + { + "lane_row": 438, + "call_index": 21, + "lane_in_call": 18, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 12593.978005861623, + "log_likelihood_scalar_library_pdip": 12539.917941267315, + "rel_diff": 0.00431103814614318, + "abs_diff_nats": 54.06006459430864 + }, + { + "lane_row": 441, + "call_index": 22, + "lane_in_call": 1, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 18526.916049920183, + "log_likelihood_scalar_library_pdip": 18535.898793523644, + "rel_diff": 0.0004846133280895804, + "abs_diff_nats": 8.982743603461131 + }, + { + "lane_row": 446, + "call_index": 22, + "lane_in_call": 6, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 15543.429866446673, + "log_likelihood_scalar_library_pdip": 15542.42820993387, + "rel_diff": 6.444659092344265e-05, + "abs_diff_nats": 1.0016565128025832 + }, + { + "lane_row": 451, + "call_index": 22, + "lane_in_call": 11, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 16863.138065493644, + "log_likelihood_scalar_library_pdip": 16857.37326841301, + "rel_diff": 0.0003419748135634852, + "abs_diff_nats": 5.764797080635617 + }, + { + "lane_row": 452, + "call_index": 22, + "lane_in_call": 12, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19886.459123084343, + "log_likelihood_scalar_library_pdip": 19886.68299534447, + "rel_diff": 1.1257395724438916e-05, + "abs_diff_nats": 0.2238722601250629 + }, + { + "lane_row": 457, + "call_index": 22, + "lane_in_call": 17, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 10614.795963762048, + "log_likelihood_scalar_library_pdip": 10586.140449872186, + "rel_diff": 0.0027068896379707514, + "abs_diff_nats": 28.65551388986205 + }, + { + "lane_row": 459, + "call_index": 22, + "lane_in_call": 19, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 18499.881769023592, + "log_likelihood_scalar_library_pdip": 18494.680508430636, + "rel_diff": 0.0002812300861636867, + "abs_diff_nats": 5.201260592955805 + }, + { + "lane_row": 464, + "call_index": 23, + "lane_in_call": 4, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 20856.469878717686, + "log_likelihood_scalar_library_pdip": 20849.59862375062, + "rel_diff": 0.0003295629374485844, + "abs_diff_nats": 6.871254967067216 + }, + { + "lane_row": 467, + "call_index": 23, + "lane_in_call": 7, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 9777.567458826965, + "log_likelihood_scalar_library_pdip": 9775.289552817969, + "rel_diff": 0.00023302696014149339, + "abs_diff_nats": 2.2779060089960694 + }, + { + "lane_row": 469, + "call_index": 23, + "lane_in_call": 9, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 21109.068431970583, + "log_likelihood_scalar_library_pdip": 21108.56722998, + "rel_diff": 2.3744008066664603e-05, + "abs_diff_nats": 0.5012019905843772 + }, + { + "lane_row": 470, + "call_index": 23, + "lane_in_call": 10, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 18981.361470185966, + "log_likelihood_scalar_library_pdip": 18981.786027134778, + "rel_diff": 2.2366543812325414e-05, + "abs_diff_nats": 0.4245569488120964 + }, + { + "lane_row": 479, + "call_index": 23, + "lane_in_call": 19, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 17968.328208532475, + "log_likelihood_scalar_library_pdip": 17973.97590807239, + "rel_diff": 0.000314215372758844, + "abs_diff_nats": 5.647699539913447 + }, + { + "lane_row": 483, + "call_index": 24, + "lane_in_call": 3, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 20722.168836137196, + "log_likelihood_scalar_library_pdip": 20722.33432610673, + "rel_diff": 7.98606792703291e-06, + "abs_diff_nats": 0.16548996953497408 + }, + { + "lane_row": 487, + "call_index": 24, + "lane_in_call": 7, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 16934.024529165137, + "log_likelihood_scalar_library_pdip": 16929.850165480304, + "rel_diff": 0.0002465682592598891, + "abs_diff_nats": 4.174363684833224 + }, + { + "lane_row": 489, + "call_index": 24, + "lane_in_call": 9, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 15400.454938642724, + "log_likelihood_scalar_library_pdip": 15390.392053182299, + "rel_diff": 0.0006538420480552271, + "abs_diff_nats": 10.062885460425605 + }, + { + "lane_row": 490, + "call_index": 24, + "lane_in_call": 10, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19042.905507307183, + "log_likelihood_scalar_library_pdip": 19044.211622285824, + "rel_diff": 6.858330523445768e-05, + "abs_diff_nats": 1.306114978640835 + }, + { + "lane_row": 493, + "call_index": 24, + "lane_in_call": 13, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19059.94890892703, + "log_likelihood_scalar_library_pdip": 19058.826973087456, + "rel_diff": 5.8866993291676424e-05, + "abs_diff_nats": 1.121935839571961 + }, + { + "lane_row": 495, + "call_index": 24, + "lane_in_call": 15, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 16504.48085685824, + "log_likelihood_scalar_library_pdip": 16511.570177147576, + "rel_diff": 0.00042935470178037097, + "abs_diff_nats": 7.089320289334864 + }, + { + "lane_row": 496, + "call_index": 24, + "lane_in_call": 16, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19215.064217861014, + "log_likelihood_scalar_library_pdip": 19215.100293451855, + "rel_diff": 1.877460449830517e-06, + "abs_diff_nats": 0.03607559084048262 + }, + { + "lane_row": 498, + "call_index": 24, + "lane_in_call": 18, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 18879.31724725113, + "log_likelihood_scalar_library_pdip": 18878.443312133197, + "rel_diff": 4.629275324678382e-05, + "abs_diff_nats": 0.8739351179319783 + }, + { + "lane_row": 499, + "call_index": 24, + "lane_in_call": 19, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 9960.015365887211, + "log_likelihood_scalar_library_pdip": 9962.098051675704, + "rel_diff": 0.00020906096062192284, + "abs_diff_nats": 2.0826857884931087 + }, + { + "lane_row": 500, + "call_index": 25, + "lane_in_call": 0, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 18994.659197239976, + "log_likelihood_scalar_library_pdip": 18993.70478381696, + "rel_diff": 5.024893425897389e-05, + "abs_diff_nats": 0.9544134230163763 + }, + { + "lane_row": 502, + "call_index": 25, + "lane_in_call": 2, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19648.012887065786, + "log_likelihood_scalar_library_pdip": 19638.159842100948, + "rel_diff": 0.0005017295430967766, + "abs_diff_nats": 9.853044964838773 + }, + { + "lane_row": 503, + "call_index": 25, + "lane_in_call": 3, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 18220.142064552005, + "log_likelihood_scalar_library_pdip": 18219.41520401842, + "rel_diff": 3.989483336570135e-05, + "abs_diff_nats": 0.7268605335848406 + }, + { + "lane_row": 505, + "call_index": 25, + "lane_in_call": 5, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 11346.057632279473, + "log_likelihood_scalar_library_pdip": 11332.056992989495, + "rel_diff": 0.001235489664289467, + "abs_diff_nats": 14.000639289977698 + }, + { + "lane_row": 507, + "call_index": 25, + "lane_in_call": 7, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 18764.748307695314, + "log_likelihood_scalar_library_pdip": 18765.878002957543, + "rel_diff": 6.019943548874913e-05, + "abs_diff_nats": 1.129695262228779 + }, + { + "lane_row": 512, + "call_index": 25, + "lane_in_call": 12, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 16803.200190253756, + "log_likelihood_scalar_library_pdip": 16807.63580120027, + "rel_diff": 0.0002639045133402087, + "abs_diff_nats": 4.435610946515226 + }, + { + "lane_row": 518, + "call_index": 25, + "lane_in_call": 18, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19163.74424924836, + "log_likelihood_scalar_library_pdip": 19163.594248826368, + "rel_diff": 7.827363700399331e-06, + "abs_diff_nats": 0.1500004219924449 + }, + { + "lane_row": 519, + "call_index": 25, + "lane_in_call": 19, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 18642.74707730409, + "log_likelihood_scalar_library_pdip": 18639.304941780454, + "rel_diff": 0.00018467080904511796, + "abs_diff_nats": 3.442135523637262 + }, + { + "lane_row": 520, + "call_index": 26, + "lane_in_call": 0, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19042.75486105936, + "log_likelihood_scalar_library_pdip": 19042.335765200347, + "rel_diff": 2.2008637185017497e-05, + "abs_diff_nats": 0.419095859011577 + }, + { + "lane_row": 523, + "call_index": 26, + "lane_in_call": 3, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 18923.274104123175, + "log_likelihood_scalar_library_pdip": 18926.90775154504, + "rel_diff": 0.0001919831527455626, + "abs_diff_nats": 3.633647421866044 + }, + { + "lane_row": 525, + "call_index": 26, + "lane_in_call": 5, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19763.15006561599, + "log_likelihood_scalar_library_pdip": 19762.41114727714, + "rel_diff": 3.739009037635425e-05, + "abs_diff_nats": 0.7389183388513629 + }, + { + "lane_row": 529, + "call_index": 26, + "lane_in_call": 9, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 22474.37176597792, + "log_likelihood_scalar_library_pdip": 22474.42654065338, + "rel_diff": 2.437200137720365e-06, + "abs_diff_nats": 0.054774675460066646 + }, + { + "lane_row": 530, + "call_index": 26, + "lane_in_call": 10, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 18957.56326879355, + "log_likelihood_scalar_library_pdip": 18964.53296597818, + "rel_diff": 0.00036751219748629247, + "abs_diff_nats": 6.969697184627876 + }, + { + "lane_row": 531, + "call_index": 26, + "lane_in_call": 11, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19075.161367731263, + "log_likelihood_scalar_library_pdip": 19078.041374849978, + "rel_diff": 0.00015095926579291853, + "abs_diff_nats": 2.880007118714275 + }, + { + "lane_row": 532, + "call_index": 26, + "lane_in_call": 12, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19007.317064935414, + "log_likelihood_scalar_library_pdip": 19004.58367170536, + "rel_diff": 0.00014382810364444048, + "abs_diff_nats": 2.73339323005348 + }, + { + "lane_row": 538, + "call_index": 26, + "lane_in_call": 18, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 16971.796207218962, + "log_likelihood_scalar_library_pdip": 16971.68551462597, + "rel_diff": 6.522192088533007e-06, + "abs_diff_nats": 0.11069259299256373 + }, + { + "lane_row": 539, + "call_index": 26, + "lane_in_call": 19, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 18567.093914169818, + "log_likelihood_scalar_library_pdip": 18567.46613047488, + "rel_diff": 2.004669363320099e-05, + "abs_diff_nats": 0.37221630506246584 + }, + { + "lane_row": 541, + "call_index": 27, + "lane_in_call": 1, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19004.782919247562, + "log_likelihood_scalar_library_pdip": 19001.616051426237, + "rel_diff": 0.00016666307816944113, + "abs_diff_nats": 3.1668678213245585 + }, + { + "lane_row": 542, + "call_index": 27, + "lane_in_call": 2, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 18459.745950573175, + "log_likelihood_scalar_library_pdip": 18469.610100370675, + "rel_diff": 0.0005340746092578567, + "abs_diff_nats": 9.864149797500431 + }, + { + "lane_row": 545, + "call_index": 27, + "lane_in_call": 5, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 22130.36775956621, + "log_likelihood_scalar_library_pdip": 22130.367759564677, + "rel_diff": 6.920757460633085e-14, + "abs_diff_nats": 1.5315890777856112e-09 + }, + { + "lane_row": 547, + "call_index": 27, + "lane_in_call": 7, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 18404.373148546525, + "log_likelihood_scalar_library_pdip": 18401.01615623879, + "rel_diff": 0.0001824351589733111, + "abs_diff_nats": 3.35699230773389 + }, + { + "lane_row": 550, + "call_index": 27, + "lane_in_call": 10, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 18958.4861545106, + "log_likelihood_scalar_library_pdip": 18956.512127302994, + "rel_diff": 0.00010413451558749145, + "abs_diff_nats": 1.9740272076051042 + }, + { + "lane_row": 551, + "call_index": 27, + "lane_in_call": 11, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19196.654909867997, + "log_likelihood_scalar_library_pdip": 19201.114409850314, + "rel_diff": 0.00023225214365833229, + "abs_diff_nats": 4.459499982316629 + }, + { + "lane_row": 552, + "call_index": 27, + "lane_in_call": 12, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 1652.9336681586283, + "log_likelihood_scalar_library_pdip": 1652.9206007058237, + "rel_diff": 7.905674839405282e-06, + "abs_diff_nats": 0.013067452804534696 + }, + { + "lane_row": 554, + "call_index": 27, + "lane_in_call": 14, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 3717.6756793826935, + "log_likelihood_scalar_library_pdip": 3717.679331811596, + "rel_diff": 9.824486128526387e-07, + "abs_diff_nats": 0.003652428902569227 + }, + { + "lane_row": 555, + "call_index": 27, + "lane_in_call": 15, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19043.014325846838, + "log_likelihood_scalar_library_pdip": 19038.995788104075, + "rel_diff": 0.00021106878679353862, + "abs_diff_nats": 4.018537742762419 + }, + { + "lane_row": 556, + "call_index": 27, + "lane_in_call": 16, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 18625.851806135834, + "log_likelihood_scalar_library_pdip": 18622.930504148382, + "rel_diff": 0.0001568658588292913, + "abs_diff_nats": 2.921301987451443 + }, + { + "lane_row": 557, + "call_index": 27, + "lane_in_call": 17, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 17679.792803018805, + "log_likelihood_scalar_library_pdip": 17659.8546849961, + "rel_diff": 0.001129008045555777, + "abs_diff_nats": 19.938118022706476 + }, + { + "lane_row": 559, + "call_index": 27, + "lane_in_call": 19, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 18746.11717812258, + "log_likelihood_scalar_library_pdip": 18742.568145385263, + "rel_diff": 0.0001893568005081129, + "abs_diff_nats": 3.5490327373154287 + }, + { + "lane_row": 560, + "call_index": 28, + "lane_in_call": 0, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 15921.901807459926, + "log_likelihood_scalar_library_pdip": 15909.41518834277, + "rel_diff": 0.0007848572036957127, + "abs_diff_nats": 12.486619117156806 + }, + { + "lane_row": 561, + "call_index": 28, + "lane_in_call": 1, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 18414.335278982762, + "log_likelihood_scalar_library_pdip": 18413.710999987867, + "rel_diff": 3.39029430241404e-05, + "abs_diff_nats": 0.624278994895576 + }, + { + "lane_row": 562, + "call_index": 28, + "lane_in_call": 2, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 18003.354541310437, + "log_likelihood_scalar_library_pdip": 18001.683535118544, + "rel_diff": 9.282499543073725e-05, + "abs_diff_nats": 1.6710061918929568 + }, + { + "lane_row": 564, + "call_index": 28, + "lane_in_call": 4, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19394.088517460208, + "log_likelihood_scalar_library_pdip": 19393.25904961221, + "rel_diff": 4.27709363277165e-05, + "abs_diff_nats": 0.8294678479978757 + }, + { + "lane_row": 565, + "call_index": 28, + "lane_in_call": 5, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 18968.33778864173, + "log_likelihood_scalar_library_pdip": 18968.52987091174, + "rel_diff": 1.0126365686712351e-05, + "abs_diff_nats": 0.19208227001217892 + }, + { + "lane_row": 566, + "call_index": 28, + "lane_in_call": 6, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19035.54701230508, + "log_likelihood_scalar_library_pdip": 19032.298352766666, + "rel_diff": 0.00017069191950440978, + "abs_diff_nats": 3.2486595384143584 + }, + { + "lane_row": 567, + "call_index": 28, + "lane_in_call": 7, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 18005.684074353063, + "log_likelihood_scalar_library_pdip": 18011.690119979656, + "rel_diff": 0.0003334526402900166, + "abs_diff_nats": 6.006045626592822 + }, + { + "lane_row": 569, + "call_index": 28, + "lane_in_call": 9, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 23138.770830761183, + "log_likelihood_scalar_library_pdip": 23138.770830760597, + "rel_diff": 2.5313124548652296e-14, + "abs_diff_nats": 5.857145879417658e-10 + }, + { + "lane_row": 570, + "call_index": 28, + "lane_in_call": 10, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 20799.750651541726, + "log_likelihood_scalar_library_pdip": 20799.07111933696, + "rel_diff": 3.2671276561663435e-05, + "abs_diff_nats": 0.6795322047655645 + }, + { + "lane_row": 571, + "call_index": 28, + "lane_in_call": 11, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 18113.389023472882, + "log_likelihood_scalar_library_pdip": 18113.17217290437, + "rel_diff": 1.1971981850626852e-05, + "abs_diff_nats": 0.21685056851129048 + }, + { + "lane_row": 574, + "call_index": 28, + "lane_in_call": 14, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 18853.38838088112, + "log_likelihood_scalar_library_pdip": 18850.431793345935, + "rel_diff": 0.0001568445522944094, + "abs_diff_nats": 2.956587535183644 + }, + { + "lane_row": 575, + "call_index": 28, + "lane_in_call": 15, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19087.286612035696, + "log_likelihood_scalar_library_pdip": 19083.96339665186, + "rel_diff": 0.0001741365414911269, + "abs_diff_nats": 3.3232153838362137 + }, + { + "lane_row": 578, + "call_index": 28, + "lane_in_call": 18, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19051.961370189536, + "log_likelihood_scalar_library_pdip": 19051.689691702115, + "rel_diff": 1.4260073086291231e-05, + "abs_diff_nats": 0.2716784874210134 + }, + { + "lane_row": 579, + "call_index": 28, + "lane_in_call": 19, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 4640.569299588562, + "log_likelihood_scalar_library_pdip": 4569.735813683321, + "rel_diff": 0.01550056475762601, + "abs_diff_nats": 70.8334859052411 + }, + { + "lane_row": 581, + "call_index": 29, + "lane_in_call": 1, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 22707.405424800578, + "log_likelihood_scalar_library_pdip": 22707.155588629757, + "rel_diff": 1.1002530451037476e-05, + "abs_diff_nats": 0.2498361708203447 + }, + { + "lane_row": 583, + "call_index": 29, + "lane_in_call": 3, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 18794.104488372595, + "log_likelihood_scalar_library_pdip": 18796.231989338048, + "rel_diff": 0.0001131876307261787, + "abs_diff_nats": 2.127500965452782 + }, + { + "lane_row": 585, + "call_index": 29, + "lane_in_call": 5, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19049.678972498405, + "log_likelihood_scalar_library_pdip": 19047.758334915008, + "rel_diff": 0.00010083273578056058, + "abs_diff_nats": 1.9206375833964557 + }, + { + "lane_row": 586, + "call_index": 29, + "lane_in_call": 6, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 21634.912150988657, + "log_likelihood_scalar_library_pdip": 21634.912908724014, + "rel_diff": 3.5023730411122525e-08, + "abs_diff_nats": 0.0007577353571832646 + }, + { + "lane_row": 587, + "call_index": 29, + "lane_in_call": 7, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 17279.073387463533, + "log_likelihood_scalar_library_pdip": 17277.548844486642, + "rel_diff": 8.823838326913993e-05, + "abs_diff_nats": 1.524542976891098 + }, + { + "lane_row": 589, + "call_index": 29, + "lane_in_call": 9, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19085.76586038474, + "log_likelihood_scalar_library_pdip": 19085.260758097837, + "rel_diff": 2.6465569074837832e-05, + "abs_diff_nats": 0.5051022869047301 + }, + { + "lane_row": 590, + "call_index": 29, + "lane_in_call": 10, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 18850.657974117665, + "log_likelihood_scalar_library_pdip": 18852.377477863465, + "rel_diff": 9.120885404610184e-05, + "abs_diff_nats": 1.7195037458004663 + }, + { + "lane_row": 591, + "call_index": 29, + "lane_in_call": 11, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 17948.29558472064, + "log_likelihood_scalar_library_pdip": 17938.81214590915, + "rel_diff": 0.0005286547812840068, + "abs_diff_nats": 9.483438811490487 + }, + { + "lane_row": 592, + "call_index": 29, + "lane_in_call": 12, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19567.59008597873, + "log_likelihood_scalar_library_pdip": 19567.87452760185, + "rel_diff": 1.4536153260736072e-05, + "abs_diff_nats": 0.2844416231200739 + }, + { + "lane_row": 594, + "call_index": 29, + "lane_in_call": 14, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 20513.178506964596, + "log_likelihood_scalar_library_pdip": 20515.615684313987, + "rel_diff": 0.000118796208063827, + "abs_diff_nats": 2.437177349391277 + }, + { + "lane_row": 596, + "call_index": 29, + "lane_in_call": 16, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 20381.419794201614, + "log_likelihood_scalar_library_pdip": 20381.392098285884, + "rel_diff": 1.358882435376095e-06, + "abs_diff_nats": 0.02769591573087382 + }, + { + "lane_row": 598, + "call_index": 29, + "lane_in_call": 18, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 21879.106470076695, + "log_likelihood_scalar_library_pdip": 21876.421633665625, + "rel_diff": 0.0001227274028645728, + "abs_diff_nats": 2.684836411070137 + }, + { + "lane_row": 599, + "call_index": 29, + "lane_in_call": 19, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19070.98076961306, + "log_likelihood_scalar_library_pdip": 19068.74771725614, + "rel_diff": 0.00011710534902600158, + "abs_diff_nats": 2.2330523569180514 + }, + { + "lane_row": 601, + "call_index": 30, + "lane_in_call": 1, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19006.107952982842, + "log_likelihood_scalar_library_pdip": 19000.52538627992, + "rel_diff": 0.00029381117571366817, + "abs_diff_nats": 5.582566702920303 + }, + { + "lane_row": 605, + "call_index": 30, + "lane_in_call": 5, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19093.695409967768, + "log_likelihood_scalar_library_pdip": 19100.545050767436, + "rel_diff": 0.000358609703621673, + "abs_diff_nats": 6.849640799668123 + }, + { + "lane_row": 607, + "call_index": 30, + "lane_in_call": 7, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 15457.905053819479, + "log_likelihood_scalar_library_pdip": 15458.843389994363, + "rel_diff": 6.069898964701996e-05, + "abs_diff_nats": 0.9383361748841708 + }, + { + "lane_row": 608, + "call_index": 30, + "lane_in_call": 8, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19093.578904194008, + "log_likelihood_scalar_library_pdip": 19093.09632542886, + "rel_diff": 2.5275039570373763e-05, + "abs_diff_nats": 0.4825787651461724 + }, + { + "lane_row": 609, + "call_index": 30, + "lane_in_call": 9, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 18816.524739166347, + "log_likelihood_scalar_library_pdip": 18819.47117422664, + "rel_diff": 0.00015656311662620132, + "abs_diff_nats": 2.9464350602938794 + }, + { + "lane_row": 610, + "call_index": 30, + "lane_in_call": 10, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19961.793089449005, + "log_likelihood_scalar_library_pdip": 19962.72690550076, + "rel_diff": 4.6777980592282364e-05, + "abs_diff_nats": 0.9338160517545475 + }, + { + "lane_row": 611, + "call_index": 30, + "lane_in_call": 11, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 18964.328572389804, + "log_likelihood_scalar_library_pdip": 18963.81071228585, + "rel_diff": 2.7307808109457275e-05, + "abs_diff_nats": 0.5178601039551722 + }, + { + "lane_row": 616, + "call_index": 30, + "lane_in_call": 16, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 16157.618611578793, + "log_likelihood_scalar_library_pdip": 16137.966518201494, + "rel_diff": 0.0012177552453795253, + "abs_diff_nats": 19.652093377299025 + }, + { + "lane_row": 618, + "call_index": 30, + "lane_in_call": 18, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 15147.925921746471, + "log_likelihood_scalar_library_pdip": 15130.095556260629, + "rel_diff": 0.0011784701173592265, + "abs_diff_nats": 17.830365485842776 + }, + { + "lane_row": 619, + "call_index": 30, + "lane_in_call": 19, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 18170.391596124777, + "log_likelihood_scalar_library_pdip": 18173.122283071156, + "rel_diff": 0.00015025964739822718, + "abs_diff_nats": 2.7306869463791372 + }, + { + "lane_row": 620, + "call_index": 31, + "lane_in_call": 0, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 12243.070891139672, + "log_likelihood_scalar_library_pdip": 12237.764278143277, + "rel_diff": 0.00043362601826487697, + "abs_diff_nats": 5.306612996395415 + }, + { + "lane_row": 621, + "call_index": 31, + "lane_in_call": 1, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 20375.88154792207, + "log_likelihood_scalar_library_pdip": 20376.599150858965, + "rel_diff": 3.521701200400424e-05, + "abs_diff_nats": 0.7176029368965828 + }, + { + "lane_row": 623, + "call_index": 31, + "lane_in_call": 3, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 18940.663382936895, + "log_likelihood_scalar_library_pdip": 18939.878128135104, + "rel_diff": 4.1460393592732665e-05, + "abs_diff_nats": 0.7852548017908703 + }, + { + "lane_row": 624, + "call_index": 31, + "lane_in_call": 4, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 18556.343193916073, + "log_likelihood_scalar_library_pdip": 18559.1815404523, + "rel_diff": 0.00015293489802020903, + "abs_diff_nats": 2.8383465362276183 + }, + { + "lane_row": 627, + "call_index": 31, + "lane_in_call": 7, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 14418.540788760609, + "log_likelihood_scalar_library_pdip": 14406.334483179038, + "rel_diff": 0.0008472873926273766, + "abs_diff_nats": 12.206305581570632 + }, + { + "lane_row": 629, + "call_index": 31, + "lane_in_call": 9, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 22101.491967827496, + "log_likelihood_scalar_library_pdip": 22100.42695799777, + "rel_diff": 4.81895590411238e-05, + "abs_diff_nats": 1.0650098297264776 + }, + { + "lane_row": 630, + "call_index": 31, + "lane_in_call": 10, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 21945.29840753947, + "log_likelihood_scalar_library_pdip": 21945.367092616136, + "rel_diff": 3.129821268209426e-06, + "abs_diff_nats": 0.06868507666513324 + }, + { + "lane_row": 633, + "call_index": 31, + "lane_in_call": 13, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 18096.64218456883, + "log_likelihood_scalar_library_pdip": 18095.664398997113, + "rel_diff": 5.403424545012031e-05, + "abs_diff_nats": 0.9777855717184138 + }, + { + "lane_row": 635, + "call_index": 31, + "lane_in_call": 15, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 14797.835725126064, + "log_likelihood_scalar_library_pdip": 14722.729462192783, + "rel_diff": 0.0051013817190725405, + "abs_diff_nats": 75.10626293328096 + }, + { + "lane_row": 636, + "call_index": 31, + "lane_in_call": 16, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19057.351935080114, + "log_likelihood_scalar_library_pdip": 19057.852061954913, + "rel_diff": 2.6242562549674643e-05, + "abs_diff_nats": 0.5001268747982976 + }, + { + "lane_row": 637, + "call_index": 31, + "lane_in_call": 17, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19023.544109066046, + "log_likelihood_scalar_library_pdip": 19026.626512055678, + "rel_diff": 0.00016200470365458766, + "abs_diff_nats": 3.082402989632101 + }, + { + "lane_row": 638, + "call_index": 31, + "lane_in_call": 18, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 17243.765128367446, + "log_likelihood_scalar_library_pdip": 17244.917110508817, + "rel_diff": 6.680125708863287e-05, + "abs_diff_nats": 1.1519821413712634 + }, + { + "lane_row": 639, + "call_index": 31, + "lane_in_call": 19, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 2071.5958555061225, + "log_likelihood_scalar_library_pdip": 1986.8166325577913, + "rel_diff": 0.04267088444855021, + "abs_diff_nats": 84.77922294833115 + }, + { + "lane_row": 641, + "call_index": 32, + "lane_in_call": 1, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19060.7277604322, + "log_likelihood_scalar_library_pdip": 19058.121136663103, + "rel_diff": 0.00013677233712629719, + "abs_diff_nats": 2.606623769097496 + }, + { + "lane_row": 642, + "call_index": 32, + "lane_in_call": 2, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 17859.344888080766, + "log_likelihood_scalar_library_pdip": 17866.02936932458, + "rel_diff": 0.0003741447585041465, + "abs_diff_nats": 6.684481243813934 + }, + { + "lane_row": 643, + "call_index": 32, + "lane_in_call": 3, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 18455.987145840412, + "log_likelihood_scalar_library_pdip": 18455.371026349516, + "rel_diff": 3.3384291760741134e-05, + "abs_diff_nats": 0.6161194908963807 + }, + { + "lane_row": 647, + "call_index": 32, + "lane_in_call": 7, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 18954.587842630874, + "log_likelihood_scalar_library_pdip": 18953.671837205202, + "rel_diff": 4.832865280877548e-05, + "abs_diff_nats": 0.9160054256717558 + }, + { + "lane_row": 649, + "call_index": 32, + "lane_in_call": 9, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 10045.70260958156, + "log_likelihood_scalar_library_pdip": 9904.890709970048, + "rel_diff": 0.014216401143101312, + "abs_diff_nats": 140.81189961151176 + }, + { + "lane_row": 650, + "call_index": 32, + "lane_in_call": 10, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19015.577522130814, + "log_likelihood_scalar_library_pdip": 19018.479914296095, + "rel_diff": 0.00015260905068963495, + "abs_diff_nats": 2.9023921652806166 + }, + { + "lane_row": 651, + "call_index": 32, + "lane_in_call": 11, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 17818.844598713717, + "log_likelihood_scalar_library_pdip": 17818.72804797772, + "rel_diff": 6.5409122180044854e-06, + "abs_diff_nats": 0.11655073599831667 + }, + { + "lane_row": 652, + "call_index": 32, + "lane_in_call": 12, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 18084.000610569554, + "log_likelihood_scalar_library_pdip": 18077.36232895188, + "rel_diff": 0.000367215166509232, + "abs_diff_nats": 6.638281617673783 + }, + { + "lane_row": 653, + "call_index": 32, + "lane_in_call": 13, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 5722.700672000232, + "log_likelihood_scalar_library_pdip": 5725.1783476435085, + "rel_diff": 0.00043276828996889025, + "abs_diff_nats": 2.477675643276598 + }, + { + "lane_row": 654, + "call_index": 32, + "lane_in_call": 14, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19098.279929981756, + "log_likelihood_scalar_library_pdip": 19096.811823947988, + "rel_diff": 7.687702257855058e-05, + "abs_diff_nats": 1.468106033767981 + }, + { + "lane_row": 655, + "call_index": 32, + "lane_in_call": 15, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 10764.279131054449, + "log_likelihood_scalar_library_pdip": 10757.56067435495, + "rel_diff": 0.0006245334702610173, + "abs_diff_nats": 6.718456699498347 + }, + { + "lane_row": 656, + "call_index": 32, + "lane_in_call": 16, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 12948.060576331733, + "log_likelihood_scalar_library_pdip": 12874.726978418752, + "rel_diff": 0.005695934215607523, + "abs_diff_nats": 73.33359791298062 + }, + { + "lane_row": 657, + "call_index": 32, + "lane_in_call": 17, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 21267.336828702788, + "log_likelihood_scalar_library_pdip": 21269.59633783919, + "rel_diff": 0.0001062318767367566, + "abs_diff_nats": 2.2595091364019027 + }, + { + "lane_row": 658, + "call_index": 32, + "lane_in_call": 18, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19491.290465709688, + "log_likelihood_scalar_library_pdip": 19497.001010608812, + "rel_diff": 0.0002928935017245454, + "abs_diff_nats": 5.710544899124216 + }, + { + "lane_row": 660, + "call_index": 33, + "lane_in_call": 0, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 18619.187952722354, + "log_likelihood_scalar_library_pdip": 18605.19025711948, + "rel_diff": 0.0007523543381942447, + "abs_diff_nats": 13.997695602873137 + }, + { + "lane_row": 661, + "call_index": 33, + "lane_in_call": 1, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19138.77011854242, + "log_likelihood_scalar_library_pdip": 19131.295200573397, + "rel_diff": 0.0003907167753492437, + "abs_diff_nats": 7.474917969022499 + }, + { + "lane_row": 663, + "call_index": 33, + "lane_in_call": 3, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 18659.166449875152, + "log_likelihood_scalar_library_pdip": 18660.350001495302, + "rel_diff": 6.342601398447054e-05, + "abs_diff_nats": 1.1835516201499559 + }, + { + "lane_row": 666, + "call_index": 33, + "lane_in_call": 6, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 10287.131033381225, + "log_likelihood_scalar_library_pdip": 10290.409185060169, + "rel_diff": 0.0003185637830323575, + "abs_diff_nats": 3.2781516789436864 + }, + { + "lane_row": 667, + "call_index": 33, + "lane_in_call": 7, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19643.238396664165, + "log_likelihood_scalar_library_pdip": 19644.90718285182, + "rel_diff": 8.494752212995535e-05, + "abs_diff_nats": 1.6687861876562238 + }, + { + "lane_row": 670, + "call_index": 33, + "lane_in_call": 10, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 13373.390251866007, + "log_likelihood_scalar_library_pdip": 13360.317258229508, + "rel_diff": 0.0009784942515827007, + "abs_diff_nats": 13.072993636498722 + }, + { + "lane_row": 672, + "call_index": 33, + "lane_in_call": 12, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 22156.293896100688, + "log_likelihood_scalar_library_pdip": 22158.603292659467, + "rel_diff": 0.00010422121504131955, + "abs_diff_nats": 2.3093965587795537 + }, + { + "lane_row": 677, + "call_index": 33, + "lane_in_call": 17, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 20223.248964808176, + "log_likelihood_scalar_library_pdip": 20223.24896480695, + "rel_diff": 6.062323913053852e-14, + "abs_diff_nats": 1.2259988579899073e-09 + }, + { + "lane_row": 679, + "call_index": 33, + "lane_in_call": 19, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 16085.82259513007, + "log_likelihood_scalar_library_pdip": 16067.329556287332, + "rel_diff": 0.0011509715275306452, + "abs_diff_nats": 18.493038842738315 + }, + { + "lane_row": 694, + "call_index": 34, + "lane_in_call": 14, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19307.48772002191, + "log_likelihood_scalar_library_pdip": 19301.764865201843, + "rel_diff": 0.00029649386260957876, + "abs_diff_nats": 5.72285482006555 + }, + { + "lane_row": 699, + "call_index": 34, + "lane_in_call": 19, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 22350.15350382489, + "log_likelihood_scalar_library_pdip": 22350.153503824426, + "rel_diff": 2.0834813829267796e-14, + "abs_diff_nats": 4.656612873077393e-10 + }, + { + "lane_row": 702, + "call_index": 35, + "lane_in_call": 2, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 21760.480200258753, + "log_likelihood_scalar_library_pdip": 21759.57782276658, + "rel_diff": 4.1470358456553415e-05, + "abs_diff_nats": 0.9023774921734002 + }, + { + "lane_row": 705, + "call_index": 35, + "lane_in_call": 5, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 21351.555615724563, + "log_likelihood_scalar_library_pdip": 21349.60577645093, + "rel_diff": 9.13290528194241e-05, + "abs_diff_nats": 1.949839273631369 + }, + { + "lane_row": 712, + "call_index": 35, + "lane_in_call": 12, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19009.15691285422, + "log_likelihood_scalar_library_pdip": 19009.339829244982, + "rel_diff": 9.622448354524252e-06, + "abs_diff_nats": 0.1829163907605107 + }, + { + "lane_row": 713, + "call_index": 35, + "lane_in_call": 13, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19281.55486713585, + "log_likelihood_scalar_library_pdip": 19282.095475221624, + "rel_diff": 2.803679125385042e-05, + "abs_diff_nats": 0.5406080857756024 + }, + { + "lane_row": 723, + "call_index": 36, + "lane_in_call": 3, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 20251.060123143234, + "log_likelihood_scalar_library_pdip": 20250.684620165433, + "rel_diff": 1.854273002831863e-05, + "abs_diff_nats": 0.3755029778003518 + }, + { + "lane_row": 724, + "call_index": 36, + "lane_in_call": 4, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 16676.78640919952, + "log_likelihood_scalar_library_pdip": 16652.354001429117, + "rel_diff": 0.0014672044425855521, + "abs_diff_nats": 24.432407770404097 + }, + { + "lane_row": 727, + "call_index": 36, + "lane_in_call": 7, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19960.565884317868, + "log_likelihood_scalar_library_pdip": 19960.685686422235, + "rel_diff": 6.001903253699412e-06, + "abs_diff_nats": 0.1198021043674089 + }, + { + "lane_row": 730, + "call_index": 36, + "lane_in_call": 10, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 16801.494710389663, + "log_likelihood_scalar_library_pdip": 16792.545243211687, + "rel_diff": 0.0005329428653225472, + "abs_diff_nats": 8.949467177975748 + }, + { + "lane_row": 732, + "call_index": 36, + "lane_in_call": 12, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19107.160142547385, + "log_likelihood_scalar_library_pdip": 19108.89932941497, + "rel_diff": 9.101449736075998e-05, + "abs_diff_nats": 1.739186867584067 + }, + { + "lane_row": 739, + "call_index": 36, + "lane_in_call": 19, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19694.648776787784, + "log_likelihood_scalar_library_pdip": 19700.26945602437, + "rel_diff": 0.00028530976437308986, + "abs_diff_nats": 5.620679236584692 + }, + { + "lane_row": 744, + "call_index": 37, + "lane_in_call": 4, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 18676.364032493715, + "log_likelihood_scalar_library_pdip": 18677.143486790243, + "rel_diff": 4.173305714970977e-05, + "abs_diff_nats": 0.7794542965275468 + }, + { + "lane_row": 746, + "call_index": 37, + "lane_in_call": 6, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 16772.122180434395, + "log_likelihood_scalar_library_pdip": 16767.987794581466, + "rel_diff": 0.00024656422127555393, + "abs_diff_nats": 4.134385852928972 + }, + { + "lane_row": 749, + "call_index": 37, + "lane_in_call": 9, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 20373.309365091198, + "log_likelihood_scalar_library_pdip": 20379.64226899312, + "rel_diff": 0.0003107465684791716, + "abs_diff_nats": 6.332903901922691 + }, + { + "lane_row": 750, + "call_index": 37, + "lane_in_call": 10, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19158.250033109958, + "log_likelihood_scalar_library_pdip": 19161.18205035649, + "rel_diff": 0.00015301859973069354, + "abs_diff_nats": 2.9320172465304495 + }, + { + "lane_row": 753, + "call_index": 37, + "lane_in_call": 13, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 20045.522563390543, + "log_likelihood_scalar_library_pdip": 20046.03042166463, + "rel_diff": 2.533460557544151e-05, + "abs_diff_nats": 0.5078582740861748 + }, + { + "lane_row": 757, + "call_index": 37, + "lane_in_call": 17, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 22526.788543957333, + "log_likelihood_scalar_library_pdip": 22526.91967609955, + "rel_diff": 5.82113063408525e-06, + "abs_diff_nats": 0.13113214221812086 + }, + { + "lane_row": 758, + "call_index": 37, + "lane_in_call": 18, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 17546.92179114587, + "log_likelihood_scalar_library_pdip": 17538.58436211952, + "rel_diff": 0.00047537639607656213, + "abs_diff_nats": 8.337429026349128 + }, + { + "lane_row": 765, + "call_index": 38, + "lane_in_call": 5, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 20755.66506729152, + "log_likelihood_scalar_library_pdip": 20755.2687909561, + "rel_diff": 1.9092806718735832e-05, + "abs_diff_nats": 0.3962763354211347 + }, + { + "lane_row": 768, + "call_index": 38, + "lane_in_call": 8, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 18021.799304826443, + "log_likelihood_scalar_library_pdip": 18016.497025570374, + "rel_diff": 0.0002943013421834556, + "abs_diff_nats": 5.302279256069596 + }, + { + "lane_row": 769, + "call_index": 38, + "lane_in_call": 9, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 21967.26897365337, + "log_likelihood_scalar_library_pdip": 21967.246576628102, + "rel_diff": 1.0195645224936595e-06, + "abs_diff_nats": 0.022397025266400306 + }, + { + "lane_row": 773, + "call_index": 38, + "lane_in_call": 13, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 18948.091512758045, + "log_likelihood_scalar_library_pdip": 18946.271819967063, + "rel_diff": 9.60449004570637e-05, + "abs_diff_nats": 1.8196927909812075 + }, + { + "lane_row": 774, + "call_index": 38, + "lane_in_call": 14, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 18554.774486529954, + "log_likelihood_scalar_library_pdip": 18579.585813092646, + "rel_diff": 0.001335407947856864, + "abs_diff_nats": 24.811326562692557 + }, + { + "lane_row": 776, + "call_index": 38, + "lane_in_call": 16, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 17923.223175628053, + "log_likelihood_scalar_library_pdip": 17917.499476410667, + "rel_diff": 0.0003194474332158503, + "abs_diff_nats": 5.723699217385729 + }, + { + "lane_row": 778, + "call_index": 38, + "lane_in_call": 18, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 18607.763262769542, + "log_likelihood_scalar_library_pdip": 18598.17153143034, + "rel_diff": 0.0005157351798262647, + "abs_diff_nats": 9.591731339201942 + }, + { + "lane_row": 779, + "call_index": 38, + "lane_in_call": 19, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 18982.272073743436, + "log_likelihood_scalar_library_pdip": 18991.640181492556, + "rel_diff": 0.000493275339022554, + "abs_diff_nats": 9.3681077491201 + }, + { + "lane_row": 780, + "call_index": 39, + "lane_in_call": 0, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 18612.38454657095, + "log_likelihood_scalar_library_pdip": 18600.957396827485, + "rel_diff": 0.0006143312679923018, + "abs_diff_nats": 11.427149743463815 + }, + { + "lane_row": 781, + "call_index": 39, + "lane_in_call": 1, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 18554.55423972136, + "log_likelihood_scalar_library_pdip": 18554.203173293135, + "rel_diff": 1.892112665506829e-05, + "abs_diff_nats": 0.3510664282257494 + }, + { + "lane_row": 784, + "call_index": 39, + "lane_in_call": 4, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19153.05593273616, + "log_likelihood_scalar_library_pdip": 19155.301389397915, + "rel_diff": 0.00011722377090861102, + "abs_diff_nats": 2.2454566617561795 + }, + { + "lane_row": 787, + "call_index": 39, + "lane_in_call": 7, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 20310.002954694806, + "log_likelihood_scalar_library_pdip": 20306.382871777856, + "rel_diff": 0.0001782731538063062, + "abs_diff_nats": 3.620082916950196 + }, + { + "lane_row": 790, + "call_index": 39, + "lane_in_call": 10, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 21712.397031071923, + "log_likelihood_scalar_library_pdip": 21712.39692193074, + "rel_diff": 5.026675939767673e-09, + "abs_diff_nats": 0.00010914118320215493 + }, + { + "lane_row": 792, + "call_index": 39, + "lane_in_call": 12, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19305.65398751985, + "log_likelihood_scalar_library_pdip": 19312.193076072588, + "rel_diff": 0.0003385989632031726, + "abs_diff_nats": 6.539088552737667 + }, + { + "lane_row": 794, + "call_index": 39, + "lane_in_call": 14, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 15870.333128117883, + "log_likelihood_scalar_library_pdip": 15854.708639049531, + "rel_diff": 0.0009854794196513625, + "abs_diff_nats": 15.624489068351977 + }, + { + "lane_row": 796, + "call_index": 39, + "lane_in_call": 16, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19006.562508385163, + "log_likelihood_scalar_library_pdip": 19003.083723313946, + "rel_diff": 0.00018306423956594253, + "abs_diff_nats": 3.4787850712164072 + }, + { + "lane_row": 797, + "call_index": 39, + "lane_in_call": 17, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 21663.800803347924, + "log_likelihood_scalar_library_pdip": 21664.02598523534, + "rel_diff": 1.039427701808004e-05, + "abs_diff_nats": 0.2251818874174205 + }, + { + "lane_row": 800, + "call_index": 40, + "lane_in_call": 0, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19382.610465256235, + "log_likelihood_scalar_library_pdip": 19382.61224667751, + "rel_diff": 9.19082139529952e-08, + "abs_diff_nats": 0.0017814212733355816 + }, + { + "lane_row": 801, + "call_index": 40, + "lane_in_call": 1, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 17868.666212812343, + "log_likelihood_scalar_library_pdip": 17859.710662896796, + "rel_diff": 0.0005014386898300491, + "abs_diff_nats": 8.955549915546726 + }, + { + "lane_row": 805, + "call_index": 40, + "lane_in_call": 5, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 18995.372011418567, + "log_likelihood_scalar_library_pdip": 18991.636767999404, + "rel_diff": 0.000196678330824928, + "abs_diff_nats": 3.735243419163453 + }, + { + "lane_row": 811, + "call_index": 40, + "lane_in_call": 11, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19190.96308244856, + "log_likelihood_scalar_library_pdip": 19191.807562218146, + "rel_diff": 4.4002096563702716e-05, + "abs_diff_nats": 0.8444797695847228 + }, + { + "lane_row": 812, + "call_index": 40, + "lane_in_call": 12, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 22551.011687354607, + "log_likelihood_scalar_library_pdip": 22551.208154687287, + "rel_diff": 8.712053533120793e-06, + "abs_diff_nats": 0.1964673326801858 + } + ], + "gated": false + }, + "lane_certified": [ + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 0, + 1, + 0, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 0, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 0, + 1, + 0, + 1, + 1, + 1, + 0, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 0, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 0, + 1, + 1, + 1, + 0, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 0, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 0, + 0, + 1, + 1, + 1, + 1, + 1, + 0, + 0, + 1, + 0, + 0, + 1, + 1, + 1, + 0, + 1, + 0, + 0, + 1, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 1, + 1, + 0, + 1, + 0, + 1, + 1, + 0, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 0, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 0, + 0, + 1, + 1, + 0, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 1, + 1, + 0, + 0, + 1, + 1, + 1, + 0, + 0, + 0, + 1, + 0, + 0, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 0, + 0, + 1, + 1, + 0, + 0, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 0, + 0, + 1, + 1, + 1, + 1, + 0, + 1, + 0, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 0, + 1, + 0, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 0, + 1, + 0, + 0, + 1, + 1, + 0, + 1, + 0, + 0, + 1, + 0, + 0, + 0, + 1, + 0, + 0, + 1, + 0, + 1, + 0, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 0, + 0, + 0, + 1, + 1, + 0, + 1, + 0, + 1, + 1, + 1, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1, + 1, + 0, + 0, + 1, + 0, + 0, + 1, + 1, + 0, + 1, + 0, + 1, + 1, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 1, + 1, + 0, + 0, + 1, + 1, + 0, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 0, + 1, + 0, + 1, + 1, + 1, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1, + 0, + 1, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 1, + 1, + 0, + 1, + 0, + 0, + 1, + 1, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 1, + 1, + 1, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 1, + 0, + 1, + 1, + 0, + 0, + 1, + 1, + 0, + 1, + 0, + 1, + 1, + 1, + 1, + 0, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 0, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 0, + 1, + 1, + 0, + 1, + 1, + 0, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 0, + 1, + 0, + 1, + 1, + 0, + 0, + 1, + 1, + 0, + 1, + 1, + 1, + 0, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 0, + 0, + 1, + 1, + 1, + 0, + 0, + 1, + 0, + 1, + 0, + 0, + 0, + 0, + 1, + 1, + 0, + 1, + 1, + 0, + 1, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 0, + 1, + 1, + 0, + 0, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 0, + 0, + 1, + 0, + 0, + 0, + 1, + 0, + 1, + 0, + 0, + 0, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 0, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 0, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 0, + 0, + 1, + 1, + 0, + 1, + 1, + 0, + 1, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 1, + 1, + 0, + 0, + 0, + 1, + 0, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 0, + 0, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 0, + 0, + 0, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 0, + 0, + 0, + 0, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 0, + 1, + 0, + 1, + 0, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 0, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 0, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 0, + 0, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1 + ], + "lane_passes": [ + 3, + 4, + 2, + 7, + 3, + 3, + 16, + 7, + 4, + 1, + 4, + 16, + 3, + 3, + 8, + 4, + 2, + 2, + 3, + 4, + 4, + 3, + 3, + 7, + 16, + 4, + 2, + 16, + 11, + 16, + 5, + 6, + 16, + 3, + 2, + 3, + 2, + 3, + 3, + 3, + 3, + 3, + 2, + 9, + 3, + 3, + 3, + 3, + 4, + 4, + 10, + 16, + 3, + 2, + 3, + 3, + 16, + 3, + 7, + 4, + 16, + 3, + 0, + 2, + 3, + 4, + 3, + 3, + 3, + 3, + 3, + 2, + 3, + 3, + 4, + 3, + 3, + 3, + 16, + 3, + 9, + 3, + 3, + 3, + 16, + 3, + 16, + 4, + 2, + 3, + 3, + 16, + 2, + 3, + 3, + 3, + 1, + 3, + 16, + 3, + 3, + 3, + 2, + 3, + 5, + 3, + 3, + 5, + 3, + 4, + 3, + 3, + 16, + 3, + 5, + 16, + 5, + 1, + 3, + 2, + 7, + 3, + 16, + 2, + 3, + 3, + 7, + 16, + 2, + 5, + 3, + 16, + 9, + 16, + 3, + 4, + 3, + 16, + 16, + 3, + 3, + 3, + 4, + 3, + 3, + 16, + 2, + 3, + 4, + 3, + 3, + 2, + 3, + 5, + 3, + 2, + 2, + 6, + 5, + 16, + 15, + 16, + 16, + 3, + 3, + 6, + 3, + 3, + 3, + 16, + 16, + 3, + 6, + 8, + 2, + 8, + 1, + 5, + 3, + 3, + 3, + 3, + 3, + 8, + 16, + 16, + 2, + 3, + 3, + 7, + 3, + 3, + 5, + 5, + 16, + 3, + 4, + 3, + 3, + 9, + 16, + 4, + 3, + 10, + 3, + 4, + 3, + 5, + 4, + 3, + 16, + 16, + 10, + 6, + 4, + 16, + 16, + 3, + 3, + 3, + 3, + 3, + 16, + 3, + 3, + 3, + 2, + 3, + 3, + 3, + 3, + 7, + 4, + 3, + 5, + 6, + 12, + 3, + 16, + 16, + 3, + 16, + 3, + 3, + 3, + 10, + 8, + 7, + 16, + 3, + 6, + 4, + 3, + 16, + 3, + 6, + 16, + 3, + 3, + 2, + 3, + 3, + 2, + 2, + 1, + 2, + 3, + 4, + 4, + 3, + 7, + 2, + 3, + 3, + 7, + 1, + 16, + 3, + 3, + 1, + 3, + 7, + 3, + 16, + 3, + 3, + 3, + 3, + 10, + 3, + 3, + 16, + 1, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 16, + 16, + 16, + 4, + 2, + 14, + 6, + 6, + 16, + 16, + 6, + 16, + 16, + 9, + 2, + 8, + 16, + 3, + 16, + 16, + 2, + 1, + 16, + 5, + 16, + 7, + 16, + 5, + 5, + 9, + 16, + 5, + 16, + 5, + 2, + 16, + 16, + 16, + 16, + 16, + 3, + 2, + 10, + 16, + 16, + 7, + 9, + 3, + 3, + 3, + 4, + 6, + 13, + 5, + 9, + 3, + 3, + 16, + 16, + 16, + 3, + 9, + 16, + 1, + 3, + 3, + 16, + 16, + 3, + 5, + 2, + 2, + 3, + 3, + 16, + 6, + 16, + 5, + 16, + 1, + 16, + 6, + 16, + 8, + 6, + 2, + 16, + 16, + 8, + 3, + 3, + 16, + 16, + 16, + 1, + 16, + 16, + 7, + 3, + 7, + 16, + 10, + 3, + 7, + 3, + 3, + 16, + 7, + 7, + 8, + 7, + 2, + 2, + 16, + 12, + 5, + 8, + 5, + 16, + 16, + 2, + 4, + 16, + 16, + 5, + 4, + 3, + 16, + 3, + 2, + 1, + 2, + 7, + 4, + 16, + 3, + 16, + 5, + 16, + 5, + 7, + 16, + 2, + 6, + 3, + 2, + 16, + 6, + 6, + 10, + 3, + 16, + 16, + 9, + 4, + 5, + 2, + 16, + 4, + 16, + 3, + 4, + 2, + 4, + 16, + 7, + 2, + 16, + 3, + 16, + 16, + 15, + 3, + 3, + 2, + 5, + 4, + 4, + 4, + 16, + 2, + 4, + 5, + 16, + 10, + 7, + 6, + 16, + 11, + 16, + 16, + 7, + 6, + 16, + 4, + 16, + 16, + 7, + 16, + 16, + 16, + 6, + 16, + 16, + 5, + 16, + 2, + 16, + 5, + 5, + 4, + 1, + 16, + 9, + 11, + 11, + 5, + 14, + 16, + 16, + 16, + 7, + 7, + 16, + 1, + 16, + 6, + 5, + 5, + 16, + 16, + 16, + 16, + 11, + 3, + 6, + 5, + 7, + 16, + 16, + 5, + 16, + 16, + 2, + 15, + 16, + 7, + 16, + 9, + 1, + 16, + 16, + 16, + 4, + 16, + 16, + 16, + 16, + 6, + 16, + 16, + 16, + 16, + 6, + 16, + 16, + 16, + 16, + 9, + 16, + 16, + 16, + 7, + 10, + 16, + 16, + 2, + 9, + 16, + 16, + 10, + 16, + 15, + 16, + 8, + 16, + 16, + 16, + 10, + 16, + 16, + 16, + 16, + 7, + 16, + 7, + 16, + 3, + 16, + 16, + 5, + 16, + 8, + 7, + 9, + 16, + 6, + 16, + 16, + 16, + 16, + 16, + 8, + 4, + 6, + 9, + 16, + 11, + 16, + 16, + 16, + 16, + 2, + 16, + 16, + 11, + 10, + 16, + 3, + 16, + 16, + 3, + 16, + 16, + 8, + 16, + 16, + 16, + 16, + 16, + 7, + 16, + 16, + 16, + 7, + 7, + 1, + 16, + 8, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 7, + 16, + 16, + 16, + 16, + 2, + 4, + 16, + 16, + 5, + 3, + 16, + 10, + 16, + 4, + 4, + 14, + 4, + 16, + 7, + 16, + 3, + 9, + 3, + 2, + 2, + 7, + 5, + 8, + 3, + 13, + 3, + 2, + 3, + 4, + 16, + 7, + 2, + 10, + 5, + 16, + 6, + 3, + 16, + 3, + 3, + 16, + 7, + 8, + 7, + 4, + 11, + 3, + 16, + 16, + 5, + 8, + 4, + 9, + 7, + 6, + 7, + 12, + 5, + 16, + 16, + 2, + 15, + 16, + 2, + 8, + 16, + 5, + 16, + 9, + 11, + 7, + 8, + 2, + 7, + 16, + 10, + 7, + 10, + 3, + 16, + 3, + 16, + 16, + 8, + 16, + 16, + 6, + 2, + 16, + 7, + 11, + 6, + 16, + 16, + 6, + 8, + 10, + 16, + 2, + 3, + 16, + 8, + 7, + 16, + 16, + 2, + 6, + 6, + 16, + 16, + 14, + 16, + 7, + 16, + 16, + 16, + 16, + 7, + 8, + 16, + 3, + 8, + 16, + 3, + 4, + 16, + 4, + 16, + 9, + 16, + 9, + 16, + 16, + 8, + 8, + 16, + 16, + 5, + 3, + 8, + 16, + 2, + 4, + 3, + 5, + 7, + 16, + 16, + 4, + 16, + 16, + 16, + 2, + 16, + 4, + 16, + 16, + 16, + 16, + 3, + 16, + 10, + 16, + 15, + 16, + 11, + 10, + 5, + 13, + 8, + 6, + 7, + 10, + 4, + 8, + 14, + 16, + 16, + 2, + 6, + 16, + 8, + 6, + 11, + 7, + 3, + 11, + 16, + 16, + 7, + 16, + 4, + 7, + 16, + 9, + 1, + 8, + 7, + 12, + 16, + 5, + 16, + 16, + 6, + 8, + 16, + 2, + 14, + 16, + 6, + 7, + 16, + 6, + 16, + 5, + 16, + 2, + 9, + 15, + 16, + 16, + 16, + 8, + 16, + 4, + 8, + 16, + 3, + 4, + 7, + 10, + 7, + 16, + 16, + 5, + 16, + 8, + 15, + 8, + 5, + 2, + 16, + 6, + 16, + 16, + 16, + 11, + 7, + 15, + 4, + 16, + 5, + 4, + 5, + 16, + 16, + 16, + 16, + 6, + 4, + 16, + 5, + 7, + 5, + 4, + 10, + 7, + 9, + 7, + 13, + 4, + 3, + 4, + 11, + 3, + 9, + 16, + 16, + 8, + 16, + 2, + 16, + 2, + 2, + 3, + 16, + 5, + 3, + 9, + 6, + 16, + 10, + 7, + 3, + 9, + 16, + 9, + 2, + 9, + 7, + 4, + 13, + 11, + 5, + 3, + 7, + 5, + 7, + 4, + 6, + 7, + 10, + 6, + 5, + 6, + 7, + 3, + 5, + 5, + 8, + 9, + 9, + 2, + 1, + 5, + 16, + 16, + 6, + 7, + 3, + 7, + 7, + 6, + 16, + 12, + 2, + 8, + 3, + 9, + 8, + 4, + 9, + 8, + 3, + 3, + 6, + 7, + 16, + 5, + 7, + 3, + 9, + 5, + 6, + 3, + 5, + 3, + 5, + 7, + 9, + 8, + 4, + 3, + 10, + 5, + 3, + 2, + 16, + 7, + 5, + 11, + 12, + 16, + 2, + 10, + 6, + 7, + 9, + 5, + 7, + 7, + 1, + 7, + 16, + 3, + 8, + 3, + 10, + 6, + 4, + 4, + 16, + 3, + 9, + 7, + 6, + 4, + 9, + 3, + 15, + 5, + 11, + 16, + 4, + 4, + 9, + 7, + 4, + 5, + 7, + 5, + 3, + 7, + 5, + 4, + 8, + 5, + 8, + 6, + 4, + 8, + 7, + 11, + 6, + 6, + 2, + 5, + 8, + 6, + 3, + 6, + 9, + 8, + 8, + 7, + 9, + 4, + 5, + 7, + 9, + 16, + 8, + 2, + 12, + 8, + 10, + 2, + 6, + 10, + 8, + 5, + 7, + 2, + 5, + 7, + 13, + 2, + 5, + 8, + 7, + 9, + 16, + 5, + 7, + 6, + 14, + 16, + 10, + 16, + 3, + 8, + 3, + 5, + 8, + 16, + 7, + 5, + 4, + 16, + 16, + 9, + 5, + 5, + 13, + 5, + 12, + 10, + 7, + 12, + 8, + 5, + 6, + 9, + 3, + 7, + 5, + 16, + 7, + 6, + 6, + 6, + 4, + 5, + 16, + 16, + 4, + 9, + 7, + 3, + 9, + 6, + 4, + 2, + 7, + 6, + 3, + 3, + 7, + 9, + 2, + 8, + 7, + 3, + 16, + 13, + 15, + 2, + 6, + 9, + 6, + 16, + 5, + 5, + 10, + 5, + 7, + 3, + 7, + 16, + 5, + 8, + 7, + 2, + 16, + 8, + 6, + 6, + 5, + 15, + 7, + 3, + 16, + 4, + 9, + 7, + 7, + 7, + 16, + 3, + 12, + 4, + 4, + 2, + 4, + 5, + 6, + 12, + 7, + 6, + 7, + 7, + 6, + 16, + 3, + 4, + 6, + 5, + 5, + 7, + 7, + 8, + 7, + 5, + 2, + 16, + 16, + 16, + 12, + 16, + 9, + 3, + 6, + 11, + 2, + 3, + 5, + 16, + 6, + 12, + 16, + 7, + 8, + 7, + 7, + 10, + 6, + 7, + 5, + 5, + 16, + 11, + 7, + 6, + 6, + 4, + 5, + 4, + 9, + 8, + 7, + 5, + 16, + 7, + 8, + 1, + 11, + 7, + 4, + 10, + 5, + 9, + 4, + 8, + 7, + 16, + 12, + 4, + 5, + 5, + 7, + 6, + 9, + 10, + 6, + 9, + 6, + 9, + 3, + 9, + 8, + 9, + 6, + 4, + 8, + 6, + 12, + 16, + 7, + 7, + 16, + 6, + 9, + 8, + 6, + 7, + 5, + 8, + 7, + 7, + 6, + 2, + 8, + 8, + 9, + 9, + 8, + 7, + 7, + 6, + 2, + 5, + 9, + 8, + 3, + 7, + 9, + 7, + 7, + 5, + 16, + 16, + 6, + 7, + 5, + 8, + 5, + 9, + 7, + 6, + 6, + 7, + 7, + 8, + 1, + 8, + 10, + 3, + 4, + 6, + 8, + 5, + 7, + 6, + 5, + 6, + 5, + 8, + 8, + 7, + 7, + 9, + 8, + 11, + 7, + 8, + 8, + 7, + 9, + 4, + 8, + 8, + 5, + 8, + 4, + 9, + 16, + 7, + 16, + 3, + 7, + 8, + 5, + 8, + 7, + 8, + 13, + 7, + 3, + 7, + 7, + 9, + 5, + 9, + 7, + 7, + 8, + 8, + 9, + 8, + 6, + 4, + 3, + 10, + 5, + 9, + 9, + 7, + 3, + 8, + 9, + 7, + 5, + 9, + 9, + 6, + 7, + 3, + 8, + 6, + 9, + 5, + 7, + 6, + 7, + 6, + 8, + 5, + 6, + 7, + 7, + 7, + 7, + 6, + 16, + 6, + 2, + 9, + 7, + 8, + 7, + 6, + 10, + 7, + 5, + 9, + 9, + 6, + 4, + 8, + 7, + 5, + 8, + 8, + 10, + 6, + 7, + 8, + 16, + 8, + 7, + 7, + 7, + 3, + 8, + 7, + 6, + 5, + 3, + 9, + 4, + 3, + 5, + 6, + 7, + 7, + 6, + 9, + 9, + 7, + 7, + 9, + 3, + 7, + 9, + 7, + 4, + 5, + 5, + 16, + 10, + 7, + 9, + 7, + 8, + 10, + 7, + 8, + 6, + 7, + 3, + 11, + 5, + 6, + 6, + 5, + 6, + 9, + 8, + 8, + 4, + 5, + 6, + 7, + 7, + 7, + 7, + 9, + 7, + 6, + 8, + 8, + 3, + 6, + 7, + 4, + 3, + 8, + 7, + 8, + 6, + 8, + 7, + 8, + 6, + 9, + 9, + 4, + 7, + 9, + 8, + 9, + 6, + 7, + 8, + 4, + 5, + 6, + 2, + 6, + 16, + 4, + 16, + 7, + 10, + 7, + 7, + 5, + 7, + 6, + 5, + 8, + 8, + 8, + 2, + 5, + 4, + 4, + 6, + 10, + 8, + 1, + 9, + 8, + 8, + 7, + 4, + 6, + 9, + 11, + 8, + 6, + 3, + 4, + 3, + 7, + 4, + 3, + 7, + 4, + 8, + 5, + 7, + 6, + 6, + 8, + 6, + 4, + 7, + 7, + 12, + 8, + 2, + 7, + 5, + 8, + 7, + 8, + 3, + 5, + 7, + 3, + 5, + 6, + 3, + 3, + 5, + 6, + 7, + 7, + 4, + 11, + 9, + 7, + 5, + 3, + 7, + 6, + 4, + 6, + 7, + 8, + 7, + 7, + 9, + 7, + 7, + 6, + 5, + 9, + 7, + 5, + 3, + 7, + 8, + 6, + 3, + 8, + 3, + 4, + 9, + 10, + 8, + 6, + 7, + 4, + 9, + 7, + 4, + 5, + 6, + 6, + 4, + 7, + 5, + 7, + 9, + 7, + 8, + 9, + 6, + 5, + 7, + 6, + 8, + 7, + 6, + 7, + 13, + 7, + 6, + 8, + 5, + 9, + 7, + 8, + 5, + 5, + 6, + 7, + 9, + 2, + 7, + 8, + 8, + 5, + 6, + 7, + 8, + 4, + 4, + 9, + 4, + 6, + 6, + 4, + 6, + 7, + 7, + 6, + 8, + 9, + 6, + 8, + 5, + 7, + 9, + 8, + 5, + 7, + 10, + 5, + 6, + 7, + 2, + 6, + 9, + 7, + 6, + 7, + 4, + 7, + 6, + 8, + 9, + 4, + 8, + 5, + 5, + 7, + 6, + 5, + 5, + 5, + 7, + 6, + 5, + 13, + 5, + 8, + 9, + 2, + 8, + 7, + 8, + 5, + 8, + 6, + 3, + 8, + 9, + 6, + 7, + 7, + 4, + 3, + 9, + 8, + 6, + 6, + 16, + 7, + 4, + 7, + 5, + 10, + 6, + 7, + 10, + 9, + 4, + 3, + 5, + 7, + 5, + 7, + 9, + 5, + 7, + 8, + 7, + 4, + 7, + 9, + 7, + 7, + 7, + 8, + 7, + 7, + 5, + 7, + 7, + 7, + 6, + 9, + 6, + 7, + 6, + 5, + 7, + 5, + 10, + 8, + 6, + 9, + 7, + 5, + 5, + 7, + 5, + 10, + 3, + 8, + 11, + 8, + 3, + 9, + 9, + 8, + 8, + 8, + 7, + 9, + 7, + 6, + 7, + 8, + 10, + 7, + 8, + 7, + 10, + 8, + 10, + 6, + 6, + 8, + 7, + 6, + 8, + 8, + 8, + 7, + 8, + 6, + 8, + 8, + 9, + 7, + 7, + 2, + 6, + 4, + 7, + 7, + 7, + 6, + 10, + 9, + 9, + 4, + 4, + 9, + 6, + 9, + 16, + 8, + 7, + 6, + 10, + 7, + 6, + 7, + 7, + 8, + 5, + 4, + 6, + 6, + 4, + 10, + 8, + 7, + 8, + 8, + 10, + 6, + 5, + 6, + 8, + 6, + 7, + 7, + 5, + 9, + 10, + 5, + 5, + 8, + 4, + 8, + 7, + 7, + 7, + 4, + 8, + 4, + 5, + 5, + 3, + 5, + 8, + 7, + 7, + 7, + 7, + 9, + 5, + 7, + 6, + 7, + 8, + 7, + 9, + 8, + 3, + 6, + 8, + 7, + 7, + 7, + 8, + 8, + 7, + 8, + 6, + 7, + 15, + 7, + 8, + 6, + 8, + 8, + 5, + 6, + 9, + 6, + 9, + 8, + 8, + 7, + 7, + 7, + 6, + 6, + 9, + 8, + 7, + 7, + 8, + 9, + 8, + 5, + 8, + 9, + 8, + 6, + 5, + 5, + 3, + 7, + 6, + 7, + 4, + 5, + 5, + 6, + 5, + 8, + 7, + 7, + 6, + 6, + 7, + 6, + 6, + 5, + 8, + 6, + 5, + 7, + 8, + 8, + 8, + 8, + 8, + 5, + 8, + 8, + 3, + 9, + 5, + 6, + 6, + 8, + 7, + 6, + 9, + 7, + 7, + 5, + 5, + 9, + 8, + 6, + 6, + 9, + 9, + 6, + 10, + 8, + 8, + 7, + 13, + 6, + 8, + 8, + 7, + 9, + 8, + 5, + 7, + 8, + 8, + 7, + 9, + 8, + 7, + 7, + 5, + 8, + 10, + 8, + 6, + 6, + 8, + 8, + 10, + 10, + 8, + 8, + 8, + 7, + 8, + 6, + 6, + 8, + 9, + 4, + 8, + 7, + 8, + 8, + 7, + 8, + 14, + 5, + 7, + 8, + 5, + 5, + 8, + 6, + 7, + 8, + 6, + 4, + 8, + 7, + 8, + 7, + 9, + 7, + 8, + 6, + 7, + 7, + 7, + 10, + 7, + 7, + 7, + 9, + 7, + 10, + 8, + 8, + 7, + 9, + 7, + 7, + 8, + 6, + 8, + 7, + 4, + 7, + 6, + 6, + 8, + 8, + 7, + 8, + 4, + 3, + 9, + 5, + 7, + 8, + 6, + 6, + 8, + 7, + 6, + 9, + 8, + 8, + 5, + 8, + 8, + 5, + 7, + 9, + 7, + 5, + 7, + 7, + 5, + 5, + 7, + 7, + 5, + 7, + 4, + 7, + 9, + 11, + 9, + 5, + 9, + 8, + 5, + 2, + 5, + 7, + 8, + 9, + 6, + 7, + 8, + 8, + 7, + 8, + 4, + 10, + 7, + 7, + 8, + 8, + 9, + 7, + 8, + 10, + 7, + 9, + 8, + 7, + 8, + 8, + 6, + 7, + 7, + 7, + 3, + 5, + 8, + 9, + 7, + 7, + 7, + 8, + 7, + 6, + 7, + 5, + 7, + 7, + 9, + 9, + 6, + 9, + 7, + 7, + 8, + 8, + 4, + 6, + 7, + 6, + 7, + 7, + 7, + 6, + 9, + 6, + 8, + 7, + 4, + 6, + 8, + 9, + 6, + 8, + 8, + 7, + 7, + 9, + 9, + 6, + 8, + 8, + 8, + 8, + 5, + 7, + 6, + 7, + 8, + 8, + 8, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 5, + 6, + 6, + 4, + 7, + 16, + 8, + 7, + 7, + 8, + 7, + 6, + 6, + 7, + 5, + 4, + 7, + 8, + 11, + 7, + 7, + 5, + 8, + 8, + 3, + 5, + 7, + 7, + 9, + 5, + 16, + 7, + 2, + 6, + 6, + 7, + 7, + 7, + 7, + 8, + 5, + 16, + 5, + 4, + 2, + 6, + 7, + 7, + 5, + 4, + 8, + 7, + 4, + 8, + 9, + 5, + 8, + 8, + 4, + 5, + 8, + 7, + 6, + 8, + 6, + 6, + 6, + 4, + 3, + 9, + 5, + 8, + 10, + 7, + 8, + 8, + 6, + 9, + 5, + 5, + 8, + 7, + 9, + 7, + 8, + 11, + 8, + 10, + 8, + 8, + 7, + 8, + 6, + 5, + 5, + 7, + 6, + 8, + 7, + 6, + 10, + 8, + 8, + 7, + 10, + 7, + 7, + 8, + 6, + 8, + 4, + 7, + 5, + 6, + 8, + 7, + 7, + 9, + 7, + 9, + 7, + 7, + 16, + 7, + 8, + 7, + 4, + 8, + 8, + 7, + 7, + 7, + 8, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 6, + 9, + 6, + 7, + 8, + 7, + 7, + 8, + 8, + 7, + 8, + 8, + 7, + 6, + 7, + 8, + 8, + 8, + 8, + 7, + 7, + 6, + 5, + 7, + 7, + 8, + 7, + 8, + 8, + 5, + 7, + 6, + 8, + 8, + 3, + 5, + 8, + 7, + 8, + 8, + 7, + 5, + 6, + 4, + 9, + 7, + 5, + 6, + 8, + 8, + 7, + 7, + 4, + 8, + 8, + 7, + 6, + 9, + 7, + 8, + 7, + 8, + 7, + 6, + 5, + 9, + 7, + 9, + 7, + 9, + 8, + 5, + 10, + 8, + 7, + 6, + 7, + 7, + 7, + 8, + 5, + 6, + 7, + 8, + 6, + 8, + 6, + 4, + 8, + 8, + 7, + 6, + 6, + 9, + 8, + 5, + 6, + 6, + 9, + 9, + 6, + 8, + 8, + 9, + 7, + 7, + 7, + 7, + 6, + 9, + 9, + 7, + 7, + 7, + 8, + 9, + 9, + 9, + 8, + 5, + 9, + 8, + 7, + 4, + 7, + 9, + 7, + 8, + 7, + 6, + 7, + 8, + 9, + 4, + 8, + 9, + 8, + 7, + 9, + 6, + 9, + 8, + 8, + 7, + 5, + 9, + 9, + 6, + 7, + 8, + 9, + 9, + 7, + 7, + 8, + 2, + 6, + 7, + 8, + 5, + 7, + 6, + 6, + 7, + 5, + 7, + 6, + 4, + 5, + 8, + 8, + 7, + 8, + 8, + 8, + 7, + 9, + 8, + 6, + 6, + 8, + 6, + 8, + 7, + 7, + 7, + 8, + 9, + 7, + 8, + 6, + 5, + 5, + 7, + 8, + 5, + 7, + 5, + 6, + 7, + 6, + 6, + 8, + 8, + 7, + 8, + 8, + 7, + 6, + 8, + 7, + 8, + 7, + 8, + 9, + 7, + 8, + 6, + 9, + 7, + 8, + 5, + 9, + 9, + 8, + 7, + 7, + 3, + 5, + 8, + 7, + 5, + 6, + 7, + 7, + 7, + 7, + 5, + 7, + 4, + 7, + 8, + 7, + 4, + 6, + 6, + 7, + 7, + 5, + 8, + 6, + 5, + 6, + 7, + 16, + 6, + 10, + 7, + 5, + 6, + 8, + 6, + 8, + 7, + 6, + 5, + 8, + 8, + 7, + 5, + 6, + 8, + 5, + 8, + 9, + 8, + 9, + 7, + 5, + 8, + 7, + 9, + 8, + 7, + 6, + 6, + 8, + 8, + 9, + 5, + 7, + 8, + 5, + 5, + 7, + 7, + 8, + 8, + 8, + 4, + 9, + 9, + 6, + 8, + 7, + 5, + 8, + 7, + 5, + 6, + 5, + 8, + 9, + 10, + 7, + 5, + 7, + 6, + 6, + 7, + 7, + 8, + 6, + 7, + 8, + 8, + 8, + 6, + 8, + 8, + 6, + 7, + 5, + 7, + 9, + 9, + 5, + 7, + 5, + 6, + 7, + 8, + 8, + 8, + 6, + 5, + 7, + 10, + 6, + 8, + 7, + 7, + 9, + 7, + 8, + 8, + 8, + 6, + 4, + 6, + 9, + 7, + 8, + 8, + 7, + 5, + 6, + 5, + 4, + 6, + 5, + 8, + 6, + 8, + 5, + 7, + 6, + 7, + 6, + 8, + 10, + 5, + 6, + 10, + 7, + 8, + 6, + 7, + 8, + 7, + 4, + 8, + 9, + 4, + 4, + 8, + 7, + 8, + 7, + 7, + 5, + 7, + 9, + 6, + 7, + 7, + 6, + 8, + 6, + 7, + 9, + 7, + 5, + 7, + 5, + 7, + 5, + 9, + 6, + 4, + 7, + 6, + 8, + 8, + 7, + 8, + 7, + 8, + 7, + 7, + 8, + 5, + 7, + 7, + 5, + 5, + 7, + 6, + 7, + 5, + 6, + 5, + 6, + 7, + 7, + 7, + 5, + 8, + 7, + 9, + 6, + 6, + 9, + 4, + 8, + 7, + 7, + 7, + 5, + 7, + 5, + 7, + 8, + 8, + 8, + 8, + 5, + 5, + 7, + 5, + 8, + 7, + 8, + 8, + 8, + 5, + 10, + 8, + 7, + 9, + 7, + 6, + 7, + 6, + 7, + 8, + 7, + 6, + 8, + 6, + 7, + 7, + 7, + 5, + 6, + 8, + 5, + 6, + 7, + 5, + 7, + 8, + 7, + 6, + 8, + 6, + 5, + 7, + 10, + 7, + 6, + 7, + 7, + 9, + 6, + 6, + 6, + 6, + 12, + 7, + 8, + 6, + 5, + 4, + 9, + 8, + 6, + 9, + 6, + 8, + 7, + 7, + 7, + 8, + 5, + 7, + 8, + 7, + 5, + 8, + 7, + 7, + 7, + 6, + 5, + 5, + 7, + 7, + 3, + 8, + 8, + 5, + 5, + 7, + 7, + 8, + 6, + 8, + 5, + 6, + 9, + 9, + 7, + 8, + 8, + 7, + 6, + 8, + 5, + 7, + 6, + 7, + 9, + 7, + 8, + 6, + 8, + 7, + 7, + 8, + 7, + 8, + 7, + 8, + 8, + 9, + 7, + 5, + 6, + 7, + 10, + 10, + 8, + 8, + 8, + 4, + 7, + 8, + 6, + 8, + 5, + 8, + 7, + 6, + 7, + 7, + 5, + 8, + 8, + 7, + 5, + 7, + 7, + 5, + 6, + 8, + 7, + 6, + 7, + 7, + 6, + 8, + 6, + 7, + 8, + 8, + 8, + 6, + 6, + 5, + 8, + 7, + 7, + 7, + 8, + 6, + 8, + 8, + 7, + 8, + 8, + 9, + 7, + 7, + 7, + 7, + 7, + 9, + 6, + 5, + 8, + 8, + 5, + 8, + 8, + 8, + 8, + 8, + 7, + 8, + 7, + 8, + 8, + 5, + 7, + 8, + 8, + 8, + 7, + 8, + 6, + 7, + 7, + 6, + 9, + 5, + 7, + 5, + 6, + 5, + 5, + 6, + 5, + 6, + 8, + 8, + 8, + 9, + 8, + 9, + 9, + 7, + 8, + 7, + 8, + 9, + 8, + 8, + 7, + 7, + 3, + 8, + 6, + 7, + 4, + 11, + 7, + 8, + 7, + 7, + 8, + 6, + 7, + 7, + 6, + 8, + 9, + 6, + 8, + 7, + 7, + 3, + 4, + 8, + 5, + 8, + 10, + 8, + 6, + 8, + 7, + 6, + 6, + 7, + 6, + 8, + 7, + 8, + 6, + 6, + 9, + 8, + 10, + 7, + 7, + 10, + 6, + 8, + 8, + 5, + 7, + 8, + 7, + 6, + 8, + 7, + 8, + 7, + 6, + 8, + 7, + 8, + 7, + 8, + 7, + 8, + 6, + 7, + 8, + 9, + 7, + 8, + 5, + 7, + 6, + 9, + 9, + 7, + 9, + 8, + 9, + 8, + 5, + 9, + 9, + 5, + 7, + 6, + 8, + 9, + 7, + 7, + 6, + 7, + 8, + 7, + 5, + 6, + 7, + 7, + 8, + 3, + 6, + 8, + 7, + 8, + 7, + 7, + 8, + 5, + 8, + 8, + 9, + 8, + 8, + 5, + 5, + 8, + 8, + 8, + 7, + 7, + 6, + 8, + 7, + 8, + 8, + 7, + 8, + 5, + 3, + 7, + 8, + 5, + 6, + 8, + 7, + 10, + 9, + 16, + 7, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 10, + 8, + 7, + 7, + 6, + 8, + 7, + 8, + 5, + 6, + 8, + 7, + 6, + 5, + 7, + 4, + 5, + 9, + 5, + 7, + 7, + 8, + 7, + 7, + 9, + 7, + 16, + 6, + 8, + 5, + 14, + 5, + 7, + 8, + 8, + 8, + 7, + 6, + 10, + 7, + 6, + 8, + 8, + 8, + 7, + 6, + 7, + 8, + 8, + 7, + 10, + 7, + 8, + 6, + 7, + 6, + 7, + 9, + 10, + 8, + 7, + 7, + 8, + 7, + 7, + 6, + 5, + 8, + 7, + 6, + 7, + 8, + 8, + 7, + 7, + 5, + 6, + 10, + 7, + 5, + 6, + 5, + 5, + 8, + 7, + 7, + 5, + 6, + 9, + 8, + 7, + 8, + 8, + 8, + 7, + 7, + 8, + 9, + 7, + 5, + 5, + 7, + 7, + 7, + 7, + 8, + 5, + 8, + 7, + 6, + 7, + 8, + 7, + 9, + 8, + 9, + 5, + 8, + 8, + 7, + 8, + 8, + 8, + 7, + 5, + 8, + 7, + 8, + 8, + 7, + 7, + 9, + 7, + 8, + 7, + 7, + 7, + 8, + 6, + 8, + 6, + 8, + 8, + 7, + 10, + 8, + 8, + 7, + 5, + 5, + 6, + 8, + 9, + 8, + 8, + 6, + 8, + 5, + 5, + 9, + 8, + 6, + 8, + 8, + 8, + 7, + 6, + 7, + 10, + 6, + 8, + 8, + 6, + 8, + 7, + 5, + 8, + 7, + 7, + 8, + 7, + 7, + 7, + 7, + 5, + 7, + 8, + 6, + 7, + 8, + 7, + 6, + 9, + 7, + 7, + 8, + 8, + 7, + 6, + 7, + 6, + 7, + 4, + 7, + 7, + 8, + 7, + 8, + 7, + 8, + 6, + 8, + 5, + 8, + 6, + 6, + 7, + 8, + 6, + 8, + 8, + 5, + 7, + 7, + 8, + 8, + 7, + 8, + 8, + 8, + 8, + 7, + 6, + 7, + 8, + 7, + 6, + 7, + 8, + 7, + 7, + 7, + 6, + 8, + 7, + 5, + 7, + 9, + 7, + 10, + 8, + 7, + 6, + 7, + 7, + 8, + 5, + 8, + 8, + 8, + 7, + 7, + 7, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 8, + 5, + 10, + 8, + 8, + 7, + 6, + 7, + 7, + 7, + 7, + 8, + 7, + 7, + 8, + 8, + 5, + 9, + 6, + 7, + 7, + 8, + 8, + 6, + 7, + 7, + 10, + 7, + 8, + 5, + 7, + 6, + 7, + 9, + 8, + 7, + 5, + 5, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 5, + 8, + 4, + 6, + 7, + 10, + 7, + 7, + 7, + 7, + 9, + 8, + 8, + 8, + 5, + 8, + 7, + 5, + 6, + 5, + 7, + 9, + 7, + 8, + 8, + 9, + 8, + 7, + 6, + 8, + 7, + 7, + 7, + 8, + 5, + 9, + 7, + 7, + 6, + 8, + 8, + 5, + 5, + 8, + 8, + 8, + 8, + 8, + 7, + 9, + 8, + 5, + 7, + 7, + 8, + 7, + 8, + 6, + 6, + 7, + 7, + 7, + 7, + 7, + 8, + 7, + 8, + 7, + 8, + 5, + 6, + 7, + 8, + 8, + 8, + 6, + 8, + 5, + 8, + 7, + 8, + 7, + 8, + 5, + 8, + 7, + 7, + 6, + 7, + 7, + 8, + 7, + 7, + 7, + 7, + 7, + 8, + 5, + 8, + 6, + 8, + 6, + 6, + 7, + 7, + 7, + 8, + 5, + 9, + 6, + 8, + 7, + 7, + 7, + 8, + 8, + 7, + 7, + 7, + 4, + 7, + 7, + 8, + 8, + 6, + 7, + 6, + 5, + 7, + 10, + 10, + 8, + 8, + 7, + 8, + 6, + 8, + 5, + 5, + 5, + 8, + 6, + 6, + 8, + 4, + 8, + 5, + 8, + 8, + 6, + 7, + 5, + 8, + 10, + 8, + 7, + 5, + 7, + 8, + 7, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 7, + 9, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 6, + 8, + 8, + 7, + 7, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 5, + 5, + 7, + 7, + 7, + 6, + 8, + 7, + 5, + 5, + 7, + 8, + 6, + 8, + 3, + 5, + 7, + 7, + 4, + 7, + 8, + 8, + 6, + 8, + 8, + 6, + 7, + 7, + 7, + 7, + 8, + 8, + 10, + 7, + 5, + 7, + 7, + 5, + 7, + 8, + 8, + 8, + 8, + 6, + 8, + 7, + 8, + 8, + 7, + 7, + 8, + 7, + 5, + 7, + 6, + 6, + 7, + 5, + 7, + 8, + 6, + 6, + 3, + 8, + 3, + 6, + 7, + 8, + 4, + 5, + 8, + 6, + 8, + 6, + 5, + 7, + 7, + 7, + 8, + 7, + 7, + 6, + 5, + 7, + 6, + 8, + 5, + 7, + 7, + 8, + 7, + 8, + 7, + 7, + 5, + 8, + 7, + 7, + 7, + 3, + 5, + 7, + 6, + 6, + 8, + 7, + 5, + 7, + 8, + 10, + 6, + 7, + 8, + 8, + 8, + 7, + 7, + 7, + 5, + 7, + 8, + 8, + 8, + 10, + 7, + 8, + 6, + 5, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 5, + 7, + 5, + 5, + 7, + 7, + 7, + 6, + 7, + 5, + 7, + 7, + 7, + 5, + 8, + 7, + 6, + 7, + 8, + 7, + 8, + 8, + 6, + 7, + 5, + 5, + 6, + 8, + 4, + 7, + 5, + 8, + 7, + 7, + 6, + 15, + 8, + 7, + 7, + 8, + 9, + 8, + 7, + 8, + 7, + 7, + 7, + 8, + 8, + 8, + 7, + 5, + 7, + 6, + 9, + 7, + 7, + 7, + 8, + 7, + 6, + 8, + 8, + 6, + 7, + 4, + 7, + 9, + 10, + 8, + 6, + 4, + 6, + 7, + 7, + 9, + 8, + 7, + 6, + 8, + 8, + 4, + 7, + 7, + 7, + 7, + 8, + 7, + 7, + 7, + 8, + 8, + 5, + 8, + 8, + 6, + 6, + 7, + 7, + 7, + 7, + 6, + 7, + 8, + 9, + 8, + 7, + 6, + 7, + 4, + 8, + 7, + 7, + 5, + 5, + 7, + 7, + 7, + 8, + 7, + 5, + 7, + 8, + 7, + 7, + 7, + 8, + 4, + 6, + 8, + 7, + 7, + 10, + 5, + 7, + 7, + 8, + 10, + 7, + 8, + 5, + 10, + 8, + 6, + 8, + 5, + 5, + 7, + 8, + 8, + 8, + 8, + 8, + 6, + 5, + 8, + 6, + 5, + 4, + 5, + 7, + 7, + 7, + 8, + 8, + 8, + 7, + 8, + 7, + 6, + 5, + 6, + 7, + 7, + 8, + 6, + 5, + 7, + 6, + 8, + 8, + 7, + 7, + 7, + 8, + 7, + 6, + 6, + 7, + 4, + 7, + 8, + 8, + 6, + 7, + 7, + 5, + 6, + 7, + 7, + 7, + 6, + 7, + 4, + 6, + 9, + 7, + 7, + 8, + 7, + 7, + 7, + 8, + 8, + 9, + 8, + 8, + 8, + 6, + 8, + 8, + 8, + 7, + 8, + 7, + 6, + 7, + 6, + 7, + 8, + 6, + 6, + 7, + 8, + 8, + 8, + 8, + 6, + 8, + 7, + 5, + 9, + 6, + 8, + 4, + 8, + 8, + 8, + 7, + 7, + 7, + 5, + 8, + 8, + 4, + 5, + 8, + 7, + 6, + 8, + 7, + 6, + 8, + 6, + 7, + 8, + 7, + 5, + 8, + 5, + 6, + 6, + 5, + 6, + 8, + 6, + 8, + 5, + 8, + 8, + 6, + 6, + 8, + 8, + 4, + 7, + 5, + 8, + 8, + 8, + 6, + 8, + 6, + 7, + 8, + 8, + 7, + 8, + 7, + 5, + 8, + 7, + 7, + 8, + 7, + 8, + 7, + 7, + 7, + 10, + 9, + 7, + 7, + 7, + 6, + 7, + 7, + 6, + 7, + 4, + 7, + 7, + 6, + 6, + 6, + 9, + 6, + 5, + 6, + 5, + 8, + 7, + 5, + 8, + 8, + 8, + 7, + 6, + 7, + 8, + 7, + 7, + 8, + 7, + 6, + 8, + 7, + 7, + 8, + 5, + 8, + 7, + 8, + 5, + 7, + 7, + 9, + 4, + 6, + 5, + 6, + 6, + 7, + 7, + 8, + 8, + 7, + 8, + 7, + 7, + 7, + 13, + 6, + 7, + 6, + 8, + 8, + 5, + 8, + 6, + 6, + 7, + 6, + 7, + 4, + 8, + 6, + 8, + 8, + 8, + 7, + 7, + 8, + 6, + 8, + 7, + 7, + 8, + 7, + 8, + 7, + 5, + 8, + 6, + 7, + 6, + 5, + 7, + 8, + 6, + 5, + 7, + 3, + 8, + 7, + 5, + 7, + 6, + 7, + 6, + 4, + 6, + 7, + 8, + 8, + 6, + 16, + 8, + 7, + 7, + 7, + 7, + 5, + 7, + 9, + 7, + 7, + 7, + 7, + 10, + 6, + 7, + 8, + 8, + 9, + 6, + 6, + 7, + 7, + 10, + 7, + 8, + 8, + 7, + 6, + 7, + 7, + 5, + 7, + 7, + 6, + 7, + 8, + 8, + 5, + 9, + 6, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 6, + 7, + 8, + 7, + 7, + 7, + 6, + 5, + 6, + 6, + 16, + 7, + 3, + 10, + 6, + 6, + 7, + 5, + 7, + 6, + 7, + 9, + 6, + 8, + 6, + 8, + 7, + 7, + 7, + 8, + 7, + 6, + 7, + 8, + 7, + 7, + 4, + 7, + 7, + 5, + 7, + 5, + 5, + 9, + 7, + 7, + 7, + 8, + 7, + 7, + 8, + 4, + 8, + 8, + 6, + 6, + 8, + 7, + 7, + 7, + 8, + 7, + 7, + 4, + 8, + 8, + 6, + 7, + 6, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 6, + 7, + 8, + 6, + 7, + 6, + 4, + 8, + 8, + 6, + 8, + 6, + 8, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 6, + 7, + 7, + 8, + 5, + 7, + 7, + 7, + 8, + 6, + 7, + 6, + 6, + 8, + 5, + 6, + 6, + 5, + 8, + 8, + 5, + 7, + 8, + 4, + 8, + 7, + 9, + 6, + 7, + 6, + 6, + 7, + 10, + 7, + 7, + 8, + 7, + 7, + 7, + 8, + 6, + 7, + 7, + 6, + 8, + 6, + 8, + 7, + 6, + 7, + 5, + 7, + 8, + 7, + 5, + 8, + 7, + 6, + 7, + 8, + 8, + 6, + 8, + 8, + 5, + 7, + 6, + 10, + 7, + 7, + 7, + 9, + 6, + 7, + 8, + 7, + 7, + 5, + 7, + 5, + 7, + 6, + 7, + 6, + 8, + 5, + 7, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 7, + 9, + 6, + 7, + 7, + 5, + 6, + 9, + 8, + 7, + 6, + 7, + 7, + 7, + 8, + 7, + 7, + 5, + 5, + 8, + 7, + 7, + 6, + 8, + 8, + 7, + 8, + 8, + 8, + 8, + 7, + 8, + 7, + 7, + 5, + 8, + 7, + 9, + 8, + 7, + 8, + 5, + 8, + 6, + 7, + 9, + 8, + 6, + 7, + 7, + 10, + 7, + 10, + 8, + 8, + 7, + 7, + 7, + 8, + 8, + 8, + 6, + 7, + 6, + 5, + 6, + 8, + 7, + 9, + 8, + 4, + 8, + 6, + 8, + 8, + 6, + 6, + 8, + 7, + 7, + 7, + 7, + 7, + 6, + 16, + 6, + 7, + 7, + 7, + 9, + 6, + 16, + 7, + 7, + 8, + 6, + 7, + 7, + 5, + 6, + 6, + 7, + 7, + 5, + 5, + 4, + 6, + 7, + 6, + 4, + 7, + 9, + 5, + 7, + 5, + 5, + 9, + 7, + 8, + 6, + 6, + 15, + 7, + 7, + 5, + 7, + 6, + 6, + 8, + 7, + 5, + 5, + 7, + 7, + 5, + 3, + 6, + 8, + 7, + 5, + 7, + 8, + 10, + 7, + 4, + 4, + 5, + 5, + 7, + 5, + 7, + 6, + 8, + 4, + 6, + 4, + 3, + 7, + 6, + 5, + 7, + 6, + 9, + 4, + 5, + 7, + 7, + 5, + 5, + 8, + 7, + 4, + 6, + 8, + 8, + 7, + 7, + 6, + 7, + 4, + 7, + 5, + 7, + 4, + 7, + 7, + 4, + 7, + 5, + 5, + 8, + 5, + 6, + 8, + 7, + 7, + 5, + 7, + 5, + 4, + 8, + 6, + 7, + 4, + 8, + 7, + 9, + 8, + 8, + 6, + 4, + 5, + 4, + 6, + 6, + 5, + 5, + 4, + 4, + 7, + 6, + 4, + 8, + 8, + 4, + 6, + 4, + 7, + 8, + 6, + 7, + 7, + 7, + 7, + 7, + 5, + 5, + 9, + 8, + 7, + 6, + 8, + 3, + 6, + 7, + 8, + 7, + 8, + 7, + 8, + 7, + 5, + 4, + 4, + 4, + 7, + 5, + 7, + 6, + 8, + 7, + 7, + 6, + 6, + 8, + 7, + 5, + 7, + 5, + 8, + 6, + 8, + 7, + 5, + 8, + 4, + 5, + 6, + 4, + 7, + 8, + 4, + 7, + 8, + 7, + 7, + 7, + 6, + 5, + 7, + 6, + 8, + 8, + 8, + 8, + 6, + 4, + 8, + 7, + 7, + 5, + 3, + 6, + 7, + 8, + 5, + 10, + 7, + 8, + 6, + 6, + 7, + 7, + 6, + 5, + 7, + 8, + 7, + 8, + 8, + 7, + 3, + 7, + 9, + 8, + 7, + 6, + 8, + 6, + 4, + 6, + 8, + 4, + 7, + 7, + 5, + 5, + 6, + 6, + 7, + 5, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 7, + 7, + 6, + 4, + 5, + 4, + 8, + 7, + 6, + 7, + 8, + 8, + 5, + 8, + 7, + 7, + 7, + 4, + 6, + 7, + 5, + 7, + 5, + 4, + 7, + 8, + 8, + 4, + 6, + 7, + 6, + 4, + 7, + 8, + 7, + 6, + 4, + 5, + 8, + 7, + 8, + 6, + 5, + 7, + 7, + 4, + 4, + 7, + 6, + 8, + 8, + 8, + 5, + 4, + 5, + 8, + 6, + 5, + 7, + 6, + 5, + 7, + 6, + 8, + 7, + 7, + 7, + 10, + 7, + 6, + 6, + 6, + 6, + 6, + 7, + 6, + 7, + 5, + 5, + 7, + 11, + 9, + 7, + 6, + 4, + 6, + 5, + 5, + 5, + 7, + 4, + 8, + 8, + 7, + 7, + 8, + 7, + 6, + 7, + 4, + 7, + 6, + 8, + 6, + 6, + 8, + 8, + 8, + 8, + 7, + 7, + 5, + 7, + 7, + 7, + 5, + 7, + 9, + 4, + 4, + 5, + 8, + 7, + 7, + 8, + 8, + 8, + 7, + 8, + 5, + 7, + 6, + 7, + 8, + 5, + 8, + 6, + 7, + 8, + 9, + 6, + 8, + 6, + 6, + 6, + 7, + 7, + 7, + 8, + 7, + 8, + 7, + 7, + 8, + 7, + 6, + 6, + 6, + 6, + 7, + 7, + 8, + 7, + 8, + 6, + 5, + 5, + 8, + 7, + 7, + 9, + 5, + 5, + 7, + 9, + 7, + 7, + 8, + 6, + 6, + 8, + 5, + 8, + 4, + 4, + 8, + 7, + 7, + 8, + 8, + 6, + 4, + 5, + 7, + 6, + 7, + 8, + 6, + 5, + 5, + 5, + 6, + 3, + 7, + 5, + 7, + 8, + 8, + 7, + 8, + 7, + 7, + 5, + 5, + 5, + 5, + 7, + 6, + 6, + 7, + 7, + 8, + 5, + 6, + 7, + 5, + 6, + 4, + 5, + 7, + 8, + 8, + 7, + 9, + 7, + 7, + 5, + 5, + 5, + 7, + 8, + 8, + 8, + 8, + 7, + 8, + 8, + 8, + 8, + 5, + 8, + 6, + 9, + 7, + 7, + 6, + 5, + 8, + 3, + 7, + 7, + 5, + 8, + 7, + 8, + 7, + 6, + 7, + 7, + 8, + 7, + 8, + 6, + 6, + 7, + 5, + 8, + 7, + 8, + 7, + 7, + 5, + 9, + 5, + 5, + 7, + 4, + 5, + 5, + 8, + 5, + 7, + 6, + 6, + 6, + 7, + 9, + 7, + 7, + 6, + 6, + 6, + 6, + 6, + 7, + 7, + 8, + 7, + 6, + 8, + 6, + 6, + 7, + 8, + 8, + 7, + 5, + 5, + 8, + 6, + 5, + 8, + 6, + 7, + 3, + 7, + 4, + 9, + 8, + 6, + 7, + 8, + 7, + 6, + 5, + 7, + 6, + 7, + 5, + 8, + 6, + 4, + 7, + 6, + 5, + 5, + 8, + 5, + 8, + 8, + 8, + 8, + 7, + 8, + 8, + 6, + 7, + 6, + 7, + 8, + 5, + 7, + 7, + 5, + 6, + 7, + 8, + 7, + 8, + 5, + 7, + 4, + 6, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 5, + 8, + 8, + 5, + 8, + 8, + 7, + 7, + 3, + 7, + 8, + 7, + 3, + 7, + 9, + 8, + 8, + 4, + 7, + 7, + 8, + 9, + 7, + 7, + 8, + 9, + 6, + 6, + 8, + 7, + 7, + 10, + 4, + 5, + 6, + 7, + 7, + 5, + 7, + 6, + 8, + 6, + 7, + 8, + 4, + 7, + 5, + 7, + 7, + 6, + 5, + 7, + 8, + 8, + 8, + 5, + 6, + 7, + 4, + 2, + 8, + 5, + 7, + 10, + 7, + 7, + 6, + 5, + 6, + 8, + 7, + 7, + 7, + 7, + 10, + 8, + 6, + 7, + 7, + 6, + 7, + 5, + 7, + 8, + 6, + 8, + 7, + 5, + 4, + 7, + 6, + 7, + 8, + 7, + 5, + 5, + 7, + 5, + 7, + 4, + 9, + 10, + 7, + 7, + 7, + 8, + 6, + 6, + 6, + 8, + 7, + 5, + 8, + 7, + 8, + 4, + 8, + 8, + 7, + 8, + 6, + 9, + 6, + 8, + 8, + 7, + 7, + 8, + 6, + 8, + 7, + 5, + 6, + 6, + 7, + 7, + 8, + 7, + 7, + 8, + 9, + 5, + 6, + 8, + 8, + 6, + 8, + 8, + 8, + 7, + 5, + 6, + 5, + 7, + 7, + 7, + 8, + 5, + 7, + 9, + 7, + 6, + 7, + 8, + 7, + 4, + 8, + 7, + 5, + 7, + 6, + 7, + 5, + 7, + 7, + 6, + 7, + 7, + 2, + 8, + 6, + 5, + 5, + 7, + 7, + 6, + 8, + 5, + 5, + 5, + 4, + 7, + 5, + 4, + 7, + 6, + 5, + 4, + 7, + 6, + 8, + 7, + 7, + 5, + 6, + 7, + 5, + 4, + 6, + 7, + 8, + 6, + 8, + 7, + 5, + 8, + 5, + 8, + 5, + 4, + 7, + 8, + 6, + 6, + 8, + 7, + 6, + 6, + 7, + 8, + 8, + 7, + 8, + 7, + 6, + 7, + 5, + 6, + 7, + 2, + 7, + 7, + 6, + 8, + 5, + 6, + 6, + 5, + 7, + 7, + 5, + 6, + 8, + 8, + 8, + 5, + 6, + 6, + 10, + 6, + 4, + 6, + 7, + 7, + 7, + 7, + 6, + 8, + 5, + 7, + 5, + 5, + 8, + 8, + 6, + 8, + 4, + 8, + 7, + 5, + 5, + 8, + 7, + 7, + 7, + 6, + 7, + 6, + 4, + 8, + 6, + 7, + 7, + 6, + 8, + 8, + 3, + 7, + 8, + 7, + 3, + 8, + 8, + 8, + 7, + 7, + 8, + 8, + 4, + 5, + 6, + 8, + 6, + 7, + 6, + 9, + 8, + 9, + 7, + 8, + 5, + 7, + 8, + 8, + 7, + 5, + 4, + 4, + 7, + 6, + 6, + 5, + 5, + 8, + 6, + 7, + 6, + 7, + 6, + 5, + 4, + 7, + 6, + 6, + 8, + 10, + 8, + 8, + 8, + 6, + 7, + 7, + 7, + 5, + 7, + 6, + 4, + 10, + 8, + 4, + 7, + 8, + 7, + 7, + 7, + 7, + 8, + 6, + 6, + 6, + 5, + 7, + 7, + 6, + 7, + 4, + 5, + 7, + 7, + 4, + 7, + 5, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 6, + 7, + 6, + 6, + 7, + 12, + 7, + 7, + 7, + 9, + 7, + 8, + 10, + 7, + 7, + 7, + 8, + 6, + 7, + 5, + 7, + 7, + 6, + 6, + 7, + 8, + 7, + 7, + 7, + 8, + 6, + 4, + 7, + 7, + 8, + 8, + 8, + 6, + 7, + 7, + 7, + 5, + 8, + 7, + 7, + 6, + 5, + 7, + 7, + 7, + 4, + 8, + 8, + 7, + 3, + 8, + 6, + 4, + 8, + 5, + 7, + 6, + 8, + 7, + 8, + 7, + 7, + 5, + 6, + 7, + 7, + 5, + 6, + 7, + 6, + 7, + 6, + 6, + 6, + 4, + 7, + 16, + 9, + 7, + 4, + 5, + 5, + 6, + 6, + 6, + 8, + 7, + 8, + 7, + 6, + 7, + 8, + 7, + 8, + 8, + 6, + 8, + 7, + 7, + 7, + 5, + 7, + 7, + 5, + 7, + 5, + 6, + 6, + 5, + 7, + 7, + 7, + 7, + 9, + 5, + 6, + 6, + 6, + 6, + 5, + 7, + 7, + 7, + 7, + 6, + 5, + 7, + 6, + 6, + 6, + 6, + 6, + 6, + 7, + 7, + 6, + 8, + 6, + 7, + 5, + 6, + 7, + 8, + 8, + 6, + 8, + 7, + 6, + 7, + 5, + 5, + 7, + 7, + 8, + 7, + 5, + 8, + 6, + 7, + 7, + 10, + 7, + 7, + 5, + 7, + 5, + 8, + 5, + 5, + 7, + 5, + 5, + 6, + 6, + 6, + 5, + 8, + 8, + 6, + 8, + 5, + 7, + 7, + 7, + 7, + 7, + 8, + 7, + 6, + 7, + 6, + 7, + 7, + 8, + 7, + 6, + 5, + 7, + 7, + 6, + 5, + 10, + 7, + 15, + 8, + 7, + 6, + 7, + 4, + 8, + 8, + 7, + 7, + 5, + 5, + 6, + 7, + 7, + 6, + 4, + 12, + 6, + 7, + 10, + 5, + 7, + 6, + 5, + 8, + 9, + 7, + 7, + 7, + 8, + 5, + 8, + 4, + 7, + 8, + 7, + 5, + 5, + 8, + 7, + 7, + 6, + 4, + 5, + 6, + 6, + 5, + 5, + 5, + 4, + 7, + 8, + 7, + 4, + 8, + 7, + 7, + 7, + 5, + 7, + 7, + 6, + 7, + 7, + 7, + 7, + 7, + 8, + 3, + 7, + 8, + 7, + 7, + 7, + 6, + 8, + 7, + 7, + 4, + 16, + 8, + 9, + 4, + 6, + 7, + 6, + 7, + 7, + 6, + 5, + 6, + 10, + 7, + 7, + 6, + 5, + 8, + 8, + 4, + 7, + 7, + 7, + 7, + 7, + 6, + 8, + 8, + 7, + 4, + 7, + 5, + 6, + 8, + 7, + 6, + 7, + 8, + 7, + 7, + 6, + 7, + 6, + 8, + 7, + 8, + 5, + 7, + 7, + 5, + 5, + 8, + 4, + 6, + 5, + 7, + 4, + 7, + 6, + 7, + 7, + 6, + 7, + 3, + 8, + 7, + 7, + 6, + 4, + 7, + 8, + 8, + 6, + 4, + 7, + 5, + 7, + 4, + 7, + 3, + 6, + 4, + 6, + 8, + 7, + 7, + 6, + 7, + 5, + 8, + 5, + 6, + 7, + 7, + 7, + 4, + 5, + 7, + 5, + 4, + 5, + 4, + 5, + 7, + 4, + 3, + 9, + 7, + 7, + 3, + 5, + 5, + 3, + 5, + 4, + 7, + 4, + 8, + 3, + 6, + 7, + 7, + 6, + 7, + 7, + 6, + 5, + 5, + 7, + 5, + 7, + 8, + 7, + 5, + 7, + 6, + 4, + 7, + 7, + 8, + 5, + 7, + 6, + 6, + 8, + 6, + 7, + 5, + 6, + 8, + 8, + 5, + 3, + 5, + 7, + 7, + 7, + 8, + 7, + 4, + 7, + 8, + 6, + 5, + 6, + 5, + 6, + 4, + 3, + 7, + 7, + 4, + 5, + 7, + 4, + 6, + 6, + 8, + 4, + 6, + 5, + 8, + 8, + 7, + 7, + 6, + 7, + 7, + 5, + 7, + 5, + 7, + 6, + 3, + 6, + 7, + 7, + 7, + 7, + 4, + 5, + 10, + 7, + 7, + 7, + 5, + 5, + 2, + 7, + 3, + 8, + 7, + 7, + 4, + 7, + 5, + 7, + 6, + 7, + 7, + 7, + 7, + 6, + 4, + 7, + 3, + 5, + 8, + 7, + 7, + 6, + 4, + 7, + 5, + 7, + 6, + 7, + 5, + 6, + 5, + 5, + 5, + 6, + 7, + 6, + 8, + 9, + 5, + 8, + 7, + 5, + 6, + 6, + 6, + 2, + 2, + 2, + 5, + 6, + 3, + 2, + 7, + 7, + 2, + 2, + 7, + 8, + 8, + 6, + 5, + 6, + 6, + 7, + 7, + 6, + 7, + 7, + 7, + 6, + 3, + 4, + 7, + 5, + 5, + 2, + 7, + 6, + 4, + 3, + 6, + 4, + 4, + 5, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 5, + 7, + 5, + 2, + 7, + 6, + 8, + 3, + 8, + 4, + 7, + 4, + 6, + 7, + 4, + 8, + 6, + 7, + 8, + 5, + 4, + 7, + 5, + 6, + 7, + 2, + 5, + 6, + 5, + 6, + 7, + 7, + 4, + 5, + 7, + 6, + 7, + 4, + 5, + 8, + 6, + 8, + 6, + 7, + 7, + 5, + 7, + 8, + 5, + 5, + 8, + 7, + 5, + 5, + 7, + 7, + 6, + 5, + 6, + 2, + 4, + 6, + 6, + 7, + 7, + 6, + 7, + 7, + 4, + 7, + 7, + 4, + 5, + 8, + 4, + 7, + 7, + 6, + 5, + 3, + 7, + 7, + 5, + 7, + 6, + 7, + 4, + 6, + 7, + 8, + 7, + 7, + 6, + 8, + 6, + 7, + 7, + 7, + 4, + 6, + 6, + 5, + 4, + 6, + 8, + 5, + 4, + 7, + 4, + 5, + 4, + 6, + 5, + 2, + 7, + 5, + 3, + 7, + 8, + 7, + 7, + 4, + 4, + 4, + 7, + 6, + 8, + 7, + 7, + 7, + 7, + 6, + 9, + 3, + 7, + 8, + 5, + 7, + 2, + 5, + 7, + 9, + 4, + 7, + 7, + 7, + 5, + 5, + 6, + 8, + 6, + 7, + 5, + 6, + 6, + 7, + 5, + 4, + 4, + 7, + 7, + 6, + 5, + 6, + 3, + 7, + 6, + 7, + 5, + 4, + 4, + 8, + 7, + 7, + 8, + 4, + 6, + 7, + 6, + 7, + 7, + 4, + 7, + 5, + 7, + 4, + 6, + 8, + 5, + 7, + 4, + 6, + 4, + 5, + 7, + 7, + 7, + 5, + 6, + 2, + 6, + 6, + 7, + 6, + 6, + 8, + 6, + 7, + 4, + 7, + 6, + 7, + 4, + 6, + 5, + 7, + 7, + 4, + 6, + 7, + 5, + 5, + 5, + 7, + 4, + 5, + 6, + 6, + 7, + 4, + 6, + 5, + 7, + 6, + 4, + 7, + 5, + 4, + 5, + 7, + 4, + 4, + 6, + 4, + 6, + 7, + 4, + 7, + 5, + 7, + 4, + 5, + 5, + 8, + 7, + 6, + 7, + 6, + 7, + 7, + 7, + 7, + 7, + 5, + 7, + 7, + 6, + 6, + 4, + 7, + 5, + 7, + 7, + 6, + 6, + 5, + 4, + 6, + 7, + 6, + 7, + 6, + 7, + 6, + 4, + 6, + 5, + 7, + 5, + 5, + 8, + 4, + 7, + 6, + 5, + 7, + 7, + 5, + 7, + 6, + 6, + 6, + 6, + 6, + 7, + 2, + 7, + 5, + 7, + 8, + 7, + 5, + 7, + 6, + 6, + 6, + 5, + 7, + 8, + 6, + 5, + 7, + 7, + 6, + 7, + 4, + 4, + 5, + 5, + 6, + 7, + 5, + 4, + 7, + 6, + 6, + 7, + 5, + 7, + 7, + 7, + 5, + 7, + 6, + 4, + 6, + 5, + 8, + 6, + 6, + 7, + 7, + 7, + 5, + 7, + 7, + 4, + 7, + 7, + 6, + 7, + 4, + 4, + 7, + 7, + 5, + 8, + 8, + 6, + 7, + 6, + 4, + 7, + 6, + 5, + 4, + 5, + 6, + 5, + 6, + 6, + 6, + 6, + 8, + 6, + 4, + 4, + 4, + 8, + 6, + 7, + 7, + 7, + 5, + 5, + 7, + 7, + 7, + 6, + 7, + 7, + 7, + 7, + 4, + 9, + 7, + 7, + 6, + 5, + 6, + 6, + 8, + 4, + 7, + 8, + 6, + 4, + 7, + 7, + 7, + 7, + 8, + 6, + 4, + 4, + 7, + 7, + 7, + 5, + 6, + 7, + 7, + 5, + 7, + 7, + 8, + 6, + 7, + 7, + 8, + 4, + 7, + 5, + 5, + 7, + 6, + 7, + 6, + 5, + 7, + 7, + 7, + 6, + 7, + 5, + 7, + 5, + 6, + 7, + 7, + 6, + 6, + 7, + 4, + 4, + 7, + 7, + 7, + 6, + 9, + 7, + 6, + 5, + 7, + 7, + 7, + 5, + 4, + 7, + 5, + 7, + 4, + 7, + 7, + 4, + 6, + 7, + 6, + 4, + 6, + 6, + 5, + 7, + 7, + 7, + 7, + 7, + 5, + 7, + 8, + 6, + 7, + 7, + 4, + 6, + 4, + 4, + 6, + 8, + 8, + 6, + 5, + 8, + 6, + 4, + 7, + 6, + 6, + 7, + 4, + 7, + 7, + 7, + 7, + 6, + 6, + 7, + 5, + 7, + 7, + 7, + 5, + 7, + 5, + 5, + 7, + 7, + 7, + 7, + 3, + 6, + 5, + 6, + 7, + 6, + 6, + 5, + 5, + 5, + 8, + 7, + 7, + 6, + 6, + 7, + 7, + 7, + 7, + 7, + 6, + 6, + 4, + 5, + 7, + 7, + 6, + 6, + 5, + 6, + 6, + 7, + 2, + 6, + 6, + 6, + 7, + 5, + 5, + 4, + 5, + 7, + 6, + 5, + 8, + 8, + 7, + 5, + 6, + 6, + 8, + 5, + 7, + 8, + 4, + 7, + 7, + 8, + 6, + 6, + 6, + 7, + 7, + 6, + 6, + 7, + 7, + 7, + 5, + 7, + 6, + 6, + 7, + 5, + 5, + 8, + 5, + 7, + 6, + 5, + 7, + 6, + 7, + 7, + 4, + 5, + 5, + 7, + 7, + 7, + 10, + 5, + 3, + 7, + 7, + 6, + 3, + 8, + 4, + 8, + 7, + 6, + 6, + 7, + 4, + 6, + 5, + 7, + 6, + 6, + 6, + 5, + 7, + 6, + 5, + 6, + 3, + 5, + 4, + 7, + 7, + 6, + 6, + 7, + 3, + 7, + 7, + 6, + 7, + 6, + 7, + 7, + 6, + 7, + 8, + 6, + 6, + 7, + 7, + 4, + 5, + 6, + 7, + 7, + 6, + 7, + 7, + 6, + 8, + 4, + 7, + 6, + 6, + 7, + 5, + 5, + 7, + 7, + 6, + 8, + 5, + 5, + 7, + 7, + 6, + 7, + 5, + 7, + 5, + 6, + 6, + 5, + 6, + 7, + 7, + 7, + 5, + 6, + 4, + 5, + 5, + 7, + 8, + 7, + 7, + 4, + 4, + 7, + 7, + 7, + 8, + 6, + 7, + 6, + 8, + 7, + 7, + 6, + 6, + 6, + 5, + 7, + 7, + 5, + 5, + 7, + 6, + 5, + 8, + 7, + 7, + 3, + 6, + 7, + 5, + 6, + 5, + 7, + 7, + 5, + 8, + 6, + 6, + 5, + 6, + 5, + 6, + 7, + 7, + 6, + 6, + 7, + 4, + 6, + 6, + 5, + 8, + 7, + 8, + 6, + 4, + 7, + 5, + 7, + 5, + 8, + 5, + 4, + 7, + 4, + 7, + 7, + 7, + 6, + 7, + 8, + 5, + 4, + 6, + 7, + 6, + 6, + 6, + 7, + 7, + 5, + 7, + 8, + 5, + 7, + 7, + 7, + 6, + 6, + 4, + 7, + 7, + 4, + 7, + 8, + 7, + 6, + 6, + 6, + 6, + 5, + 6, + 7, + 7, + 6, + 5, + 7, + 7, + 5, + 6, + 5, + 7, + 7, + 7, + 7, + 8, + 7, + 6, + 6, + 7, + 5, + 7, + 4, + 7, + 6, + 7, + 6, + 4, + 5, + 7, + 5, + 6, + 4, + 6, + 7, + 5, + 5, + 5, + 7, + 6, + 6, + 5, + 7, + 7, + 5, + 6, + 5, + 8, + 5, + 5, + 3, + 4, + 5, + 2, + 4, + 4, + 5, + 8, + 4, + 5, + 6, + 5, + 5, + 7, + 5, + 4, + 6, + 5, + 7, + 6, + 7, + 7, + 5, + 5, + 6, + 6, + 5, + 7, + 7, + 7, + 5, + 5, + 6, + 6, + 7, + 5, + 6, + 6, + 7, + 3, + 4, + 6, + 5, + 7, + 5, + 5, + 4, + 5, + 7, + 6, + 8, + 7, + 8, + 6, + 7, + 6, + 6, + 5, + 7, + 6, + 5, + 6, + 6, + 5, + 3, + 4, + 7, + 5, + 6, + 5, + 5, + 6, + 7, + 4, + 6, + 7, + 8, + 5, + 6, + 7, + 7, + 5, + 6, + 8, + 5, + 3, + 6, + 6, + 6, + 8, + 4, + 5, + 7, + 7, + 5, + 7, + 7, + 5, + 7, + 7, + 7, + 6, + 4, + 3, + 5, + 7, + 5, + 5, + 5, + 5, + 4, + 5, + 6, + 4, + 5, + 6, + 7, + 4, + 6, + 6, + 6, + 6, + 5, + 5, + 6, + 4, + 6, + 5, + 7, + 7, + 8, + 3, + 6, + 5, + 5, + 5, + 5, + 5, + 8, + 4, + 5, + 5, + 7, + 3, + 5, + 3, + 7, + 6, + 7, + 5, + 8, + 7, + 7, + 7, + 5, + 5, + 5, + 7, + 4, + 3, + 5, + 5, + 4, + 6, + 6, + 6, + 7, + 6, + 8, + 8, + 5, + 7, + 4, + 6, + 6, + 4, + 5, + 5, + 7, + 5, + 6, + 6, + 7, + 7, + 5, + 5, + 5, + 6, + 7, + 7, + 6, + 8, + 7, + 6, + 6, + 6, + 4, + 6, + 7, + 7, + 7, + 7, + 7, + 6, + 6, + 8, + 7, + 6, + 8, + 5, + 5, + 7, + 8, + 5, + 5, + 6, + 7, + 7, + 6, + 7, + 5, + 5, + 5, + 8, + 6, + 7, + 8, + 7, + 5, + 7, + 6, + 5, + 6, + 7, + 6, + 3, + 8, + 6, + 5, + 7, + 4, + 4, + 8, + 4, + 6, + 7, + 7, + 5, + 7, + 4, + 6, + 4, + 6, + 6, + 6, + 4, + 6, + 3, + 7, + 6, + 6, + 7, + 5, + 6, + 5, + 7, + 6, + 6, + 5, + 5, + 3, + 7, + 6, + 7, + 4, + 7, + 6, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 7, + 4, + 7, + 8, + 5, + 7, + 7, + 7, + 7, + 7, + 8, + 7, + 5, + 7, + 6, + 5, + 7, + 5, + 7, + 7, + 6, + 6, + 7, + 5, + 5, + 6, + 6, + 5, + 5, + 7, + 5, + 7, + 6, + 4, + 7, + 4, + 6, + 7, + 5, + 4, + 6, + 5, + 7, + 7, + 7, + 5, + 6, + 6, + 7, + 7, + 4, + 7, + 5, + 5, + 4, + 6, + 7, + 8, + 5, + 6, + 4, + 6, + 4, + 5, + 7, + 5, + 6, + 6, + 5, + 6, + 7, + 6, + 7, + 7, + 6, + 7, + 6, + 5, + 7, + 8, + 4, + 6, + 5, + 7, + 8, + 4, + 5, + 5, + 4, + 7, + 6, + 4, + 4, + 6, + 6, + 7, + 5, + 7, + 7, + 5, + 4, + 7, + 3, + 7, + 5, + 7, + 4, + 7, + 5, + 6, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 8, + 6, + 5, + 5, + 6, + 5, + 7, + 7, + 6, + 7, + 4, + 6, + 6, + 6, + 6, + 7, + 5, + 5, + 6, + 4, + 4, + 7, + 5, + 6, + 7, + 7, + 4, + 5, + 5, + 5, + 7, + 7, + 5, + 5, + 5, + 7, + 5, + 6, + 7, + 6, + 7, + 8, + 5, + 4, + 7, + 6, + 6, + 7, + 7, + 7, + 6, + 5, + 8, + 5, + 6, + 7, + 7, + 5, + 5, + 7, + 7, + 4, + 8, + 5, + 5, + 5, + 7, + 7, + 5, + 7, + 5, + 6, + 6, + 7, + 5, + 4, + 4, + 5, + 5, + 6, + 5, + 4, + 5, + 5, + 4, + 5, + 7, + 7, + 6, + 5, + 7, + 6, + 5, + 5, + 6, + 7, + 7, + 7, + 7, + 5, + 5, + 4, + 7, + 6, + 3, + 5, + 7, + 7, + 7, + 6, + 6, + 4, + 6, + 5, + 5, + 6, + 5, + 5, + 4, + 7, + 5, + 8, + 7, + 7, + 5, + 7, + 7, + 7, + 7, + 6, + 7, + 8, + 5, + 5, + 7, + 7, + 8, + 7, + 5, + 5, + 7, + 6, + 7, + 5, + 7, + 6, + 6, + 7, + 7, + 6, + 7, + 6, + 6, + 7, + 5, + 6, + 6, + 7, + 7, + 7, + 5, + 7, + 7, + 6, + 8, + 7, + 7, + 7, + 6, + 4, + 7, + 6, + 6, + 7, + 5, + 5, + 4, + 6, + 6, + 4, + 6, + 6, + 5, + 8, + 5, + 7, + 5, + 7, + 5, + 5, + 6, + 7, + 7, + 7, + 7, + 5, + 6, + 8, + 6, + 5, + 7, + 7, + 7, + 6, + 4, + 7, + 10, + 6, + 5, + 6, + 5, + 6, + 5, + 7, + 5, + 7, + 4, + 5, + 6, + 6, + 5, + 6, + 6, + 7, + 5, + 6, + 7, + 7, + 6, + 5, + 7, + 6, + 7, + 4, + 7, + 5, + 4, + 5, + 6, + 5, + 8, + 5, + 6, + 6, + 6, + 7, + 6, + 7, + 6, + 4, + 7, + 7, + 5, + 5, + 7, + 7, + 5, + 8, + 6, + 7, + 5, + 7, + 6, + 6, + 7, + 8, + 6, + 6, + 7, + 7, + 4, + 7, + 8, + 5, + 7, + 7, + 4, + 7, + 6, + 5, + 8, + 7, + 7, + 6, + 5, + 7, + 4, + 6, + 4, + 7, + 6, + 6, + 6, + 6, + 7, + 7, + 4, + 6, + 7, + 4, + 4, + 7, + 7, + 7, + 7, + 7, + 6, + 3, + 5, + 5, + 4, + 4, + 6, + 6, + 5, + 6, + 4, + 6, + 6, + 5, + 5, + 7, + 6, + 5, + 5, + 5, + 8, + 6, + 5, + 7, + 4, + 7, + 6, + 7, + 6, + 7, + 7, + 6, + 6, + 5, + 7, + 7, + 4, + 6, + 5, + 7, + 7, + 6, + 6, + 7, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 6, + 7, + 5, + 5, + 5, + 6, + 7, + 6, + 6, + 7, + 5, + 7, + 7, + 6, + 7, + 7, + 7, + 8, + 7, + 8, + 7, + 5, + 4, + 5, + 5, + 7, + 4, + 5, + 7, + 7, + 6, + 6, + 5, + 7, + 6, + 5, + 4, + 6, + 4, + 8, + 5, + 6, + 5, + 6, + 4, + 5, + 5, + 5, + 5, + 5, + 7, + 6, + 6, + 5, + 5, + 5, + 6, + 6, + 6, + 5, + 4, + 5, + 7, + 6, + 5, + 6, + 5, + 6, + 8, + 7, + 2, + 7, + 7, + 7, + 5, + 5, + 7, + 5, + 5, + 5, + 3, + 6, + 7, + 6, + 5, + 4, + 7, + 6, + 5, + 3, + 6, + 6, + 8, + 5, + 6, + 7, + 5, + 7, + 7, + 5, + 6, + 7, + 5, + 5, + 4, + 5, + 7, + 6, + 5, + 7, + 5, + 7, + 6, + 5, + 9, + 6, + 6, + 4, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 7, + 3, + 2, + 5, + 7, + 5, + 6, + 7, + 6, + 3, + 5, + 5, + 7, + 5, + 7, + 6, + 5, + 7, + 3, + 5, + 5, + 6, + 2, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 3, + 7, + 5, + 5, + 5, + 5, + 6, + 2, + 7, + 4, + 7, + 4, + 5, + 5, + 6, + 5, + 4, + 6, + 8, + 4, + 5, + 6, + 6, + 6, + 6, + 5, + 5, + 5, + 5, + 5, + 3, + 6, + 6, + 7, + 6, + 4, + 5, + 6, + 4, + 7, + 5, + 6, + 5, + 8, + 6, + 6, + 7, + 7, + 5, + 3, + 6, + 3, + 5, + 7, + 6, + 6, + 6, + 6, + 5, + 3, + 7, + 5, + 6, + 4, + 5, + 5, + 7, + 5, + 5, + 8, + 5, + 3, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 4, + 5, + 3, + 5, + 5, + 6, + 5, + 4, + 5, + 7, + 4, + 5, + 5, + 5, + 4, + 8, + 6, + 5, + 7, + 6, + 5, + 4, + 7, + 5, + 6, + 5, + 5, + 5, + 5, + 4, + 6, + 5, + 6, + 7, + 5, + 5, + 4, + 5, + 4, + 6, + 7, + 7, + 5, + 5, + 7, + 6, + 5, + 7, + 6, + 4, + 8, + 7, + 6, + 6, + 5, + 8, + 6, + 5, + 6, + 6, + 5, + 5, + 4, + 5, + 5, + 6, + 5, + 5, + 8, + 5, + 6, + 5, + 4, + 5, + 3, + 6, + 5, + 2, + 7, + 4, + 5, + 4, + 4, + 5, + 5, + 6, + 5, + 6, + 5, + 7, + 3, + 7, + 5, + 6, + 6, + 5, + 5, + 5, + 7, + 6, + 7, + 5, + 6, + 5, + 5, + 5, + 5, + 6, + 7, + 5, + 5, + 4, + 7, + 5, + 7, + 5, + 5, + 5, + 6, + 6, + 2, + 5, + 5, + 5, + 3, + 5, + 5, + 7, + 4, + 7, + 5, + 7, + 4, + 6, + 3, + 6, + 6, + 5, + 5, + 5, + 6, + 5, + 7, + 5, + 7, + 6, + 5, + 5, + 5, + 5, + 6, + 4, + 4, + 5, + 7, + 5, + 6, + 4, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 3, + 6, + 6, + 6, + 5, + 2, + 3, + 6, + 7, + 4, + 7, + 5, + 5, + 3, + 7, + 3, + 5, + 4, + 6, + 6, + 5, + 7, + 5, + 3, + 6, + 5, + 7, + 5, + 5, + 7, + 5, + 8, + 7, + 6, + 5, + 5, + 6, + 4, + 6, + 8, + 5, + 5, + 3, + 6, + 7, + 5, + 8, + 6, + 6, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 6, + 9, + 7, + 6, + 5, + 5, + 6, + 2, + 5, + 4, + 6, + 5, + 6, + 5, + 7, + 6, + 7, + 5, + 5, + 7, + 7, + 5, + 6, + 5, + 6, + 7, + 5, + 5, + 6, + 6, + 5, + 6, + 5, + 5, + 5, + 6, + 7, + 6, + 5, + 7, + 5, + 7, + 4, + 7, + 6, + 5, + 3, + 5, + 7, + 5, + 7, + 7, + 6, + 6, + 5, + 7, + 6, + 7, + 6, + 5, + 5, + 5, + 7, + 5, + 7, + 7, + 5, + 2, + 6, + 4, + 5, + 7, + 4, + 7, + 5, + 7, + 5, + 6, + 6, + 7, + 6, + 5, + 7, + 5, + 5, + 5, + 5, + 6, + 5, + 4, + 6, + 6, + 6, + 5, + 7, + 7, + 5, + 5, + 7, + 7, + 5, + 6, + 6, + 5, + 7, + 4, + 7, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 7, + 6, + 7, + 5, + 5, + 5, + 7, + 5, + 6, + 6, + 5, + 7, + 5, + 7, + 6, + 5, + 7, + 6, + 5, + 7, + 6, + 4, + 7, + 5, + 5, + 7, + 4, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 7, + 7, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 6, + 7, + 5, + 6, + 7, + 6, + 5, + 6, + 5, + 5, + 7, + 5, + 5, + 7, + 7, + 7, + 6, + 4, + 7, + 5, + 6, + 6, + 5, + 5, + 6, + 7, + 4, + 7, + 7, + 4, + 5, + 7, + 4, + 5, + 8, + 6, + 4, + 5, + 5, + 5, + 4, + 5, + 7, + 5, + 7, + 5, + 5, + 5, + 6, + 4, + 4, + 6, + 5, + 7, + 5, + 5, + 7, + 5, + 7, + 7, + 7, + 4, + 7, + 5, + 7, + 5, + 4, + 7, + 7, + 4, + 4, + 5, + 4, + 7, + 5, + 4, + 7, + 5, + 5, + 4, + 7, + 7, + 5, + 6, + 6, + 6, + 7, + 5, + 5, + 6, + 4, + 6, + 5, + 6, + 7, + 7, + 5, + 5, + 8, + 6, + 5, + 6, + 8, + 4, + 7, + 4, + 6, + 5, + 6, + 7, + 6, + 5, + 5, + 5, + 5, + 5, + 7, + 8, + 7, + 5, + 5, + 5, + 5, + 6, + 5, + 4, + 7, + 4, + 8, + 6, + 5, + 8, + 8, + 4, + 5, + 7, + 6, + 4, + 7, + 5, + 5, + 6, + 6, + 7, + 7, + 5, + 4, + 8, + 7, + 5, + 5, + 5, + 4, + 5, + 5, + 5, + 7, + 5, + 7, + 6, + 8, + 7, + 6, + 4, + 5, + 4, + 5, + 5, + 8, + 4, + 7, + 7, + 5, + 5, + 5, + 7, + 7, + 7, + 6, + 6, + 6, + 6, + 6, + 5, + 6, + 6, + 5, + 5, + 7, + 4, + 6, + 6, + 5, + 5, + 5, + 5, + 4, + 5, + 5, + 6, + 5, + 7, + 4, + 5, + 6, + 6, + 7, + 7, + 5, + 6, + 7, + 7, + 5, + 5, + 7, + 5, + 6, + 6, + 6, + 5, + 7, + 5, + 5, + 4, + 7, + 7, + 7, + 6, + 5, + 6, + 7, + 6, + 4, + 4, + 6, + 7, + 5, + 6, + 5, + 4, + 7, + 4, + 6, + 7, + 7, + 6, + 5, + 7, + 5, + 5, + 4, + 7, + 5, + 7, + 5, + 6, + 5, + 5, + 6, + 5, + 6, + 6, + 5, + 5, + 7, + 6, + 4, + 5, + 5, + 6, + 6, + 5, + 7, + 6, + 6, + 6, + 4, + 6, + 6, + 6, + 6, + 6, + 5, + 7, + 5, + 5, + 5, + 5, + 6, + 7, + 7, + 6, + 6, + 5, + 7, + 6, + 6, + 6, + 5, + 4, + 5, + 5, + 7, + 5, + 7, + 8, + 5, + 5, + 7, + 6, + 4, + 5, + 5, + 5, + 4, + 5, + 7, + 7, + 6, + 8, + 6, + 7, + 5, + 5, + 7, + 7, + 7, + 5, + 5, + 6, + 6, + 7, + 4, + 8, + 5, + 6, + 5, + 4, + 7, + 6, + 5, + 4, + 5, + 6, + 6, + 6, + 4, + 5, + 7, + 6, + 7, + 6, + 5, + 4, + 4, + 5, + 6, + 5, + 5, + 5, + 6, + 6, + 6, + 4, + 4, + 7, + 4, + 6, + 5, + 4, + 6, + 4, + 7, + 6, + 5, + 4, + 7, + 8, + 6, + 7, + 5, + 4, + 6, + 8, + 4, + 6, + 5, + 5, + 5, + 6, + 5, + 8, + 4, + 4, + 7, + 6, + 7, + 5, + 5, + 7, + 6, + 5, + 7, + 6, + 6, + 6, + 6, + 7, + 5, + 5, + 7, + 7, + 5, + 5, + 5, + 6, + 7, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 4, + 6, + 6, + 6, + 5, + 5, + 7, + 4, + 4, + 5, + 6, + 6, + 6, + 5, + 6, + 8, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 7, + 5, + 5, + 7, + 5, + 6, + 7, + 5, + 8, + 6, + 8, + 7, + 6, + 5, + 6, + 7, + 5, + 4, + 6, + 7, + 5, + 7, + 6, + 7, + 6, + 5, + 7, + 5, + 5, + 5, + 5, + 7, + 6, + 7, + 7, + 7, + 6, + 5, + 4, + 7, + 5, + 4, + 6, + 7, + 6, + 6, + 6, + 6, + 5, + 5, + 6, + 5, + 7, + 7, + 7, + 7, + 6, + 7, + 4, + 5, + 6, + 7, + 7, + 6, + 6, + 5, + 5, + 6, + 8, + 5, + 6, + 4, + 6, + 5, + 6, + 6, + 4, + 5, + 5, + 6, + 6, + 5, + 5, + 5, + 6, + 6, + 8, + 6, + 7, + 7, + 4, + 5, + 5, + 6, + 5, + 5, + 4, + 5, + 6, + 5, + 7, + 6, + 7, + 5, + 6, + 4, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 7, + 8, + 6, + 5, + 6, + 7, + 5, + 6, + 4, + 6, + 5, + 6, + 7, + 4, + 5, + 6, + 7, + 5, + 7, + 5, + 5, + 5, + 5, + 6, + 8, + 4, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 6, + 6, + 4, + 4, + 6, + 6, + 5, + 6, + 4, + 6, + 6, + 5, + 6, + 5, + 8, + 6, + 5, + 7, + 5, + 4, + 5, + 7, + 5, + 6, + 6, + 5, + 6, + 4, + 6, + 6, + 5, + 5, + 5, + 6, + 5, + 5, + 8, + 5, + 6, + 5, + 5, + 5, + 5, + 6, + 5, + 7, + 5, + 5, + 8, + 6, + 5, + 5, + 6, + 5, + 5, + 7, + 7, + 5, + 5, + 8, + 6, + 7, + 6, + 5, + 5, + 6, + 4, + 4, + 5, + 5, + 4, + 4, + 6, + 5, + 5, + 5, + 6, + 6, + 5, + 5, + 8, + 5, + 7, + 5, + 5, + 7, + 6, + 6, + 5, + 4, + 6, + 5, + 6, + 8, + 6, + 5, + 5, + 7, + 4, + 6, + 7, + 5, + 6, + 5, + 7, + 5, + 5, + 7, + 6, + 7, + 5, + 6, + 6, + 5, + 5, + 6, + 6, + 6, + 6, + 5, + 6, + 4, + 5, + 5, + 6, + 5, + 7, + 6, + 5, + 7, + 4, + 5, + 4, + 6, + 5, + 5, + 5, + 5, + 6, + 4, + 5, + 5, + 5, + 5, + 6, + 4, + 5, + 5, + 7, + 4, + 5, + 5, + 5, + 5, + 6, + 7, + 4, + 5, + 4, + 4, + 6, + 4, + 6, + 4, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 7, + 4, + 5, + 4, + 4, + 5, + 5, + 6, + 7, + 6, + 6, + 5, + 5, + 5, + 7, + 6, + 7, + 5, + 6, + 5, + 5, + 7, + 6, + 5, + 5, + 6, + 4, + 5, + 6, + 5, + 7, + 6, + 6, + 7, + 6, + 6, + 6, + 6, + 7, + 7, + 4, + 5, + 5, + 5, + 4, + 6, + 6, + 5, + 5, + 7, + 6, + 5, + 4, + 5, + 8, + 5, + 6, + 6, + 7, + 4, + 6, + 6, + 5, + 5, + 6, + 5, + 6, + 6, + 4, + 6, + 5, + 5, + 4, + 6, + 5, + 5, + 5, + 6, + 6, + 6, + 5, + 4, + 6, + 6, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 7, + 5, + 6, + 5, + 5, + 6, + 5, + 6, + 5, + 4, + 5, + 6, + 5, + 6, + 6, + 5, + 7, + 7, + 6, + 6, + 4, + 6, + 5, + 5, + 4, + 5, + 5, + 5, + 6, + 6, + 5, + 6, + 6, + 5, + 5, + 5, + 7, + 4, + 6, + 5, + 6, + 7, + 5, + 5, + 5, + 6, + 5, + 4, + 5, + 5, + 7, + 5, + 4, + 8, + 7, + 5, + 7, + 6, + 5, + 6, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 7, + 7, + 6, + 6, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 6, + 5, + 7, + 6, + 6, + 5, + 4, + 5, + 5, + 4, + 5, + 5, + 7, + 5, + 5, + 4, + 6, + 6, + 5, + 6, + 6, + 6, + 6, + 4, + 5, + 5, + 6, + 5, + 7, + 6, + 6, + 5, + 6, + 4, + 5, + 5, + 6, + 5, + 6, + 6, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 4, + 5, + 5, + 7, + 5, + 5, + 6, + 5, + 5, + 7, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 6, + 7, + 5, + 7, + 5, + 5, + 6, + 5, + 6, + 7, + 6, + 5, + 7, + 7, + 7, + 6, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 7, + 4, + 5, + 6, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 4, + 5, + 5, + 7, + 6, + 5, + 6, + 7, + 5, + 6, + 5, + 7, + 4, + 5, + 5, + 7, + 5, + 5, + 6, + 6, + 5, + 6, + 5, + 6, + 5, + 6, + 6, + 6, + 5, + 5, + 5, + 5, + 5, + 7, + 6, + 4, + 6, + 4, + 5, + 7, + 5, + 5, + 6, + 5, + 4, + 5, + 5, + 7, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 6, + 6, + 6, + 6, + 6, + 7, + 5, + 5, + 5, + 5, + 4, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 7, + 5, + 5, + 5, + 5, + 5, + 7, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 6, + 5, + 7, + 6, + 5, + 4, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 4, + 5, + 5, + 5, + 4, + 5, + 6, + 5, + 5, + 5, + 5, + 6, + 6, + 6, + 6, + 5, + 6, + 5, + 6, + 5, + 6, + 5, + 7, + 7, + 5, + 5, + 7, + 6, + 6, + 5, + 5, + 5, + 6, + 7, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 4, + 6, + 6, + 7, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 4, + 4, + 6, + 7, + 5, + 5, + 7, + 5, + 4, + 5, + 5, + 6, + 5, + 5, + 5, + 7, + 5, + 5, + 6, + 5, + 5, + 5, + 7, + 5, + 5, + 6, + 4, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 4, + 5, + 5, + 5, + 5, + 6, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 6, + 6, + 7, + 6, + 5, + 5, + 5, + 5, + 5, + 4, + 5, + 6, + 4, + 6, + 5, + 4, + 5, + 4, + 5, + 5, + 6, + 7, + 6, + 6, + 5, + 5, + 7, + 5, + 4, + 4, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 4, + 5, + 5, + 5, + 6, + 6, + 5, + 4, + 6, + 5, + 5, + 6, + 5, + 4, + 6, + 4, + 7, + 5, + 5, + 5, + 6, + 5, + 6, + 6, + 4, + 5, + 6, + 6, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 4, + 6, + 5, + 5, + 6, + 6, + 5, + 5, + 6, + 6, + 7, + 5, + 6, + 7, + 4, + 5, + 6, + 7, + 5, + 4, + 5, + 5, + 6, + 7, + 5, + 5, + 5, + 5, + 6, + 6, + 4, + 7, + 5, + 4, + 6, + 5, + 6, + 6, + 5, + 6, + 5, + 4, + 6, + 4, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 8, + 4, + 5, + 5, + 5, + 5, + 5, + 5, + 7, + 5, + 6, + 5, + 4, + 6, + 5, + 5, + 5, + 7, + 6, + 6, + 6, + 7, + 5, + 5, + 5, + 4, + 4, + 6, + 7, + 4, + 4, + 5, + 6, + 5, + 7, + 6, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 7, + 5, + 5, + 6, + 6, + 5, + 6, + 6, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 7, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 7, + 5, + 5, + 5, + 5, + 5, + 7, + 7, + 5, + 5, + 4, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 4, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 7, + 5, + 5, + 5, + 5, + 4, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 8, + 5, + 5, + 5, + 6, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 6, + 5, + 6, + 5, + 6, + 5, + 7, + 5, + 5, + 6, + 6, + 6, + 5, + 7, + 5, + 4, + 6, + 5, + 6, + 6, + 5, + 5, + 5, + 5, + 7, + 6, + 5, + 5, + 4, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 4, + 5, + 5, + 5, + 5, + 5, + 7, + 5, + 5, + 5, + 7, + 5, + 6, + 5, + 7, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 4, + 5, + 7, + 5, + 6, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 6, + 5, + 7, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 6, + 5, + 7, + 6, + 5, + 6, + 5, + 5, + 6, + 8, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 6, + 6, + 6, + 5, + 6, + 5, + 5, + 6, + 6, + 5, + 6, + 6, + 6, + 5, + 5, + 5, + 5, + 6, + 7, + 5, + 5, + 5, + 6, + 6, + 6, + 4, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 6, + 6, + 5, + 4, + 6, + 5, + 5, + 5, + 7, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 4, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 4, + 6, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 7, + 5, + 5, + 6, + 5, + 6, + 6, + 6, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 7, + 6, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 7, + 5, + 6, + 5, + 5, + 6, + 5, + 4, + 5, + 5, + 5, + 6, + 6, + 6, + 5, + 6, + 5, + 5, + 6, + 7, + 5, + 5, + 5, + 5, + 6, + 5, + 7, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 6, + 6, + 5, + 6, + 5, + 6, + 4, + 5, + 5, + 5, + 5, + 5, + 7, + 5, + 5, + 7, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 5, + 6, + 6, + 5, + 6, + 4, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 5, + 7, + 6, + 5, + 6, + 6, + 5, + 5, + 5, + 6, + 6, + 5, + 6, + 5, + 6, + 6, + 5, + 6, + 5, + 6, + 7, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 7, + 6, + 7, + 5, + 5, + 5, + 6, + 5, + 6, + 6, + 5, + 4, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 7, + 5, + 5, + 6, + 4, + 6, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 6, + 5, + 5, + 7, + 5, + 5, + 7, + 7, + 6, + 5, + 5, + 4, + 6, + 5, + 5, + 6, + 6, + 5, + 5, + 5, + 6, + 6, + 6, + 5, + 5, + 6, + 5, + 6, + 5, + 7, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 7, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 7, + 5, + 6, + 6, + 5, + 7, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 5, + 5, + 5, + 5, + 6, + 6, + 6, + 6, + 6, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 5, + 5, + 5, + 6, + 6, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 6, + 4, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 7, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 6, + 6, + 5, + 5, + 4, + 5, + 7, + 5, + 5, + 5, + 4, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 7, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 6, + 6, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 6, + 5, + 6, + 5, + 5, + 7, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 5, + 5, + 7, + 5, + 5, + 5, + 5, + 4, + 6, + 5, + 5, + 6, + 5, + 7, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 6, + 6, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 6, + 6, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 6, + 5, + 6, + 5, + 7, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 7, + 5, + 5, + 4, + 5, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 6, + 6, + 5, + 5, + 5, + 4, + 6, + 6, + 6, + 6, + 6, + 5, + 5, + 5, + 5, + 3, + 5, + 6, + 5, + 5, + 5, + 5, + 6, + 6, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 6, + 6, + 6, + 6, + 5, + 6, + 5, + 5, + 5, + 6, + 6, + 5, + 6, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 6, + 5, + 6, + 5, + 6, + 6, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 7, + 6, + 6, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 6, + 5, + 7, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 6, + 5, + 5, + 6, + 5, + 6, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 6, + 6, + 5, + 5, + 6, + 5, + 5, + 6, + 6, + 6, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 7, + 6, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 6, + 7, + 6, + 7, + 6, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 6, + 6, + 5, + 6, + 5, + 5, + 6, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 7, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 8, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 6, + 6, + 5, + 5, + 5, + 5, + 6, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 7, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 6, + 6, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 7, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 6, + 6, + 6, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 8, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 7, + 6, + 6, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 6, + 6, + 5, + 5, + 7, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 6, + 7, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 6, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 6, + 6, + 6, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 7, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 6, + 5, + 7, + 5, + 6, + 5, + 6, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 6, + 6, + 5, + 5, + 5, + 5, + 6, + 7, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 6, + 6, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 6, + 6, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 6, + 6, + 5, + 5, + 6, + 5, + 5, + 6, + 6, + 6, + 6, + 5, + 6, + 6, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 7, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 6, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 5, + 6, + 6, + 5, + 5, + 6, + 6, + 6, + 6, + 5, + 5, + 5, + 5, + 6, + 6, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 6, + 6, + 6, + 5, + 6, + 6, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 6, + 6, + 5, + 6, + 5, + 6, + 5, + 6, + 6, + 6, + 5, + 6, + 6, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 5, + 6, + 6, + 5, + 5, + 6, + 6, + 5, + 6, + 6, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 6, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 6, + 6, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 6, + 6, + 6, + 6, + 6, + 5, + 5, + 5, + 6, + 6, + 6, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 6, + 6, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 6, + 5, + 5, + 5, + 6, + 5, + 7, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 6, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 5, + 6, + 5, + 6, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 6, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 6, + 6, + 6, + 5, + 6, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 6, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 6, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 6, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 5, + 6, + 6, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 5, + 6, + 6, + 6, + 5, + 5, + 5, + 6, + 6, + 6, + 6, + 5, + 5, + 6, + 6, + 6, + 5, + 5, + 5, + 6, + 6, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 6, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 6, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 6, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 6, + 6, + 6, + 5, + 5, + 6, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 6, + 6, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 6, + 6, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 6, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 6, + 6, + 5, + 6, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 7, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 6, + 6, + 6, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 6, + 6, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 6, + 5, + 6, + 6, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 6, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 6, + 6, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 7, + 5, + 6, + 5, + 5, + 5, + 6, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 5, + 6, + 5, + 6, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 6, + 6, + 5, + 6, + 6, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 6, + 5, + 5, + 6, + 6, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 6, + 5, + 6, + 6, + 6, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 6, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 6, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 6, + 6, + 5, + 6, + 6, + 6, + 6, + 6, + 5, + 6, + 5, + 6, + 6, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 6, + 6, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 6, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 6, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 6, + 6, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 6, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 6, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 6, + 6, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 6, + 6, + 6, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 6, + 6, + 5, + 5, + 5, + 6, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 6, + 5, + 6, + 6, + 6, + 5, + 5, + 5, + 5, + 6, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 6, + 6, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 6, + 6, + 5, + 6, + 6, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 6, + 6, + 5, + 5, + 5, + 6, + 6, + 6, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 6, + 6, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 6, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 6, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 6, + 6, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 6, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 6, + 6, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 6, + 6, + 5, + 6, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 6, + 6, + 5, + 6, + 6, + 5, + 6, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 6, + 6, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 6, + 6, + 5, + 6, + 5, + 6, + 6, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 6, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 6, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 6, + 6, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 6, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 6, + 6, + 6, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 5, + 5, + 5, + 5, + 6, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 6, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 5, + 6, + 6, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 6, + 6, + 6, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 6, + 6, + 5, + 6, + 6, + 5, + 5, + 6, + 6, + 6, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 6, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 6, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 6, + 6, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 6, + 6, + 5, + 6, + 6, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 5, + 6, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 6, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 6, + 5, + 6, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 6, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 6, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 6, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 6, + 6, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 6, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 6, + 6, + 6, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 6, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 6, + 5, + 6, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 6, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 6, + 5, + 5, + 5, + 6, + 6, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 6, + 6, + 6, + 5, + 6, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 6, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 5, + 6, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 6, + 6, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 5, + 6, + 6, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 6, + 6, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 6, + 6, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 5, + 5, + 6, + 6, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 6, + 5, + 6, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 6, + 6, + 6, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 6, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 6, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 6, + 6, + 6, + 6, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 5, + 5, + 6, + 6, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 6, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 6, + 5, + 5, + 5, + 6, + 5, + 6, + 6, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 6, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 6, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 6, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 6, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 6, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 5, + 6, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 6, + 6, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 6, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 6, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 6, + 6, + 5, + 5, + 5, + 5, + 6, + 6, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 5, + 6, + 6, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 6, + 6, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 6, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5 + ], + "lane_rows": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621, + 622, + 623, + 624, + 625, + 626, + 627, + 628, + 629, + 630, + 631, + 632, + 633, + 634, + 635, + 636, + 637, + 638, + 639, + 640, + 641, + 642, + 643, + 644, + 645, + 646, + 647, + 648, + 649, + 650, + 651, + 652, + 653, + 654, + 655, + 656, + 657, + 658, + 659, + 660, + 661, + 662, + 663, + 664, + 665, + 666, + 667, + 668, + 669, + 670, + 671, + 672, + 673, + 674, + 675, + 676, + 677, + 678, + 679, + 680, + 681, + 682, + 683, + 684, + 685, + 686, + 687, + 688, + 689, + 690, + 691, + 692, + 693, + 694, + 695, + 696, + 697, + 698, + 699, + 700, + 701, + 702, + 703, + 704, + 705, + 706, + 707, + 708, + 709, + 710, + 711, + 712, + 713, + 714, + 715, + 716, + 717, + 718, + 719, + 720, + 721, + 722, + 723, + 724, + 725, + 726, + 727, + 728, + 729, + 730, + 731, + 732, + 733, + 734, + 735, + 736, + 737, + 738, + 739, + 740, + 741, + 742, + 743, + 744, + 745, + 746, + 747, + 748, + 749, + 750, + 751, + 752, + 753, + 754, + 755, + 756, + 757, + 758, + 759, + 760, + 761, + 762, + 763, + 764, + 765, + 766, + 767, + 768, + 769, + 770, + 771, + 772, + 773, + 774, + 775, + 776, + 777, + 778, + 779, + 780, + 781, + 782, + 783, + 784, + 785, + 786, + 787, + 788, + 789, + 790, + 791, + 792, + 793, + 794, + 795, + 796, + 797, + 798, + 799, + 800, + 801, + 802, + 803, + 804, + 805, + 806, + 807, + 808, + 809, + 810, + 811, + 812, + 813, + 814, + 815, + 816, + 817, + 818, + 819, + 820, + 821, + 822, + 823, + 824, + 825, + 826, + 827, + 828, + 829, + 830, + 831, + 832, + 833, + 834, + 835, + 836, + 837, + 838, + 839, + 840, + 841, + 842, + 843, + 844, + 845, + 846, + 847, + 848, + 849, + 850, + 851, + 852, + 853, + 854, + 855, + 856, + 857, + 858, + 859, + 860, + 861, + 862, + 863, + 864, + 865, + 866, + 867, + 868, + 869, + 870, + 871, + 872, + 873, + 874, + 875, + 876, + 877, + 878, + 879, + 880, + 881, + 882, + 883, + 884, + 885, + 886, + 887, + 888, + 889, + 890, + 891, + 892, + 893, + 894, + 895, + 896, + 897, + 898, + 899, + 900, + 901, + 902, + 903, + 904, + 905, + 906, + 907, + 908, + 909, + 910, + 911, + 912, + 913, + 914, + 915, + 916, + 917, + 918, + 919, + 920, + 921, + 922, + 923, + 924, + 925, + 926, + 927, + 928, + 929, + 930, + 931, + 932, + 933, + 934, + 935, + 936, + 937, + 938, + 939, + 940, + 941, + 942, + 943, + 944, + 945, + 946, + 947, + 948, + 949, + 950, + 951, + 952, + 953, + 954, + 955, + 956, + 957, + 958, + 959, + 960, + 961, + 962, + 963, + 964, + 965, + 966, + 967, + 968, + 969, + 970, + 971, + 972, + 973, + 974, + 975, + 976, + 977, + 978, + 979, + 980, + 981, + 982, + 983, + 984, + 985, + 986, + 987, + 988, + 989, + 990, + 991, + 992, + 993, + 994, + 995, + 996, + 997, + 998, + 999, + 1000, + 1001, + 1002, + 1003, + 1004, + 1005, + 1006, + 1007, + 1008, + 1009, + 1010, + 1011, + 1012, + 1013, + 1014, + 1015, + 1016, + 1017, + 1018, + 1019, + 1020, + 1021, + 1022, + 1023, + 1024, + 1025, + 1026, + 1027, + 1028, + 1029, + 1030, + 1031, + 1032, + 1033, + 1034, + 1035, + 1036, + 1037, + 1038, + 1039, + 1040, + 1041, + 1042, + 1043, + 1044, + 1045, + 1046, + 1047, + 1048, + 1049, + 1050, + 1051, + 1052, + 1053, + 1054, + 1055, + 1056, + 1057, + 1058, + 1059, + 1060, + 1061, + 1062, + 1063, + 1064, + 1065, + 1066, + 1067, + 1068, + 1069, + 1070, + 1071, + 1072, + 1073, + 1074, + 1075, + 1076, + 1077, + 1078, + 1079, + 1080, + 1081, + 1082, + 1083, + 1084, + 1085, + 1086, + 1087, + 1088, + 1089, + 1090, + 1091, + 1092, + 1093, + 1094, + 1095, + 1096, + 1097, + 1098, + 1099, + 1100, + 1101, + 1102, + 1103, + 1104, + 1105, + 1106, + 1107, + 1108, + 1109, + 1110, + 1111, + 1112, + 1113, + 1114, + 1115, + 1116, + 1117, + 1118, + 1119, + 1120, + 1121, + 1122, + 1123, + 1124, + 1125, + 1126, + 1127, + 1128, + 1129, + 1130, + 1131, + 1132, + 1133, + 1134, + 1135, + 1136, + 1137, + 1138, + 1139, + 1140, + 1141, + 1142, + 1143, + 1144, + 1145, + 1146, + 1147, + 1148, + 1149, + 1150, + 1151, + 1152, + 1153, + 1154, + 1155, + 1156, + 1157, + 1158, + 1159, + 1160, + 1161, + 1162, + 1163, + 1164, + 1165, + 1166, + 1167, + 1168, + 1169, + 1170, + 1171, + 1172, + 1173, + 1174, + 1175, + 1176, + 1177, + 1178, + 1179, + 1180, + 1181, + 1182, + 1183, + 1184, + 1185, + 1186, + 1187, + 1188, + 1189, + 1190, + 1191, + 1192, + 1193, + 1194, + 1195, + 1196, + 1197, + 1198, + 1199, + 1200, + 1201, + 1202, + 1203, + 1204, + 1205, + 1206, + 1207, + 1208, + 1209, + 1210, + 1211, + 1212, + 1213, + 1214, + 1215, + 1216, + 1217, + 1218, + 1219, + 1220, + 1221, + 1222, + 1223, + 1224, + 1225, + 1226, + 1227, + 1228, + 1229, + 1230, + 1231, + 1232, + 1233, + 1234, + 1235, + 1236, + 1237, + 1238, + 1239, + 1240, + 1241, + 1242, + 1243, + 1244, + 1245, + 1246, + 1247, + 1248, + 1249, + 1250, + 1251, + 1252, + 1253, + 1254, + 1255, + 1256, + 1257, + 1258, + 1259, + 1260, + 1261, + 1262, + 1263, + 1264, + 1265, + 1266, + 1267, + 1268, + 1269, + 1270, + 1271, + 1272, + 1273, + 1274, + 1275, + 1276, + 1277, + 1278, + 1279, + 1280, + 1281, + 1282, + 1283, + 1284, + 1285, + 1286, + 1287, + 1288, + 1289, + 1290, + 1291, + 1292, + 1293, + 1294, + 1295, + 1296, + 1297, + 1298, + 1299, + 1300, + 1301, + 1302, + 1303, + 1304, + 1305, + 1306, + 1307, + 1308, + 1309, + 1310, + 1311, + 1312, + 1313, + 1314, + 1315, + 1316, + 1317, + 1318, + 1319, + 1320, + 1321, + 1322, + 1323, + 1324, + 1325, + 1326, + 1327, + 1328, + 1329, + 1330, + 1331, + 1332, + 1333, + 1334, + 1335, + 1336, + 1337, + 1338, + 1339, + 1340, + 1341, + 1342, + 1343, + 1344, + 1345, + 1346, + 1347, + 1348, + 1349, + 1350, + 1351, + 1352, + 1353, + 1354, + 1355, + 1356, + 1357, + 1358, + 1359, + 1360, + 1361, + 1362, + 1363, + 1364, + 1365, + 1366, + 1367, + 1368, + 1369, + 1370, + 1371, + 1372, + 1373, + 1374, + 1375, + 1376, + 1377, + 1378, + 1379, + 1380, + 1381, + 1382, + 1383, + 1384, + 1385, + 1386, + 1387, + 1388, + 1389, + 1390, + 1391, + 1392, + 1393, + 1394, + 1395, + 1396, + 1397, + 1398, + 1399, + 1400, + 1401, + 1402, + 1403, + 1404, + 1405, + 1406, + 1407, + 1408, + 1409, + 1410, + 1411, + 1412, + 1413, + 1414, + 1415, + 1416, + 1417, + 1418, + 1419, + 1420, + 1421, + 1422, + 1423, + 1424, + 1425, + 1426, + 1427, + 1428, + 1429, + 1430, + 1431, + 1432, + 1433, + 1434, + 1435, + 1436, + 1437, + 1438, + 1439, + 1440, + 1441, + 1442, + 1443, + 1444, + 1445, + 1446, + 1447, + 1448, + 1449, + 1450, + 1451, + 1452, + 1453, + 1454, + 1455, + 1456, + 1457, + 1458, + 1459, + 1460, + 1461, + 1462, + 1463, + 1464, + 1465, + 1466, + 1467, + 1468, + 1469, + 1470, + 1471, + 1472, + 1473, + 1474, + 1475, + 1476, + 1477, + 1478, + 1479, + 1480, + 1481, + 1482, + 1483, + 1484, + 1485, + 1486, + 1487, + 1488, + 1489, + 1490, + 1491, + 1492, + 1493, + 1494, + 1495, + 1496, + 1497, + 1498, + 1499, + 1500, + 1501, + 1502, + 1503, + 1504, + 1505, + 1506, + 1507, + 1508, + 1509, + 1510, + 1511, + 1512, + 1513, + 1514, + 1515, + 1516, + 1517, + 1518, + 1519, + 1520, + 1521, + 1522, + 1523, + 1524, + 1525, + 1526, + 1527, + 1528, + 1529, + 1530, + 1531, + 1532, + 1533, + 1534, + 1535, + 1536, + 1537, + 1538, + 1539, + 1540, + 1541, + 1542, + 1543, + 1544, + 1545, + 1546, + 1547, + 1548, + 1549, + 1550, + 1551, + 1552, + 1553, + 1554, + 1555, + 1556, + 1557, + 1558, + 1559, + 1560, + 1561, + 1562, + 1563, + 1564, + 1565, + 1566, + 1567, + 1568, + 1569, + 1570, + 1571, + 1572, + 1573, + 1574, + 1575, + 1576, + 1577, + 1578, + 1579, + 1580, + 1581, + 1582, + 1583, + 1584, + 1585, + 1586, + 1587, + 1588, + 1589, + 1590, + 1591, + 1592, + 1593, + 1594, + 1595, + 1596, + 1597, + 1598, + 1599, + 1600, + 1601, + 1602, + 1603, + 1604, + 1605, + 1606, + 1607, + 1608, + 1609, + 1610, + 1611, + 1612, + 1613, + 1614, + 1615, + 1616, + 1617, + 1618, + 1619, + 1620, + 1621, + 1622, + 1623, + 1624, + 1625, + 1626, + 1627, + 1628, + 1629, + 1630, + 1631, + 1632, + 1633, + 1634, + 1635, + 1636, + 1637, + 1638, + 1639, + 1640, + 1641, + 1642, + 1643, + 1644, + 1645, + 1646, + 1647, + 1648, + 1649, + 1650, + 1651, + 1652, + 1653, + 1654, + 1655, + 1656, + 1657, + 1658, + 1659, + 1660, + 1661, + 1662, + 1663, + 1664, + 1665, + 1666, + 1667, + 1668, + 1669, + 1670, + 1671, + 1672, + 1673, + 1674, + 1675, + 1676, + 1677, + 1678, + 1679, + 1680, + 1681, + 1682, + 1683, + 1684, + 1685, + 1686, + 1687, + 1688, + 1689, + 1690, + 1691, + 1692, + 1693, + 1694, + 1695, + 1696, + 1697, + 1698, + 1699, + 1700, + 1701, + 1702, + 1703, + 1704, + 1705, + 1706, + 1707, + 1708, + 1709, + 1710, + 1711, + 1712, + 1713, + 1714, + 1715, + 1716, + 1717, + 1718, + 1719, + 1720, + 1721, + 1722, + 1723, + 1724, + 1725, + 1726, + 1727, + 1728, + 1729, + 1730, + 1731, + 1732, + 1733, + 1734, + 1735, + 1736, + 1737, + 1738, + 1739, + 1740, + 1741, + 1742, + 1743, + 1744, + 1745, + 1746, + 1747, + 1748, + 1749, + 1750, + 1751, + 1752, + 1753, + 1754, + 1755, + 1756, + 1757, + 1758, + 1759, + 1760, + 1761, + 1762, + 1763, + 1764, + 1765, + 1766, + 1767, + 1768, + 1769, + 1770, + 1771, + 1772, + 1773, + 1774, + 1775, + 1776, + 1777, + 1778, + 1779, + 1780, + 1781, + 1782, + 1783, + 1784, + 1785, + 1786, + 1787, + 1788, + 1789, + 1790, + 1791, + 1792, + 1793, + 1794, + 1795, + 1796, + 1797, + 1798, + 1799, + 1800, + 1801, + 1802, + 1803, + 1804, + 1805, + 1806, + 1807, + 1808, + 1809, + 1810, + 1811, + 1812, + 1813, + 1814, + 1815, + 1816, + 1817, + 1818, + 1819, + 1820, + 1821, + 1822, + 1823, + 1824, + 1825, + 1826, + 1827, + 1828, + 1829, + 1830, + 1831, + 1832, + 1833, + 1834, + 1835, + 1836, + 1837, + 1838, + 1839, + 1840, + 1841, + 1842, + 1843, + 1844, + 1845, + 1846, + 1847, + 1848, + 1849, + 1850, + 1851, + 1852, + 1853, + 1854, + 1855, + 1856, + 1857, + 1858, + 1859, + 1860, + 1861, + 1862, + 1863, + 1864, + 1865, + 1866, + 1867, + 1868, + 1869, + 1870, + 1871, + 1872, + 1873, + 1874, + 1875, + 1876, + 1877, + 1878, + 1879, + 1880, + 1881, + 1882, + 1883, + 1884, + 1885, + 1886, + 1887, + 1888, + 1889, + 1890, + 1891, + 1892, + 1893, + 1894, + 1895, + 1896, + 1897, + 1898, + 1899, + 1900, + 1901, + 1902, + 1903, + 1904, + 1905, + 1906, + 1907, + 1908, + 1909, + 1910, + 1911, + 1912, + 1913, + 1914, + 1915, + 1916, + 1917, + 1918, + 1919, + 1920, + 1921, + 1922, + 1923, + 1924, + 1925, + 1926, + 1927, + 1928, + 1929, + 1930, + 1931, + 1932, + 1933, + 1934, + 1935, + 1936, + 1937, + 1938, + 1939, + 1940, + 1941, + 1942, + 1943, + 1944, + 1945, + 1946, + 1947, + 1948, + 1949, + 1950, + 1951, + 1952, + 1953, + 1954, + 1955, + 1956, + 1957, + 1958, + 1959, + 1960, + 1961, + 1962, + 1963, + 1964, + 1965, + 1966, + 1967, + 1968, + 1969, + 1970, + 1971, + 1972, + 1973, + 1974, + 1975, + 1976, + 1977, + 1978, + 1979, + 1980, + 1981, + 1982, + 1983, + 1984, + 1985, + 1986, + 1987, + 1988, + 1989, + 1990, + 1991, + 1992, + 1993, + 1994, + 1995, + 1996, + 1997, + 1998, + 1999, + 2000, + 2001, + 2002, + 2003, + 2004, + 2005, + 2006, + 2007, + 2008, + 2009, + 2010, + 2011, + 2012, + 2013, + 2014, + 2015, + 2016, + 2017, + 2018, + 2019, + 2020, + 2021, + 2022, + 2023, + 2024, + 2025, + 2026, + 2027, + 2028, + 2029, + 2030, + 2031, + 2032, + 2033, + 2034, + 2035, + 2036, + 2037, + 2038, + 2039, + 2040, + 2041, + 2042, + 2043, + 2044, + 2045, + 2046, + 2047, + 2048, + 2049, + 2050, + 2051, + 2052, + 2053, + 2054, + 2055, + 2056, + 2057, + 2058, + 2059, + 2060, + 2061, + 2062, + 2063, + 2064, + 2065, + 2066, + 2067, + 2068, + 2069, + 2070, + 2071, + 2072, + 2073, + 2074, + 2075, + 2076, + 2077, + 2078, + 2079, + 2080, + 2081, + 2082, + 2083, + 2084, + 2085, + 2086, + 2087, + 2088, + 2089, + 2090, + 2091, + 2092, + 2093, + 2094, + 2095, + 2096, + 2097, + 2098, + 2099, + 2100, + 2101, + 2102, + 2103, + 2104, + 2105, + 2106, + 2107, + 2108, + 2109, + 2110, + 2111, + 2112, + 2113, + 2114, + 2115, + 2116, + 2117, + 2118, + 2119, + 2120, + 2121, + 2122, + 2123, + 2124, + 2125, + 2126, + 2127, + 2128, + 2129, + 2130, + 2131, + 2132, + 2133, + 2134, + 2135, + 2136, + 2137, + 2138, + 2139, + 2140, + 2141, + 2142, + 2143, + 2144, + 2145, + 2146, + 2147, + 2148, + 2149, + 2150, + 2151, + 2152, + 2153, + 2154, + 2155, + 2156, + 2157, + 2158, + 2159, + 2160, + 2161, + 2162, + 2163, + 2164, + 2165, + 2166, + 2167, + 2168, + 2169, + 2170, + 2171, + 2172, + 2173, + 2174, + 2175, + 2176, + 2177, + 2178, + 2179, + 2180, + 2181, + 2182, + 2183, + 2184, + 2185, + 2186, + 2187, + 2188, + 2189, + 2190, + 2191, + 2192, + 2193, + 2194, + 2195, + 2196, + 2197, + 2198, + 2199, + 2200, + 2201, + 2202, + 2203, + 2204, + 2205, + 2206, + 2207, + 2208, + 2209, + 2210, + 2211, + 2212, + 2213, + 2214, + 2215, + 2216, + 2217, + 2218, + 2219, + 2220, + 2221, + 2222, + 2223, + 2224, + 2225, + 2226, + 2227, + 2228, + 2229, + 2230, + 2231, + 2232, + 2233, + 2234, + 2235, + 2236, + 2237, + 2238, + 2239, + 2240, + 2241, + 2242, + 2243, + 2244, + 2245, + 2246, + 2247, + 2248, + 2249, + 2250, + 2251, + 2252, + 2253, + 2254, + 2255, + 2256, + 2257, + 2258, + 2259, + 2260, + 2261, + 2262, + 2263, + 2264, + 2265, + 2266, + 2267, + 2268, + 2269, + 2270, + 2271, + 2272, + 2273, + 2274, + 2275, + 2276, + 2277, + 2278, + 2279, + 2280, + 2281, + 2282, + 2283, + 2284, + 2285, + 2286, + 2287, + 2288, + 2289, + 2290, + 2291, + 2292, + 2293, + 2294, + 2295, + 2296, + 2297, + 2298, + 2299, + 2300, + 2301, + 2302, + 2303, + 2304, + 2305, + 2306, + 2307, + 2308, + 2309, + 2310, + 2311, + 2312, + 2313, + 2314, + 2315, + 2316, + 2317, + 2318, + 2319, + 2320, + 2321, + 2322, + 2323, + 2324, + 2325, + 2326, + 2327, + 2328, + 2329, + 2330, + 2331, + 2332, + 2333, + 2334, + 2335, + 2336, + 2337, + 2338, + 2339, + 2340, + 2341, + 2342, + 2343, + 2344, + 2345, + 2346, + 2347, + 2348, + 2349, + 2350, + 2351, + 2352, + 2353, + 2354, + 2355, + 2356, + 2357, + 2358, + 2359, + 2360, + 2361, + 2362, + 2363, + 2364, + 2365, + 2366, + 2367, + 2368, + 2369, + 2370, + 2371, + 2372, + 2373, + 2374, + 2375, + 2376, + 2377, + 2378, + 2379, + 2380, + 2381, + 2382, + 2383, + 2384, + 2385, + 2386, + 2387, + 2388, + 2389, + 2390, + 2391, + 2392, + 2393, + 2394, + 2395, + 2396, + 2397, + 2398, + 2399, + 2400, + 2401, + 2402, + 2403, + 2404, + 2405, + 2406, + 2407, + 2408, + 2409, + 2410, + 2411, + 2412, + 2413, + 2414, + 2415, + 2416, + 2417, + 2418, + 2419, + 2420, + 2421, + 2422, + 2423, + 2424, + 2425, + 2426, + 2427, + 2428, + 2429, + 2430, + 2431, + 2432, + 2433, + 2434, + 2435, + 2436, + 2437, + 2438, + 2439, + 2440, + 2441, + 2442, + 2443, + 2444, + 2445, + 2446, + 2447, + 2448, + 2449, + 2450, + 2451, + 2452, + 2453, + 2454, + 2455, + 2456, + 2457, + 2458, + 2459, + 2460, + 2461, + 2462, + 2463, + 2464, + 2465, + 2466, + 2467, + 2468, + 2469, + 2470, + 2471, + 2472, + 2473, + 2474, + 2475, + 2476, + 2477, + 2478, + 2479, + 2480, + 2481, + 2482, + 2483, + 2484, + 2485, + 2486, + 2487, + 2488, + 2489, + 2490, + 2491, + 2492, + 2493, + 2494, + 2495, + 2496, + 2497, + 2498, + 2499, + 2500, + 2501, + 2502, + 2503, + 2504, + 2505, + 2506, + 2507, + 2508, + 2509, + 2510, + 2511, + 2512, + 2513, + 2514, + 2515, + 2516, + 2517, + 2518, + 2519, + 2520, + 2521, + 2522, + 2523, + 2524, + 2525, + 2526, + 2527, + 2528, + 2529, + 2530, + 2531, + 2532, + 2533, + 2534, + 2535, + 2536, + 2537, + 2538, + 2539, + 2540, + 2541, + 2542, + 2543, + 2544, + 2545, + 2546, + 2547, + 2548, + 2549, + 2550, + 2551, + 2552, + 2553, + 2554, + 2555, + 2556, + 2557, + 2558, + 2559, + 2560, + 2561, + 2562, + 2563, + 2564, + 2565, + 2566, + 2567, + 2568, + 2569, + 2570, + 2571, + 2572, + 2573, + 2574, + 2575, + 2576, + 2577, + 2578, + 2579, + 2580, + 2581, + 2582, + 2583, + 2584, + 2585, + 2586, + 2587, + 2588, + 2589, + 2590, + 2591, + 2592, + 2593, + 2594, + 2595, + 2596, + 2597, + 2598, + 2599, + 2600, + 2601, + 2602, + 2603, + 2604, + 2605, + 2606, + 2607, + 2608, + 2609, + 2610, + 2611, + 2612, + 2613, + 2614, + 2615, + 2616, + 2617, + 2618, + 2619, + 2620, + 2621, + 2622, + 2623, + 2624, + 2625, + 2626, + 2627, + 2628, + 2629, + 2630, + 2631, + 2632, + 2633, + 2634, + 2635, + 2636, + 2637, + 2638, + 2639, + 2640, + 2641, + 2642, + 2643, + 2644, + 2645, + 2646, + 2647, + 2648, + 2649, + 2650, + 2651, + 2652, + 2653, + 2654, + 2655, + 2656, + 2657, + 2658, + 2659, + 2660, + 2661, + 2662, + 2663, + 2664, + 2665, + 2666, + 2667, + 2668, + 2669, + 2670, + 2671, + 2672, + 2673, + 2674, + 2675, + 2676, + 2677, + 2678, + 2679, + 2680, + 2681, + 2682, + 2683, + 2684, + 2685, + 2686, + 2687, + 2688, + 2689, + 2690, + 2691, + 2692, + 2693, + 2694, + 2695, + 2696, + 2697, + 2698, + 2699, + 2700, + 2701, + 2702, + 2703, + 2704, + 2705, + 2706, + 2707, + 2708, + 2709, + 2710, + 2711, + 2712, + 2713, + 2714, + 2715, + 2716, + 2717, + 2718, + 2719, + 2720, + 2721, + 2722, + 2723, + 2724, + 2725, + 2726, + 2727, + 2728, + 2729, + 2730, + 2731, + 2732, + 2733, + 2734, + 2735, + 2736, + 2737, + 2738, + 2739, + 2740, + 2741, + 2742, + 2743, + 2744, + 2745, + 2746, + 2747, + 2748, + 2749, + 2750, + 2751, + 2752, + 2753, + 2754, + 2755, + 2756, + 2757, + 2758, + 2759, + 2760, + 2761, + 2762, + 2763, + 2764, + 2765, + 2766, + 2767, + 2768, + 2769, + 2770, + 2771, + 2772, + 2773, + 2774, + 2775, + 2776, + 2777, + 2778, + 2779, + 2780, + 2781, + 2782, + 2783, + 2784, + 2785, + 2786, + 2787, + 2788, + 2789, + 2790, + 2791, + 2792, + 2793, + 2794, + 2795, + 2796, + 2797, + 2798, + 2799, + 2800, + 2801, + 2802, + 2803, + 2804, + 2805, + 2806, + 2807, + 2808, + 2809, + 2810, + 2811, + 2812, + 2813, + 2814, + 2815, + 2816, + 2817, + 2818, + 2819, + 2820, + 2821, + 2822, + 2823, + 2824, + 2825, + 2826, + 2827, + 2828, + 2829, + 2830, + 2831, + 2832, + 2833, + 2834, + 2835, + 2836, + 2837, + 2838, + 2839, + 2840, + 2841, + 2842, + 2843, + 2844, + 2845, + 2846, + 2847, + 2848, + 2849, + 2850, + 2851, + 2852, + 2853, + 2854, + 2855, + 2856, + 2857, + 2858, + 2859, + 2860, + 2861, + 2862, + 2863, + 2864, + 2865, + 2866, + 2867, + 2868, + 2869, + 2870, + 2871, + 2872, + 2873, + 2874, + 2875, + 2876, + 2877, + 2878, + 2879, + 2880, + 2881, + 2882, + 2883, + 2884, + 2885, + 2886, + 2887, + 2888, + 2889, + 2890, + 2891, + 2892, + 2893, + 2894, + 2895, + 2896, + 2897, + 2898, + 2899, + 2900, + 2901, + 2902, + 2903, + 2904, + 2905, + 2906, + 2907, + 2908, + 2909, + 2910, + 2911, + 2912, + 2913, + 2914, + 2915, + 2916, + 2917, + 2918, + 2919, + 2920, + 2921, + 2922, + 2923, + 2924, + 2925, + 2926, + 2927, + 2928, + 2929, + 2930, + 2931, + 2932, + 2933, + 2934, + 2935, + 2936, + 2937, + 2938, + 2939, + 2940, + 2941, + 2942, + 2943, + 2944, + 2945, + 2946, + 2947, + 2948, + 2949, + 2950, + 2951, + 2952, + 2953, + 2954, + 2955, + 2956, + 2957, + 2958, + 2959, + 2960, + 2961, + 2962, + 2963, + 2964, + 2965, + 2966, + 2967, + 2968, + 2969, + 2970, + 2971, + 2972, + 2973, + 2974, + 2975, + 2976, + 2977, + 2978, + 2979, + 2980, + 2981, + 2982, + 2983, + 2984, + 2985, + 2986, + 2987, + 2988, + 2989, + 2990, + 2991, + 2992, + 2993, + 2994, + 2995, + 2996, + 2997, + 2998, + 2999, + 3000, + 3001, + 3002, + 3003, + 3004, + 3005, + 3006, + 3007, + 3008, + 3009, + 3010, + 3011, + 3012, + 3013, + 3014, + 3015, + 3016, + 3017, + 3018, + 3019, + 3020, + 3021, + 3022, + 3023, + 3024, + 3025, + 3026, + 3027, + 3028, + 3029, + 3030, + 3031, + 3032, + 3033, + 3034, + 3035, + 3036, + 3037, + 3038, + 3039, + 3040, + 3041, + 3042, + 3043, + 3044, + 3045, + 3046, + 3047, + 3048, + 3049, + 3050, + 3051, + 3052, + 3053, + 3054, + 3055, + 3056, + 3057, + 3058, + 3059, + 3060, + 3061, + 3062, + 3063, + 3064, + 3065, + 3066, + 3067, + 3068, + 3069, + 3070, + 3071, + 3072, + 3073, + 3074, + 3075, + 3076, + 3077, + 3078, + 3079, + 3080, + 3081, + 3082, + 3083, + 3084, + 3085, + 3086, + 3087, + 3088, + 3089, + 3090, + 3091, + 3092, + 3093, + 3094, + 3095, + 3096, + 3097, + 3098, + 3099, + 3100, + 3101, + 3102, + 3103, + 3104, + 3105, + 3106, + 3107, + 3108, + 3109, + 3110, + 3111, + 3112, + 3113, + 3114, + 3115, + 3116, + 3117, + 3118, + 3119, + 3120, + 3121, + 3122, + 3123, + 3124, + 3125, + 3126, + 3127, + 3128, + 3129, + 3130, + 3131, + 3132, + 3133, + 3134, + 3135, + 3136, + 3137, + 3138, + 3139, + 3140, + 3141, + 3142, + 3143, + 3144, + 3145, + 3146, + 3147, + 3148, + 3149, + 3150, + 3151, + 3152, + 3153, + 3154, + 3155, + 3156, + 3157, + 3158, + 3159, + 3160, + 3161, + 3162, + 3163, + 3164, + 3165, + 3166, + 3167, + 3168, + 3169, + 3170, + 3171, + 3172, + 3173, + 3174, + 3175, + 3176, + 3177, + 3178, + 3179, + 3180, + 3181, + 3182, + 3183, + 3184, + 3185, + 3186, + 3187, + 3188, + 3189, + 3190, + 3191, + 3192, + 3193, + 3194, + 3195, + 3196, + 3197, + 3198, + 3199, + 3200, + 3201, + 3202, + 3203, + 3204, + 3205, + 3206, + 3207, + 3208, + 3209, + 3210, + 3211, + 3212, + 3213, + 3214, + 3215, + 3216, + 3217, + 3218, + 3219, + 3220, + 3221, + 3222, + 3223, + 3224, + 3225, + 3226, + 3227, + 3228, + 3229, + 3230, + 3231, + 3232, + 3233, + 3234, + 3235, + 3236, + 3237, + 3238, + 3239, + 3240, + 3241, + 3242, + 3243, + 3244, + 3245, + 3246, + 3247, + 3248, + 3249, + 3250, + 3251, + 3252, + 3253, + 3254, + 3255, + 3256, + 3257, + 3258, + 3259, + 3260, + 3261, + 3262, + 3263, + 3264, + 3265, + 3266, + 3267, + 3268, + 3269, + 3270, + 3271, + 3272, + 3273, + 3274, + 3275, + 3276, + 3277, + 3278, + 3279, + 3280, + 3281, + 3282, + 3283, + 3284, + 3285, + 3286, + 3287, + 3288, + 3289, + 3290, + 3291, + 3292, + 3293, + 3294, + 3295, + 3296, + 3297, + 3298, + 3299, + 3300, + 3301, + 3302, + 3303, + 3304, + 3305, + 3306, + 3307, + 3308, + 3309, + 3310, + 3311, + 3312, + 3313, + 3314, + 3315, + 3316, + 3317, + 3318, + 3319, + 3320, + 3321, + 3322, + 3323, + 3324, + 3325, + 3326, + 3327, + 3328, + 3329, + 3330, + 3331, + 3332, + 3333, + 3334, + 3335, + 3336, + 3337, + 3338, + 3339, + 3340, + 3341, + 3342, + 3343, + 3344, + 3345, + 3346, + 3347, + 3348, + 3349, + 3350, + 3351, + 3352, + 3353, + 3354, + 3355, + 3356, + 3357, + 3358, + 3359, + 3360, + 3361, + 3362, + 3363, + 3364, + 3365, + 3366, + 3367, + 3368, + 3369, + 3370, + 3371, + 3372, + 3373, + 3374, + 3375, + 3376, + 3377, + 3378, + 3379, + 3380, + 3381, + 3382, + 3383, + 3384, + 3385, + 3386, + 3387, + 3388, + 3389, + 3390, + 3391, + 3392, + 3393, + 3394, + 3395, + 3396, + 3397, + 3398, + 3399, + 3400, + 3401, + 3402, + 3403, + 3404, + 3405, + 3406, + 3407, + 3408, + 3409, + 3410, + 3411, + 3412, + 3413, + 3414, + 3415, + 3416, + 3417, + 3418, + 3419, + 3420, + 3421, + 3422, + 3423, + 3424, + 3425, + 3426, + 3427, + 3428, + 3429, + 3430, + 3431, + 3432, + 3433, + 3434, + 3435, + 3436, + 3437, + 3438, + 3439, + 3440, + 3441, + 3442, + 3443, + 3444, + 3445, + 3446, + 3447, + 3448, + 3449, + 3450, + 3451, + 3452, + 3453, + 3454, + 3455, + 3456, + 3457, + 3458, + 3459, + 3460, + 3461, + 3462, + 3463, + 3464, + 3465, + 3466, + 3467, + 3468, + 3469, + 3470, + 3471, + 3472, + 3473, + 3474, + 3475, + 3476, + 3477, + 3478, + 3479, + 3480, + 3481, + 3482, + 3483, + 3484, + 3485, + 3486, + 3487, + 3488, + 3489, + 3490, + 3491, + 3492, + 3493, + 3494, + 3495, + 3496, + 3497, + 3498, + 3499, + 3500, + 3501, + 3502, + 3503, + 3504, + 3505, + 3506, + 3507, + 3508, + 3509, + 3510, + 3511, + 3512, + 3513, + 3514, + 3515, + 3516, + 3517, + 3518, + 3519, + 3520, + 3521, + 3522, + 3523, + 3524, + 3525, + 3526, + 3527, + 3528, + 3529, + 3530, + 3531, + 3532, + 3533, + 3534, + 3535, + 3536, + 3537, + 3538, + 3539, + 3540, + 3541, + 3542, + 3543, + 3544, + 3545, + 3546, + 3547, + 3548, + 3549, + 3550, + 3551, + 3552, + 3553, + 3554, + 3555, + 3556, + 3557, + 3558, + 3559, + 3560, + 3561, + 3562, + 3563, + 3564, + 3565, + 3566, + 3567, + 3568, + 3569, + 3570, + 3571, + 3572, + 3573, + 3574, + 3575, + 3576, + 3577, + 3578, + 3579, + 3580, + 3581, + 3582, + 3583, + 3584, + 3585, + 3586, + 3587, + 3588, + 3589, + 3590, + 3591, + 3592, + 3593, + 3594, + 3595, + 3596, + 3597, + 3598, + 3599, + 3600, + 3601, + 3602, + 3603, + 3604, + 3605, + 3606, + 3607, + 3608, + 3609, + 3610, + 3611, + 3612, + 3613, + 3614, + 3615, + 3616, + 3617, + 3618, + 3619, + 3620, + 3621, + 3622, + 3623, + 3624, + 3625, + 3626, + 3627, + 3628, + 3629, + 3630, + 3631, + 3632, + 3633, + 3634, + 3635, + 3636, + 3637, + 3638, + 3639, + 3640, + 3641, + 3642, + 3643, + 3644, + 3645, + 3646, + 3647, + 3648, + 3649, + 3650, + 3651, + 3652, + 3653, + 3654, + 3655, + 3656, + 3657, + 3658, + 3659, + 3660, + 3661, + 3662, + 3663, + 3664, + 3665, + 3666, + 3667, + 3668, + 3669, + 3670, + 3671, + 3672, + 3673, + 3674, + 3675, + 3676, + 3677, + 3678, + 3679, + 3680, + 3681, + 3682, + 3683, + 3684, + 3685, + 3686, + 3687, + 3688, + 3689, + 3690, + 3691, + 3692, + 3693, + 3694, + 3695, + 3696, + 3697, + 3698, + 3699, + 3700, + 3701, + 3702, + 3703, + 3704, + 3705, + 3706, + 3707, + 3708, + 3709, + 3710, + 3711, + 3712, + 3713, + 3714, + 3715, + 3716, + 3717, + 3718, + 3719, + 3720, + 3721, + 3722, + 3723, + 3724, + 3725, + 3726, + 3727, + 3728, + 3729, + 3730, + 3731, + 3732, + 3733, + 3734, + 3735, + 3736, + 3737, + 3738, + 3739, + 3740, + 3741, + 3742, + 3743, + 3744, + 3745, + 3746, + 3747, + 3748, + 3749, + 3750, + 3751, + 3752, + 3753, + 3754, + 3755, + 3756, + 3757, + 3758, + 3759, + 3760, + 3761, + 3762, + 3763, + 3764, + 3765, + 3766, + 3767, + 3768, + 3769, + 3770, + 3771, + 3772, + 3773, + 3774, + 3775, + 3776, + 3777, + 3778, + 3779, + 3780, + 3781, + 3782, + 3783, + 3784, + 3785, + 3786, + 3787, + 3788, + 3789, + 3790, + 3791, + 3792, + 3793, + 3794, + 3795, + 3796, + 3797, + 3798, + 3799, + 3800, + 3801, + 3802, + 3803, + 3804, + 3805, + 3806, + 3807, + 3808, + 3809, + 3810, + 3811, + 3812, + 3813, + 3814, + 3815, + 3816, + 3817, + 3818, + 3819, + 3820, + 3821, + 3822, + 3823, + 3824, + 3825, + 3826, + 3827, + 3828, + 3829, + 3830, + 3831, + 3832, + 3833, + 3834, + 3835, + 3836, + 3837, + 3838, + 3839, + 3840, + 3841, + 3842, + 3843, + 3844, + 3845, + 3846, + 3847, + 3848, + 3849, + 3850, + 3851, + 3852, + 3853, + 3854, + 3855, + 3856, + 3857, + 3858, + 3859, + 3860, + 3861, + 3862, + 3863, + 3864, + 3865, + 3866, + 3867, + 3868, + 3869, + 3870, + 3871, + 3872, + 3873, + 3874, + 3875, + 3876, + 3877, + 3878, + 3879, + 3880, + 3881, + 3882, + 3883, + 3884, + 3885, + 3886, + 3887, + 3888, + 3889, + 3890, + 3891, + 3892, + 3893, + 3894, + 3895, + 3896, + 3897, + 3898, + 3899, + 3900, + 3901, + 3902, + 3903, + 3904, + 3905, + 3906, + 3907, + 3908, + 3909, + 3910, + 3911, + 3912, + 3913, + 3914, + 3915, + 3916, + 3917, + 3918, + 3919, + 3920, + 3921, + 3922, + 3923, + 3924, + 3925, + 3926, + 3927, + 3928, + 3929, + 3930, + 3931, + 3932, + 3933, + 3934, + 3935, + 3936, + 3937, + 3938, + 3939, + 3940, + 3941, + 3942, + 3943, + 3944, + 3945, + 3946, + 3947, + 3948, + 3949, + 3950, + 3951, + 3952, + 3953, + 3954, + 3955, + 3956, + 3957, + 3958, + 3959, + 3960, + 3961, + 3962, + 3963, + 3964, + 3965, + 3966, + 3967, + 3968, + 3969, + 3970, + 3971, + 3972, + 3973, + 3974, + 3975, + 3976, + 3977, + 3978, + 3979, + 3980, + 3981, + 3982, + 3983, + 3984, + 3985, + 3986, + 3987, + 3988, + 3989, + 3990, + 3991, + 3992, + 3993, + 3994, + 3995, + 3996, + 3997, + 3998, + 3999, + 4000, + 4001, + 4002, + 4003, + 4004, + 4005, + 4006, + 4007, + 4008, + 4009, + 4010, + 4011, + 4012, + 4013, + 4014, + 4015, + 4016, + 4017, + 4018, + 4019, + 4020, + 4021, + 4022, + 4023, + 4024, + 4025, + 4026, + 4027, + 4028, + 4029, + 4030, + 4031, + 4032, + 4033, + 4034, + 4035, + 4036, + 4037, + 4038, + 4039, + 4040, + 4041, + 4042, + 4043, + 4044, + 4045, + 4046, + 4047, + 4048, + 4049, + 4050, + 4051, + 4052, + 4053, + 4054, + 4055, + 4056, + 4057, + 4058, + 4059, + 4060, + 4061, + 4062, + 4063, + 4064, + 4065, + 4066, + 4067, + 4068, + 4069, + 4070, + 4071, + 4072, + 4073, + 4074, + 4075, + 4076, + 4077, + 4078, + 4079, + 4080, + 4081, + 4082, + 4083, + 4084, + 4085, + 4086, + 4087, + 4088, + 4089, + 4090, + 4091, + 4092, + 4093, + 4094, + 4095, + 4096, + 4097, + 4098, + 4099, + 4100, + 4101, + 4102, + 4103, + 4104, + 4105, + 4106, + 4107, + 4108, + 4109, + 4110, + 4111, + 4112, + 4113, + 4114, + 4115, + 4116, + 4117, + 4118, + 4119, + 4120, + 4121, + 4122, + 4123, + 4124, + 4125, + 4126, + 4127, + 4128, + 4129, + 4130, + 4131, + 4132, + 4133, + 4134, + 4135, + 4136, + 4137, + 4138, + 4139, + 4140, + 4141, + 4142, + 4143, + 4144, + 4145, + 4146, + 4147, + 4148, + 4149, + 4150, + 4151, + 4152, + 4153, + 4154, + 4155, + 4156, + 4157, + 4158, + 4159, + 4160, + 4161, + 4162, + 4163, + 4164, + 4165, + 4166, + 4167, + 4168, + 4169, + 4170, + 4171, + 4172, + 4173, + 4174, + 4175, + 4176, + 4177, + 4178, + 4179, + 4180, + 4181, + 4182, + 4183, + 4184, + 4185, + 4186, + 4187, + 4188, + 4189, + 4190, + 4191, + 4192, + 4193, + 4194, + 4195, + 4196, + 4197, + 4198, + 4199, + 4200, + 4201, + 4202, + 4203, + 4204, + 4205, + 4206, + 4207, + 4208, + 4209, + 4210, + 4211, + 4212, + 4213, + 4214, + 4215, + 4216, + 4217, + 4218, + 4219, + 4220, + 4221, + 4222, + 4223, + 4224, + 4225, + 4226, + 4227, + 4228, + 4229, + 4230, + 4231, + 4232, + 4233, + 4234, + 4235, + 4236, + 4237, + 4238, + 4239, + 4240, + 4241, + 4242, + 4243, + 4244, + 4245, + 4246, + 4247, + 4248, + 4249, + 4250, + 4251, + 4252, + 4253, + 4254, + 4255, + 4256, + 4257, + 4258, + 4259, + 4260, + 4261, + 4262, + 4263, + 4264, + 4265, + 4266, + 4267, + 4268, + 4269, + 4270, + 4271, + 4272, + 4273, + 4274, + 4275, + 4276, + 4277, + 4278, + 4279, + 4280, + 4281, + 4282, + 4283, + 4284, + 4285, + 4286, + 4287, + 4288, + 4289, + 4290, + 4291, + 4292, + 4293, + 4294, + 4295, + 4296, + 4297, + 4298, + 4299, + 4300, + 4301, + 4302, + 4303, + 4304, + 4305, + 4306, + 4307, + 4308, + 4309, + 4310, + 4311, + 4312, + 4313, + 4314, + 4315, + 4316, + 4317, + 4318, + 4319, + 4320, + 4321, + 4322, + 4323, + 4324, + 4325, + 4326, + 4327, + 4328, + 4329, + 4330, + 4331, + 4332, + 4333, + 4334, + 4335, + 4336, + 4337, + 4338, + 4339, + 4340, + 4341, + 4342, + 4343, + 4344, + 4345, + 4346, + 4347, + 4348, + 4349, + 4350, + 4351, + 4352, + 4353, + 4354, + 4355, + 4356, + 4357, + 4358, + 4359, + 4360, + 4361, + 4362, + 4363, + 4364, + 4365, + 4366, + 4367, + 4368, + 4369, + 4370, + 4371, + 4372, + 4373, + 4374, + 4375, + 4376, + 4377, + 4378, + 4379, + 4380, + 4381, + 4382, + 4383, + 4384, + 4385, + 4386, + 4387, + 4388, + 4389, + 4390, + 4391, + 4392, + 4393, + 4394, + 4395, + 4396, + 4397, + 4398, + 4399, + 4400, + 4401, + 4402, + 4403, + 4404, + 4405, + 4406, + 4407, + 4408, + 4409, + 4410, + 4411, + 4412, + 4413, + 4414, + 4415, + 4416, + 4417, + 4418, + 4419, + 4420, + 4421, + 4422, + 4423, + 4424, + 4425, + 4426, + 4427, + 4428, + 4429, + 4430, + 4431, + 4432, + 4433, + 4434, + 4435, + 4436, + 4437, + 4438, + 4439, + 4440, + 4441, + 4442, + 4443, + 4444, + 4445, + 4446, + 4447, + 4448, + 4449, + 4450, + 4451, + 4452, + 4453, + 4454, + 4455, + 4456, + 4457, + 4458, + 4459, + 4460, + 4461, + 4462, + 4463, + 4464, + 4465, + 4466, + 4467, + 4468, + 4469, + 4470, + 4471, + 4472, + 4473, + 4474, + 4475, + 4476, + 4477, + 4478, + 4479, + 4480, + 4481, + 4482, + 4483, + 4484, + 4485, + 4486, + 4487, + 4488, + 4489, + 4490, + 4491, + 4492, + 4493, + 4494, + 4495, + 4496, + 4497, + 4498, + 4499, + 4500, + 4501, + 4502, + 4503, + 4504, + 4505, + 4506, + 4507, + 4508, + 4509, + 4510, + 4511, + 4512, + 4513, + 4514, + 4515, + 4516, + 4517, + 4518, + 4519, + 4520, + 4521, + 4522, + 4523, + 4524, + 4525, + 4526, + 4527, + 4528, + 4529, + 4530, + 4531, + 4532, + 4533, + 4534, + 4535, + 4536, + 4537, + 4538, + 4539, + 4540, + 4541, + 4542, + 4543, + 4544, + 4545, + 4546, + 4547, + 4548, + 4549, + 4550, + 4551, + 4552, + 4553, + 4554, + 4555, + 4556, + 4557, + 4558, + 4559, + 4560, + 4561, + 4562, + 4563, + 4564, + 4565, + 4566, + 4567, + 4568, + 4569, + 4570, + 4571, + 4572, + 4573, + 4574, + 4575, + 4576, + 4577, + 4578, + 4579, + 4580, + 4581, + 4582, + 4583, + 4584, + 4585, + 4586, + 4587, + 4588, + 4589, + 4590, + 4591, + 4592, + 4593, + 4594, + 4595, + 4596, + 4597, + 4598, + 4599, + 4600, + 4601, + 4602, + 4603, + 4604, + 4605, + 4606, + 4607, + 4608, + 4609, + 4610, + 4611, + 4612, + 4613, + 4614, + 4615, + 4616, + 4617, + 4618, + 4619, + 4620, + 4621, + 4622, + 4623, + 4624, + 4625, + 4626, + 4627, + 4628, + 4629, + 4630, + 4631, + 4632, + 4633, + 4634, + 4635, + 4636, + 4637, + 4638, + 4639, + 4640, + 4641, + 4642, + 4643, + 4644, + 4645, + 4646, + 4647, + 4648, + 4649, + 4650, + 4651, + 4652, + 4653, + 4654, + 4655, + 4656, + 4657, + 4658, + 4659, + 4660, + 4661, + 4662, + 4663, + 4664, + 4665, + 4666, + 4667, + 4668, + 4669, + 4670, + 4671, + 4672, + 4673, + 4674, + 4675, + 4676, + 4677, + 4678, + 4679, + 4680, + 4681, + 4682, + 4683, + 4684, + 4685, + 4686, + 4687, + 4688, + 4689, + 4690, + 4691, + 4692, + 4693, + 4694, + 4695, + 4696, + 4697, + 4698, + 4699, + 4700, + 4701, + 4702, + 4703, + 4704, + 4705, + 4706, + 4707, + 4708, + 4709, + 4710, + 4711, + 4712, + 4713, + 4714, + 4715, + 4716, + 4717, + 4718, + 4719, + 4720, + 4721, + 4722, + 4723, + 4724, + 4725, + 4726, + 4727, + 4728, + 4729, + 4730, + 4731, + 4732, + 4733, + 4734, + 4735, + 4736, + 4737, + 4738, + 4739, + 4740, + 4741, + 4742, + 4743, + 4744, + 4745, + 4746, + 4747, + 4748, + 4749, + 4750, + 4751, + 4752, + 4753, + 4754, + 4755, + 4756, + 4757, + 4758, + 4759, + 4760, + 4761, + 4762, + 4763, + 4764, + 4765, + 4766, + 4767, + 4768, + 4769, + 4770, + 4771, + 4772, + 4773, + 4774, + 4775, + 4776, + 4777, + 4778, + 4779, + 4780, + 4781, + 4782, + 4783, + 4784, + 4785, + 4786, + 4787, + 4788, + 4789, + 4790, + 4791, + 4792, + 4793, + 4794, + 4795, + 4796, + 4797, + 4798, + 4799, + 4800, + 4801, + 4802, + 4803, + 4804, + 4805, + 4806, + 4807, + 4808, + 4809, + 4810, + 4811, + 4812, + 4813, + 4814, + 4815, + 4816, + 4817, + 4818, + 4819, + 4820, + 4821, + 4822, + 4823, + 4824, + 4825, + 4826, + 4827, + 4828, + 4829, + 4830, + 4831, + 4832, + 4833, + 4834, + 4835, + 4836, + 4837, + 4838, + 4839, + 4840, + 4841, + 4842, + 4843, + 4844, + 4845, + 4846, + 4847, + 4848, + 4849, + 4850, + 4851, + 4852, + 4853, + 4854, + 4855, + 4856, + 4857, + 4858, + 4859, + 4860, + 4861, + 4862, + 4863, + 4864, + 4865, + 4866, + 4867, + 4868, + 4869, + 4870, + 4871, + 4872, + 4873, + 4874, + 4875, + 4876, + 4877, + 4878, + 4879, + 4880, + 4881, + 4882, + 4883, + 4884, + 4885, + 4886, + 4887, + 4888, + 4889, + 4890, + 4891, + 4892, + 4893, + 4894, + 4895, + 4896, + 4897, + 4898, + 4899, + 4900, + 4901, + 4902, + 4903, + 4904, + 4905, + 4906, + 4907, + 4908, + 4909, + 4910, + 4911, + 4912, + 4913, + 4914, + 4915, + 4916, + 4917, + 4918, + 4919, + 4920, + 4921, + 4922, + 4923, + 4924, + 4925, + 4926, + 4927, + 4928, + 4929, + 4930, + 4931, + 4932, + 4933, + 4934, + 4935, + 4936, + 4937, + 4938, + 4939, + 4940, + 4941, + 4942, + 4943, + 4944, + 4945, + 4946, + 4947, + 4948, + 4949, + 4950, + 4951, + 4952, + 4953, + 4954, + 4955, + 4956, + 4957, + 4958, + 4959, + 4960, + 4961, + 4962, + 4963, + 4964, + 4965, + 4966, + 4967, + 4968, + 4969, + 4970, + 4971, + 4972, + 4973, + 4974, + 4975, + 4976, + 4977, + 4978, + 4979, + 4980, + 4981, + 4982, + 4983, + 4984, + 4985, + 4986, + 4987, + 4988, + 4989, + 4990, + 4991, + 4992, + 4993, + 4994, + 4995, + 4996, + 4997, + 4998, + 4999, + 5000, + 5001, + 5002, + 5003, + 5004, + 5005, + 5006, + 5007, + 5008, + 5009, + 5010, + 5011, + 5012, + 5013, + 5014, + 5015, + 5016, + 5017, + 5018, + 5019, + 5020, + 5021, + 5022, + 5023, + 5024, + 5025, + 5026, + 5027, + 5028, + 5029, + 5030, + 5031, + 5032, + 5033, + 5034, + 5035, + 5036, + 5037, + 5038, + 5039, + 5040, + 5041, + 5042, + 5043, + 5044, + 5045, + 5046, + 5047, + 5048, + 5049, + 5050, + 5051, + 5052, + 5053, + 5054, + 5055, + 5056, + 5057, + 5058, + 5059, + 5060, + 5061, + 5062, + 5063, + 5064, + 5065, + 5066, + 5067, + 5068, + 5069, + 5070, + 5071, + 5072, + 5073, + 5074, + 5075, + 5076, + 5077, + 5078, + 5079, + 5080, + 5081, + 5082, + 5083, + 5084, + 5085, + 5086, + 5087, + 5088, + 5089, + 5090, + 5091, + 5092, + 5093, + 5094, + 5095, + 5096, + 5097, + 5098, + 5099, + 5100, + 5101, + 5102, + 5103, + 5104, + 5105, + 5106, + 5107, + 5108, + 5109, + 5110, + 5111, + 5112, + 5113, + 5114, + 5115, + 5116, + 5117, + 5118, + 5119, + 5120, + 5121, + 5122, + 5123, + 5124, + 5125, + 5126, + 5127, + 5128, + 5129, + 5130, + 5131, + 5132, + 5133, + 5134, + 5135, + 5136, + 5137, + 5138, + 5139, + 5140, + 5141, + 5142, + 5143, + 5144, + 5145, + 5146, + 5147, + 5148, + 5149, + 5150, + 5151, + 5152, + 5153, + 5154, + 5155, + 5156, + 5157, + 5158, + 5159, + 5160, + 5161, + 5162, + 5163, + 5164, + 5165, + 5166, + 5167, + 5168, + 5169, + 5170, + 5171, + 5172, + 5173, + 5174, + 5175, + 5176, + 5177, + 5178, + 5179, + 5180, + 5181, + 5182, + 5183, + 5184, + 5185, + 5186, + 5187, + 5188, + 5189, + 5190, + 5191, + 5192, + 5193, + 5194, + 5195, + 5196, + 5197, + 5198, + 5199, + 5200, + 5201, + 5202, + 5203, + 5204, + 5205, + 5206, + 5207, + 5208, + 5209, + 5210, + 5211, + 5212, + 5213, + 5214, + 5215, + 5216, + 5217, + 5218, + 5219, + 5220, + 5221, + 5222, + 5223, + 5224, + 5225, + 5226, + 5227, + 5228, + 5229, + 5230, + 5231, + 5232, + 5233, + 5234, + 5235, + 5236, + 5237, + 5238, + 5239, + 5240, + 5241, + 5242, + 5243, + 5244, + 5245, + 5246, + 5247, + 5248, + 5249, + 5250, + 5251, + 5252, + 5253, + 5254, + 5255, + 5256, + 5257, + 5258, + 5259, + 5260, + 5261, + 5262, + 5263, + 5264, + 5265, + 5266, + 5267, + 5268, + 5269, + 5270, + 5271, + 5272, + 5273, + 5274, + 5275, + 5276, + 5277, + 5278, + 5279, + 5280, + 5281, + 5282, + 5283, + 5284, + 5285, + 5286, + 5287, + 5288, + 5289, + 5290, + 5291, + 5292, + 5293, + 5294, + 5295, + 5296, + 5297, + 5298, + 5299, + 5300, + 5301, + 5302, + 5303, + 5304, + 5305, + 5306, + 5307, + 5308, + 5309, + 5310, + 5311, + 5312, + 5313, + 5314, + 5315, + 5316, + 5317, + 5318, + 5319, + 5320, + 5321, + 5322, + 5323, + 5324, + 5325, + 5326, + 5327, + 5328, + 5329, + 5330, + 5331, + 5332, + 5333, + 5334, + 5335, + 5336, + 5337, + 5338, + 5339, + 5340, + 5341, + 5342, + 5343, + 5344, + 5345, + 5346, + 5347, + 5348, + 5349, + 5350, + 5351, + 5352, + 5353, + 5354, + 5355, + 5356, + 5357, + 5358, + 5359, + 5360, + 5361, + 5362, + 5363, + 5364, + 5365, + 5366, + 5367, + 5368, + 5369, + 5370, + 5371, + 5372, + 5373, + 5374, + 5375, + 5376, + 5377, + 5378, + 5379, + 5380, + 5381, + 5382, + 5383, + 5384, + 5385, + 5386, + 5387, + 5388, + 5389, + 5390, + 5391, + 5392, + 5393, + 5394, + 5395, + 5396, + 5397, + 5398, + 5399, + 5400, + 5401, + 5402, + 5403, + 5404, + 5405, + 5406, + 5407, + 5408, + 5409, + 5410, + 5411, + 5412, + 5413, + 5414, + 5415, + 5416, + 5417, + 5418, + 5419, + 5420, + 5421, + 5422, + 5423, + 5424, + 5425, + 5426, + 5427, + 5428, + 5429, + 5430, + 5431, + 5432, + 5433, + 5434, + 5435, + 5436, + 5437, + 5438, + 5439, + 5440, + 5441, + 5442, + 5443, + 5444, + 5445, + 5446, + 5447, + 5448, + 5449, + 5450, + 5451, + 5452, + 5453, + 5454, + 5455, + 5456, + 5457, + 5458, + 5459, + 5460, + 5461, + 5462, + 5463, + 5464, + 5465, + 5466, + 5467, + 5468, + 5469, + 5470, + 5471, + 5472, + 5473, + 5474, + 5475, + 5476, + 5477, + 5478, + 5479, + 5480, + 5481, + 5482, + 5483, + 5484, + 5485, + 5486, + 5487, + 5488, + 5489, + 5490, + 5491, + 5492, + 5493, + 5494, + 5495, + 5496, + 5497, + 5498, + 5499, + 5500, + 5501, + 5502, + 5503, + 5504, + 5505, + 5506, + 5507, + 5508, + 5509, + 5510, + 5511, + 5512, + 5513, + 5514, + 5515, + 5516, + 5517, + 5518, + 5519, + 5520, + 5521, + 5522, + 5523, + 5524, + 5525, + 5526, + 5527, + 5528, + 5529, + 5530, + 5531, + 5532, + 5533, + 5534, + 5535, + 5536, + 5537, + 5538, + 5539, + 5540, + 5541, + 5542, + 5543, + 5544, + 5545, + 5546, + 5547, + 5548, + 5549, + 5550, + 5551, + 5552, + 5553, + 5554, + 5555, + 5556, + 5557, + 5558, + 5559, + 5560, + 5561, + 5562, + 5563, + 5564, + 5565, + 5566, + 5567, + 5568, + 5569, + 5570, + 5571, + 5572, + 5573, + 5574, + 5575, + 5576, + 5577, + 5578, + 5579, + 5580, + 5581, + 5582, + 5583, + 5584, + 5585, + 5586, + 5587, + 5588, + 5589, + 5590, + 5591, + 5592, + 5593, + 5594, + 5595, + 5596, + 5597, + 5598, + 5599, + 5600, + 5601, + 5602, + 5603, + 5604, + 5605, + 5606, + 5607, + 5608, + 5609, + 5610, + 5611, + 5612, + 5613, + 5614, + 5615, + 5616, + 5617, + 5618, + 5619, + 5620, + 5621, + 5622, + 5623, + 5624, + 5625, + 5626, + 5627, + 5628, + 5629, + 5630, + 5631, + 5632, + 5633, + 5634, + 5635, + 5636, + 5637, + 5638, + 5639, + 5640, + 5641, + 5642, + 5643, + 5644, + 5645, + 5646, + 5647, + 5648, + 5649, + 5650, + 5651, + 5652, + 5653, + 5654, + 5655, + 5656, + 5657, + 5658, + 5659, + 5660, + 5661, + 5662, + 5663, + 5664, + 5665, + 5666, + 5667, + 5668, + 5669, + 5670, + 5671, + 5672, + 5673, + 5674, + 5675, + 5676, + 5677, + 5678, + 5679, + 5680, + 5681, + 5682, + 5683, + 5684, + 5685, + 5686, + 5687, + 5688, + 5689, + 5690, + 5691, + 5692, + 5693, + 5694, + 5695, + 5696, + 5697, + 5698, + 5699, + 5700, + 5701, + 5702, + 5703, + 5704, + 5705, + 5706, + 5707, + 5708, + 5709, + 5710, + 5711, + 5712, + 5713, + 5714, + 5715, + 5716, + 5717, + 5718, + 5719, + 5720, + 5721, + 5722, + 5723, + 5724, + 5725, + 5726, + 5727, + 5728, + 5729, + 5730, + 5731, + 5732, + 5733, + 5734, + 5735, + 5736, + 5737, + 5738, + 5739, + 5740, + 5741, + 5742, + 5743, + 5744, + 5745, + 5746, + 5747, + 5748, + 5749, + 5750, + 5751, + 5752, + 5753, + 5754, + 5755, + 5756, + 5757, + 5758, + 5759, + 5760, + 5761, + 5762, + 5763, + 5764, + 5765, + 5766, + 5767, + 5768, + 5769, + 5770, + 5771, + 5772, + 5773, + 5774, + 5775, + 5776, + 5777, + 5778, + 5779, + 5780, + 5781, + 5782, + 5783, + 5784, + 5785, + 5786, + 5787, + 5788, + 5789, + 5790, + 5791, + 5792, + 5793, + 5794, + 5795, + 5796, + 5797, + 5798, + 5799, + 5800, + 5801, + 5802, + 5803, + 5804, + 5805, + 5806, + 5807, + 5808, + 5809, + 5810, + 5811, + 5812, + 5813, + 5814, + 5815, + 5816, + 5817, + 5818, + 5819, + 5820, + 5821, + 5822, + 5823, + 5824, + 5825, + 5826, + 5827, + 5828, + 5829, + 5830, + 5831, + 5832, + 5833, + 5834, + 5835, + 5836, + 5837, + 5838, + 5839, + 5840, + 5841, + 5842, + 5843, + 5844, + 5845, + 5846, + 5847, + 5848, + 5849, + 5850, + 5851, + 5852, + 5853, + 5854, + 5855, + 5856, + 5857, + 5858, + 5859, + 5860, + 5861, + 5862, + 5863, + 5864, + 5865, + 5866, + 5867, + 5868, + 5869, + 5870, + 5871, + 5872, + 5873, + 5874, + 5875, + 5876, + 5877, + 5878, + 5879, + 5880, + 5881, + 5882, + 5883, + 5884, + 5885, + 5886, + 5887, + 5888, + 5889, + 5890, + 5891, + 5892, + 5893, + 5894, + 5895, + 5896, + 5897, + 5898, + 5899, + 5900, + 5901, + 5902, + 5903, + 5904, + 5905, + 5906, + 5907, + 5908, + 5909, + 5910, + 5911, + 5912, + 5913, + 5914, + 5915, + 5916, + 5917, + 5918, + 5919, + 5920, + 5921, + 5922, + 5923, + 5924, + 5925, + 5926, + 5927, + 5928, + 5929, + 5930, + 5931, + 5932, + 5933, + 5934, + 5935, + 5936, + 5937, + 5938, + 5939, + 5940, + 5941, + 5942, + 5943, + 5944, + 5945, + 5946, + 5947, + 5948, + 5949, + 5950, + 5951, + 5952, + 5953, + 5954, + 5955, + 5956, + 5957, + 5958, + 5959, + 5960, + 5961, + 5962, + 5963, + 5964, + 5965, + 5966, + 5967, + 5968, + 5969, + 5970, + 5971, + 5972, + 5973, + 5974, + 5975, + 5976, + 5977, + 5978, + 5979, + 5980, + 5981, + 5982, + 5983, + 5984, + 5985, + 5986, + 5987, + 5988, + 5989, + 5990, + 5991, + 5992, + 5993, + 5994, + 5995, + 5996, + 5997, + 5998, + 5999, + 6000, + 6001, + 6002, + 6003, + 6004, + 6005, + 6006, + 6007, + 6008, + 6009, + 6010, + 6011, + 6012, + 6013, + 6014, + 6015, + 6016, + 6017, + 6018, + 6019, + 6020, + 6021, + 6022, + 6023, + 6024, + 6025, + 6026, + 6027, + 6028, + 6029, + 6030, + 6031, + 6032, + 6033, + 6034, + 6035, + 6036, + 6037, + 6038, + 6039, + 6040, + 6041, + 6042, + 6043, + 6044, + 6045, + 6046, + 6047, + 6048, + 6049, + 6050, + 6051, + 6052, + 6053, + 6054, + 6055, + 6056, + 6057, + 6058, + 6059, + 6060, + 6061, + 6062, + 6063, + 6064, + 6065, + 6066, + 6067, + 6068, + 6069, + 6070, + 6071, + 6072, + 6073, + 6074, + 6075, + 6076, + 6077, + 6078, + 6079, + 6080, + 6081, + 6082, + 6083, + 6084, + 6085, + 6086, + 6087, + 6088, + 6089, + 6090, + 6091, + 6092, + 6093, + 6094, + 6095, + 6096, + 6097, + 6098, + 6099, + 6100, + 6101, + 6102, + 6103, + 6104, + 6105, + 6106, + 6107, + 6108, + 6109, + 6110, + 6111, + 6112, + 6113, + 6114, + 6115, + 6116, + 6117, + 6118, + 6119, + 6120, + 6121, + 6122, + 6123, + 6124, + 6125, + 6126, + 6127, + 6128, + 6129, + 6130, + 6131, + 6132, + 6133, + 6134, + 6135, + 6136, + 6137, + 6138, + 6139, + 6140, + 6141, + 6142, + 6143, + 6144, + 6145, + 6146, + 6147, + 6148, + 6149, + 6150, + 6151, + 6152, + 6153, + 6154, + 6155, + 6156, + 6157, + 6158, + 6159, + 6160, + 6161, + 6162, + 6163, + 6164, + 6165, + 6166, + 6167, + 6168, + 6169, + 6170, + 6171, + 6172, + 6173, + 6174, + 6175, + 6176, + 6177, + 6178, + 6179, + 6180, + 6181, + 6182, + 6183, + 6184, + 6185, + 6186, + 6187, + 6188, + 6189, + 6190, + 6191, + 6192, + 6193, + 6194, + 6195, + 6196, + 6197, + 6198, + 6199, + 6200, + 6201, + 6202, + 6203, + 6204, + 6205, + 6206, + 6207, + 6208, + 6209, + 6210, + 6211, + 6212, + 6213, + 6214, + 6215, + 6216, + 6217, + 6218, + 6219, + 6220, + 6221, + 6222, + 6223, + 6224, + 6225, + 6226, + 6227, + 6228, + 6229, + 6230, + 6231, + 6232, + 6233, + 6234, + 6235, + 6236, + 6237, + 6238, + 6239, + 6240, + 6241, + 6242, + 6243, + 6244, + 6245, + 6246, + 6247, + 6248, + 6249, + 6250, + 6251, + 6252, + 6253, + 6254, + 6255, + 6256, + 6257, + 6258, + 6259, + 6260, + 6261, + 6262, + 6263, + 6264, + 6265, + 6266, + 6267, + 6268, + 6269, + 6270, + 6271, + 6272, + 6273, + 6274, + 6275, + 6276, + 6277, + 6278, + 6279, + 6280, + 6281, + 6282, + 6283, + 6284, + 6285, + 6286, + 6287, + 6288, + 6289, + 6290, + 6291, + 6292, + 6293, + 6294, + 6295, + 6296, + 6297, + 6298, + 6299, + 6300, + 6301, + 6302, + 6303, + 6304, + 6305, + 6306, + 6307, + 6308, + 6309, + 6310, + 6311, + 6312, + 6313, + 6314, + 6315, + 6316, + 6317, + 6318, + 6319, + 6320, + 6321, + 6322, + 6323, + 6324, + 6325, + 6326, + 6327, + 6328, + 6329, + 6330, + 6331, + 6332, + 6333, + 6334, + 6335, + 6336, + 6337, + 6338, + 6339, + 6340, + 6341, + 6342, + 6343, + 6344, + 6345, + 6346, + 6347, + 6348, + 6349, + 6350, + 6351, + 6352, + 6353, + 6354, + 6355, + 6356, + 6357, + 6358, + 6359, + 6360, + 6361, + 6362, + 6363, + 6364, + 6365, + 6366, + 6367, + 6368, + 6369, + 6370, + 6371, + 6372, + 6373, + 6374, + 6375, + 6376, + 6377, + 6378, + 6379, + 6380, + 6381, + 6382, + 6383, + 6384, + 6385, + 6386, + 6387, + 6388, + 6389, + 6390, + 6391, + 6392, + 6393, + 6394, + 6395, + 6396, + 6397, + 6398, + 6399, + 6400, + 6401, + 6402, + 6403, + 6404, + 6405, + 6406, + 6407, + 6408, + 6409, + 6410, + 6411, + 6412, + 6413, + 6414, + 6415, + 6416, + 6417, + 6418, + 6419, + 6420, + 6421, + 6422, + 6423, + 6424, + 6425, + 6426, + 6427, + 6428, + 6429, + 6430, + 6431, + 6432, + 6433, + 6434, + 6435, + 6436, + 6437, + 6438, + 6439, + 6440, + 6441, + 6442, + 6443, + 6444, + 6445, + 6446, + 6447, + 6448, + 6449, + 6450, + 6451, + 6452, + 6453, + 6454, + 6455, + 6456, + 6457, + 6458, + 6459, + 6460, + 6461, + 6462, + 6463, + 6464, + 6465, + 6466, + 6467, + 6468, + 6469, + 6470, + 6471, + 6472, + 6473, + 6474, + 6475, + 6476, + 6477, + 6478, + 6479, + 6480, + 6481, + 6482, + 6483, + 6484, + 6485, + 6486, + 6487, + 6488, + 6489, + 6490, + 6491, + 6492, + 6493, + 6494, + 6495, + 6496, + 6497, + 6498, + 6499, + 6500, + 6501, + 6502, + 6503, + 6504, + 6505, + 6506, + 6507, + 6508, + 6509, + 6510, + 6511, + 6512, + 6513, + 6514, + 6515, + 6516, + 6517, + 6518, + 6519, + 6520, + 6521, + 6522, + 6523, + 6524, + 6525, + 6526, + 6527, + 6528, + 6529, + 6530, + 6531, + 6532, + 6533, + 6534, + 6535, + 6536, + 6537, + 6538, + 6539, + 6540, + 6541, + 6542, + 6543, + 6544, + 6545, + 6546, + 6547, + 6548, + 6549, + 6550, + 6551, + 6552, + 6553, + 6554, + 6555, + 6556, + 6557, + 6558, + 6559, + 6560, + 6561, + 6562, + 6563, + 6564, + 6565, + 6566, + 6567, + 6568, + 6569, + 6570, + 6571, + 6572, + 6573, + 6574, + 6575, + 6576, + 6577, + 6578, + 6579, + 6580, + 6581, + 6582, + 6583, + 6584, + 6585, + 6586, + 6587, + 6588, + 6589, + 6590, + 6591, + 6592, + 6593, + 6594, + 6595, + 6596, + 6597, + 6598, + 6599, + 6600, + 6601, + 6602, + 6603, + 6604, + 6605, + 6606, + 6607, + 6608, + 6609, + 6610, + 6611, + 6612, + 6613, + 6614, + 6615, + 6616, + 6617, + 6618, + 6619, + 6620, + 6621, + 6622, + 6623, + 6624, + 6625, + 6626, + 6627, + 6628, + 6629, + 6630, + 6631, + 6632, + 6633, + 6634, + 6635, + 6636, + 6637, + 6638, + 6639, + 6640, + 6641, + 6642, + 6643, + 6644, + 6645, + 6646, + 6647, + 6648, + 6649, + 6650, + 6651, + 6652, + 6653, + 6654, + 6655, + 6656, + 6657, + 6658, + 6659, + 6660, + 6661, + 6662, + 6663, + 6664, + 6665, + 6666, + 6667, + 6668, + 6669, + 6670, + 6671, + 6672, + 6673, + 6674, + 6675, + 6676, + 6677, + 6678, + 6679, + 6680, + 6681, + 6682, + 6683, + 6684, + 6685, + 6686, + 6687, + 6688, + 6689, + 6690, + 6691, + 6692, + 6693, + 6694, + 6695, + 6696, + 6697, + 6698, + 6699, + 6700, + 6701, + 6702, + 6703, + 6704, + 6705, + 6706, + 6707, + 6708, + 6709, + 6710, + 6711, + 6712, + 6713, + 6714, + 6715, + 6716, + 6717, + 6718, + 6719, + 6720, + 6721, + 6722, + 6723, + 6724, + 6725, + 6726, + 6727, + 6728, + 6729, + 6730, + 6731, + 6732, + 6733, + 6734, + 6735, + 6736, + 6737, + 6738, + 6739, + 6740, + 6741, + 6742, + 6743, + 6744, + 6745, + 6746, + 6747, + 6748, + 6749, + 6750, + 6751, + 6752, + 6753, + 6754, + 6755, + 6756, + 6757, + 6758, + 6759, + 6760, + 6761, + 6762, + 6763, + 6764, + 6765, + 6766, + 6767, + 6768, + 6769, + 6770, + 6771, + 6772, + 6773, + 6774, + 6775, + 6776, + 6777, + 6778, + 6779, + 6780, + 6781, + 6782, + 6783, + 6784, + 6785, + 6786, + 6787, + 6788, + 6789, + 6790, + 6791, + 6792, + 6793, + 6794, + 6795, + 6796, + 6797, + 6798, + 6799, + 6800, + 6801, + 6802, + 6803, + 6804, + 6805, + 6806, + 6807, + 6808, + 6809, + 6810, + 6811, + 6812, + 6813, + 6814, + 6815, + 6816, + 6817, + 6818, + 6819, + 6820, + 6821, + 6822, + 6823, + 6824, + 6825, + 6826, + 6827, + 6828, + 6829, + 6830, + 6831, + 6832, + 6833, + 6834, + 6835, + 6836, + 6837, + 6838, + 6839, + 6840, + 6841, + 6842, + 6843, + 6844, + 6845, + 6846, + 6847, + 6848, + 6849, + 6850, + 6851, + 6852, + 6853, + 6854, + 6855, + 6856, + 6857, + 6858, + 6859, + 6860, + 6861, + 6862, + 6863, + 6864, + 6865, + 6866, + 6867, + 6868, + 6869, + 6870, + 6871, + 6872, + 6873, + 6874, + 6875, + 6876, + 6877, + 6878, + 6879, + 6880, + 6881, + 6882, + 6883, + 6884, + 6885, + 6886, + 6887, + 6888, + 6889, + 6890, + 6891, + 6892, + 6893, + 6894, + 6895, + 6896, + 6897, + 6898, + 6899, + 6900, + 6901, + 6902, + 6903, + 6904, + 6905, + 6906, + 6907, + 6908, + 6909, + 6910, + 6911, + 6912, + 6913, + 6914, + 6915, + 6916, + 6917, + 6918, + 6919, + 6920, + 6921, + 6922, + 6923, + 6924, + 6925, + 6926, + 6927, + 6928, + 6929, + 6930, + 6931, + 6932, + 6933, + 6934, + 6935, + 6936, + 6937, + 6938, + 6939, + 6940, + 6941, + 6942, + 6943, + 6944, + 6945, + 6946, + 6947, + 6948, + 6949, + 6950, + 6951, + 6952, + 6953, + 6954, + 6955, + 6956, + 6957, + 6958, + 6959, + 6960, + 6961, + 6962, + 6963, + 6964, + 6965, + 6966, + 6967, + 6968, + 6969, + 6970, + 6971, + 6972, + 6973, + 6974, + 6975, + 6976, + 6977, + 6978, + 6979, + 6980, + 6981, + 6982, + 6983, + 6984, + 6985, + 6986, + 6987, + 6988, + 6989, + 6990, + 6991, + 6992, + 6993, + 6994, + 6995, + 6996, + 6997, + 6998, + 6999, + 7000, + 7001, + 7002, + 7003, + 7004, + 7005, + 7006, + 7007, + 7008, + 7009, + 7010, + 7011, + 7012, + 7013, + 7014, + 7015, + 7016, + 7017, + 7018, + 7019, + 7020, + 7021, + 7022, + 7023, + 7024, + 7025, + 7026, + 7027, + 7028, + 7029, + 7030, + 7031, + 7032, + 7033, + 7034, + 7035, + 7036, + 7037, + 7038, + 7039, + 7040, + 7041, + 7042, + 7043, + 7044, + 7045, + 7046, + 7047, + 7048, + 7049, + 7050, + 7051, + 7052, + 7053, + 7054, + 7055, + 7056, + 7057, + 7058, + 7059, + 7060, + 7061, + 7062, + 7063, + 7064, + 7065, + 7066, + 7067, + 7068, + 7069, + 7070, + 7071, + 7072, + 7073, + 7074, + 7075, + 7076, + 7077, + 7078, + 7079, + 7080, + 7081, + 7082, + 7083, + 7084, + 7085, + 7086, + 7087, + 7088, + 7089, + 7090, + 7091, + 7092, + 7093, + 7094, + 7095, + 7096, + 7097, + 7098, + 7099, + 7100, + 7101, + 7102, + 7103, + 7104, + 7105, + 7106, + 7107, + 7108, + 7109, + 7110, + 7111, + 7112, + 7113, + 7114, + 7115, + 7116, + 7117, + 7118, + 7119, + 7120, + 7121, + 7122, + 7123, + 7124, + 7125, + 7126, + 7127, + 7128, + 7129, + 7130, + 7131, + 7132, + 7133, + 7134, + 7135, + 7136, + 7137, + 7138, + 7139, + 7140, + 7141, + 7142, + 7143, + 7144, + 7145, + 7146, + 7147, + 7148, + 7149, + 7150, + 7151, + 7152, + 7153, + 7154, + 7155, + 7156, + 7157, + 7158, + 7159, + 7160, + 7161, + 7162, + 7163, + 7164, + 7165, + 7166, + 7167, + 7168, + 7169, + 7170, + 7171, + 7172, + 7173, + 7174, + 7175, + 7176, + 7177, + 7178, + 7179, + 7180, + 7181, + 7182, + 7183, + 7184, + 7185, + 7186, + 7187, + 7188, + 7189, + 7190, + 7191, + 7192, + 7193, + 7194, + 7195, + 7196, + 7197, + 7198, + 7199, + 7200, + 7201, + 7202, + 7203, + 7204, + 7205, + 7206, + 7207, + 7208, + 7209, + 7210, + 7211, + 7212, + 7213, + 7214, + 7215, + 7216, + 7217, + 7218, + 7219, + 7220, + 7221, + 7222, + 7223, + 7224, + 7225, + 7226, + 7227, + 7228, + 7229, + 7230, + 7231, + 7232, + 7233, + 7234, + 7235, + 7236, + 7237, + 7238, + 7239, + 7240, + 7241, + 7242, + 7243, + 7244, + 7245, + 7246, + 7247, + 7248, + 7249, + 7250, + 7251, + 7252, + 7253, + 7254, + 7255, + 7256, + 7257, + 7258, + 7259, + 7260, + 7261, + 7262, + 7263, + 7264, + 7265, + 7266, + 7267, + 7268, + 7269, + 7270, + 7271, + 7272, + 7273, + 7274, + 7275, + 7276, + 7277, + 7278, + 7279, + 7280, + 7281, + 7282, + 7283, + 7284, + 7285, + 7286, + 7287, + 7288, + 7289, + 7290, + 7291, + 7292, + 7293, + 7294, + 7295, + 7296, + 7297, + 7298, + 7299, + 7300, + 7301, + 7302, + 7303, + 7304, + 7305, + 7306, + 7307, + 7308, + 7309, + 7310, + 7311, + 7312, + 7313, + 7314, + 7315, + 7316, + 7317, + 7318, + 7319, + 7320, + 7321, + 7322, + 7323, + 7324, + 7325, + 7326, + 7327, + 7328, + 7329, + 7330, + 7331, + 7332, + 7333, + 7334, + 7335, + 7336, + 7337, + 7338, + 7339, + 7340, + 7341, + 7342, + 7343, + 7344, + 7345, + 7346, + 7347, + 7348, + 7349, + 7350, + 7351, + 7352, + 7353, + 7354, + 7355, + 7356, + 7357, + 7358, + 7359, + 7360, + 7361, + 7362, + 7363, + 7364, + 7365, + 7366, + 7367, + 7368, + 7369, + 7370, + 7371, + 7372, + 7373, + 7374, + 7375, + 7376, + 7377, + 7378, + 7379, + 7380, + 7381, + 7382, + 7383, + 7384, + 7385, + 7386, + 7387, + 7388, + 7389, + 7390, + 7391, + 7392, + 7393, + 7394, + 7395, + 7396, + 7397, + 7398, + 7399, + 7400, + 7401, + 7402, + 7403, + 7404, + 7405, + 7406, + 7407, + 7408, + 7409, + 7410, + 7411, + 7412, + 7413, + 7414, + 7415, + 7416, + 7417, + 7418, + 7419, + 7420, + 7421, + 7422, + 7423, + 7424, + 7425, + 7426, + 7427, + 7428, + 7429, + 7430, + 7431, + 7432, + 7433, + 7434, + 7435, + 7436, + 7437, + 7438, + 7439, + 7440, + 7441, + 7442, + 7443, + 7444, + 7445, + 7446, + 7447, + 7448, + 7449, + 7450, + 7451, + 7452, + 7453, + 7454, + 7455, + 7456, + 7457, + 7458, + 7459, + 7460, + 7461, + 7462, + 7463, + 7464, + 7465, + 7466, + 7467, + 7468, + 7469, + 7470, + 7471, + 7472, + 7473, + 7474, + 7475, + 7476, + 7477, + 7478, + 7479, + 7480, + 7481, + 7482, + 7483, + 7484, + 7485, + 7486, + 7487, + 7488, + 7489, + 7490, + 7491, + 7492, + 7493, + 7494, + 7495, + 7496, + 7497, + 7498, + 7499, + 7500, + 7501, + 7502, + 7503, + 7504, + 7505, + 7506, + 7507, + 7508, + 7509, + 7510, + 7511, + 7512, + 7513, + 7514, + 7515, + 7516, + 7517, + 7518, + 7519, + 7520, + 7521, + 7522, + 7523, + 7524, + 7525, + 7526, + 7527, + 7528, + 7529, + 7530, + 7531, + 7532, + 7533, + 7534, + 7535, + 7536, + 7537, + 7538, + 7539, + 7540, + 7541, + 7542, + 7543, + 7544, + 7545, + 7546, + 7547, + 7548, + 7549, + 7550, + 7551, + 7552, + 7553, + 7554, + 7555, + 7556, + 7557, + 7558, + 7559, + 7560, + 7561, + 7562, + 7563, + 7564, + 7565, + 7566, + 7567, + 7568, + 7569, + 7570, + 7571, + 7572, + 7573, + 7574, + 7575, + 7576, + 7577, + 7578, + 7579, + 7580, + 7581, + 7582, + 7583, + 7584, + 7585, + 7586, + 7587, + 7588, + 7589, + 7590, + 7591, + 7592, + 7593, + 7594, + 7595, + 7596, + 7597, + 7598, + 7599, + 7600, + 7601, + 7602, + 7603, + 7604, + 7605, + 7606, + 7607, + 7608, + 7609, + 7610, + 7611, + 7612, + 7613, + 7614, + 7615, + 7616, + 7617, + 7618, + 7619, + 7620, + 7621, + 7622, + 7623, + 7624, + 7625, + 7626, + 7627, + 7628, + 7629, + 7630, + 7631, + 7632, + 7633, + 7634, + 7635, + 7636, + 7637, + 7638, + 7639, + 7640, + 7641, + 7642, + 7643, + 7644, + 7645, + 7646, + 7647, + 7648, + 7649, + 7650, + 7651, + 7652, + 7653, + 7654, + 7655, + 7656, + 7657, + 7658, + 7659, + 7660, + 7661, + 7662, + 7663, + 7664, + 7665, + 7666, + 7667, + 7668, + 7669, + 7670, + 7671, + 7672, + 7673, + 7674, + 7675, + 7676, + 7677, + 7678, + 7679, + 7680, + 7681, + 7682, + 7683, + 7684, + 7685, + 7686, + 7687, + 7688, + 7689, + 7690, + 7691, + 7692, + 7693, + 7694, + 7695, + 7696, + 7697, + 7698, + 7699, + 7700, + 7701, + 7702, + 7703, + 7704, + 7705, + 7706, + 7707, + 7708, + 7709, + 7710, + 7711, + 7712, + 7713, + 7714, + 7715, + 7716, + 7717, + 7718, + 7719, + 7720, + 7721, + 7722, + 7723, + 7724, + 7725, + 7726, + 7727, + 7728, + 7729, + 7730, + 7731, + 7732, + 7733, + 7734, + 7735, + 7736, + 7737, + 7738, + 7739, + 7740, + 7741, + 7742, + 7743, + 7744, + 7745, + 7746, + 7747, + 7748, + 7749, + 7750, + 7751, + 7752, + 7753, + 7754, + 7755, + 7756, + 7757, + 7758, + 7759, + 7760, + 7761, + 7762, + 7763, + 7764, + 7765, + 7766, + 7767, + 7768, + 7769, + 7770, + 7771, + 7772, + 7773, + 7774, + 7775, + 7776, + 7777, + 7778, + 7779, + 7780, + 7781, + 7782, + 7783, + 7784, + 7785, + 7786, + 7787, + 7788, + 7789, + 7790, + 7791, + 7792, + 7793, + 7794, + 7795, + 7796, + 7797, + 7798, + 7799, + 7800, + 7801, + 7802, + 7803, + 7804, + 7805, + 7806, + 7807, + 7808, + 7809, + 7810, + 7811, + 7812, + 7813, + 7814, + 7815, + 7816, + 7817, + 7818, + 7819, + 7820, + 7821, + 7822, + 7823, + 7824, + 7825, + 7826, + 7827, + 7828, + 7829, + 7830, + 7831, + 7832, + 7833, + 7834, + 7835, + 7836, + 7837, + 7838, + 7839, + 7840, + 7841, + 7842, + 7843, + 7844, + 7845, + 7846, + 7847, + 7848, + 7849, + 7850, + 7851, + 7852, + 7853, + 7854, + 7855, + 7856, + 7857, + 7858, + 7859, + 7860, + 7861, + 7862, + 7863, + 7864, + 7865, + 7866, + 7867, + 7868, + 7869, + 7870, + 7871, + 7872, + 7873, + 7874, + 7875, + 7876, + 7877, + 7878, + 7879, + 7880, + 7881, + 7882, + 7883, + 7884, + 7885, + 7886, + 7887, + 7888, + 7889, + 7890, + 7891, + 7892, + 7893, + 7894, + 7895, + 7896, + 7897, + 7898, + 7899, + 7900, + 7901, + 7902, + 7903, + 7904, + 7905, + 7906, + 7907, + 7908, + 7909, + 7910, + 7911, + 7912, + 7913, + 7914, + 7915, + 7916, + 7917, + 7918, + 7919, + 7920, + 7921, + 7922, + 7923, + 7924, + 7925, + 7926, + 7927, + 7928, + 7929, + 7930, + 7931, + 7932, + 7933, + 7934, + 7935, + 7936, + 7937, + 7938, + 7939, + 7940, + 7941, + 7942, + 7943, + 7944, + 7945, + 7946, + 7947, + 7948, + 7949, + 7950, + 7951, + 7952, + 7953, + 7954, + 7955, + 7956, + 7957, + 7958, + 7959, + 7960, + 7961, + 7962, + 7963, + 7964, + 7965, + 7966, + 7967, + 7968, + 7969, + 7970, + 7971, + 7972, + 7973, + 7974, + 7975, + 7976, + 7977, + 7978, + 7979, + 7980, + 7981, + 7982, + 7983, + 7984, + 7985, + 7986, + 7987, + 7988, + 7989, + 7990, + 7991, + 7992, + 7993, + 7994, + 7995, + 7996, + 7997, + 7998, + 7999, + 8000, + 8001, + 8002, + 8003, + 8004, + 8005, + 8006, + 8007, + 8008, + 8009, + 8010, + 8011, + 8012, + 8013, + 8014, + 8015, + 8016, + 8017, + 8018, + 8019, + 8020, + 8021, + 8022, + 8023, + 8024, + 8025, + 8026, + 8027, + 8028, + 8029, + 8030, + 8031, + 8032, + 8033, + 8034, + 8035, + 8036, + 8037, + 8038, + 8039, + 8040, + 8041, + 8042, + 8043, + 8044, + 8045, + 8046, + 8047, + 8048, + 8049, + 8050, + 8051, + 8052, + 8053, + 8054, + 8055, + 8056, + 8057, + 8058, + 8059, + 8060, + 8061, + 8062, + 8063, + 8064, + 8065, + 8066, + 8067, + 8068, + 8069, + 8070, + 8071, + 8072, + 8073, + 8074, + 8075, + 8076, + 8077, + 8078, + 8079, + 8080, + 8081, + 8082, + 8083, + 8084, + 8085, + 8086, + 8087, + 8088, + 8089, + 8090, + 8091, + 8092, + 8093, + 8094, + 8095, + 8096, + 8097, + 8098, + 8099, + 8100, + 8101, + 8102, + 8103, + 8104, + 8105, + 8106, + 8107, + 8108, + 8109, + 8110, + 8111, + 8112, + 8113, + 8114, + 8115, + 8116, + 8117, + 8118, + 8119, + 8120, + 8121, + 8122, + 8123, + 8124, + 8125, + 8126, + 8127, + 8128, + 8129, + 8130, + 8131, + 8132, + 8133, + 8134, + 8135, + 8136, + 8137, + 8138, + 8139, + 8140, + 8141, + 8142, + 8143, + 8144, + 8145, + 8146, + 8147, + 8148, + 8149, + 8150, + 8151, + 8152, + 8153, + 8154, + 8155, + 8156, + 8157, + 8158, + 8159, + 8160, + 8161, + 8162, + 8163, + 8164, + 8165, + 8166, + 8167, + 8168, + 8169, + 8170, + 8171, + 8172, + 8173, + 8174, + 8175, + 8176, + 8177, + 8178, + 8179, + 8180, + 8181, + 8182, + 8183, + 8184, + 8185, + 8186, + 8187, + 8188, + 8189, + 8190, + 8191, + 8192, + 8193, + 8194, + 8195, + 8196, + 8197, + 8198, + 8199, + 8200, + 8201, + 8202, + 8203, + 8204, + 8205, + 8206, + 8207, + 8208, + 8209, + 8210, + 8211, + 8212, + 8213, + 8214, + 8215, + 8216, + 8217, + 8218, + 8219, + 8220, + 8221, + 8222, + 8223, + 8224, + 8225, + 8226, + 8227, + 8228, + 8229, + 8230, + 8231, + 8232, + 8233, + 8234, + 8235, + 8236, + 8237, + 8238, + 8239, + 8240, + 8241, + 8242, + 8243, + 8244, + 8245, + 8246, + 8247, + 8248, + 8249, + 8250, + 8251, + 8252, + 8253, + 8254, + 8255, + 8256, + 8257, + 8258, + 8259, + 8260, + 8261, + 8262, + 8263, + 8264, + 8265, + 8266, + 8267, + 8268, + 8269, + 8270, + 8271, + 8272, + 8273, + 8274, + 8275, + 8276, + 8277, + 8278, + 8279, + 8280, + 8281, + 8282, + 8283, + 8284, + 8285, + 8286, + 8287, + 8288, + 8289, + 8290, + 8291, + 8292, + 8293, + 8294, + 8295, + 8296, + 8297, + 8298, + 8299, + 8300, + 8301, + 8302, + 8303, + 8304, + 8305, + 8306, + 8307, + 8308, + 8309, + 8310, + 8311, + 8312, + 8313, + 8314, + 8315, + 8316, + 8317, + 8318, + 8319, + 8320, + 8321, + 8322, + 8323, + 8324, + 8325, + 8326, + 8327, + 8328, + 8329, + 8330, + 8331, + 8332, + 8333, + 8334, + 8335, + 8336, + 8337, + 8338, + 8339, + 8340, + 8341, + 8342, + 8343, + 8344, + 8345, + 8346, + 8347, + 8348, + 8349, + 8350, + 8351, + 8352, + 8353, + 8354, + 8355, + 8356, + 8357, + 8358, + 8359, + 8360, + 8361, + 8362, + 8363, + 8364, + 8365, + 8366, + 8367, + 8368, + 8369, + 8370, + 8371, + 8372, + 8373, + 8374, + 8375, + 8376, + 8377, + 8378, + 8379, + 8380, + 8381, + 8382, + 8383, + 8384, + 8385, + 8386, + 8387, + 8388, + 8389, + 8390, + 8391, + 8392, + 8393, + 8394, + 8395, + 8396, + 8397, + 8398, + 8399, + 8400, + 8401, + 8402, + 8403, + 8404, + 8405, + 8406, + 8407, + 8408, + 8409, + 8410, + 8411, + 8412, + 8413, + 8414, + 8415, + 8416, + 8417, + 8418, + 8419, + 8420, + 8421, + 8422, + 8423, + 8424, + 8425, + 8426, + 8427, + 8428, + 8429, + 8430, + 8431, + 8432, + 8433, + 8434, + 8435, + 8436, + 8437, + 8438, + 8439, + 8440, + 8441, + 8442, + 8443, + 8444, + 8445, + 8446, + 8447, + 8448, + 8449, + 8450, + 8451, + 8452, + 8453, + 8454, + 8455, + 8456, + 8457, + 8458, + 8459, + 8460, + 8461, + 8462, + 8463, + 8464, + 8465, + 8466, + 8467, + 8468, + 8469, + 8470, + 8471, + 8472, + 8473, + 8474, + 8475, + 8476, + 8477, + 8478, + 8479, + 8480, + 8481, + 8482, + 8483, + 8484, + 8485, + 8486, + 8487, + 8488, + 8489, + 8490, + 8491, + 8492, + 8493, + 8494, + 8495, + 8496, + 8497, + 8498, + 8499, + 8500, + 8501, + 8502, + 8503, + 8504, + 8505, + 8506, + 8507, + 8508, + 8509, + 8510, + 8511, + 8512, + 8513, + 8514, + 8515, + 8516, + 8517, + 8518, + 8519, + 8520, + 8521, + 8522, + 8523, + 8524, + 8525, + 8526, + 8527, + 8528, + 8529, + 8530, + 8531, + 8532, + 8533, + 8534, + 8535, + 8536, + 8537, + 8538, + 8539, + 8540, + 8541, + 8542, + 8543, + 8544, + 8545, + 8546, + 8547, + 8548, + 8549, + 8550, + 8551, + 8552, + 8553, + 8554, + 8555, + 8556, + 8557, + 8558, + 8559, + 8560, + 8561, + 8562, + 8563, + 8564, + 8565, + 8566, + 8567, + 8568, + 8569, + 8570, + 8571, + 8572, + 8573, + 8574, + 8575, + 8576, + 8577, + 8578, + 8579, + 8580, + 8581, + 8582, + 8583, + 8584, + 8585, + 8586, + 8587, + 8588, + 8589, + 8590, + 8591, + 8592, + 8593, + 8594, + 8595, + 8596, + 8597, + 8598, + 8599, + 8600, + 8601, + 8602, + 8603, + 8604, + 8605, + 8606, + 8607, + 8608, + 8609, + 8610, + 8611, + 8612, + 8613, + 8614, + 8615, + 8616, + 8617, + 8618, + 8619, + 8620, + 8621, + 8622, + 8623, + 8624, + 8625, + 8626, + 8627, + 8628, + 8629, + 8630, + 8631, + 8632, + 8633, + 8634, + 8635, + 8636, + 8637, + 8638, + 8639, + 8640, + 8641, + 8642, + 8643, + 8644, + 8645, + 8646, + 8647, + 8648, + 8649, + 8650, + 8651, + 8652, + 8653, + 8654, + 8655, + 8656, + 8657, + 8658, + 8659, + 8660, + 8661, + 8662, + 8663, + 8664, + 8665, + 8666, + 8667, + 8668, + 8669, + 8670, + 8671, + 8672, + 8673, + 8674, + 8675, + 8676, + 8677, + 8678, + 8679, + 8680, + 8681, + 8682, + 8683, + 8684, + 8685, + 8686, + 8687, + 8688, + 8689, + 8690, + 8691, + 8692, + 8693, + 8694, + 8695, + 8696, + 8697, + 8698, + 8699, + 8700, + 8701, + 8702, + 8703, + 8704, + 8705, + 8706, + 8707, + 8708, + 8709, + 8710, + 8711, + 8712, + 8713, + 8714, + 8715, + 8716, + 8717, + 8718, + 8719, + 8720, + 8721, + 8722, + 8723, + 8724, + 8725, + 8726, + 8727, + 8728, + 8729, + 8730, + 8731, + 8732, + 8733, + 8734, + 8735, + 8736, + 8737, + 8738, + 8739, + 8740, + 8741, + 8742, + 8743, + 8744, + 8745, + 8746, + 8747, + 8748, + 8749, + 8750, + 8751, + 8752, + 8753, + 8754, + 8755, + 8756, + 8757, + 8758, + 8759, + 8760, + 8761, + 8762, + 8763, + 8764, + 8765, + 8766, + 8767, + 8768, + 8769, + 8770, + 8771, + 8772, + 8773, + 8774, + 8775, + 8776, + 8777, + 8778, + 8779, + 8780, + 8781, + 8782, + 8783, + 8784, + 8785, + 8786, + 8787, + 8788, + 8789, + 8790, + 8791, + 8792, + 8793, + 8794, + 8795, + 8796, + 8797, + 8798, + 8799, + 8800, + 8801, + 8802, + 8803, + 8804, + 8805, + 8806, + 8807, + 8808, + 8809, + 8810, + 8811, + 8812, + 8813, + 8814, + 8815, + 8816, + 8817, + 8818, + 8819, + 8820, + 8821, + 8822, + 8823, + 8824, + 8825, + 8826, + 8827, + 8828, + 8829, + 8830, + 8831, + 8832, + 8833, + 8834, + 8835, + 8836, + 8837, + 8838, + 8839, + 8840, + 8841, + 8842, + 8843, + 8844, + 8845, + 8846, + 8847, + 8848, + 8849, + 8850, + 8851, + 8852, + 8853, + 8854, + 8855, + 8856, + 8857, + 8858, + 8859, + 8860, + 8861, + 8862, + 8863, + 8864, + 8865, + 8866, + 8867, + 8868, + 8869, + 8870, + 8871, + 8872, + 8873, + 8874, + 8875, + 8876, + 8877, + 8878, + 8879, + 8880, + 8881, + 8882, + 8883, + 8884, + 8885, + 8886, + 8887, + 8888, + 8889, + 8890, + 8891, + 8892, + 8893, + 8894, + 8895, + 8896, + 8897, + 8898, + 8899, + 8900, + 8901, + 8902, + 8903, + 8904, + 8905, + 8906, + 8907, + 8908, + 8909, + 8910, + 8911, + 8912, + 8913, + 8914, + 8915, + 8916, + 8917, + 8918, + 8919, + 8920, + 8921, + 8922, + 8923, + 8924, + 8925, + 8926, + 8927, + 8928, + 8929, + 8930, + 8931, + 8932, + 8933, + 8934, + 8935, + 8936, + 8937, + 8938, + 8939, + 8940, + 8941, + 8942, + 8943, + 8944, + 8945, + 8946, + 8947, + 8948, + 8949, + 8950, + 8951, + 8952, + 8953, + 8954, + 8955, + 8956, + 8957, + 8958, + 8959, + 8960, + 8961, + 8962, + 8963, + 8964, + 8965, + 8966, + 8967, + 8968, + 8969, + 8970, + 8971, + 8972, + 8973, + 8974, + 8975, + 8976, + 8977, + 8978, + 8979, + 8980, + 8981, + 8982, + 8983, + 8984, + 8985, + 8986, + 8987, + 8988, + 8989, + 8990, + 8991, + 8992, + 8993, + 8994, + 8995, + 8996, + 8997, + 8998, + 8999, + 9000, + 9001, + 9002, + 9003, + 9004, + 9005, + 9006, + 9007, + 9008, + 9009, + 9010, + 9011, + 9012, + 9013, + 9014, + 9015, + 9016, + 9017, + 9018, + 9019, + 9020, + 9021, + 9022, + 9023, + 9024, + 9025, + 9026, + 9027, + 9028, + 9029, + 9030, + 9031, + 9032, + 9033, + 9034, + 9035, + 9036, + 9037, + 9038, + 9039, + 9040, + 9041, + 9042, + 9043, + 9044, + 9045, + 9046, + 9047, + 9048, + 9049, + 9050, + 9051, + 9052, + 9053, + 9054, + 9055, + 9056, + 9057, + 9058, + 9059, + 9060, + 9061, + 9062, + 9063, + 9064, + 9065, + 9066, + 9067, + 9068, + 9069, + 9070, + 9071, + 9072, + 9073, + 9074, + 9075, + 9076, + 9077, + 9078, + 9079, + 9080, + 9081, + 9082, + 9083, + 9084, + 9085, + 9086, + 9087, + 9088, + 9089, + 9090, + 9091, + 9092, + 9093, + 9094, + 9095, + 9096, + 9097, + 9098, + 9099, + 9100, + 9101, + 9102, + 9103, + 9104, + 9105, + 9106, + 9107, + 9108, + 9109, + 9110, + 9111, + 9112, + 9113, + 9114, + 9115, + 9116, + 9117, + 9118, + 9119, + 9120, + 9121, + 9122, + 9123, + 9124, + 9125, + 9126, + 9127, + 9128, + 9129, + 9130, + 9131, + 9132, + 9133, + 9134, + 9135, + 9136, + 9137, + 9138, + 9139, + 9140, + 9141, + 9142, + 9143, + 9144, + 9145, + 9146, + 9147, + 9148, + 9149, + 9150, + 9151, + 9152, + 9153, + 9154, + 9155, + 9156, + 9157, + 9158, + 9159, + 9160, + 9161, + 9162, + 9163, + 9164, + 9165, + 9166, + 9167, + 9168, + 9169, + 9170, + 9171, + 9172, + 9173, + 9174, + 9175, + 9176, + 9177, + 9178, + 9179, + 9180, + 9181, + 9182, + 9183, + 9184, + 9185, + 9186, + 9187, + 9188, + 9189, + 9190, + 9191, + 9192, + 9193, + 9194, + 9195, + 9196, + 9197, + 9198, + 9199, + 9200, + 9201, + 9202, + 9203, + 9204, + 9205, + 9206, + 9207, + 9208, + 9209, + 9210, + 9211, + 9212, + 9213, + 9214, + 9215, + 9216, + 9217, + 9218, + 9219, + 9220, + 9221, + 9222, + 9223, + 9224, + 9225, + 9226, + 9227, + 9228, + 9229, + 9230, + 9231, + 9232, + 9233, + 9234, + 9235, + 9236, + 9237, + 9238, + 9239, + 9240, + 9241, + 9242, + 9243, + 9244, + 9245, + 9246, + 9247, + 9248, + 9249, + 9250, + 9251, + 9252, + 9253, + 9254, + 9255, + 9256, + 9257, + 9258, + 9259, + 9260, + 9261, + 9262, + 9263, + 9264, + 9265, + 9266, + 9267, + 9268, + 9269, + 9270, + 9271, + 9272, + 9273, + 9274, + 9275, + 9276, + 9277, + 9278, + 9279, + 9280, + 9281, + 9282, + 9283, + 9284, + 9285, + 9286, + 9287, + 9288, + 9289, + 9290, + 9291, + 9292, + 9293, + 9294, + 9295, + 9296, + 9297, + 9298, + 9299, + 9300, + 9301, + 9302, + 9303, + 9304, + 9305, + 9306, + 9307, + 9308, + 9309, + 9310, + 9311, + 9312, + 9313, + 9314, + 9315, + 9316, + 9317, + 9318, + 9319, + 9320, + 9321, + 9322, + 9323, + 9324, + 9325, + 9326, + 9327, + 9328, + 9329, + 9330, + 9331, + 9332, + 9333, + 9334, + 9335, + 9336, + 9337, + 9338, + 9339, + 9340, + 9341, + 9342, + 9343, + 9344, + 9345, + 9346, + 9347, + 9348, + 9349, + 9350, + 9351, + 9352, + 9353, + 9354, + 9355, + 9356, + 9357, + 9358, + 9359, + 9360, + 9361, + 9362, + 9363, + 9364, + 9365, + 9366, + 9367, + 9368, + 9369, + 9370, + 9371, + 9372, + 9373, + 9374, + 9375, + 9376, + 9377, + 9378, + 9379, + 9380, + 9381, + 9382, + 9383, + 9384, + 9385, + 9386, + 9387, + 9388, + 9389, + 9390, + 9391, + 9392, + 9393, + 9394, + 9395, + 9396, + 9397, + 9398, + 9399, + 9400, + 9401, + 9402, + 9403, + 9404, + 9405, + 9406, + 9407, + 9408, + 9409, + 9410, + 9411, + 9412, + 9413, + 9414, + 9415, + 9416, + 9417, + 9418, + 9419, + 9420, + 9421, + 9422, + 9423, + 9424, + 9425, + 9426, + 9427, + 9428, + 9429, + 9430, + 9431, + 9432, + 9433, + 9434, + 9435, + 9436, + 9437, + 9438, + 9439, + 9440, + 9441, + 9442, + 9443, + 9444, + 9445, + 9446, + 9447, + 9448, + 9449, + 9450, + 9451, + 9452, + 9453, + 9454, + 9455, + 9456, + 9457, + 9458, + 9459, + 9460, + 9461, + 9462, + 9463, + 9464, + 9465, + 9466, + 9467, + 9468, + 9469, + 9470, + 9471, + 9472, + 9473, + 9474, + 9475, + 9476, + 9477, + 9478, + 9479, + 9480, + 9481, + 9482, + 9483, + 9484, + 9485, + 9486, + 9487, + 9488, + 9489, + 9490, + 9491, + 9492, + 9493, + 9494, + 9495, + 9496, + 9497, + 9498, + 9499, + 9500, + 9501, + 9502, + 9503, + 9504, + 9505, + 9506, + 9507, + 9508, + 9509, + 9510, + 9511, + 9512, + 9513, + 9514, + 9515, + 9516, + 9517, + 9518, + 9519, + 9520, + 9521, + 9522, + 9523, + 9524, + 9525, + 9526, + 9527, + 9528, + 9529, + 9530, + 9531, + 9532, + 9533, + 9534, + 9535, + 9536, + 9537, + 9538, + 9539, + 9540, + 9541, + 9542, + 9543, + 9544, + 9545, + 9546, + 9547, + 9548, + 9549, + 9550, + 9551, + 9552, + 9553, + 9554, + 9555, + 9556, + 9557, + 9558, + 9559, + 9560, + 9561, + 9562, + 9563, + 9564, + 9565, + 9566, + 9567, + 9568, + 9569, + 9570, + 9571, + 9572, + 9573, + 9574, + 9575, + 9576, + 9577, + 9578, + 9579, + 9580, + 9581, + 9582, + 9583, + 9584, + 9585, + 9586, + 9587, + 9588, + 9589, + 9590, + 9591, + 9592, + 9593, + 9594, + 9595, + 9596, + 9597, + 9598, + 9599, + 9600, + 9601, + 9602, + 9603, + 9604, + 9605, + 9606, + 9607, + 9608, + 9609, + 9610, + 9611, + 9612, + 9613, + 9614, + 9615, + 9616, + 9617, + 9618, + 9619, + 9620, + 9621, + 9622, + 9623, + 9624, + 9625, + 9626, + 9627, + 9628, + 9629, + 9630, + 9631, + 9632, + 9633, + 9634, + 9635, + 9636, + 9637, + 9638, + 9639, + 9640, + 9641, + 9642, + 9643, + 9644, + 9645, + 9646, + 9647, + 9648, + 9649, + 9650, + 9651, + 9652, + 9653, + 9654, + 9655, + 9656, + 9657, + 9658, + 9659, + 9660, + 9661, + 9662, + 9663, + 9664, + 9665, + 9666, + 9667, + 9668, + 9669, + 9670, + 9671, + 9672, + 9673, + 9674, + 9675, + 9676, + 9677, + 9678, + 9679, + 9680, + 9681, + 9682, + 9683, + 9684, + 9685, + 9686, + 9687, + 9688, + 9689, + 9690, + 9691, + 9692, + 9693, + 9694, + 9695, + 9696, + 9697, + 9698, + 9699, + 9700, + 9701, + 9702, + 9703, + 9704, + 9705, + 9706, + 9707, + 9708, + 9709, + 9710, + 9711, + 9712, + 9713, + 9714, + 9715, + 9716, + 9717, + 9718, + 9719, + 9720, + 9721, + 9722, + 9723, + 9724, + 9725, + 9726, + 9727, + 9728, + 9729, + 9730, + 9731, + 9732, + 9733, + 9734, + 9735, + 9736, + 9737, + 9738, + 9739, + 9740, + 9741, + 9742, + 9743, + 9744, + 9745, + 9746, + 9747, + 9748, + 9749, + 9750, + 9751, + 9752, + 9753, + 9754, + 9755, + 9756, + 9757, + 9758, + 9759, + 9760, + 9761, + 9762, + 9763, + 9764, + 9765, + 9766, + 9767, + 9768, + 9769, + 9770, + 9771, + 9772, + 9773, + 9774, + 9775, + 9776, + 9777, + 9778, + 9779, + 9780, + 9781, + 9782, + 9783, + 9784, + 9785, + 9786, + 9787, + 9788, + 9789, + 9790, + 9791, + 9792, + 9793, + 9794, + 9795, + 9796, + 9797, + 9798, + 9799, + 9800, + 9801, + 9802, + 9803, + 9804, + 9805, + 9806, + 9807, + 9808, + 9809, + 9810, + 9811, + 9812, + 9813, + 9814, + 9815, + 9816, + 9817, + 9818, + 9819, + 9820, + 9821, + 9822, + 9823, + 9824, + 9825, + 9826, + 9827, + 9828, + 9829, + 9830, + 9831, + 9832, + 9833, + 9834, + 9835, + 9836, + 9837, + 9838, + 9839, + 9840, + 9841, + 9842, + 9843, + 9844, + 9845, + 9846, + 9847, + 9848, + 9849, + 9850, + 9851, + 9852, + 9853, + 9854, + 9855, + 9856, + 9857, + 9858, + 9859, + 9860, + 9861, + 9862, + 9863, + 9864, + 9865, + 9866, + 9867, + 9868, + 9869, + 9870, + 9871, + 9872, + 9873, + 9874, + 9875, + 9876, + 9877, + 9878, + 9879, + 9880, + 9881, + 9882, + 9883, + 9884, + 9885, + 9886, + 9887, + 9888, + 9889, + 9890, + 9891, + 9892, + 9893, + 9894, + 9895, + 9896, + 9897, + 9898, + 9899, + 9900, + 9901, + 9902, + 9903, + 9904, + 9905, + 9906, + 9907, + 9908, + 9909, + 9910, + 9911, + 9912, + 9913, + 9914, + 9915, + 9916, + 9917, + 9918, + 9919, + 9920, + 9921, + 9922, + 9923, + 9924, + 9925, + 9926, + 9927, + 9928, + 9929, + 9930, + 9931, + 9932, + 9933, + 9934, + 9935, + 9936, + 9937, + 9938, + 9939, + 9940, + 9941, + 9942, + 9943, + 9944, + 9945, + 9946, + 9947, + 9948, + 9949, + 9950, + 9951, + 9952, + 9953, + 9954, + 9955, + 9956, + 9957, + 9958, + 9959, + 9960, + 9961, + 9962, + 9963, + 9964, + 9965, + 9966, + 9967, + 9968, + 9969, + 9970, + 9971, + 9972, + 9973, + 9974, + 9975, + 9976, + 9977, + 9978, + 9979, + 9980, + 9981, + 9982, + 9983, + 9984, + 9985, + 9986, + 9987, + 9988, + 9989, + 9990, + 9991, + 9992, + 9993, + 9994, + 9995, + 9996, + 9997, + 9998, + 9999, + 10000, + 10001, + 10002, + 10003, + 10004, + 10005, + 10006, + 10007, + 10008, + 10009, + 10010, + 10011, + 10012, + 10013, + 10014, + 10015, + 10016, + 10017, + 10018, + 10019, + 10020, + 10021, + 10022, + 10023, + 10024, + 10025, + 10026, + 10027, + 10028, + 10029, + 10030, + 10031, + 10032, + 10033, + 10034, + 10035, + 10036, + 10037, + 10038, + 10039, + 10040, + 10041, + 10042, + 10043, + 10044, + 10045, + 10046, + 10047, + 10048, + 10049, + 10050, + 10051, + 10052, + 10053, + 10054, + 10055, + 10056, + 10057, + 10058, + 10059, + 10060, + 10061, + 10062, + 10063, + 10064, + 10065, + 10066, + 10067, + 10068, + 10069, + 10070, + 10071, + 10072, + 10073, + 10074, + 10075, + 10076, + 10077, + 10078, + 10079, + 10080, + 10081, + 10082, + 10083, + 10084, + 10085, + 10086, + 10087, + 10088, + 10089, + 10090, + 10091, + 10092, + 10093, + 10094, + 10095, + 10096, + 10097, + 10098, + 10099, + 10100, + 10101, + 10102, + 10103, + 10104, + 10105, + 10106, + 10107, + 10108, + 10109, + 10110, + 10111, + 10112, + 10113, + 10114, + 10115, + 10116, + 10117, + 10118, + 10119, + 10120, + 10121, + 10122, + 10123, + 10124, + 10125, + 10126, + 10127, + 10128, + 10129, + 10130, + 10131, + 10132, + 10133, + 10134, + 10135, + 10136, + 10137, + 10138, + 10139, + 10140, + 10141, + 10142, + 10143, + 10144, + 10145, + 10146, + 10147, + 10148, + 10149, + 10150, + 10151, + 10152, + 10153, + 10154, + 10155, + 10156, + 10157, + 10158, + 10159, + 10160, + 10161, + 10162, + 10163, + 10164, + 10165, + 10166, + 10167, + 10168, + 10169, + 10170, + 10171, + 10172, + 10173, + 10174, + 10175, + 10176, + 10177, + 10178, + 10179, + 10180, + 10181, + 10182, + 10183, + 10184, + 10185, + 10186, + 10187, + 10188, + 10189, + 10190, + 10191, + 10192, + 10193, + 10194, + 10195, + 10196, + 10197, + 10198, + 10199, + 10200, + 10201, + 10202, + 10203, + 10204, + 10205, + 10206, + 10207, + 10208, + 10209, + 10210, + 10211, + 10212, + 10213, + 10214, + 10215, + 10216, + 10217, + 10218, + 10219, + 10220, + 10221, + 10222, + 10223, + 10224, + 10225, + 10226, + 10227, + 10228, + 10229, + 10230, + 10231, + 10232, + 10233, + 10234, + 10235, + 10236, + 10237, + 10238, + 10239, + 10240, + 10241, + 10242, + 10243, + 10244, + 10245, + 10246, + 10247, + 10248, + 10249, + 10250, + 10251, + 10252, + 10253, + 10254, + 10255, + 10256, + 10257, + 10258, + 10259, + 10260, + 10261, + 10262, + 10263, + 10264, + 10265, + 10266, + 10267, + 10268, + 10269, + 10270, + 10271, + 10272, + 10273, + 10274, + 10275, + 10276, + 10277, + 10278, + 10279, + 10280, + 10281, + 10282, + 10283, + 10284, + 10285, + 10286, + 10287, + 10288, + 10289, + 10290, + 10291, + 10292, + 10293, + 10294, + 10295, + 10296, + 10297, + 10298, + 10299, + 10300, + 10301, + 10302, + 10303, + 10304, + 10305, + 10306, + 10307, + 10308, + 10309, + 10310, + 10311, + 10312, + 10313, + 10314, + 10315, + 10316, + 10317, + 10318, + 10319, + 10320, + 10321, + 10322, + 10323, + 10324, + 10325, + 10326, + 10327, + 10328, + 10329, + 10330, + 10331, + 10332, + 10333, + 10334, + 10335, + 10336, + 10337, + 10338, + 10339, + 10340, + 10341, + 10342, + 10343, + 10344, + 10345, + 10346, + 10347, + 10348, + 10349, + 10350, + 10351, + 10352, + 10353, + 10354, + 10355, + 10356, + 10357, + 10358, + 10359, + 10360, + 10361, + 10362, + 10363, + 10364, + 10365, + 10366, + 10367, + 10368, + 10369, + 10370, + 10371, + 10372, + 10373, + 10374, + 10375, + 10376, + 10377, + 10378, + 10379, + 10380, + 10381, + 10382, + 10383, + 10384, + 10385, + 10386, + 10387, + 10388, + 10389, + 10390, + 10391, + 10392, + 10393, + 10394, + 10395, + 10396, + 10397, + 10398, + 10399, + 10400, + 10401, + 10402, + 10403, + 10404, + 10405, + 10406, + 10407, + 10408, + 10409, + 10410, + 10411, + 10412, + 10413, + 10414, + 10415, + 10416, + 10417, + 10418, + 10419, + 10420, + 10421, + 10422, + 10423, + 10424, + 10425, + 10426, + 10427, + 10428, + 10429, + 10430, + 10431, + 10432, + 10433, + 10434, + 10435, + 10436, + 10437, + 10438, + 10439, + 10440, + 10441, + 10442, + 10443, + 10444, + 10445, + 10446, + 10447, + 10448, + 10449, + 10450, + 10451, + 10452, + 10453, + 10454, + 10455, + 10456, + 10457, + 10458, + 10459, + 10460, + 10461, + 10462, + 10463, + 10464, + 10465, + 10466, + 10467, + 10468, + 10469, + 10470, + 10471, + 10472, + 10473, + 10474, + 10475, + 10476, + 10477, + 10478, + 10479, + 10480, + 10481, + 10482, + 10483, + 10484, + 10485, + 10486, + 10487, + 10488, + 10489, + 10490, + 10491, + 10492, + 10493, + 10494, + 10495, + 10496, + 10497, + 10498, + 10499, + 10500, + 10501, + 10502, + 10503, + 10504, + 10505, + 10506, + 10507, + 10508, + 10509, + 10510, + 10511, + 10512, + 10513, + 10514, + 10515, + 10516, + 10517, + 10518, + 10519, + 10520, + 10521, + 10522, + 10523, + 10524, + 10525, + 10526, + 10527, + 10528, + 10529, + 10530, + 10531, + 10532, + 10533, + 10534, + 10535, + 10536, + 10537, + 10538, + 10539, + 10540, + 10541, + 10542, + 10543, + 10544, + 10545, + 10546, + 10547, + 10548, + 10549, + 10550, + 10551, + 10552, + 10553, + 10554, + 10555, + 10556, + 10557, + 10558, + 10559, + 10560, + 10561, + 10562, + 10563, + 10564, + 10565, + 10566, + 10567, + 10568, + 10569, + 10570, + 10571, + 10572, + 10573, + 10574, + 10575, + 10576, + 10577, + 10578, + 10579, + 10580, + 10581, + 10582, + 10583, + 10584, + 10585, + 10586, + 10587, + 10588, + 10589, + 10590, + 10591, + 10592, + 10593, + 10594, + 10595, + 10596, + 10597, + 10598, + 10599, + 10600, + 10601, + 10602, + 10603, + 10604, + 10605, + 10606, + 10607, + 10608, + 10609, + 10610, + 10611, + 10612, + 10613, + 10614, + 10615, + 10616, + 10617, + 10618, + 10619, + 10620, + 10621, + 10622, + 10623, + 10624, + 10625, + 10626, + 10627, + 10628, + 10629, + 10630, + 10631, + 10632, + 10633, + 10634, + 10635, + 10636, + 10637, + 10638, + 10639, + 10640, + 10641, + 10642, + 10643, + 10644, + 10645, + 10646, + 10647, + 10648, + 10649, + 10650, + 10651, + 10652, + 10653, + 10654, + 10655, + 10656, + 10657, + 10658, + 10659, + 10660, + 10661, + 10662, + 10663, + 10664, + 10665, + 10666, + 10667, + 10668, + 10669, + 10670, + 10671, + 10672, + 10673, + 10674, + 10675, + 10676, + 10677, + 10678, + 10679, + 10680, + 10681, + 10682, + 10683, + 10684, + 10685, + 10686, + 10687, + 10688, + 10689, + 10690, + 10691, + 10692, + 10693, + 10694, + 10695, + 10696, + 10697, + 10698, + 10699, + 10700, + 10701, + 10702, + 10703, + 10704, + 10705, + 10706, + 10707, + 10708, + 10709, + 10710, + 10711, + 10712, + 10713, + 10714, + 10715, + 10716, + 10717, + 10718, + 10719, + 10720, + 10721, + 10722, + 10723, + 10724, + 10725, + 10726, + 10727, + 10728, + 10729, + 10730, + 10731, + 10732, + 10733, + 10734, + 10735, + 10736, + 10737, + 10738, + 10739, + 10740, + 10741, + 10742, + 10743, + 10744, + 10745, + 10746, + 10747, + 10748, + 10749, + 10750, + 10751, + 10752, + 10753, + 10754, + 10755, + 10756, + 10757, + 10758, + 10759, + 10760, + 10761, + 10762, + 10763, + 10764, + 10765, + 10766, + 10767, + 10768, + 10769, + 10770, + 10771, + 10772, + 10773, + 10774, + 10775, + 10776, + 10777, + 10778, + 10779, + 10780, + 10781, + 10782, + 10783, + 10784, + 10785, + 10786, + 10787, + 10788, + 10789, + 10790, + 10791, + 10792, + 10793, + 10794, + 10795, + 10796, + 10797, + 10798, + 10799, + 10800, + 10801, + 10802, + 10803, + 10804, + 10805, + 10806, + 10807, + 10808, + 10809, + 10810, + 10811, + 10812, + 10813, + 10814, + 10815, + 10816, + 10817, + 10818, + 10819, + 10820, + 10821, + 10822, + 10823, + 10824, + 10825, + 10826, + 10827, + 10828, + 10829, + 10830, + 10831, + 10832, + 10833, + 10834, + 10835, + 10836, + 10837, + 10838, + 10839, + 10840, + 10841, + 10842, + 10843, + 10844, + 10845, + 10846, + 10847, + 10848, + 10849, + 10850, + 10851, + 10852, + 10853, + 10854, + 10855, + 10856, + 10857, + 10858, + 10859, + 10860, + 10861, + 10862, + 10863, + 10864, + 10865, + 10866, + 10867, + 10868, + 10869, + 10870, + 10871, + 10872, + 10873, + 10874, + 10875, + 10876, + 10877, + 10878, + 10879, + 10880, + 10881, + 10882, + 10883, + 10884, + 10885, + 10886, + 10887, + 10888, + 10889, + 10890, + 10891, + 10892, + 10893, + 10894, + 10895, + 10896, + 10897, + 10898, + 10899, + 10900, + 10901, + 10902, + 10903, + 10904, + 10905, + 10906, + 10907, + 10908, + 10909, + 10910, + 10911, + 10912, + 10913, + 10914, + 10915, + 10916, + 10917, + 10918, + 10919, + 10920, + 10921, + 10922, + 10923, + 10924, + 10925, + 10926, + 10927, + 10928, + 10929, + 10930, + 10931, + 10932, + 10933, + 10934, + 10935, + 10936, + 10937, + 10938, + 10939, + 10940, + 10941, + 10942, + 10943, + 10944, + 10945, + 10946, + 10947, + 10948, + 10949, + 10950, + 10951, + 10952, + 10953, + 10954, + 10955, + 10956, + 10957, + 10958, + 10959, + 10960, + 10961, + 10962, + 10963, + 10964, + 10965, + 10966, + 10967, + 10968, + 10969, + 10970, + 10971, + 10972, + 10973, + 10974, + 10975, + 10976, + 10977, + 10978, + 10979, + 10980, + 10981, + 10982, + 10983, + 10984, + 10985, + 10986, + 10987, + 10988, + 10989, + 10990, + 10991, + 10992, + 10993, + 10994, + 10995, + 10996, + 10997, + 10998, + 10999, + 11000, + 11001, + 11002, + 11003, + 11004, + 11005, + 11006, + 11007, + 11008, + 11009, + 11010, + 11011, + 11012, + 11013, + 11014, + 11015, + 11016, + 11017, + 11018, + 11019, + 11020, + 11021, + 11022, + 11023, + 11024, + 11025, + 11026, + 11027, + 11028, + 11029, + 11030, + 11031, + 11032, + 11033, + 11034, + 11035, + 11036, + 11037, + 11038, + 11039, + 11040, + 11041, + 11042, + 11043, + 11044, + 11045, + 11046, + 11047, + 11048, + 11049, + 11050, + 11051, + 11052, + 11053, + 11054, + 11055, + 11056, + 11057, + 11058, + 11059, + 11060, + 11061, + 11062, + 11063, + 11064, + 11065, + 11066, + 11067, + 11068, + 11069, + 11070, + 11071, + 11072, + 11073, + 11074, + 11075, + 11076, + 11077, + 11078, + 11079, + 11080, + 11081, + 11082, + 11083, + 11084, + 11085, + 11086, + 11087, + 11088, + 11089, + 11090, + 11091, + 11092, + 11093, + 11094, + 11095, + 11096, + 11097, + 11098, + 11099, + 11100, + 11101, + 11102, + 11103, + 11104, + 11105, + 11106, + 11107, + 11108, + 11109, + 11110, + 11111, + 11112, + 11113, + 11114, + 11115, + 11116, + 11117, + 11118, + 11119, + 11120, + 11121, + 11122, + 11123, + 11124, + 11125, + 11126, + 11127, + 11128, + 11129, + 11130, + 11131, + 11132, + 11133, + 11134, + 11135, + 11136, + 11137, + 11138, + 11139, + 11140, + 11141, + 11142, + 11143, + 11144, + 11145, + 11146, + 11147, + 11148, + 11149, + 11150, + 11151, + 11152, + 11153, + 11154, + 11155, + 11156, + 11157, + 11158, + 11159, + 11160, + 11161, + 11162, + 11163, + 11164, + 11165, + 11166, + 11167, + 11168, + 11169, + 11170, + 11171, + 11172, + 11173, + 11174, + 11175, + 11176, + 11177, + 11178, + 11179, + 11180, + 11181, + 11182, + 11183, + 11184, + 11185, + 11186, + 11187, + 11188, + 11189, + 11190, + 11191, + 11192, + 11193, + 11194, + 11195, + 11196, + 11197, + 11198, + 11199, + 11200, + 11201, + 11202, + 11203, + 11204, + 11205, + 11206, + 11207, + 11208, + 11209, + 11210, + 11211, + 11212, + 11213, + 11214, + 11215, + 11216, + 11217, + 11218, + 11219, + 11220, + 11221, + 11222, + 11223, + 11224, + 11225, + 11226, + 11227, + 11228, + 11229, + 11230, + 11231, + 11232, + 11233, + 11234, + 11235, + 11236, + 11237, + 11238, + 11239, + 11240, + 11241, + 11242, + 11243, + 11244, + 11245, + 11246, + 11247, + 11248, + 11249, + 11250, + 11251, + 11252, + 11253, + 11254, + 11255, + 11256, + 11257, + 11258, + 11259, + 11260, + 11261, + 11262, + 11263, + 11264, + 11265, + 11266, + 11267, + 11268, + 11269, + 11270, + 11271, + 11272, + 11273, + 11274, + 11275, + 11276, + 11277, + 11278, + 11279, + 11280, + 11281, + 11282, + 11283, + 11284, + 11285, + 11286, + 11287, + 11288, + 11289, + 11290, + 11291, + 11292, + 11293, + 11294, + 11295, + 11296, + 11297, + 11298, + 11299, + 11300, + 11301, + 11302, + 11303, + 11304, + 11305, + 11306, + 11307, + 11308, + 11309, + 11310, + 11311, + 11312, + 11313, + 11314, + 11315, + 11316, + 11317, + 11318, + 11319, + 11320, + 11321, + 11322, + 11323, + 11324, + 11325, + 11326, + 11327, + 11328, + 11329, + 11330, + 11331, + 11332, + 11333, + 11334, + 11335, + 11336, + 11337, + 11338, + 11339, + 11340, + 11341, + 11342, + 11343, + 11344, + 11345, + 11346, + 11347, + 11348, + 11349, + 11350, + 11351, + 11352, + 11353, + 11354, + 11355, + 11356, + 11357, + 11358, + 11359, + 11360, + 11361, + 11362, + 11363, + 11364, + 11365, + 11366, + 11367, + 11368, + 11369, + 11370, + 11371, + 11372, + 11373, + 11374, + 11375, + 11376, + 11377, + 11378, + 11379, + 11380, + 11381, + 11382, + 11383, + 11384, + 11385, + 11386, + 11387, + 11388, + 11389, + 11390, + 11391, + 11392, + 11393, + 11394, + 11395, + 11396, + 11397, + 11398, + 11399, + 11400, + 11401, + 11402, + 11403, + 11404, + 11405, + 11406, + 11407, + 11408, + 11409, + 11410, + 11411, + 11412, + 11413, + 11414, + 11415, + 11416, + 11417, + 11418, + 11419, + 11420, + 11421, + 11422, + 11423, + 11424, + 11425, + 11426, + 11427, + 11428, + 11429, + 11430, + 11431, + 11432, + 11433, + 11434, + 11435, + 11436, + 11437, + 11438, + 11439, + 11440, + 11441, + 11442, + 11443, + 11444, + 11445, + 11446, + 11447, + 11448, + 11449, + 11450, + 11451, + 11452, + 11453, + 11454, + 11455, + 11456, + 11457, + 11458, + 11459, + 11460, + 11461, + 11462, + 11463, + 11464, + 11465, + 11466, + 11467, + 11468, + 11469, + 11470, + 11471, + 11472, + 11473, + 11474, + 11475, + 11476, + 11477, + 11478, + 11479, + 11480, + 11481, + 11482, + 11483, + 11484, + 11485, + 11486, + 11487, + 11488, + 11489, + 11490, + 11491, + 11492, + 11493, + 11494, + 11495, + 11496, + 11497, + 11498, + 11499, + 11500, + 11501, + 11502, + 11503, + 11504, + 11505, + 11506, + 11507, + 11508, + 11509, + 11510, + 11511, + 11512, + 11513, + 11514, + 11515, + 11516, + 11517, + 11518, + 11519, + 11520, + 11521, + 11522, + 11523, + 11524, + 11525, + 11526, + 11527, + 11528, + 11529, + 11530, + 11531, + 11532, + 11533, + 11534, + 11535, + 11536, + 11537, + 11538, + 11539, + 11540, + 11541, + 11542, + 11543, + 11544, + 11545, + 11546, + 11547, + 11548, + 11549, + 11550, + 11551, + 11552, + 11553, + 11554, + 11555, + 11556, + 11557, + 11558, + 11559, + 11560, + 11561, + 11562, + 11563, + 11564, + 11565, + 11566, + 11567, + 11568, + 11569, + 11570, + 11571, + 11572, + 11573, + 11574, + 11575, + 11576, + 11577, + 11578, + 11579, + 11580, + 11581, + 11582, + 11583, + 11584, + 11585, + 11586, + 11587, + 11588, + 11589, + 11590, + 11591, + 11592, + 11593, + 11594, + 11595, + 11596, + 11597, + 11598, + 11599, + 11600, + 11601, + 11602, + 11603, + 11604, + 11605, + 11606, + 11607, + 11608, + 11609, + 11610, + 11611, + 11612, + 11613, + 11614, + 11615, + 11616, + 11617, + 11618, + 11619, + 11620, + 11621, + 11622, + 11623, + 11624, + 11625, + 11626, + 11627, + 11628, + 11629, + 11630, + 11631, + 11632, + 11633, + 11634, + 11635, + 11636, + 11637, + 11638, + 11639, + 11640, + 11641, + 11642, + 11643, + 11644, + 11645, + 11646, + 11647, + 11648, + 11649, + 11650, + 11651, + 11652, + 11653, + 11654, + 11655, + 11656, + 11657, + 11658, + 11659, + 11660, + 11661, + 11662, + 11663, + 11664, + 11665, + 11666, + 11667, + 11668, + 11669, + 11670, + 11671, + 11672, + 11673, + 11674, + 11675, + 11676, + 11677, + 11678, + 11679, + 11680, + 11681, + 11682, + 11683, + 11684, + 11685, + 11686, + 11687, + 11688, + 11689, + 11690, + 11691, + 11692, + 11693, + 11694, + 11695, + 11696, + 11697, + 11698, + 11699, + 11700, + 11701, + 11702, + 11703, + 11704, + 11705, + 11706, + 11707, + 11708, + 11709, + 11710, + 11711, + 11712, + 11713, + 11714, + 11715, + 11716, + 11717, + 11718, + 11719, + 11720, + 11721, + 11722, + 11723, + 11724, + 11725, + 11726, + 11727, + 11728, + 11729, + 11730, + 11731, + 11732, + 11733, + 11734, + 11735, + 11736, + 11737, + 11738, + 11739, + 11740, + 11741, + 11742, + 11743, + 11744, + 11745, + 11746, + 11747, + 11748, + 11749, + 11750, + 11751, + 11752, + 11753, + 11754, + 11755, + 11756, + 11757, + 11758, + 11759, + 11760, + 11761, + 11762, + 11763, + 11764, + 11765, + 11766, + 11767, + 11768, + 11769, + 11770, + 11771, + 11772, + 11773, + 11774, + 11775, + 11776, + 11777, + 11778, + 11779, + 11780, + 11781, + 11782, + 11783, + 11784, + 11785, + 11786, + 11787, + 11788, + 11789, + 11790, + 11791, + 11792, + 11793, + 11794, + 11795, + 11796, + 11797, + 11798, + 11799, + 11800, + 11801, + 11802, + 11803, + 11804, + 11805, + 11806, + 11807, + 11808, + 11809, + 11810, + 11811, + 11812, + 11813, + 11814, + 11815, + 11816, + 11817, + 11818, + 11819, + 11820, + 11821, + 11822, + 11823, + 11824, + 11825, + 11826, + 11827, + 11828, + 11829, + 11830, + 11831, + 11832, + 11833, + 11834, + 11835, + 11836, + 11837, + 11838, + 11839, + 11840, + 11841, + 11842, + 11843, + 11844, + 11845, + 11846, + 11847, + 11848, + 11849, + 11850, + 11851, + 11852, + 11853, + 11854, + 11855, + 11856, + 11857, + 11858, + 11859, + 11860, + 11861, + 11862, + 11863, + 11864, + 11865, + 11866, + 11867, + 11868, + 11869, + 11870, + 11871, + 11872, + 11873, + 11874, + 11875, + 11876, + 11877, + 11878, + 11879, + 11880, + 11881, + 11882, + 11883, + 11884, + 11885, + 11886, + 11887, + 11888, + 11889, + 11890, + 11891, + 11892, + 11893, + 11894, + 11895, + 11896, + 11897, + 11898, + 11899, + 11900, + 11901, + 11902, + 11903, + 11904, + 11905, + 11906, + 11907, + 11908, + 11909, + 11910, + 11911, + 11912, + 11913, + 11914, + 11915, + 11916, + 11917, + 11918, + 11919, + 11920, + 11921, + 11922, + 11923, + 11924, + 11925, + 11926, + 11927, + 11928, + 11929, + 11930, + 11931, + 11932, + 11933, + 11934, + 11935, + 11936, + 11937, + 11938, + 11939, + 11940, + 11941, + 11942, + 11943, + 11944, + 11945, + 11946, + 11947, + 11948, + 11949, + 11950, + 11951, + 11952, + 11953, + 11954, + 11955, + 11956, + 11957, + 11958, + 11959, + 11960, + 11961, + 11962, + 11963, + 11964, + 11965, + 11966, + 11967, + 11968, + 11969, + 11970, + 11971, + 11972, + 11973, + 11974, + 11975, + 11976, + 11977, + 11978, + 11979, + 11980, + 11981, + 11982, + 11983, + 11984, + 11985, + 11986, + 11987, + 11988, + 11989, + 11990, + 11991, + 11992, + 11993, + 11994, + 11995, + 11996, + 11997, + 11998, + 11999, + 12000, + 12001, + 12002, + 12003, + 12004, + 12005, + 12006, + 12007, + 12008, + 12009, + 12010, + 12011, + 12012, + 12013, + 12014, + 12015, + 12016, + 12017, + 12018, + 12019, + 12020, + 12021, + 12022, + 12023, + 12024, + 12025, + 12026, + 12027, + 12028, + 12029, + 12030, + 12031, + 12032, + 12033, + 12034, + 12035, + 12036, + 12037, + 12038, + 12039, + 12040, + 12041, + 12042, + 12043, + 12044, + 12045, + 12046, + 12047, + 12048, + 12049, + 12050, + 12051, + 12052, + 12053, + 12054, + 12055, + 12056, + 12057, + 12058, + 12059, + 12060, + 12061, + 12062, + 12063, + 12064, + 12065, + 12066, + 12067, + 12068, + 12069, + 12070, + 12071, + 12072, + 12073, + 12074, + 12075, + 12076, + 12077, + 12078, + 12079, + 12080, + 12081, + 12082, + 12083, + 12084, + 12085, + 12086, + 12087, + 12088, + 12089, + 12090, + 12091, + 12092, + 12093, + 12094, + 12095, + 12096, + 12097, + 12098, + 12099, + 12100, + 12101, + 12102, + 12103, + 12104, + 12105, + 12106, + 12107, + 12108, + 12109, + 12110, + 12111, + 12112, + 12113, + 12114, + 12115, + 12116, + 12117, + 12118, + 12119, + 12120, + 12121, + 12122, + 12123, + 12124, + 12125, + 12126, + 12127, + 12128, + 12129, + 12130, + 12131, + 12132, + 12133, + 12134, + 12135, + 12136, + 12137, + 12138, + 12139, + 12140, + 12141, + 12142, + 12143, + 12144, + 12145, + 12146, + 12147, + 12148, + 12149, + 12150, + 12151, + 12152, + 12153, + 12154, + 12155, + 12156, + 12157, + 12158, + 12159, + 12160, + 12161, + 12162, + 12163, + 12164, + 12165, + 12166, + 12167, + 12168, + 12169, + 12170, + 12171, + 12172, + 12173, + 12174, + 12175, + 12176, + 12177, + 12178, + 12179, + 12180, + 12181, + 12182, + 12183, + 12184, + 12185, + 12186, + 12187, + 12188, + 12189, + 12190, + 12191, + 12192, + 12193, + 12194, + 12195, + 12196, + 12197, + 12198, + 12199, + 12200, + 12201, + 12202, + 12203, + 12204, + 12205, + 12206, + 12207, + 12208, + 12209, + 12210, + 12211, + 12212, + 12213, + 12214, + 12215, + 12216, + 12217, + 12218, + 12219, + 12220, + 12221, + 12222, + 12223, + 12224, + 12225, + 12226, + 12227, + 12228, + 12229, + 12230, + 12231, + 12232, + 12233, + 12234, + 12235, + 12236, + 12237, + 12238, + 12239, + 12240, + 12241, + 12242, + 12243, + 12244, + 12245, + 12246, + 12247, + 12248, + 12249, + 12250, + 12251, + 12252, + 12253, + 12254, + 12255, + 12256, + 12257, + 12258, + 12259, + 12260, + 12261, + 12262, + 12263, + 12264, + 12265, + 12266, + 12267, + 12268, + 12269, + 12270, + 12271, + 12272, + 12273, + 12274, + 12275, + 12276, + 12277, + 12278, + 12279, + 12280, + 12281, + 12282, + 12283, + 12284, + 12285, + 12286, + 12287, + 12288, + 12289, + 12290, + 12291, + 12292, + 12293, + 12294, + 12295, + 12296, + 12297, + 12298, + 12299, + 12300, + 12301, + 12302, + 12303, + 12304, + 12305, + 12306, + 12307, + 12308, + 12309, + 12310, + 12311, + 12312, + 12313, + 12314, + 12315, + 12316, + 12317, + 12318, + 12319, + 12320, + 12321, + 12322, + 12323, + 12324, + 12325, + 12326, + 12327, + 12328, + 12329, + 12330, + 12331, + 12332, + 12333, + 12334, + 12335, + 12336, + 12337, + 12338, + 12339, + 12340, + 12341, + 12342, + 12343, + 12344, + 12345, + 12346, + 12347, + 12348, + 12349, + 12350, + 12351, + 12352, + 12353, + 12354, + 12355, + 12356, + 12357, + 12358, + 12359, + 12360, + 12361, + 12362, + 12363, + 12364, + 12365, + 12366, + 12367, + 12368, + 12369, + 12370, + 12371, + 12372, + 12373, + 12374, + 12375, + 12376, + 12377, + 12378, + 12379, + 12380, + 12381, + 12382, + 12383, + 12384, + 12385, + 12386, + 12387, + 12388, + 12389, + 12390, + 12391, + 12392, + 12393, + 12394, + 12395, + 12396, + 12397, + 12398, + 12399, + 12400, + 12401, + 12402, + 12403, + 12404, + 12405, + 12406, + 12407, + 12408, + 12409, + 12410, + 12411, + 12412, + 12413, + 12414, + 12415, + 12416, + 12417, + 12418, + 12419, + 12420, + 12421, + 12422, + 12423, + 12424, + 12425, + 12426, + 12427, + 12428, + 12429, + 12430, + 12431, + 12432, + 12433, + 12434, + 12435, + 12436, + 12437, + 12438, + 12439, + 12440, + 12441, + 12442, + 12443, + 12444, + 12445, + 12446, + 12447, + 12448, + 12449, + 12450, + 12451, + 12452, + 12453, + 12454, + 12455, + 12456, + 12457, + 12458, + 12459, + 12460, + 12461, + 12462, + 12463, + 12464, + 12465, + 12466, + 12467, + 12468, + 12469, + 12470, + 12471, + 12472, + 12473, + 12474, + 12475, + 12476, + 12477, + 12478, + 12479, + 12480, + 12481, + 12482, + 12483, + 12484, + 12485, + 12486, + 12487, + 12488, + 12489, + 12490, + 12491, + 12492, + 12493, + 12494, + 12495, + 12496, + 12497, + 12498, + 12499, + 12500, + 12501, + 12502, + 12503, + 12504, + 12505, + 12506, + 12507, + 12508, + 12509, + 12510, + 12511, + 12512, + 12513, + 12514, + 12515, + 12516, + 12517, + 12518, + 12519, + 12520, + 12521, + 12522, + 12523, + 12524, + 12525, + 12526, + 12527, + 12528, + 12529, + 12530, + 12531, + 12532, + 12533, + 12534, + 12535, + 12536, + 12537, + 12538, + 12539, + 12540, + 12541, + 12542, + 12543, + 12544, + 12545, + 12546, + 12547, + 12548, + 12549, + 12550, + 12551, + 12552, + 12553, + 12554, + 12555, + 12556, + 12557, + 12558, + 12559, + 12560, + 12561, + 12562, + 12563, + 12564, + 12565, + 12566, + 12567, + 12568, + 12569, + 12570, + 12571, + 12572, + 12573, + 12574, + 12575, + 12576, + 12577, + 12578, + 12579, + 12580, + 12581, + 12582, + 12583, + 12584, + 12585, + 12586, + 12587, + 12588, + 12589, + 12590, + 12591, + 12592, + 12593, + 12594, + 12595, + 12596, + 12597, + 12598, + 12599, + 12600, + 12601, + 12602, + 12603, + 12604, + 12605, + 12606, + 12607, + 12608, + 12609, + 12610, + 12611, + 12612, + 12613, + 12614, + 12615, + 12616, + 12617, + 12618, + 12619, + 12620, + 12621, + 12622, + 12623, + 12624, + 12625, + 12626, + 12627, + 12628, + 12629, + 12630, + 12631, + 12632, + 12633, + 12634, + 12635, + 12636, + 12637, + 12638, + 12639, + 12640, + 12641, + 12642, + 12643, + 12644, + 12645, + 12646, + 12647, + 12648, + 12649, + 12650, + 12651, + 12652, + 12653, + 12654, + 12655, + 12656, + 12657, + 12658, + 12659, + 12660, + 12661, + 12662, + 12663, + 12664, + 12665, + 12666, + 12667, + 12668, + 12669, + 12670, + 12671, + 12672, + 12673, + 12674, + 12675, + 12676, + 12677, + 12678, + 12679, + 12680, + 12681, + 12682, + 12683, + 12684, + 12685, + 12686, + 12687, + 12688, + 12689, + 12690, + 12691, + 12692, + 12693, + 12694, + 12695, + 12696, + 12697, + 12698, + 12699, + 12700, + 12701, + 12702, + 12703, + 12704, + 12705, + 12706, + 12707, + 12708, + 12709, + 12710, + 12711, + 12712, + 12713, + 12714, + 12715, + 12716, + 12717, + 12718, + 12719, + 12720, + 12721, + 12722, + 12723, + 12724, + 12725, + 12726, + 12727, + 12728, + 12729, + 12730, + 12731, + 12732, + 12733, + 12734, + 12735, + 12736, + 12737, + 12738, + 12739, + 12740, + 12741, + 12742, + 12743, + 12744, + 12745, + 12746, + 12747, + 12748, + 12749, + 12750, + 12751, + 12752, + 12753, + 12754, + 12755, + 12756, + 12757, + 12758, + 12759, + 12760, + 12761, + 12762, + 12763, + 12764, + 12765, + 12766, + 12767, + 12768, + 12769, + 12770, + 12771, + 12772, + 12773, + 12774, + 12775, + 12776, + 12777, + 12778, + 12779, + 12780, + 12781, + 12782, + 12783, + 12784, + 12785, + 12786, + 12787, + 12788, + 12789, + 12790, + 12791, + 12792, + 12793, + 12794, + 12795, + 12796, + 12797, + 12798, + 12799, + 12800, + 12801, + 12802, + 12803, + 12804, + 12805, + 12806, + 12807, + 12808, + 12809, + 12810, + 12811, + 12812, + 12813, + 12814, + 12815, + 12816, + 12817, + 12818, + 12819, + 12820, + 12821, + 12822, + 12823, + 12824, + 12825, + 12826, + 12827, + 12828, + 12829, + 12830, + 12831, + 12832, + 12833, + 12834, + 12835, + 12836, + 12837, + 12838, + 12839, + 12840, + 12841, + 12842, + 12843, + 12844, + 12845, + 12846, + 12847, + 12848, + 12849, + 12850, + 12851, + 12852, + 12853, + 12854, + 12855, + 12856, + 12857, + 12858, + 12859, + 12860, + 12861, + 12862, + 12863, + 12864, + 12865, + 12866, + 12867, + 12868, + 12869, + 12870, + 12871, + 12872, + 12873, + 12874, + 12875, + 12876, + 12877, + 12878, + 12879, + 12880, + 12881, + 12882, + 12883, + 12884, + 12885, + 12886, + 12887, + 12888, + 12889, + 12890, + 12891, + 12892, + 12893, + 12894, + 12895, + 12896, + 12897, + 12898, + 12899, + 12900, + 12901, + 12902, + 12903, + 12904, + 12905, + 12906, + 12907, + 12908, + 12909, + 12910, + 12911, + 12912, + 12913, + 12914, + 12915, + 12916, + 12917, + 12918, + 12919, + 12920, + 12921, + 12922, + 12923, + 12924, + 12925, + 12926, + 12927, + 12928, + 12929, + 12930, + 12931, + 12932, + 12933, + 12934, + 12935, + 12936, + 12937, + 12938, + 12939, + 12940, + 12941, + 12942, + 12943, + 12944, + 12945, + 12946, + 12947, + 12948, + 12949, + 12950, + 12951, + 12952, + 12953, + 12954, + 12955, + 12956, + 12957, + 12958, + 12959, + 12960, + 12961, + 12962, + 12963, + 12964, + 12965, + 12966, + 12967, + 12968, + 12969, + 12970, + 12971, + 12972, + 12973, + 12974, + 12975, + 12976, + 12977, + 12978, + 12979, + 12980, + 12981, + 12982, + 12983, + 12984, + 12985, + 12986, + 12987, + 12988, + 12989, + 12990, + 12991, + 12992, + 12993, + 12994, + 12995, + 12996, + 12997, + 12998, + 12999, + 13000, + 13001, + 13002, + 13003, + 13004, + 13005, + 13006, + 13007, + 13008, + 13009, + 13010, + 13011, + 13012, + 13013, + 13014, + 13015, + 13016, + 13017, + 13018, + 13019, + 13020, + 13021, + 13022, + 13023, + 13024, + 13025, + 13026, + 13027, + 13028, + 13029, + 13030, + 13031, + 13032, + 13033, + 13034, + 13035, + 13036, + 13037, + 13038, + 13039, + 13040, + 13041, + 13042, + 13043, + 13044, + 13045, + 13046, + 13047, + 13048, + 13049, + 13050, + 13051, + 13052, + 13053, + 13054, + 13055, + 13056, + 13057, + 13058, + 13059, + 13060, + 13061, + 13062, + 13063, + 13064, + 13065, + 13066, + 13067, + 13068, + 13069, + 13070, + 13071, + 13072, + 13073, + 13074, + 13075, + 13076, + 13077, + 13078, + 13079, + 13080, + 13081, + 13082, + 13083, + 13084, + 13085, + 13086, + 13087, + 13088, + 13089, + 13090, + 13091, + 13092, + 13093, + 13094, + 13095, + 13096, + 13097, + 13098, + 13099, + 13100, + 13101, + 13102, + 13103, + 13104, + 13105, + 13106, + 13107, + 13108, + 13109, + 13110, + 13111, + 13112, + 13113, + 13114, + 13115, + 13116, + 13117, + 13118, + 13119, + 13120, + 13121, + 13122, + 13123, + 13124, + 13125, + 13126, + 13127, + 13128, + 13129, + 13130, + 13131, + 13132, + 13133, + 13134, + 13135, + 13136, + 13137, + 13138, + 13139, + 13140, + 13141, + 13142, + 13143, + 13144, + 13145, + 13146, + 13147, + 13148, + 13149, + 13150, + 13151, + 13152, + 13153, + 13154, + 13155, + 13156, + 13157, + 13158, + 13159, + 13160, + 13161, + 13162, + 13163, + 13164, + 13165, + 13166, + 13167, + 13168, + 13169, + 13170, + 13171, + 13172, + 13173, + 13174, + 13175, + 13176, + 13177, + 13178, + 13179, + 13180, + 13181, + 13182, + 13183, + 13184, + 13185, + 13186, + 13187, + 13188, + 13189, + 13190, + 13191, + 13192, + 13193, + 13194, + 13195, + 13196, + 13197, + 13198, + 13199, + 13200, + 13201, + 13202, + 13203, + 13204, + 13205, + 13206, + 13207, + 13208, + 13209, + 13210, + 13211, + 13212, + 13213, + 13214, + 13215, + 13216, + 13217, + 13218, + 13219, + 13220, + 13221, + 13222, + 13223, + 13224, + 13225, + 13226, + 13227, + 13228, + 13229, + 13230, + 13231, + 13232, + 13233, + 13234, + 13235, + 13236, + 13237, + 13238, + 13239, + 13240, + 13241, + 13242, + 13243, + 13244, + 13245, + 13246, + 13247, + 13248, + 13249, + 13250, + 13251, + 13252, + 13253, + 13254, + 13255, + 13256, + 13257, + 13258, + 13259, + 13260, + 13261, + 13262, + 13263, + 13264, + 13265, + 13266, + 13267, + 13268, + 13269, + 13270, + 13271, + 13272, + 13273, + 13274, + 13275, + 13276, + 13277, + 13278, + 13279, + 13280, + 13281, + 13282, + 13283, + 13284, + 13285, + 13286, + 13287, + 13288, + 13289, + 13290, + 13291, + 13292, + 13293, + 13294, + 13295, + 13296, + 13297, + 13298, + 13299, + 13300, + 13301, + 13302, + 13303, + 13304, + 13305, + 13306, + 13307, + 13308, + 13309, + 13310, + 13311, + 13312, + 13313, + 13314, + 13315, + 13316, + 13317, + 13318, + 13319, + 13320, + 13321, + 13322, + 13323, + 13324, + 13325, + 13326, + 13327, + 13328, + 13329, + 13330, + 13331, + 13332, + 13333, + 13334, + 13335, + 13336, + 13337, + 13338, + 13339, + 13340, + 13341, + 13342, + 13343, + 13344, + 13345, + 13346, + 13347, + 13348, + 13349, + 13350, + 13351, + 13352, + 13353, + 13354, + 13355, + 13356, + 13357, + 13358, + 13359, + 13360, + 13361, + 13362, + 13363, + 13364, + 13365, + 13366, + 13367, + 13368, + 13369, + 13370, + 13371, + 13372, + 13373, + 13374, + 13375, + 13376, + 13377, + 13378, + 13379, + 13380, + 13381, + 13382, + 13383, + 13384, + 13385, + 13386, + 13387, + 13388, + 13389, + 13390, + 13391, + 13392, + 13393, + 13394, + 13395, + 13396, + 13397, + 13398, + 13399, + 13400, + 13401, + 13402, + 13403, + 13404, + 13405, + 13406, + 13407, + 13408, + 13409, + 13410, + 13411, + 13412, + 13413, + 13414, + 13415, + 13416, + 13417, + 13418, + 13419, + 13420, + 13421, + 13422, + 13423, + 13424, + 13425, + 13426, + 13427, + 13428, + 13429, + 13430, + 13431, + 13432, + 13433, + 13434, + 13435, + 13436, + 13437, + 13438, + 13439, + 13440, + 13441, + 13442, + 13443, + 13444, + 13445, + 13446, + 13447, + 13448, + 13449, + 13450, + 13451, + 13452, + 13453, + 13454, + 13455, + 13456, + 13457, + 13458, + 13459, + 13460, + 13461, + 13462, + 13463, + 13464, + 13465, + 13466, + 13467, + 13468, + 13469, + 13470, + 13471, + 13472, + 13473, + 13474, + 13475, + 13476, + 13477, + 13478, + 13479, + 13480, + 13481, + 13482, + 13483, + 13484, + 13485, + 13486, + 13487, + 13488, + 13489, + 13490, + 13491, + 13492, + 13493, + 13494, + 13495, + 13496, + 13497, + 13498, + 13499, + 13500, + 13501, + 13502, + 13503, + 13504, + 13505, + 13506, + 13507, + 13508, + 13509, + 13510, + 13511, + 13512, + 13513, + 13514, + 13515, + 13516, + 13517, + 13518, + 13519, + 13520, + 13521, + 13522, + 13523, + 13524, + 13525, + 13526, + 13527, + 13528, + 13529, + 13530, + 13531, + 13532, + 13533, + 13534, + 13535, + 13536, + 13537, + 13538, + 13539, + 13540, + 13541, + 13542, + 13543, + 13544, + 13545, + 13546, + 13547, + 13548, + 13549, + 13550, + 13551, + 13552, + 13553, + 13554, + 13555, + 13556, + 13557, + 13558, + 13559, + 13560, + 13561, + 13562, + 13563, + 13564, + 13565, + 13566, + 13567, + 13568, + 13569, + 13570, + 13571, + 13572, + 13573, + 13574, + 13575, + 13576, + 13577, + 13578, + 13579, + 13580, + 13581, + 13582, + 13583, + 13584, + 13585, + 13586, + 13587, + 13588, + 13589, + 13590, + 13591, + 13592, + 13593, + 13594, + 13595, + 13596, + 13597, + 13598, + 13599, + 13600, + 13601, + 13602, + 13603, + 13604, + 13605, + 13606, + 13607, + 13608, + 13609, + 13610, + 13611, + 13612, + 13613, + 13614, + 13615, + 13616, + 13617, + 13618, + 13619, + 13620, + 13621, + 13622, + 13623, + 13624, + 13625, + 13626, + 13627, + 13628, + 13629, + 13630, + 13631, + 13632, + 13633, + 13634, + 13635, + 13636, + 13637, + 13638, + 13639, + 13640, + 13641, + 13642, + 13643, + 13644, + 13645, + 13646, + 13647, + 13648, + 13649, + 13650, + 13651, + 13652, + 13653, + 13654, + 13655, + 13656, + 13657, + 13658, + 13659, + 13660, + 13661, + 13662, + 13663, + 13664, + 13665, + 13666, + 13667, + 13668, + 13669, + 13670, + 13671, + 13672, + 13673, + 13674, + 13675, + 13676, + 13677, + 13678, + 13679, + 13680, + 13681, + 13682, + 13683, + 13684, + 13685, + 13686, + 13687, + 13688, + 13689, + 13690, + 13691, + 13692, + 13693, + 13694, + 13695, + 13696, + 13697, + 13698, + 13699, + 13700, + 13701, + 13702, + 13703, + 13704, + 13705, + 13706, + 13707, + 13708, + 13709, + 13710, + 13711, + 13712, + 13713, + 13714, + 13715, + 13716, + 13717, + 13718, + 13719, + 13720, + 13721, + 13722, + 13723, + 13724, + 13725, + 13726, + 13727, + 13728, + 13729, + 13730, + 13731, + 13732, + 13733, + 13734, + 13735, + 13736, + 13737, + 13738, + 13739, + 13740, + 13741, + 13742, + 13743, + 13744, + 13745, + 13746, + 13747, + 13748, + 13749, + 13750, + 13751, + 13752, + 13753, + 13754, + 13755, + 13756, + 13757, + 13758, + 13759, + 13760, + 13761, + 13762, + 13763, + 13764, + 13765, + 13766, + 13767, + 13768, + 13769, + 13770, + 13771, + 13772, + 13773, + 13774, + 13775, + 13776, + 13777, + 13778, + 13779, + 13780, + 13781, + 13782, + 13783, + 13784, + 13785, + 13786, + 13787, + 13788, + 13789, + 13790, + 13791, + 13792, + 13793, + 13794, + 13795, + 13796, + 13797, + 13798, + 13799, + 13800, + 13801, + 13802, + 13803, + 13804, + 13805, + 13806, + 13807, + 13808, + 13809, + 13810, + 13811, + 13812, + 13813, + 13814, + 13815, + 13816, + 13817, + 13818, + 13819, + 13820, + 13821, + 13822, + 13823, + 13824, + 13825, + 13826, + 13827, + 13828, + 13829, + 13830, + 13831, + 13832, + 13833, + 13834, + 13835, + 13836, + 13837, + 13838, + 13839, + 13840, + 13841, + 13842, + 13843, + 13844, + 13845, + 13846, + 13847, + 13848, + 13849, + 13850, + 13851, + 13852, + 13853, + 13854, + 13855, + 13856, + 13857, + 13858, + 13859, + 13860, + 13861, + 13862, + 13863, + 13864, + 13865, + 13866, + 13867, + 13868, + 13869, + 13870, + 13871, + 13872, + 13873, + 13874, + 13875, + 13876, + 13877, + 13878, + 13879, + 13880, + 13881, + 13882, + 13883, + 13884, + 13885, + 13886, + 13887, + 13888, + 13889, + 13890, + 13891, + 13892, + 13893, + 13894, + 13895, + 13896, + 13897, + 13898, + 13899, + 13900, + 13901, + 13902, + 13903, + 13904, + 13905, + 13906, + 13907, + 13908, + 13909, + 13910, + 13911, + 13912, + 13913, + 13914, + 13915, + 13916, + 13917, + 13918, + 13919, + 13920, + 13921, + 13922, + 13923, + 13924, + 13925, + 13926, + 13927, + 13928, + 13929, + 13930, + 13931, + 13932, + 13933, + 13934, + 13935, + 13936, + 13937, + 13938, + 13939, + 13940, + 13941, + 13942, + 13943, + 13944, + 13945, + 13946, + 13947, + 13948, + 13949, + 13950, + 13951, + 13952, + 13953, + 13954, + 13955, + 13956, + 13957, + 13958, + 13959, + 13960, + 13961, + 13962, + 13963, + 13964, + 13965, + 13966, + 13967, + 13968, + 13969, + 13970, + 13971, + 13972, + 13973, + 13974, + 13975, + 13976, + 13977, + 13978, + 13979, + 13980, + 13981, + 13982, + 13983, + 13984, + 13985, + 13986, + 13987, + 13988, + 13989, + 13990, + 13991, + 13992, + 13993, + 13994, + 13995, + 13996, + 13997, + 13998, + 13999, + 14000, + 14001, + 14002, + 14003, + 14004, + 14005, + 14006, + 14007, + 14008, + 14009, + 14010, + 14011, + 14012, + 14013, + 14014, + 14015, + 14016, + 14017, + 14018, + 14019, + 14020, + 14021, + 14022, + 14023, + 14024, + 14025, + 14026, + 14027, + 14028, + 14029, + 14030, + 14031, + 14032, + 14033, + 14034, + 14035, + 14036, + 14037, + 14038, + 14039, + 14040, + 14041, + 14042, + 14043, + 14044, + 14045, + 14046, + 14047, + 14048, + 14049, + 14050, + 14051, + 14052, + 14053, + 14054, + 14055, + 14056, + 14057, + 14058, + 14059, + 14060, + 14061, + 14062, + 14063, + 14064, + 14065, + 14066, + 14067, + 14068, + 14069, + 14070, + 14071, + 14072, + 14073, + 14074, + 14075, + 14076, + 14077, + 14078, + 14079, + 14080, + 14081, + 14082, + 14083, + 14084, + 14085, + 14086, + 14087, + 14088, + 14089, + 14090, + 14091, + 14092, + 14093, + 14094, + 14095, + 14096, + 14097, + 14098, + 14099, + 14100, + 14101, + 14102, + 14103, + 14104, + 14105, + 14106, + 14107, + 14108, + 14109, + 14110, + 14111, + 14112, + 14113, + 14114, + 14115, + 14116, + 14117, + 14118, + 14119, + 14120, + 14121, + 14122, + 14123, + 14124, + 14125, + 14126, + 14127, + 14128, + 14129, + 14130, + 14131, + 14132, + 14133, + 14134, + 14135, + 14136, + 14137, + 14138, + 14139, + 14140, + 14141, + 14142, + 14143, + 14144, + 14145, + 14146, + 14147, + 14148, + 14149, + 14150, + 14151, + 14152, + 14153, + 14154, + 14155, + 14156, + 14157, + 14158, + 14159, + 14160, + 14161, + 14162, + 14163, + 14164, + 14165, + 14166, + 14167, + 14168, + 14169, + 14170, + 14171, + 14172, + 14173, + 14174, + 14175, + 14176, + 14177, + 14178, + 14179, + 14180, + 14181, + 14182, + 14183, + 14184, + 14185, + 14186, + 14187, + 14188, + 14189, + 14190, + 14191, + 14192, + 14193, + 14194, + 14195, + 14196, + 14197, + 14198, + 14199, + 14200, + 14201, + 14202, + 14203, + 14204, + 14205, + 14206, + 14207, + 14208, + 14209, + 14210, + 14211, + 14212, + 14213, + 14214, + 14215, + 14216, + 14217, + 14218, + 14219, + 14220, + 14221, + 14222, + 14223, + 14224, + 14225, + 14226, + 14227, + 14228, + 14229, + 14230, + 14231, + 14232, + 14233, + 14234, + 14235, + 14236, + 14237, + 14238, + 14239, + 14240, + 14241, + 14242, + 14243, + 14244, + 14245, + 14246, + 14247, + 14248, + 14249, + 14250, + 14251, + 14252, + 14253, + 14254, + 14255, + 14256, + 14257, + 14258, + 14259, + 14260, + 14261, + 14262, + 14263, + 14264, + 14265, + 14266, + 14267, + 14268, + 14269, + 14270, + 14271, + 14272, + 14273, + 14274, + 14275, + 14276, + 14277, + 14278, + 14279, + 14280, + 14281, + 14282, + 14283, + 14284, + 14285, + 14286, + 14287, + 14288, + 14289, + 14290, + 14291, + 14292, + 14293, + 14294, + 14295, + 14296, + 14297, + 14298, + 14299, + 14300, + 14301, + 14302, + 14303, + 14304, + 14305, + 14306, + 14307, + 14308, + 14309, + 14310, + 14311, + 14312, + 14313, + 14314, + 14315, + 14316, + 14317, + 14318, + 14319, + 14320, + 14321, + 14322, + 14323, + 14324, + 14325, + 14326, + 14327, + 14328, + 14329, + 14330, + 14331, + 14332, + 14333, + 14334, + 14335, + 14336, + 14337, + 14338, + 14339, + 14340, + 14341, + 14342, + 14343, + 14344, + 14345, + 14346, + 14347, + 14348, + 14349, + 14350, + 14351, + 14352, + 14353, + 14354, + 14355, + 14356, + 14357, + 14358, + 14359, + 14360, + 14361, + 14362, + 14363, + 14364, + 14365, + 14366, + 14367, + 14368, + 14369, + 14370, + 14371, + 14372, + 14373, + 14374, + 14375, + 14376, + 14377, + 14378, + 14379, + 14380, + 14381, + 14382, + 14383, + 14384, + 14385, + 14386, + 14387, + 14388, + 14389, + 14390, + 14391, + 14392, + 14393, + 14394, + 14395, + 14396, + 14397, + 14398, + 14399, + 14400, + 14401, + 14402, + 14403, + 14404, + 14405, + 14406, + 14407, + 14408, + 14409, + 14410, + 14411, + 14412, + 14413, + 14414, + 14415, + 14416, + 14417, + 14418, + 14419, + 14420, + 14421, + 14422, + 14423, + 14424, + 14425, + 14426, + 14427, + 14428, + 14429, + 14430, + 14431, + 14432, + 14433, + 14434, + 14435, + 14436, + 14437, + 14438, + 14439, + 14440, + 14441, + 14442, + 14443, + 14444, + 14445, + 14446, + 14447, + 14448, + 14449, + 14450, + 14451, + 14452, + 14453, + 14454, + 14455, + 14456, + 14457, + 14458, + 14459, + 14460, + 14461, + 14462, + 14463, + 14464, + 14465, + 14466, + 14467, + 14468, + 14469, + 14470, + 14471, + 14472, + 14473, + 14474, + 14475, + 14476, + 14477, + 14478, + 14479, + 14480, + 14481, + 14482, + 14483, + 14484, + 14485, + 14486, + 14487, + 14488, + 14489, + 14490, + 14491, + 14492, + 14493, + 14494, + 14495, + 14496, + 14497, + 14498, + 14499, + 14500, + 14501, + 14502, + 14503, + 14504, + 14505, + 14506, + 14507, + 14508, + 14509, + 14510, + 14511, + 14512, + 14513, + 14514, + 14515, + 14516, + 14517, + 14518, + 14519, + 14520, + 14521, + 14522, + 14523, + 14524, + 14525, + 14526, + 14527, + 14528, + 14529, + 14530, + 14531, + 14532, + 14533, + 14534, + 14535, + 14536, + 14537, + 14538, + 14539, + 14540, + 14541, + 14542, + 14543, + 14544, + 14545, + 14546, + 14547, + 14548, + 14549, + 14550, + 14551, + 14552, + 14553, + 14554, + 14555, + 14556, + 14557, + 14558, + 14559, + 14560, + 14561, + 14562, + 14563, + 14564, + 14565, + 14566, + 14567, + 14568, + 14569, + 14570, + 14571, + 14572, + 14573, + 14574, + 14575, + 14576, + 14577, + 14578, + 14579, + 14580, + 14581, + 14582, + 14583, + 14584, + 14585, + 14586, + 14587, + 14588, + 14589, + 14590, + 14591, + 14592, + 14593, + 14594, + 14595, + 14596, + 14597, + 14598, + 14599, + 14600, + 14601, + 14602, + 14603, + 14604, + 14605, + 14606, + 14607, + 14608, + 14609, + 14610, + 14611, + 14612, + 14613, + 14614, + 14615, + 14616, + 14617, + 14618, + 14619, + 14620, + 14621, + 14622, + 14623, + 14624, + 14625, + 14626, + 14627, + 14628, + 14629, + 14630, + 14631, + 14632, + 14633, + 14634, + 14635, + 14636, + 14637, + 14638, + 14639, + 14640, + 14641, + 14642, + 14643, + 14644, + 14645, + 14646, + 14647, + 14648, + 14649, + 14650, + 14651, + 14652, + 14653, + 14654, + 14655, + 14656, + 14657, + 14658, + 14659, + 14660, + 14661, + 14662, + 14663, + 14664, + 14665, + 14666, + 14667, + 14668, + 14669, + 14670, + 14671, + 14672, + 14673, + 14674, + 14675, + 14676, + 14677, + 14678, + 14679, + 14680, + 14681, + 14682, + 14683, + 14684, + 14685, + 14686, + 14687, + 14688, + 14689, + 14690, + 14691, + 14692, + 14693, + 14694, + 14695, + 14696, + 14697, + 14698, + 14699, + 14700, + 14701, + 14702, + 14703, + 14704, + 14705, + 14706, + 14707, + 14708, + 14709, + 14710, + 14711, + 14712, + 14713, + 14714, + 14715, + 14716, + 14717, + 14718, + 14719, + 14720, + 14721, + 14722, + 14723, + 14724, + 14725, + 14726, + 14727, + 14728, + 14729, + 14730, + 14731, + 14732, + 14733, + 14734, + 14735, + 14736, + 14737, + 14738, + 14739, + 14740, + 14741, + 14742, + 14743, + 14744, + 14745, + 14746, + 14747, + 14748, + 14749, + 14750, + 14751, + 14752, + 14753, + 14754, + 14755, + 14756, + 14757, + 14758, + 14759, + 14760, + 14761, + 14762, + 14763, + 14764, + 14765, + 14766, + 14767, + 14768, + 14769, + 14770, + 14771, + 14772, + 14773, + 14774, + 14775, + 14776, + 14777, + 14778, + 14779, + 14780, + 14781, + 14782, + 14783, + 14784, + 14785, + 14786, + 14787, + 14788, + 14789, + 14790, + 14791, + 14792, + 14793, + 14794, + 14795, + 14796, + 14797, + 14798, + 14799, + 14800, + 14801, + 14802, + 14803, + 14804, + 14805, + 14806, + 14807, + 14808, + 14809, + 14810, + 14811, + 14812, + 14813, + 14814, + 14815, + 14816, + 14817, + 14818, + 14819, + 14820, + 14821, + 14822, + 14823, + 14824, + 14825, + 14826, + 14827, + 14828, + 14829, + 14830, + 14831, + 14832, + 14833, + 14834, + 14835, + 14836, + 14837, + 14838, + 14839, + 14840, + 14841, + 14842, + 14843, + 14844, + 14845, + 14846, + 14847, + 14848, + 14849, + 14850, + 14851, + 14852, + 14853, + 14854, + 14855, + 14856, + 14857, + 14858, + 14859, + 14860, + 14861, + 14862, + 14863, + 14864, + 14865, + 14866, + 14867, + 14868, + 14869, + 14870, + 14871, + 14872, + 14873, + 14874, + 14875, + 14876, + 14877, + 14878, + 14879, + 14880, + 14881, + 14882, + 14883, + 14884, + 14885, + 14886, + 14887, + 14888, + 14889, + 14890, + 14891, + 14892, + 14893, + 14894, + 14895, + 14896, + 14897, + 14898, + 14899, + 14900, + 14901, + 14902, + 14903, + 14904, + 14905, + 14906, + 14907, + 14908, + 14909, + 14910, + 14911, + 14912, + 14913, + 14914, + 14915, + 14916, + 14917, + 14918, + 14919, + 14920, + 14921, + 14922, + 14923, + 14924, + 14925, + 14926, + 14927, + 14928, + 14929, + 14930, + 14931, + 14932, + 14933, + 14934, + 14935, + 14936, + 14937, + 14938, + 14939, + 14940, + 14941, + 14942, + 14943, + 14944, + 14945, + 14946, + 14947, + 14948, + 14949, + 14950, + 14951, + 14952, + 14953, + 14954, + 14955, + 14956, + 14957, + 14958, + 14959, + 14960, + 14961, + 14962, + 14963, + 14964, + 14965, + 14966, + 14967, + 14968, + 14969, + 14970, + 14971, + 14972, + 14973, + 14974, + 14975, + 14976, + 14977, + 14978, + 14979, + 14980, + 14981, + 14982, + 14983, + 14984, + 14985, + 14986, + 14987, + 14988, + 14989, + 14990, + 14991, + 14992, + 14993, + 14994, + 14995, + 14996, + 14997, + 14998, + 14999, + 15000, + 15001, + 15002, + 15003, + 15004, + 15005, + 15006, + 15007, + 15008, + 15009, + 15010, + 15011, + 15012, + 15013, + 15014, + 15015, + 15016, + 15017, + 15018, + 15019, + 15020, + 15021, + 15022, + 15023, + 15024, + 15025, + 15026, + 15027, + 15028, + 15029, + 15030, + 15031, + 15032, + 15033, + 15034, + 15035, + 15036, + 15037, + 15038, + 15039, + 15040, + 15041, + 15042, + 15043, + 15044, + 15045, + 15046, + 15047, + 15048, + 15049, + 15050, + 15051, + 15052, + 15053, + 15054, + 15055, + 15056, + 15057, + 15058, + 15059, + 15060, + 15061, + 15062, + 15063, + 15064, + 15065, + 15066, + 15067, + 15068, + 15069, + 15070, + 15071, + 15072, + 15073, + 15074, + 15075, + 15076, + 15077, + 15078, + 15079, + 15080, + 15081, + 15082, + 15083, + 15084, + 15085, + 15086, + 15087, + 15088, + 15089, + 15090, + 15091, + 15092, + 15093, + 15094, + 15095, + 15096, + 15097, + 15098, + 15099, + 15100, + 15101, + 15102, + 15103, + 15104, + 15105, + 15106, + 15107, + 15108, + 15109, + 15110, + 15111, + 15112, + 15113, + 15114, + 15115, + 15116, + 15117, + 15118, + 15119, + 15120, + 15121, + 15122, + 15123, + 15124, + 15125, + 15126, + 15127, + 15128, + 15129, + 15130, + 15131, + 15132, + 15133, + 15134, + 15135, + 15136, + 15137, + 15138, + 15139, + 15140, + 15141, + 15142, + 15143, + 15144, + 15145, + 15146, + 15147, + 15148, + 15149, + 15150, + 15151, + 15152, + 15153, + 15154, + 15155, + 15156, + 15157, + 15158, + 15159, + 15160, + 15161, + 15162, + 15163, + 15164, + 15165, + 15166, + 15167, + 15168, + 15169, + 15170, + 15171, + 15172, + 15173, + 15174, + 15175, + 15176, + 15177, + 15178, + 15179, + 15180, + 15181, + 15182, + 15183, + 15184, + 15185, + 15186, + 15187, + 15188, + 15189, + 15190, + 15191, + 15192, + 15193, + 15194, + 15195, + 15196, + 15197, + 15198, + 15199, + 15200, + 15201, + 15202, + 15203, + 15204, + 15205, + 15206, + 15207, + 15208, + 15209, + 15210, + 15211, + 15212, + 15213, + 15214, + 15215, + 15216, + 15217, + 15218, + 15219, + 15220, + 15221, + 15222, + 15223, + 15224, + 15225, + 15226, + 15227, + 15228, + 15229, + 15230, + 15231, + 15232, + 15233, + 15234, + 15235, + 15236, + 15237, + 15238, + 15239, + 15240, + 15241, + 15242, + 15243, + 15244, + 15245, + 15246, + 15247, + 15248, + 15249, + 15250, + 15251, + 15252, + 15253, + 15254, + 15255, + 15256, + 15257, + 15258, + 15259, + 15260, + 15261, + 15262, + 15263, + 15264, + 15265, + 15266, + 15267, + 15268, + 15269, + 15270, + 15271, + 15272, + 15273, + 15274, + 15275, + 15276, + 15277, + 15278, + 15279, + 15280, + 15281, + 15282, + 15283, + 15284, + 15285, + 15286, + 15287, + 15288, + 15289, + 15290, + 15291, + 15292, + 15293, + 15294, + 15295, + 15296, + 15297, + 15298, + 15299, + 15300, + 15301, + 15302, + 15303, + 15304, + 15305, + 15306, + 15307, + 15308, + 15309, + 15310, + 15311, + 15312, + 15313, + 15314, + 15315, + 15316, + 15317, + 15318, + 15319, + 15320, + 15321, + 15322, + 15323, + 15324, + 15325, + 15326, + 15327, + 15328, + 15329, + 15330, + 15331, + 15332, + 15333, + 15334, + 15335, + 15336, + 15337, + 15338, + 15339, + 15340, + 15341, + 15342, + 15343, + 15344, + 15345, + 15346, + 15347, + 15348, + 15349, + 15350, + 15351, + 15352, + 15353, + 15354, + 15355, + 15356, + 15357, + 15358, + 15359, + 15360, + 15361, + 15362, + 15363, + 15364, + 15365, + 15366, + 15367, + 15368, + 15369, + 15370, + 15371, + 15372, + 15373, + 15374, + 15375, + 15376, + 15377, + 15378, + 15379, + 15380, + 15381, + 15382, + 15383, + 15384, + 15385, + 15386, + 15387, + 15388, + 15389, + 15390, + 15391, + 15392, + 15393, + 15394, + 15395, + 15396, + 15397, + 15398, + 15399, + 15400, + 15401, + 15402, + 15403, + 15404, + 15405, + 15406, + 15407, + 15408, + 15409, + 15410, + 15411, + 15412, + 15413, + 15414, + 15415, + 15416, + 15417, + 15418, + 15419, + 15420, + 15421, + 15422, + 15423, + 15424, + 15425, + 15426, + 15427, + 15428, + 15429, + 15430, + 15431, + 15432, + 15433, + 15434, + 15435, + 15436, + 15437, + 15438, + 15439, + 15440, + 15441, + 15442, + 15443, + 15444, + 15445, + 15446, + 15447, + 15448, + 15449, + 15450, + 15451, + 15452, + 15453, + 15454, + 15455, + 15456, + 15457, + 15458, + 15459, + 15460, + 15461, + 15462, + 15463, + 15464, + 15465, + 15466, + 15467, + 15468, + 15469, + 15470, + 15471, + 15472, + 15473, + 15474, + 15475, + 15476, + 15477, + 15478, + 15479, + 15480, + 15481, + 15482, + 15483, + 15484, + 15485, + 15486, + 15487, + 15488, + 15489, + 15490, + 15491, + 15492, + 15493, + 15494, + 15495, + 15496, + 15497, + 15498, + 15499, + 15500, + 15501, + 15502, + 15503, + 15504, + 15505, + 15506, + 15507, + 15508, + 15509, + 15510, + 15511, + 15512, + 15513, + 15514, + 15515, + 15516, + 15517, + 15518, + 15519, + 15520, + 15521, + 15522, + 15523, + 15524, + 15525, + 15526, + 15527, + 15528, + 15529, + 15530, + 15531, + 15532, + 15533, + 15534, + 15535, + 15536, + 15537, + 15538, + 15539, + 15540, + 15541, + 15542, + 15543, + 15544, + 15545, + 15546, + 15547, + 15548, + 15549, + 15550, + 15551, + 15552, + 15553, + 15554, + 15555, + 15556, + 15557, + 15558, + 15559, + 15560, + 15561, + 15562, + 15563, + 15564, + 15565, + 15566, + 15567, + 15568, + 15569, + 15570, + 15571, + 15572, + 15573, + 15574, + 15575, + 15576, + 15577, + 15578, + 15579, + 15580, + 15581, + 15582, + 15583, + 15584, + 15585, + 15586, + 15587, + 15588, + 15589, + 15590, + 15591, + 15592, + 15593, + 15594, + 15595, + 15596, + 15597, + 15598, + 15599, + 15600, + 15601, + 15602, + 15603, + 15604, + 15605, + 15606, + 15607, + 15608, + 15609, + 15610, + 15611, + 15612, + 15613, + 15614, + 15615, + 15616, + 15617, + 15618, + 15619, + 15620, + 15621, + 15622, + 15623, + 15624, + 15625, + 15626, + 15627, + 15628, + 15629, + 15630, + 15631, + 15632, + 15633, + 15634, + 15635, + 15636, + 15637, + 15638, + 15639, + 15640, + 15641, + 15642, + 15643, + 15644, + 15645, + 15646, + 15647, + 15648, + 15649, + 15650, + 15651, + 15652, + 15653, + 15654, + 15655, + 15656, + 15657, + 15658, + 15659, + 15660, + 15661, + 15662, + 15663, + 15664, + 15665, + 15666, + 15667, + 15668, + 15669, + 15670, + 15671, + 15672, + 15673, + 15674, + 15675, + 15676, + 15677, + 15678, + 15679, + 15680, + 15681, + 15682, + 15683, + 15684, + 15685, + 15686, + 15687, + 15688, + 15689, + 15690, + 15691, + 15692, + 15693, + 15694, + 15695, + 15696, + 15697, + 15698, + 15699, + 15700, + 15701, + 15702, + 15703, + 15704, + 15705, + 15706, + 15707, + 15708, + 15709, + 15710, + 15711, + 15712, + 15713, + 15714, + 15715, + 15716, + 15717, + 15718, + 15719, + 15720, + 15721, + 15722, + 15723, + 15724, + 15725, + 15726, + 15727, + 15728, + 15729, + 15730, + 15731, + 15732, + 15733, + 15734, + 15735, + 15736, + 15737, + 15738, + 15739, + 15740, + 15741, + 15742, + 15743, + 15744, + 15745, + 15746, + 15747, + 15748, + 15749, + 15750, + 15751, + 15752, + 15753, + 15754, + 15755, + 15756, + 15757, + 15758, + 15759, + 15760, + 15761, + 15762, + 15763, + 15764, + 15765, + 15766, + 15767, + 15768, + 15769, + 15770, + 15771, + 15772, + 15773, + 15774, + 15775, + 15776, + 15777, + 15778, + 15779, + 15780, + 15781, + 15782, + 15783, + 15784, + 15785, + 15786, + 15787, + 15788, + 15789, + 15790, + 15791, + 15792, + 15793, + 15794, + 15795, + 15796, + 15797, + 15798, + 15799, + 15800, + 15801, + 15802, + 15803, + 15804, + 15805, + 15806, + 15807, + 15808, + 15809, + 15810, + 15811, + 15812, + 15813, + 15814, + 15815, + 15816, + 15817, + 15818, + 15819, + 15820, + 15821, + 15822, + 15823, + 15824, + 15825, + 15826, + 15827, + 15828, + 15829, + 15830, + 15831, + 15832, + 15833, + 15834, + 15835, + 15836, + 15837, + 15838, + 15839, + 15840, + 15841, + 15842, + 15843, + 15844, + 15845, + 15846, + 15847, + 15848, + 15849, + 15850, + 15851, + 15852, + 15853, + 15854, + 15855, + 15856, + 15857, + 15858, + 15859, + 15860, + 15861, + 15862, + 15863, + 15864, + 15865, + 15866, + 15867, + 15868, + 15869, + 15870, + 15871, + 15872, + 15873, + 15874, + 15875, + 15876, + 15877, + 15878, + 15879, + 15880, + 15881, + 15882, + 15883, + 15884, + 15885, + 15886, + 15887, + 15888, + 15889, + 15890, + 15891, + 15892, + 15893, + 15894, + 15895, + 15896, + 15897, + 15898, + 15899, + 15900, + 15901, + 15902, + 15903, + 15904, + 15905, + 15906, + 15907, + 15908, + 15909, + 15910, + 15911, + 15912, + 15913, + 15914, + 15915, + 15916, + 15917, + 15918, + 15919, + 15920, + 15921, + 15922, + 15923, + 15924, + 15925, + 15926, + 15927, + 15928, + 15929, + 15930, + 15931, + 15932, + 15933, + 15934, + 15935, + 15936, + 15937, + 15938, + 15939, + 15940, + 15941, + 15942, + 15943, + 15944, + 15945, + 15946, + 15947, + 15948, + 15949, + 15950, + 15951, + 15952, + 15953, + 15954, + 15955, + 15956, + 15957, + 15958, + 15959, + 15960, + 15961, + 15962, + 15963, + 15964, + 15965, + 15966, + 15967, + 15968, + 15969, + 15970, + 15971, + 15972, + 15973, + 15974, + 15975, + 15976, + 15977, + 15978, + 15979, + 15980, + 15981, + 15982, + 15983, + 15984, + 15985, + 15986, + 15987, + 15988, + 15989, + 15990, + 15991, + 15992, + 15993, + 15994, + 15995, + 15996, + 15997, + 15998, + 15999, + 16000, + 16001, + 16002, + 16003, + 16004, + 16005, + 16006, + 16007, + 16008, + 16009, + 16010, + 16011, + 16012, + 16013, + 16014, + 16015, + 16016, + 16017, + 16018, + 16019, + 16020, + 16021, + 16022, + 16023, + 16024, + 16025, + 16026, + 16027, + 16028, + 16029, + 16030, + 16031, + 16032, + 16033, + 16034, + 16035, + 16036, + 16037, + 16038, + 16039, + 16040, + 16041, + 16042, + 16043, + 16044, + 16045, + 16046, + 16047, + 16048, + 16049, + 16050, + 16051, + 16052, + 16053, + 16054, + 16055, + 16056, + 16057, + 16058, + 16059, + 16060, + 16061, + 16062, + 16063, + 16064, + 16065, + 16066, + 16067, + 16068, + 16069, + 16070, + 16071, + 16072, + 16073, + 16074, + 16075, + 16076, + 16077, + 16078, + 16079, + 16080, + 16081, + 16082, + 16083, + 16084, + 16085, + 16086, + 16087, + 16088, + 16089, + 16090, + 16091, + 16092, + 16093, + 16094, + 16095, + 16096, + 16097, + 16098, + 16099, + 16100, + 16101, + 16102, + 16103, + 16104, + 16105, + 16106, + 16107, + 16108, + 16109, + 16110, + 16111, + 16112, + 16113, + 16114, + 16115, + 16116, + 16117, + 16118, + 16119, + 16120, + 16121, + 16122, + 16123, + 16124, + 16125, + 16126, + 16127, + 16128, + 16129, + 16130, + 16131, + 16132, + 16133, + 16134, + 16135, + 16136, + 16137, + 16138, + 16139, + 16140, + 16141, + 16142, + 16143, + 16144, + 16145, + 16146, + 16147, + 16148, + 16149, + 16150, + 16151, + 16152, + 16153, + 16154, + 16155, + 16156, + 16157, + 16158, + 16159, + 16160, + 16161, + 16162, + 16163, + 16164, + 16165, + 16166, + 16167, + 16168, + 16169, + 16170, + 16171, + 16172, + 16173, + 16174, + 16175, + 16176, + 16177, + 16178, + 16179, + 16180, + 16181, + 16182, + 16183, + 16184, + 16185, + 16186, + 16187, + 16188, + 16189, + 16190, + 16191, + 16192, + 16193, + 16194, + 16195, + 16196, + 16197, + 16198, + 16199, + 16200, + 16201, + 16202, + 16203, + 16204, + 16205, + 16206, + 16207, + 16208, + 16209, + 16210, + 16211, + 16212, + 16213, + 16214, + 16215, + 16216, + 16217, + 16218, + 16219, + 16220, + 16221, + 16222, + 16223, + 16224, + 16225, + 16226, + 16227, + 16228, + 16229, + 16230, + 16231, + 16232, + 16233, + 16234, + 16235, + 16236, + 16237, + 16238, + 16239, + 16240, + 16241, + 16242, + 16243, + 16244, + 16245, + 16246, + 16247, + 16248, + 16249, + 16250, + 16251, + 16252, + 16253, + 16254, + 16255, + 16256, + 16257, + 16258, + 16259, + 16260, + 16261, + 16262, + 16263, + 16264, + 16265, + 16266, + 16267, + 16268, + 16269, + 16270, + 16271, + 16272, + 16273, + 16274, + 16275, + 16276, + 16277, + 16278, + 16279, + 16280, + 16281, + 16282, + 16283, + 16284, + 16285, + 16286, + 16287, + 16288, + 16289, + 16290, + 16291, + 16292, + 16293, + 16294, + 16295, + 16296, + 16297, + 16298, + 16299, + 16300, + 16301, + 16302, + 16303, + 16304, + 16305, + 16306, + 16307, + 16308, + 16309, + 16310, + 16311, + 16312, + 16313, + 16314, + 16315, + 16316, + 16317, + 16318, + 16319, + 16320, + 16321, + 16322, + 16323, + 16324, + 16325, + 16326, + 16327, + 16328, + 16329, + 16330, + 16331, + 16332, + 16333, + 16334, + 16335, + 16336, + 16337, + 16338, + 16339, + 16340, + 16341, + 16342, + 16343, + 16344, + 16345, + 16346, + 16347, + 16348, + 16349, + 16350, + 16351, + 16352, + 16353, + 16354, + 16355, + 16356, + 16357, + 16358, + 16359, + 16360, + 16361, + 16362, + 16363, + 16364, + 16365, + 16366, + 16367, + 16368, + 16369, + 16370, + 16371, + 16372, + 16373, + 16374, + 16375, + 16376, + 16377, + 16378, + 16379, + 16380, + 16381, + 16382, + 16383, + 16384, + 16385, + 16386, + 16387, + 16388, + 16389, + 16390, + 16391, + 16392, + 16393, + 16394, + 16395, + 16396, + 16397, + 16398, + 16399, + 16400, + 16401, + 16402, + 16403, + 16404, + 16405, + 16406, + 16407, + 16408, + 16409, + 16410, + 16411, + 16412, + 16413, + 16414, + 16415, + 16416, + 16417, + 16418, + 16419, + 16420, + 16421, + 16422, + 16423, + 16424, + 16425, + 16426, + 16427, + 16428, + 16429, + 16430, + 16431, + 16432, + 16433, + 16434, + 16435, + 16436, + 16437, + 16438, + 16439, + 16440, + 16441, + 16442, + 16443, + 16444, + 16445, + 16446, + 16447, + 16448, + 16449, + 16450, + 16451, + 16452, + 16453, + 16454, + 16455, + 16456, + 16457, + 16458, + 16459, + 16460, + 16461, + 16462, + 16463, + 16464, + 16465, + 16466, + 16467, + 16468, + 16469, + 16470, + 16471, + 16472, + 16473, + 16474, + 16475, + 16476, + 16477, + 16478, + 16479, + 16480, + 16481, + 16482, + 16483, + 16484, + 16485, + 16486, + 16487, + 16488, + 16489, + 16490, + 16491, + 16492, + 16493, + 16494, + 16495, + 16496, + 16497, + 16498, + 16499, + 16500, + 16501, + 16502, + 16503, + 16504, + 16505, + 16506, + 16507, + 16508, + 16509, + 16510, + 16511, + 16512, + 16513, + 16514, + 16515, + 16516, + 16517, + 16518, + 16519, + 16520, + 16521, + 16522, + 16523, + 16524, + 16525, + 16526, + 16527, + 16528, + 16529, + 16530, + 16531, + 16532, + 16533, + 16534, + 16535, + 16536, + 16537, + 16538, + 16539, + 16540, + 16541, + 16542, + 16543, + 16544, + 16545, + 16546, + 16547, + 16548, + 16549, + 16550, + 16551, + 16552, + 16553, + 16554, + 16555, + 16556, + 16557, + 16558, + 16559, + 16560, + 16561, + 16562, + 16563, + 16564, + 16565, + 16566, + 16567, + 16568, + 16569, + 16570, + 16571, + 16572, + 16573, + 16574, + 16575, + 16576, + 16577, + 16578, + 16579, + 16580, + 16581, + 16582, + 16583, + 16584, + 16585, + 16586, + 16587, + 16588, + 16589, + 16590, + 16591, + 16592, + 16593, + 16594, + 16595, + 16596, + 16597, + 16598, + 16599, + 16600, + 16601, + 16602, + 16603, + 16604, + 16605, + 16606, + 16607, + 16608, + 16609, + 16610, + 16611, + 16612, + 16613, + 16614, + 16615, + 16616, + 16617, + 16618, + 16619, + 16620, + 16621, + 16622, + 16623, + 16624, + 16625, + 16626, + 16627, + 16628, + 16629, + 16630, + 16631, + 16632, + 16633, + 16634, + 16635, + 16636, + 16637, + 16638, + 16639, + 16640, + 16641, + 16642, + 16643, + 16644, + 16645, + 16646, + 16647, + 16648, + 16649, + 16650, + 16651, + 16652, + 16653, + 16654, + 16655, + 16656, + 16657, + 16658, + 16659, + 16660, + 16661, + 16662, + 16663, + 16664, + 16665, + 16666, + 16667, + 16668, + 16669, + 16670, + 16671, + 16672, + 16673, + 16674, + 16675, + 16676, + 16677, + 16678, + 16679, + 16680, + 16681, + 16682, + 16683, + 16684, + 16685, + 16686, + 16687, + 16688, + 16689, + 16690, + 16691, + 16692, + 16693, + 16694, + 16695, + 16696, + 16697, + 16698, + 16699, + 16700, + 16701, + 16702, + 16703, + 16704, + 16705, + 16706, + 16707, + 16708, + 16709, + 16710, + 16711, + 16712, + 16713, + 16714, + 16715, + 16716, + 16717, + 16718, + 16719, + 16720, + 16721, + 16722, + 16723, + 16724, + 16725, + 16726, + 16727, + 16728, + 16729, + 16730, + 16731, + 16732, + 16733, + 16734, + 16735, + 16736, + 16737, + 16738, + 16739, + 16740, + 16741, + 16742, + 16743, + 16744, + 16745, + 16746, + 16747, + 16748, + 16749, + 16750, + 16751, + 16752, + 16753, + 16754, + 16755, + 16756, + 16757, + 16758, + 16759, + 16760, + 16761, + 16762, + 16763, + 16764, + 16765, + 16766, + 16767, + 16768, + 16769, + 16770, + 16771, + 16772, + 16773, + 16774, + 16775, + 16776, + 16777, + 16778, + 16779, + 16780, + 16781, + 16782, + 16783, + 16784, + 16785, + 16786, + 16787, + 16788, + 16789, + 16790, + 16791, + 16792, + 16793, + 16794, + 16795, + 16796, + 16797, + 16798, + 16799, + 16800, + 16801, + 16802, + 16803, + 16804, + 16805, + 16806, + 16807, + 16808, + 16809, + 16810, + 16811, + 16812, + 16813, + 16814, + 16815, + 16816, + 16817, + 16818, + 16819, + 16820, + 16821, + 16822, + 16823, + 16824, + 16825, + 16826, + 16827, + 16828, + 16829, + 16830, + 16831, + 16832, + 16833, + 16834, + 16835, + 16836, + 16837, + 16838, + 16839, + 16840, + 16841, + 16842, + 16843, + 16844, + 16845, + 16846, + 16847, + 16848, + 16849, + 16850, + 16851, + 16852, + 16853, + 16854, + 16855, + 16856, + 16857, + 16858, + 16859, + 16860, + 16861, + 16862, + 16863, + 16864, + 16865, + 16866, + 16867, + 16868, + 16869, + 16870, + 16871, + 16872, + 16873, + 16874, + 16875, + 16876, + 16877, + 16878, + 16879, + 16880, + 16881, + 16882, + 16883, + 16884, + 16885, + 16886, + 16887, + 16888, + 16889, + 16890, + 16891, + 16892, + 16893, + 16894, + 16895, + 16896, + 16897, + 16898, + 16899, + 16900, + 16901, + 16902, + 16903, + 16904, + 16905, + 16906, + 16907, + 16908, + 16909, + 16910, + 16911, + 16912, + 16913, + 16914, + 16915, + 16916, + 16917, + 16918, + 16919, + 16920, + 16921, + 16922, + 16923, + 16924, + 16925, + 16926, + 16927, + 16928, + 16929, + 16930, + 16931, + 16932, + 16933, + 16934, + 16935, + 16936, + 16937, + 16938, + 16939, + 16940, + 16941, + 16942, + 16943, + 16944, + 16945, + 16946, + 16947, + 16948, + 16949, + 16950, + 16951, + 16952, + 16953, + 16954, + 16955, + 16956, + 16957, + 16958, + 16959, + 16960, + 16961, + 16962, + 16963, + 16964, + 16965, + 16966, + 16967, + 16968, + 16969, + 16970, + 16971, + 16972, + 16973, + 16974, + 16975, + 16976, + 16977, + 16978, + 16979, + 16980, + 16981, + 16982, + 16983, + 16984, + 16985, + 16986, + 16987, + 16988, + 16989, + 16990, + 16991, + 16992, + 16993, + 16994, + 16995, + 16996, + 16997, + 16998, + 16999, + 17000, + 17001, + 17002, + 17003, + 17004, + 17005, + 17006, + 17007, + 17008, + 17009, + 17010, + 17011, + 17012, + 17013, + 17014, + 17015, + 17016, + 17017, + 17018, + 17019, + 17020, + 17021, + 17022, + 17023, + 17024, + 17025, + 17026, + 17027, + 17028, + 17029, + 17030, + 17031, + 17032, + 17033, + 17034, + 17035, + 17036, + 17037, + 17038, + 17039, + 17040, + 17041, + 17042, + 17043, + 17044, + 17045, + 17046, + 17047, + 17048, + 17049, + 17050, + 17051, + 17052, + 17053, + 17054, + 17055, + 17056, + 17057, + 17058, + 17059, + 17060, + 17061, + 17062, + 17063, + 17064, + 17065, + 17066, + 17067, + 17068, + 17069, + 17070, + 17071, + 17072, + 17073, + 17074, + 17075, + 17076, + 17077, + 17078, + 17079, + 17080, + 17081, + 17082, + 17083, + 17084, + 17085, + 17086, + 17087, + 17088, + 17089, + 17090, + 17091, + 17092, + 17093, + 17094, + 17095, + 17096, + 17097, + 17098, + 17099, + 17100, + 17101, + 17102, + 17103, + 17104, + 17105, + 17106, + 17107, + 17108, + 17109, + 17110, + 17111, + 17112, + 17113, + 17114, + 17115, + 17116, + 17117, + 17118, + 17119, + 17120, + 17121, + 17122, + 17123, + 17124, + 17125, + 17126, + 17127, + 17128, + 17129, + 17130, + 17131, + 17132, + 17133, + 17134, + 17135, + 17136, + 17137, + 17138, + 17139, + 17140, + 17141, + 17142, + 17143, + 17144, + 17145, + 17146, + 17147, + 17148, + 17149, + 17150, + 17151, + 17152, + 17153, + 17154, + 17155, + 17156, + 17157, + 17158, + 17159, + 17160, + 17161, + 17162, + 17163, + 17164, + 17165, + 17166, + 17167, + 17168, + 17169, + 17170, + 17171, + 17172, + 17173, + 17174, + 17175, + 17176, + 17177, + 17178, + 17179, + 17180, + 17181, + 17182, + 17183, + 17184, + 17185, + 17186, + 17187, + 17188, + 17189, + 17190, + 17191, + 17192, + 17193, + 17194, + 17195, + 17196, + 17197, + 17198, + 17199, + 17200, + 17201, + 17202, + 17203, + 17204, + 17205, + 17206, + 17207, + 17208, + 17209, + 17210, + 17211, + 17212, + 17213, + 17214, + 17215, + 17216, + 17217, + 17218, + 17219, + 17220, + 17221, + 17222, + 17223, + 17224, + 17225, + 17226, + 17227, + 17228, + 17229, + 17230, + 17231, + 17232, + 17233, + 17234, + 17235, + 17236, + 17237, + 17238, + 17239, + 17240, + 17241, + 17242, + 17243, + 17244, + 17245, + 17246, + 17247, + 17248, + 17249, + 17250, + 17251, + 17252, + 17253, + 17254, + 17255, + 17256, + 17257, + 17258, + 17259, + 17260, + 17261, + 17262, + 17263, + 17264, + 17265, + 17266, + 17267, + 17268, + 17269, + 17270, + 17271, + 17272, + 17273, + 17274, + 17275, + 17276, + 17277, + 17278, + 17279, + 17280, + 17281, + 17282, + 17283, + 17284, + 17285, + 17286, + 17287, + 17288, + 17289, + 17290, + 17291, + 17292, + 17293, + 17294, + 17295, + 17296, + 17297, + 17298, + 17299, + 17300, + 17301, + 17302, + 17303, + 17304, + 17305, + 17306, + 17307, + 17308, + 17309, + 17310, + 17311, + 17312, + 17313, + 17314, + 17315, + 17316, + 17317, + 17318, + 17319, + 17320, + 17321, + 17322, + 17323, + 17324, + 17325, + 17326, + 17327, + 17328, + 17329, + 17330, + 17331, + 17332, + 17333, + 17334, + 17335, + 17336, + 17337, + 17338, + 17339, + 17340, + 17341, + 17342, + 17343, + 17344, + 17345, + 17346, + 17347, + 17348, + 17349, + 17350, + 17351, + 17352, + 17353, + 17354, + 17355, + 17356, + 17357, + 17358, + 17359, + 17360, + 17361, + 17362, + 17363, + 17364, + 17365, + 17366, + 17367, + 17368, + 17369, + 17370, + 17371, + 17372, + 17373, + 17374, + 17375, + 17376, + 17377, + 17378, + 17379, + 17380, + 17381, + 17382, + 17383, + 17384, + 17385, + 17386, + 17387, + 17388, + 17389, + 17390, + 17391, + 17392, + 17393, + 17394, + 17395, + 17396, + 17397, + 17398, + 17399, + 17400, + 17401, + 17402, + 17403, + 17404, + 17405, + 17406, + 17407, + 17408, + 17409, + 17410, + 17411, + 17412, + 17413, + 17414, + 17415, + 17416, + 17417, + 17418, + 17419, + 17420, + 17421, + 17422, + 17423, + 17424, + 17425, + 17426, + 17427, + 17428, + 17429, + 17430, + 17431, + 17432, + 17433, + 17434, + 17435, + 17436, + 17437, + 17438, + 17439, + 17440, + 17441, + 17442, + 17443, + 17444, + 17445, + 17446, + 17447, + 17448, + 17449, + 17450, + 17451, + 17452, + 17453, + 17454, + 17455, + 17456, + 17457, + 17458, + 17459, + 17460, + 17461, + 17462, + 17463, + 17464, + 17465, + 17466, + 17467, + 17468, + 17469, + 17470, + 17471, + 17472, + 17473, + 17474, + 17475, + 17476, + 17477, + 17478, + 17479, + 17480, + 17481, + 17482, + 17483, + 17484, + 17485, + 17486, + 17487, + 17488, + 17489, + 17490, + 17491, + 17492, + 17493, + 17494, + 17495, + 17496, + 17497, + 17498, + 17499, + 17500, + 17501, + 17502, + 17503, + 17504, + 17505, + 17506, + 17507, + 17508, + 17509, + 17510, + 17511, + 17512, + 17513, + 17514, + 17515, + 17516, + 17517, + 17518, + 17519, + 17520, + 17521, + 17522, + 17523, + 17524, + 17525, + 17526, + 17527, + 17528, + 17529, + 17530, + 17531, + 17532, + 17533, + 17534, + 17535, + 17536, + 17537, + 17538, + 17539, + 17540, + 17541, + 17542, + 17543, + 17544, + 17545, + 17546, + 17547, + 17548, + 17549, + 17550, + 17551, + 17552, + 17553, + 17554, + 17555, + 17556, + 17557, + 17558, + 17559, + 17560, + 17561, + 17562, + 17563, + 17564, + 17565, + 17566, + 17567, + 17568, + 17569, + 17570, + 17571, + 17572, + 17573, + 17574, + 17575, + 17576, + 17577, + 17578, + 17579, + 17580, + 17581, + 17582, + 17583, + 17584, + 17585, + 17586, + 17587, + 17588, + 17589, + 17590, + 17591, + 17592, + 17593, + 17594, + 17595, + 17596, + 17597, + 17598, + 17599, + 17600, + 17601, + 17602, + 17603, + 17604, + 17605, + 17606, + 17607, + 17608, + 17609, + 17610, + 17611, + 17612, + 17613, + 17614, + 17615, + 17616, + 17617, + 17618, + 17619, + 17620, + 17621, + 17622, + 17623, + 17624, + 17625, + 17626, + 17627, + 17628, + 17629, + 17630, + 17631, + 17632, + 17633, + 17634, + 17635, + 17636, + 17637, + 17638, + 17639, + 17640, + 17641, + 17642, + 17643, + 17644, + 17645, + 17646, + 17647, + 17648, + 17649, + 17650, + 17651, + 17652, + 17653, + 17654, + 17655, + 17656, + 17657, + 17658, + 17659, + 17660, + 17661, + 17662, + 17663, + 17664, + 17665, + 17666, + 17667, + 17668, + 17669, + 17670, + 17671, + 17672, + 17673, + 17674, + 17675, + 17676, + 17677, + 17678, + 17679, + 17680, + 17681, + 17682, + 17683, + 17684, + 17685, + 17686, + 17687, + 17688, + 17689, + 17690, + 17691, + 17692, + 17693, + 17694, + 17695, + 17696, + 17697, + 17698, + 17699, + 17700, + 17701, + 17702, + 17703, + 17704, + 17705, + 17706, + 17707, + 17708, + 17709, + 17710, + 17711, + 17712, + 17713, + 17714, + 17715, + 17716, + 17717, + 17718, + 17719, + 17720, + 17721, + 17722, + 17723, + 17724, + 17725, + 17726, + 17727, + 17728, + 17729, + 17730, + 17731, + 17732, + 17733, + 17734, + 17735, + 17736, + 17737, + 17738, + 17739, + 17740, + 17741, + 17742, + 17743, + 17744, + 17745, + 17746, + 17747, + 17748, + 17749, + 17750, + 17751, + 17752, + 17753, + 17754, + 17755, + 17756, + 17757, + 17758, + 17759, + 17760, + 17761, + 17762, + 17763, + 17764, + 17765, + 17766, + 17767, + 17768, + 17769, + 17770, + 17771, + 17772, + 17773, + 17774, + 17775, + 17776, + 17777, + 17778, + 17779, + 17780, + 17781, + 17782, + 17783, + 17784, + 17785, + 17786, + 17787, + 17788, + 17789, + 17790, + 17791, + 17792, + 17793, + 17794, + 17795, + 17796, + 17797, + 17798, + 17799, + 17800, + 17801, + 17802, + 17803, + 17804, + 17805, + 17806, + 17807, + 17808, + 17809, + 17810, + 17811, + 17812, + 17813, + 17814, + 17815, + 17816, + 17817, + 17818, + 17819, + 17820, + 17821, + 17822, + 17823, + 17824, + 17825, + 17826, + 17827, + 17828, + 17829, + 17830, + 17831, + 17832, + 17833, + 17834, + 17835, + 17836, + 17837, + 17838, + 17839, + 17840, + 17841, + 17842, + 17843, + 17844, + 17845, + 17846, + 17847, + 17848, + 17849, + 17850, + 17851, + 17852, + 17853, + 17854, + 17855, + 17856, + 17857, + 17858, + 17859, + 17860, + 17861, + 17862, + 17863, + 17864, + 17865, + 17866, + 17867, + 17868, + 17869, + 17870, + 17871, + 17872, + 17873, + 17874, + 17875, + 17876, + 17877, + 17878, + 17879, + 17880, + 17881, + 17882, + 17883, + 17884, + 17885, + 17886, + 17887, + 17888, + 17889, + 17890, + 17891, + 17892, + 17893, + 17894, + 17895, + 17896, + 17897, + 17898, + 17899, + 17900, + 17901, + 17902, + 17903, + 17904, + 17905, + 17906, + 17907, + 17908, + 17909, + 17910, + 17911, + 17912, + 17913, + 17914, + 17915, + 17916, + 17917, + 17918, + 17919, + 17920, + 17921, + 17922, + 17923, + 17924, + 17925, + 17926, + 17927, + 17928, + 17929, + 17930, + 17931, + 17932, + 17933, + 17934, + 17935, + 17936, + 17937, + 17938, + 17939, + 17940, + 17941, + 17942, + 17943, + 17944, + 17945, + 17946, + 17947, + 17948, + 17949, + 17950, + 17951, + 17952, + 17953, + 17954, + 17955, + 17956, + 17957, + 17958, + 17959, + 17960, + 17961, + 17962, + 17963, + 17964, + 17965, + 17966, + 17967, + 17968, + 17969, + 17970, + 17971, + 17972, + 17973, + 17974, + 17975, + 17976, + 17977, + 17978, + 17979, + 17980, + 17981, + 17982, + 17983, + 17984, + 17985, + 17986, + 17987, + 17988, + 17989, + 17990, + 17991, + 17992, + 17993, + 17994, + 17995, + 17996, + 17997, + 17998, + 17999, + 18000, + 18001, + 18002, + 18003, + 18004, + 18005, + 18006, + 18007, + 18008, + 18009, + 18010, + 18011, + 18012, + 18013, + 18014, + 18015, + 18016, + 18017, + 18018, + 18019, + 18020, + 18021, + 18022, + 18023, + 18024, + 18025, + 18026, + 18027, + 18028, + 18029, + 18030, + 18031, + 18032, + 18033, + 18034, + 18035, + 18036, + 18037, + 18038, + 18039, + 18040, + 18041, + 18042, + 18043, + 18044, + 18045, + 18046, + 18047, + 18048, + 18049, + 18050, + 18051, + 18052, + 18053, + 18054, + 18055, + 18056, + 18057, + 18058, + 18059, + 18060, + 18061, + 18062, + 18063, + 18064, + 18065, + 18066, + 18067, + 18068, + 18069, + 18070, + 18071, + 18072, + 18073, + 18074, + 18075, + 18076, + 18077, + 18078, + 18079, + 18080, + 18081, + 18082, + 18083, + 18084, + 18085, + 18086, + 18087, + 18088, + 18089, + 18090, + 18091, + 18092, + 18093, + 18094, + 18095, + 18096, + 18097, + 18098, + 18099, + 18100, + 18101, + 18102, + 18103, + 18104, + 18105, + 18106, + 18107, + 18108, + 18109, + 18110, + 18111, + 18112, + 18113, + 18114, + 18115, + 18116, + 18117, + 18118, + 18119, + 18120, + 18121, + 18122, + 18123, + 18124, + 18125, + 18126, + 18127, + 18128, + 18129, + 18130, + 18131, + 18132, + 18133, + 18134, + 18135, + 18136, + 18137, + 18138, + 18139, + 18140, + 18141, + 18142, + 18143, + 18144, + 18145, + 18146, + 18147, + 18148, + 18149, + 18150, + 18151, + 18152, + 18153, + 18154, + 18155, + 18156, + 18157, + 18158, + 18159, + 18160, + 18161, + 18162, + 18163, + 18164, + 18165, + 18166, + 18167, + 18168, + 18169, + 18170, + 18171, + 18172, + 18173, + 18174, + 18175, + 18176, + 18177, + 18178, + 18179, + 18180, + 18181, + 18182, + 18183, + 18184, + 18185, + 18186, + 18187, + 18188, + 18189, + 18190, + 18191, + 18192, + 18193, + 18194, + 18195, + 18196, + 18197, + 18198, + 18199, + 18200, + 18201, + 18202, + 18203, + 18204, + 18205, + 18206, + 18207, + 18208, + 18209, + 18210, + 18211, + 18212, + 18213, + 18214, + 18215, + 18216, + 18217, + 18218, + 18219, + 18220, + 18221, + 18222, + 18223, + 18224, + 18225, + 18226, + 18227, + 18228, + 18229, + 18230, + 18231, + 18232, + 18233, + 18234, + 18235, + 18236, + 18237, + 18238, + 18239, + 18240, + 18241, + 18242, + 18243, + 18244, + 18245, + 18246, + 18247, + 18248, + 18249, + 18250, + 18251, + 18252, + 18253, + 18254, + 18255, + 18256, + 18257, + 18258, + 18259, + 18260, + 18261, + 18262, + 18263, + 18264, + 18265, + 18266, + 18267, + 18268, + 18269, + 18270, + 18271, + 18272, + 18273, + 18274, + 18275, + 18276, + 18277, + 18278, + 18279, + 18280, + 18281, + 18282, + 18283, + 18284, + 18285, + 18286, + 18287, + 18288, + 18289, + 18290, + 18291, + 18292, + 18293, + 18294, + 18295, + 18296, + 18297, + 18298, + 18299, + 18300, + 18301, + 18302, + 18303, + 18304, + 18305, + 18306, + 18307, + 18308, + 18309, + 18310, + 18311, + 18312, + 18313, + 18314, + 18315, + 18316, + 18317, + 18318, + 18319, + 18320, + 18321, + 18322, + 18323, + 18324, + 18325, + 18326, + 18327, + 18328, + 18329, + 18330, + 18331, + 18332, + 18333, + 18334, + 18335, + 18336, + 18337, + 18338, + 18339, + 18340, + 18341, + 18342, + 18343, + 18344, + 18345, + 18346, + 18347, + 18348, + 18349, + 18350, + 18351, + 18352, + 18353, + 18354, + 18355, + 18356, + 18357, + 18358, + 18359, + 18360, + 18361, + 18362, + 18363, + 18364, + 18365, + 18366, + 18367, + 18368, + 18369, + 18370, + 18371, + 18372, + 18373, + 18374, + 18375, + 18376, + 18377, + 18378, + 18379, + 18380, + 18381, + 18382, + 18383, + 18384, + 18385, + 18386, + 18387, + 18388, + 18389, + 18390, + 18391, + 18392, + 18393, + 18394, + 18395, + 18396, + 18397, + 18398, + 18399, + 18400, + 18401, + 18402, + 18403, + 18404, + 18405, + 18406, + 18407, + 18408, + 18409, + 18410, + 18411, + 18412, + 18413, + 18414, + 18415, + 18416, + 18417, + 18418, + 18419, + 18420, + 18421, + 18422, + 18423, + 18424, + 18425, + 18426, + 18427, + 18428, + 18429, + 18430, + 18431, + 18432, + 18433, + 18434, + 18435, + 18436, + 18437, + 18438, + 18439, + 18440, + 18441, + 18442, + 18443, + 18444, + 18445, + 18446, + 18447, + 18448, + 18449, + 18450, + 18451, + 18452, + 18453, + 18454, + 18455, + 18456, + 18457, + 18458, + 18459, + 18460, + 18461, + 18462, + 18463, + 18464, + 18465, + 18466, + 18467, + 18468, + 18469, + 18470, + 18471, + 18472, + 18473, + 18474, + 18475, + 18476, + 18477, + 18478, + 18479, + 18480, + 18481, + 18482, + 18483, + 18484, + 18485, + 18486, + 18487, + 18488, + 18489, + 18490, + 18491, + 18492, + 18493, + 18494, + 18495, + 18496, + 18497, + 18498, + 18499, + 18500, + 18501, + 18502, + 18503, + 18504, + 18505, + 18506, + 18507, + 18508, + 18509, + 18510, + 18511, + 18512, + 18513, + 18514, + 18515, + 18516, + 18517, + 18518, + 18519, + 18520, + 18521, + 18522, + 18523, + 18524, + 18525, + 18526, + 18527, + 18528, + 18529, + 18530, + 18531, + 18532, + 18533, + 18534, + 18535, + 18536, + 18537, + 18538, + 18539, + 18540, + 18541, + 18542, + 18543, + 18544, + 18545, + 18546, + 18547, + 18548, + 18549, + 18550, + 18551, + 18552, + 18553, + 18554, + 18555, + 18556, + 18557, + 18558, + 18559, + 18560, + 18561, + 18562, + 18563, + 18564, + 18565, + 18566, + 18567, + 18568, + 18569, + 18570, + 18571, + 18572, + 18573, + 18574, + 18575, + 18576, + 18577, + 18578, + 18579, + 18580, + 18581, + 18582, + 18583, + 18584, + 18585, + 18586, + 18587, + 18588, + 18589, + 18590, + 18591, + 18592, + 18593, + 18594, + 18595, + 18596, + 18597, + 18598, + 18599, + 18600, + 18601, + 18602, + 18603, + 18604, + 18605, + 18606, + 18607, + 18608, + 18609, + 18610, + 18611, + 18612, + 18613, + 18614, + 18615, + 18616, + 18617, + 18618, + 18619, + 18620, + 18621, + 18622, + 18623, + 18624, + 18625, + 18626, + 18627, + 18628, + 18629, + 18630, + 18631, + 18632, + 18633, + 18634, + 18635, + 18636, + 18637, + 18638, + 18639, + 18640, + 18641, + 18642, + 18643, + 18644, + 18645, + 18646, + 18647, + 18648, + 18649, + 18650, + 18651, + 18652, + 18653, + 18654, + 18655, + 18656, + 18657, + 18658, + 18659, + 18660, + 18661, + 18662, + 18663, + 18664, + 18665, + 18666, + 18667, + 18668, + 18669, + 18670, + 18671, + 18672, + 18673, + 18674, + 18675, + 18676, + 18677, + 18678, + 18679, + 18680, + 18681, + 18682, + 18683, + 18684, + 18685, + 18686, + 18687, + 18688, + 18689, + 18690, + 18691, + 18692, + 18693, + 18694, + 18695, + 18696, + 18697, + 18698, + 18699, + 18700, + 18701, + 18702, + 18703, + 18704, + 18705, + 18706, + 18707, + 18708, + 18709, + 18710, + 18711, + 18712, + 18713, + 18714, + 18715, + 18716, + 18717, + 18718, + 18719, + 18720, + 18721, + 18722, + 18723, + 18724, + 18725, + 18726, + 18727, + 18728, + 18729, + 18730, + 18731, + 18732, + 18733, + 18734, + 18735, + 18736, + 18737, + 18738, + 18739, + 18740, + 18741, + 18742, + 18743, + 18744, + 18745, + 18746, + 18747, + 18748, + 18749, + 18750, + 18751, + 18752, + 18753, + 18754, + 18755, + 18756, + 18757, + 18758, + 18759, + 18760, + 18761, + 18762, + 18763, + 18764, + 18765, + 18766, + 18767, + 18768, + 18769, + 18770, + 18771, + 18772, + 18773, + 18774, + 18775, + 18776, + 18777, + 18778, + 18779, + 18780, + 18781, + 18782, + 18783, + 18784, + 18785, + 18786, + 18787, + 18788, + 18789, + 18790, + 18791, + 18792, + 18793, + 18794, + 18795, + 18796, + 18797, + 18798, + 18799, + 18800, + 18801, + 18802, + 18803, + 18804, + 18805, + 18806, + 18807, + 18808, + 18809, + 18810, + 18811, + 18812, + 18813, + 18814, + 18815, + 18816, + 18817, + 18818, + 18819, + 18820, + 18821, + 18822, + 18823, + 18824, + 18825, + 18826, + 18827, + 18828, + 18829, + 18830, + 18831, + 18832, + 18833, + 18834, + 18835, + 18836, + 18837, + 18838, + 18839, + 18840, + 18841, + 18842, + 18843, + 18844, + 18845, + 18846, + 18847, + 18848, + 18849, + 18850, + 18851, + 18852, + 18853, + 18854, + 18855, + 18856, + 18857, + 18858, + 18859, + 18860, + 18861, + 18862, + 18863, + 18864, + 18865, + 18866, + 18867, + 18868, + 18869, + 18870, + 18871, + 18872, + 18873, + 18874, + 18875, + 18876, + 18877, + 18878, + 18879, + 18880, + 18881, + 18882, + 18883, + 18884, + 18885, + 18886, + 18887, + 18888, + 18889, + 18890, + 18891, + 18892, + 18893, + 18894, + 18895, + 18896, + 18897, + 18898, + 18899, + 18900, + 18901, + 18902, + 18903, + 18904, + 18905, + 18906, + 18907, + 18908, + 18909, + 18910, + 18911, + 18912, + 18913, + 18914, + 18915, + 18916, + 18917, + 18918, + 18919, + 18920, + 18921, + 18922, + 18923, + 18924, + 18925, + 18926, + 18927, + 18928, + 18929, + 18930, + 18931, + 18932, + 18933, + 18934, + 18935, + 18936, + 18937, + 18938, + 18939, + 18940, + 18941, + 18942, + 18943, + 18944, + 18945, + 18946, + 18947, + 18948, + 18949, + 18950, + 18951, + 18952, + 18953, + 18954, + 18955, + 18956, + 18957, + 18958, + 18959, + 18960, + 18961, + 18962, + 18963, + 18964, + 18965, + 18966, + 18967, + 18968, + 18969, + 18970, + 18971, + 18972, + 18973, + 18974, + 18975, + 18976, + 18977, + 18978, + 18979, + 18980, + 18981, + 18982, + 18983, + 18984, + 18985, + 18986, + 18987, + 18988, + 18989, + 18990, + 18991, + 18992, + 18993, + 18994, + 18995, + 18996, + 18997, + 18998, + 18999, + 19000, + 19001, + 19002, + 19003, + 19004, + 19005, + 19006, + 19007, + 19008, + 19009, + 19010, + 19011, + 19012, + 19013, + 19014, + 19015, + 19016, + 19017, + 19018, + 19019, + 19020, + 19021, + 19022, + 19023, + 19024, + 19025, + 19026, + 19027, + 19028, + 19029, + 19030, + 19031, + 19032, + 19033, + 19034, + 19035, + 19036, + 19037, + 19038, + 19039, + 19040, + 19041, + 19042, + 19043, + 19044, + 19045, + 19046, + 19047, + 19048, + 19049, + 19050, + 19051, + 19052, + 19053, + 19054, + 19055, + 19056, + 19057, + 19058, + 19059, + 19060, + 19061, + 19062, + 19063, + 19064, + 19065, + 19066, + 19067, + 19068, + 19069, + 19070, + 19071, + 19072, + 19073, + 19074, + 19075, + 19076, + 19077, + 19078, + 19079, + 19080, + 19081, + 19082, + 19083, + 19084, + 19085, + 19086, + 19087, + 19088, + 19089, + 19090, + 19091, + 19092, + 19093, + 19094, + 19095, + 19096, + 19097, + 19098, + 19099, + 19100, + 19101, + 19102, + 19103, + 19104, + 19105, + 19106, + 19107, + 19108, + 19109, + 19110, + 19111, + 19112, + 19113, + 19114, + 19115, + 19116, + 19117, + 19118, + 19119, + 19120, + 19121, + 19122, + 19123, + 19124, + 19125, + 19126, + 19127, + 19128, + 19129, + 19130, + 19131, + 19132, + 19133, + 19134, + 19135, + 19136, + 19137, + 19138, + 19139, + 19140, + 19141, + 19142, + 19143, + 19144, + 19145, + 19146, + 19147, + 19148, + 19149, + 19150, + 19151, + 19152, + 19153, + 19154, + 19155, + 19156, + 19157, + 19158, + 19159, + 19160, + 19161, + 19162, + 19163, + 19164, + 19165, + 19166, + 19167, + 19168, + 19169, + 19170, + 19171, + 19172, + 19173, + 19174, + 19175, + 19176, + 19177, + 19178, + 19179, + 19180, + 19181, + 19182, + 19183, + 19184, + 19185, + 19186, + 19187, + 19188, + 19189, + 19190, + 19191, + 19192, + 19193, + 19194, + 19195, + 19196, + 19197, + 19198, + 19199, + 19200, + 19201, + 19202, + 19203, + 19204, + 19205, + 19206, + 19207, + 19208, + 19209, + 19210, + 19211, + 19212, + 19213, + 19214, + 19215, + 19216, + 19217, + 19218, + 19219, + 19220, + 19221, + 19222, + 19223, + 19224, + 19225, + 19226, + 19227, + 19228, + 19229, + 19230, + 19231, + 19232, + 19233, + 19234, + 19235, + 19236, + 19237, + 19238, + 19239, + 19240, + 19241, + 19242, + 19243, + 19244, + 19245, + 19246, + 19247, + 19248, + 19249, + 19250, + 19251, + 19252, + 19253, + 19254, + 19255, + 19256, + 19257, + 19258, + 19259, + 19260, + 19261, + 19262, + 19263, + 19264, + 19265, + 19266, + 19267, + 19268, + 19269, + 19270, + 19271, + 19272, + 19273, + 19274, + 19275, + 19276, + 19277, + 19278, + 19279, + 19280, + 19281, + 19282, + 19283, + 19284, + 19285, + 19286, + 19287, + 19288, + 19289, + 19290, + 19291, + 19292, + 19293, + 19294, + 19295, + 19296, + 19297, + 19298, + 19299, + 19300, + 19301, + 19302, + 19303, + 19304, + 19305, + 19306, + 19307, + 19308, + 19309, + 19310, + 19311, + 19312, + 19313, + 19314, + 19315, + 19316, + 19317, + 19318, + 19319, + 19320, + 19321, + 19322, + 19323, + 19324, + 19325, + 19326, + 19327, + 19328, + 19329, + 19330, + 19331, + 19332, + 19333, + 19334, + 19335, + 19336, + 19337, + 19338, + 19339, + 19340, + 19341, + 19342, + 19343, + 19344, + 19345, + 19346, + 19347, + 19348, + 19349, + 19350, + 19351, + 19352, + 19353, + 19354, + 19355, + 19356, + 19357, + 19358, + 19359, + 19360, + 19361, + 19362, + 19363, + 19364, + 19365, + 19366, + 19367, + 19368, + 19369, + 19370, + 19371, + 19372, + 19373, + 19374, + 19375, + 19376, + 19377, + 19378, + 19379, + 19380, + 19381, + 19382, + 19383, + 19384, + 19385, + 19386, + 19387, + 19388, + 19389, + 19390, + 19391, + 19392, + 19393, + 19394, + 19395, + 19396, + 19397, + 19398, + 19399, + 19400, + 19401, + 19402, + 19403, + 19404, + 19405, + 19406, + 19407, + 19408, + 19409, + 19410, + 19411, + 19412, + 19413, + 19414, + 19415, + 19416, + 19417, + 19418, + 19419, + 19420, + 19421, + 19422, + 19423, + 19424, + 19425, + 19426, + 19427, + 19428, + 19429, + 19430, + 19431, + 19432, + 19433, + 19434, + 19435, + 19436, + 19437, + 19438, + 19439 + ], + "rate_pass_wall_s": 463.1438640999986 + }, + "routes": { + "b_s3_pdip": { + "label": "S3 PDIP (source-only)", + "status": "ok", + "solver": "library", + "ms": 38.84176079991448, + "log_likelihood": 28622.39485118912 + }, + "d_s3_certified_fallback": { + "label": "S3 certified active set, budget 11, PDIP fallback", + "status": "ok", + "solver": "harness-injected certified active set", + "pass_budget": 11, + "fallback": true, + "injected_solver_calls_jax": 1, + "injected_solver_calls_numpy": 0, + "ms": 30.16178959987883, + "log_likelihood": 28622.394851189252 + } + }, + "equivalence_pins": [ + { + "pin": "route d (certified, fallback) == route b (library PDIP)", + "route": "d_s3_certified_fallback", + "reference": "b_s3_pdip", + "expectation": "the certified active set returns the library's own positive solution", + "rtol": 1e-09, + "got": 28622.394851189252, + "reference_value": 28622.39485118912, + "rel_diff": 4.575691088611358e-15, + "status": "PASS" + } + ], + "reference": { + "log_evidence_s3_library": 28622.39485119987 + }, + "library_revisions": { + "PyAutoNerves": { + "head": "1fa613aa8d89a79613009fb66f5b4e2d21deb57a", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoNerves", + "module_file": "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/__init__.py" + }, + "PyAutoFit": { + "head": "dd9fbe0aab60c4a57702b1444ca031b317c91331", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoFit", + "module_file": "/mnt/ral/jnightin/PyAuto/PyAutoFit/autofit/__init__.py" + }, + "PyAutoArray": { + "head": "3de624b5b91a4efa130dc3cb0a3a0f06f85025a3", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoArray", + "module_file": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/__init__.py" + }, + "PyAutoGalaxy": { + "head": "70a61e26cd715cefe7012a38285698091246a8a4", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy", + "module_file": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/__init__.py" + }, + "PyAutoLens": { + "head": "86054bbc19baa2f710a12e04a94fa27ab37cc354", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoLens", + "module_file": "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/__init__.py" + } + }, + "timer": { + "dataset_load": 0.08077386200238834, + "mask_and_oversample": 0.014964603000407806, + "adapt_image_build": 0.0021606340014841408, + "model_build": 0.5996503549977206, + "instance_from_vector": 0.012149335998401511, + "register_pytrees": 0.0006950919996597804, + "fit_imaging_eager": 4.608514666000701, + "s3_system_build": 3.16071174100216, + "b_s3_pdip_library_likelihood_jit_lower": 1.2771769870014396, + "b_s3_pdip_library_likelihood_jit_compile": 3.4845504840013746, + "b_s3_pdip_library_likelihood_jit_first_call": 0.10179993399651721, + "b_s3_pdip_library_likelihood_jit_steady_x10": 0.3884176079991448, + "d_s3_certified_fallback_library_likelihood_jit_lower": 0.47585309200076154, + "d_s3_certified_fallback_library_likelihood_jit_compile": 3.855429679999361, + "d_s3_certified_fallback_library_likelihood_jit_first_call": 0.03992304699931992, + "d_s3_certified_fallback_library_likelihood_jit_steady_x10": 0.3016178959987883, + "captured_rate_pass": 448.3410356539971, + "captured_rate_uncertified_pdip_recheck": 14.79279280999981 + }, + "note": "Phase C1 (#304) rate pass: untimed. No millisecond here is a result. The rate is the fraction of captured lanes whose certificate failed under the named certified_fallback; the phase-C2 verdict takes it together with the timed pass." +} \ No newline at end of file diff --git a/results/breakdown/imaging/fixed_light_trace_rectangular_captured_rate_libcertified_fboff_b16_pix2_hpc_a100_fp64_fixed_light_trace.json b/results/breakdown/imaging/fixed_light_trace_rectangular_captured_rate_libcertified_fboff_b16_pix2_hpc_a100_fp64_fixed_light_trace.json new file mode 100644 index 000000000..22b4a72eb --- /dev/null +++ b/results/breakdown/imaging/fixed_light_trace_rectangular_captured_rate_libcertified_fboff_b16_pix2_hpc_a100_fp64_fixed_light_trace.json @@ -0,0 +1,9736 @@ +{ + "device": { + "backend": "gpu", + "device": "cuda:0", + "hostname": "euclid-ral-gpu-1", + "xla_flags": "--xla_disable_hlo_passes=constant_folding --xla_gpu_autotune_level=0 --xla_gpu_enable_triton_gemm=false", + "omp_num_threads": null, + "cpu_count": 124, + "jax_compilation_cache_dir": "/mnt/ral/jnightin/autolens_profiling_wt/certified-solver-phase-c1-lane-rate/output/jax_cache/fixed_light_lanerate_rectangular_pix2_rate_20_certified_off_350768_7", + "autotune_cache_entries_at_start": 0, + "cache_fresh": true, + "nvidia_smi": "NVIDIA A100 80GB PCIe, 4721 MiB, 81920 MiB" + }, + "machine": { + "cpu_model": "AMD EPYC 7702 64-Core Processor", + "cpu_count_os": 124, + "nproc": 4, + "nproc_all": 124, + "nproc_note": "GNU nproc honours OMP_NUM_THREADS, so `nproc` can print 1 on a multi-core host; `nproc_all` is the core count.", + "ram_total": "928298200 kB", + "kernel": "5.14.0-687.50.1.el9_8.x86_64", + "platform": "Linux-5.14.0-687.50.1.el9_8.x86_64-x86_64-with-glibc2.34", + "python": "3.12.4", + "jax_thread_env": { + "NPROC": null + }, + "blas_thread_env": { + "OMP_NUM_THREADS": null, + "OPENBLAS_NUM_THREADS": null, + "MKL_NUM_THREADS": null, + "VECLIB_MAXIMUM_THREADS": null, + "NUMEXPR_NUM_THREADS": null + }, + "thread_env_note": "NPROC sizes XLA's CPU intra-op pool (the JAX rows); the BLAS knobs pin OpenBLAS/MKL/OpenMP (the numpy/scipy rows) and do not touch JAX. Two disjoint families; both are recorded on every CPU timing.", + "gpu": "NVIDIA A100 80GB PCIe, 81920 MiB, 610.57.04" + }, + "precision": "fp64", + "configuration": { + "mesh": "rectangular", + "source_pixels": 1521, + "dataset": "hst", + "dataset_sha256": { + "data.fits": "e4e833a28e9c6f6fb023cd85c0d3dde74068720256bc77a240633500e5b04fac", + "noise_map.fits": "315c6266a0acd3ac9c8da82fcd2b45a08697362481fd7a35072bab1658530ba3", + "psf.fits": "8389ba0e8bf4a09b4a561cfc246181a2fb944ed396754cd0ff76fdd22910d303" + }, + "cell_source_sha256": "06a162fcdae6b329384ec33322f443df07215d86e56f0505ac15b3d3473eb432", + "border_relocator_mode": "cell", + "border_relocator": true, + "regularization": { + "scheme": "constant", + "coefficient": 1.0 + }, + "vmap_batch": 20, + "lanes": "captured", + "captured_pass": "rate", + "batch_sample": null, + "solver_source": "library", + "solver": "certified", + "certified_fallback": "none", + "certified_pass_budget": 16, + "certified_tau_rel": 1e-09, + "use_mixed_precision": false, + "thread_env": { + "n_threads": null, + "vars": [ + "OPENBLAS_NUM_THREADS", + "MKL_NUM_THREADS", + "OMP_NUM_THREADS", + "VECLIB_MAXIMUM_THREADS", + "NUMEXPR_NUM_THREADS" + ], + "set_to": null, + "preexisting": {}, + "overridden": {}, + "note": "Not pinned (legacy variant): recorded as found." + } + }, + "captured": { + "batches_path": "/mnt/ral/jnightin/autolens_profiling_wt/certified-solver-phase-c1-lane-rate/results/breakdown/imaging/nautilus_batches_rectangular_pix2.npz", + "batches_sha256": "77f052c40d028d2e54ab6efb1c3f1d7bdf1922da01e74916f7b206db0259df03", + "schema_version": 2, + "n_calls": 142, + "n_lanes": 2840, + "call_sizes_seen": [ + 20 + ], + "calls_by_phase": { + "prior": 8, + "exploration": 134 + }, + "parameter_paths": [ + "galaxies.source.pixelization.regularization.inner_coefficient", + "galaxies.source.pixelization.regularization.outer_coefficient", + "galaxies.source.pixelization.regularization.signal_scale" + ], + "stage": "pix2", + "regularization": { + "class": "Adapt", + "free": true, + "priors": { + "inner_coefficient": [ + "LogUniform", + 1e-06, + 1000000.0 + ], + "outer_coefficient": [ + "LogUniform", + 1e-06, + 1000000.0 + ], + "signal_scale": [ + "Uniform", + 0.0, + 1.0 + ] + }, + "priors_source": "PyAutoGalaxy packaged config/priors/regularization (adapt_split.yaml / adapt.yaml / constant.yaml); adapt_split.yaml and adapt.yaml are identical to euclid_strong_lens_modeling_pipeline/config/priors/regularization/'s copies" + }, + "nautilus": { + "departures_from_production": [ + "mass/shear fixed at the S3 fiducial, not at a source_pix_1 result", + "no positions likelihood", + "the cell's mesh (39x39 RectangularBilinearAdaptImage, weight_power 1, weight_floor 0) fixed in both stages; source_pix_1 uses RectangularBilinearAdaptDensity, source_pix_2 frees weight_power / weight_floor", + "seeded (production passes no seed)", + "quick updates disabled (iterations_per_quick_update=1e12; render-only)", + "NullPaths: no output directory, so no checkpoint and one Sampler.run call", + "post-fit perform_update skipped (samples / latent variables never built)" + ], + "n_batch": 20, + "n_like_max": 40000, + "n_live": 75, + "number_of_cores": 1, + "production_reference": "euclid_strong_lens_modeling_pipeline/scripts/full_model.py source_pix_1 (n_live=150) / source_pix_2 (n_live=75): af.Nautilus(n_batch=20, **SettingsSearch.search_dict) with use_jax_vmap=True and number_of_cores=1 (SettingsSearch defaults)", + "production_stage": "source_pix_2", + "seed": 1, + "stage": "pix2", + "use_jax_vmap": true, + "version": "1.0.5" + }, + "capture_fit_status": "sampling complete (n_like_max or convergence); post-fit result skipped", + "capture_library_revisions": { + "PyAutoArray": { + "head": "3de624b5b91a4efa130dc3cb0a3a0f06f85025a3", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoArray" + }, + "PyAutoFit": { + "head": "dd9fbe0aab60c4a57702b1444ca031b317c91331", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoFit" + }, + "PyAutoGalaxy": { + "head": "70a61e26cd715cefe7012a38285698091246a8a4", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy" + }, + "PyAutoLens": { + "head": "86054bbc19baa2f710a12e04a94fa27ab37cc354", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoLens" + }, + "PyAutoNerves": { + "head": "1fa613aa8d89a79613009fb66f5b4e2d21deb57a", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoNerves" + } + }, + "fingerprint_check": { + "fields": [ + "mesh", + "source_pixels", + "dataset_sha256", + "regularization_class", + "regularization_s0_fiducial", + "border_relocator", + "use_mixed_precision", + "log_evidence_s3_library" + ], + "not_identity": "the regularization coefficients: free per lane since the capture frees them", + "log_evidence_s3_library_rel_diff": 0.0, + "passed": true + } + }, + "rate": { + "pass": "rate", + "solver": "certified", + "certified_fallback": "none", + "certified_pass_budget": 16, + "certified_pass_budget_basis": "config default (Settings().certified_pass_budget)", + "composition": "jax.jit(jax.vmap(fn)) \u2014 the current Fitness._vmap composition", + "chunk_size": 20, + "chunk_rule": "the replayed lanes in capture order, split into chunks of --vmap-batch; the last chunk is padded by repeating its final lane and the padded rows are dropped. At --vmap-batch == n_batch every chunk is exactly one captured Nautilus batch.", + "batch_sample": null, + "stage": "pix2", + "regularization_range": { + "galaxies.source.pixelization.regularization.inner_coefficient": { + "min": 1.0220949689817867e-06, + "max": 973443.1376694659 + }, + "galaxies.source.pixelization.regularization.outer_coefficient": { + "min": 1.0695469208569066e-06, + "max": 722149.0007485969 + }, + "galaxies.source.pixelization.regularization.signal_scale": { + "min": 0.00205684306461984, + "max": 0.9978261744153061 + } + }, + "calls_replayed": 142, + "calls_rule": "all captured calls", + "report_source": "library solve observed through its stats= out-dict (PyAutoArray #566) and jax.debug.callback(..., ordered=True); untimed; one row per lane checked per chunk", + "traced_solver_kwargs_jax": [ + "certified" + ], + "overall": { + "n_lanes": 2840, + "n_uncertified": 70, + "uncertified_rate": 0.02464788732394366, + "max_passes": 16, + "mean_passes": 6.216549295774648, + "n_at_budget": 71, + "budget": 16, + "passes_histogram": { + "1": 4, + "2": 36, + "3": 87, + "4": 90, + "5": 588, + "6": 1285, + "7": 336, + "8": 323, + "9": 3, + "10": 4, + "11": 2, + "12": 2, + "13": 3, + "14": 6, + "16": 71 + } + }, + "by_nautilus_phase": { + "prior": { + "n_lanes": 160, + "n_uncertified": 32, + "uncertified_rate": 0.2, + "max_passes": 16, + "mean_passes": 6.225, + "n_at_budget": 32, + "budget": 16, + "passes_histogram": { + "1": 2, + "2": 25, + "3": 59, + "4": 15, + "5": 9, + "6": 1, + "7": 11, + "8": 1, + "9": 1, + "10": 1, + "13": 2, + "14": 1, + "16": 32 + } + }, + "exploration": { + "n_lanes": 2680, + "n_uncertified": 38, + "uncertified_rate": 0.014179104477611941, + "max_passes": 16, + "mean_passes": 6.216044776119403, + "n_at_budget": 39, + "budget": 16, + "passes_histogram": { + "1": 2, + "2": 11, + "3": 28, + "4": 75, + "5": 579, + "6": 1284, + "7": 325, + "8": 322, + "9": 2, + "10": 3, + "11": 2, + "12": 2, + "13": 1, + "14": 5, + "16": 39 + } + } + }, + "by_call_half": { + "early": { + "n_lanes": 1420, + "n_uncertified": 70, + "uncertified_rate": 0.04929577464788732, + "max_passes": 16, + "mean_passes": 6.707746478873239, + "n_at_budget": 71, + "budget": 16, + "passes_histogram": { + "1": 4, + "2": 36, + "3": 87, + "4": 90, + "5": 162, + "6": 327, + "7": 300, + "8": 323, + "9": 3, + "10": 4, + "11": 2, + "12": 2, + "13": 3, + "14": 6, + "16": 71 + } + }, + "late": { + "n_lanes": 1420, + "n_uncertified": 0, + "uncertified_rate": 0.0, + "max_passes": 7, + "mean_passes": 5.725352112676056, + "n_at_budget": 0, + "budget": 16, + "passes_histogram": { + "5": 426, + "6": 958, + "7": 36 + } + } + }, + "phase_rule": "by_nautilus_phase: the sampler state when the batch was requested (nautilus_batches.phase_of) \u2014 prior = only the unit-cube bound (prior draws), exploration = more bounds and Sampler.explored False, sampling = explored True. by_call_half: early = call index below the median replayed call index, late = the rest.", + "vs_capture_pdip": { + "reference": "the capture's own figure of merit for the lane: library PDIP through Fitness.call_wrap's jax.jit(jax.vmap(call)) over parameter vectors", + "n_compared": 2789, + "n_excluded_resampled_or_nonfinite": 51, + "max_rel_diff": 0.00022536838731692863, + "median_rel_diff": 1.7077709485178465e-11, + "max_abs_diff_nats": 4.328075358156639, + "n_above_lane_rtol": 130, + "n_above_lane_rtol_uncertified": 69, + "lane_rtol": 1e-09, + "gated": false, + "note": "RECORDED, NOT GATED: a cross-composition comparison (Fitness over vectors vs this cell over trees) and, for certified lanes, certified vs PDIP. The gated 1e-9 pin is the timed pass's (same composition, same lanes). It still shows whether a certified_fallback=none lane that FAILED its certificate returned a wrong answer." + }, + "uncertified_pdip_recheck": { + "n_uncertified": 70, + "n_rechecked": 70, + "cap": 256, + "max_rel_diff": 0.00022536836062276628, + "rows": [ + { + "lane_row": 6, + "call_index": 0, + "lane_in_call": 6, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 19205.84104165168, + "log_likelihood_scalar_library_pdip": 19205.179150282085, + "rel_diff": 3.4464212201157125e-05, + "abs_diff_nats": 0.6618913695965603 + }, + { + "lane_row": 9, + "call_index": 0, + "lane_in_call": 9, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 19207.092118287117, + "log_likelihood_scalar_library_pdip": 19204.201596201332, + "rel_diff": 0.00015051508761274447, + "abs_diff_nats": 2.890522085785051 + }, + { + "lane_row": 18, + "call_index": 0, + "lane_in_call": 18, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 19207.043772287267, + "log_likelihood_scalar_library_pdip": 19204.15324051091, + "rel_diff": 0.00015051597121496467, + "abs_diff_nats": 2.890531776356511 + }, + { + "lane_row": 20, + "call_index": 1, + "lane_in_call": 0, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 19207.13005629916, + "log_likelihood_scalar_library_pdip": 19204.23954364181, + "rel_diff": 0.00015051429924017954, + "abs_diff_nats": 2.890512657351792 + }, + { + "lane_row": 29, + "call_index": 1, + "lane_in_call": 9, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 21606.387750079986, + "log_likelihood_scalar_library_pdip": 21605.739032935722, + "rel_diff": 3.0025223542466216e-05, + "abs_diff_nats": 0.6487171442640829 + }, + { + "lane_row": 31, + "call_index": 1, + "lane_in_call": 11, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 19207.521321412067, + "log_likelihood_scalar_library_pdip": 19204.63098066728, + "rel_diff": 0.00015050227977286167, + "abs_diff_nats": 2.890340744786954 + }, + { + "lane_row": 37, + "call_index": 1, + "lane_in_call": 17, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 19207.6133940777, + "log_likelihood_scalar_library_pdip": 19204.723016167987, + "rel_diff": 0.00015050349371242472, + "abs_diff_nats": 2.890377909712697 + }, + { + "lane_row": 42, + "call_index": 2, + "lane_in_call": 2, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 19207.044185845523, + "log_likelihood_scalar_library_pdip": 19204.153654303205, + "rel_diff": 0.00015051595578492765, + "abs_diff_nats": 2.890531542318058 + }, + { + "lane_row": 43, + "call_index": 2, + "lane_in_call": 3, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 19533.767399050426, + "log_likelihood_scalar_library_pdip": 19535.84932465154, + "rel_diff": 0.00010656949521440266, + "abs_diff_nats": 2.0819256011127436 + }, + { + "lane_row": 52, + "call_index": 2, + "lane_in_call": 12, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 22259.45059017099, + "log_likelihood_scalar_library_pdip": 22259.084767122837, + "rel_diff": 1.643477492357222e-05, + "abs_diff_nats": 0.36582304815237876 + }, + { + "lane_row": 66, + "call_index": 3, + "lane_in_call": 6, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 19207.052627910143, + "log_likelihood_scalar_library_pdip": 19204.162099018766, + "rel_diff": 0.0001505157515581043, + "abs_diff_nats": 2.890528891377471 + }, + { + "lane_row": 72, + "call_index": 3, + "lane_in_call": 12, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 19207.043965654444, + "log_likelihood_scalar_library_pdip": 19204.15343379073, + "rel_diff": 0.00015051597424905235, + "abs_diff_nats": 2.890531863715296 + }, + { + "lane_row": 76, + "call_index": 3, + "lane_in_call": 16, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 19207.043775334005, + "log_likelihood_scalar_library_pdip": 19204.15324339158, + "rel_diff": 0.00015051597983981095, + "abs_diff_nats": 2.8905319424229674 + }, + { + "lane_row": 80, + "call_index": 4, + "lane_in_call": 0, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 19640.372297955015, + "log_likelihood_scalar_library_pdip": 19640.673172191488, + "rel_diff": 1.5318937076898853e-05, + "abs_diff_nats": 0.3008742364727368 + }, + { + "lane_row": 82, + "call_index": 4, + "lane_in_call": 2, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 19200.119405868212, + "log_likelihood_scalar_library_pdip": 19204.447480713607, + "rel_diff": 0.00022536836062276628, + "abs_diff_nats": 4.32807484539444 + }, + { + "lane_row": 85, + "call_index": 4, + "lane_in_call": 5, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 22933.53165119885, + "log_likelihood_scalar_library_pdip": 22932.784710015432, + "rel_diff": 3.257088892004507e-05, + "abs_diff_nats": 0.7469411834172206 + }, + { + "lane_row": 90, + "call_index": 4, + "lane_in_call": 10, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 22391.303993414902, + "log_likelihood_scalar_library_pdip": 22391.233773346055, + "rel_diff": 3.1360517940787323e-06, + "abs_diff_nats": 0.0702200688465382 + }, + { + "lane_row": 97, + "call_index": 4, + "lane_in_call": 17, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 19207.04376686656, + "log_likelihood_scalar_library_pdip": 19204.15323514836, + "rel_diff": 0.00015051596822884282, + "abs_diff_nats": 2.8905317182034196 + }, + { + "lane_row": 103, + "call_index": 5, + "lane_in_call": 3, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 22834.42841744977, + "log_likelihood_scalar_library_pdip": 22834.387068890937, + "rel_diff": 1.8108022215638482e-06, + "abs_diff_nats": 0.04134855883239652 + }, + { + "lane_row": 106, + "call_index": 5, + "lane_in_call": 6, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 19207.04376670997, + "log_likelihood_scalar_library_pdip": 19204.153234761987, + "rel_diff": 0.00015051598019690681, + "abs_diff_nats": 2.890531947981799 + }, + { + "lane_row": 108, + "call_index": 5, + "lane_in_call": 8, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 19708.21457454742, + "log_likelihood_scalar_library_pdip": 19711.120607597084, + "rel_diff": 0.00014743114344016226, + "abs_diff_nats": 2.906033049664984 + }, + { + "lane_row": 109, + "call_index": 5, + "lane_in_call": 9, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 19207.043766950883, + "log_likelihood_scalar_library_pdip": 19204.153235186277, + "rel_diff": 0.00015051597064481565, + "abs_diff_nats": 2.8905317646058393 + }, + { + "lane_row": 111, + "call_index": 5, + "lane_in_call": 11, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 19218.144471184984, + "log_likelihood_scalar_library_pdip": 19217.924861088974, + "rel_diff": 1.1427357407076315e-05, + "abs_diff_nats": 0.21961009601000114 + }, + { + "lane_row": 114, + "call_index": 5, + "lane_in_call": 14, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 19207.138868544585, + "log_likelihood_scalar_library_pdip": 19204.248366739477, + "rel_diff": 0.00015051366499270954, + "abs_diff_nats": 2.890501805108215 + }, + { + "lane_row": 124, + "call_index": 6, + "lane_in_call": 4, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 20873.23656697244, + "log_likelihood_scalar_library_pdip": 20871.469781385927, + "rel_diff": 8.465075076249782e-05, + "abs_diff_nats": 1.766785586511105 + }, + { + "lane_row": 135, + "call_index": 6, + "lane_in_call": 15, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 19521.395471261458, + "log_likelihood_scalar_library_pdip": 19523.857004700254, + "rel_diff": 0.0001260782353714086, + "abs_diff_nats": 2.461533438796323 + }, + { + "lane_row": 136, + "call_index": 6, + "lane_in_call": 16, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 22018.625178058533, + "log_likelihood_scalar_library_pdip": 22017.271590531145, + "rel_diff": 6.14784407696742e-05, + "abs_diff_nats": 1.3535875273882993 + }, + { + "lane_row": 138, + "call_index": 6, + "lane_in_call": 18, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 19207.047370930166, + "log_likelihood_scalar_library_pdip": 19204.156839850817, + "rel_diff": 0.00015051590670987926, + "abs_diff_nats": 2.890531079348875 + }, + { + "lane_row": 142, + "call_index": 7, + "lane_in_call": 2, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 23169.1271742074, + "log_likelihood_scalar_library_pdip": 23169.588056051783, + "rel_diff": 1.9891671930890356e-05, + "abs_diff_nats": 0.4608818443848577 + }, + { + "lane_row": 143, + "call_index": 7, + "lane_in_call": 3, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 19207.065093745183, + "log_likelihood_scalar_library_pdip": 19206.403225960297, + "rel_diff": 3.4460787743481914e-05, + "abs_diff_nats": 0.6618677848855441 + }, + { + "lane_row": 146, + "call_index": 7, + "lane_in_call": 6, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 21546.336347133234, + "log_likelihood_scalar_library_pdip": 21545.84434473102, + "rel_diff": 2.2835141400912518e-05, + "abs_diff_nats": 0.49200240221398417 + }, + { + "lane_row": 159, + "call_index": 7, + "lane_in_call": 19, + "phase": "prior", + "passes": 16, + "log_likelihood_certified_none": 22080.75388078803, + "log_likelihood_scalar_library_pdip": 22080.006614730104, + "rel_diff": 3.384356132518127e-05, + "abs_diff_nats": 0.7472660579260264 + }, + { + "lane_row": 163, + "call_index": 8, + "lane_in_call": 3, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 21669.460653390866, + "log_likelihood_scalar_library_pdip": 21671.259367019993, + "rel_diff": 8.299995854712821e-05, + "abs_diff_nats": 1.7987136291267234 + }, + { + "lane_row": 164, + "call_index": 8, + "lane_in_call": 4, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19207.043786251175, + "log_likelihood_scalar_library_pdip": 19204.15325448881, + "rel_diff": 0.00015051597037683538, + "abs_diff_nats": 2.8905317623648443 + }, + { + "lane_row": 165, + "call_index": 8, + "lane_in_call": 5, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19342.80344895851, + "log_likelihood_scalar_library_pdip": 19342.255876845524, + "rel_diff": 2.8309630297225633e-05, + "abs_diff_nats": 0.5475721129878366 + }, + { + "lane_row": 170, + "call_index": 8, + "lane_in_call": 10, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19207.043768078816, + "log_likelihood_scalar_library_pdip": 19204.15323634958, + "rel_diff": 0.00015051596879399074, + "abs_diff_nats": 2.8905317292374093 + }, + { + "lane_row": 171, + "call_index": 8, + "lane_in_call": 11, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 21293.073383208954, + "log_likelihood_scalar_library_pdip": 21293.017831633693, + "rel_diff": 2.6089103808383e-06, + "abs_diff_nats": 0.05555157526032417 + }, + { + "lane_row": 172, + "call_index": 8, + "lane_in_call": 12, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19207.10066644192, + "log_likelihood_scalar_library_pdip": 19204.21014710055, + "rel_diff": 0.00015051487768701638, + "abs_diff_nats": 2.8905193413665984 + }, + { + "lane_row": 186, + "call_index": 9, + "lane_in_call": 6, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 20398.45427662246, + "log_likelihood_scalar_library_pdip": 20398.27836577077, + "rel_diff": 8.62380876143717e-06, + "abs_diff_nats": 0.17591085168896825 + }, + { + "lane_row": 188, + "call_index": 9, + "lane_in_call": 8, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19228.2487085822, + "log_likelihood_scalar_library_pdip": 19225.582637838932, + "rel_diff": 0.00013867307917213607, + "abs_diff_nats": 2.6660707432674826 + }, + { + "lane_row": 194, + "call_index": 9, + "lane_in_call": 14, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 20744.16939059612, + "log_likelihood_scalar_library_pdip": 20745.57065524473, + "rel_diff": 6.754524480903733e-05, + "abs_diff_nats": 1.4012646486116864 + }, + { + "lane_row": 195, + "call_index": 9, + "lane_in_call": 15, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19207.043766853094, + "log_likelihood_scalar_library_pdip": 19204.153234855607, + "rel_diff": 0.0001505159827740329, + "abs_diff_nats": 2.8905319974874146 + }, + { + "lane_row": 197, + "call_index": 9, + "lane_in_call": 17, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19207.04376972432, + "log_likelihood_scalar_library_pdip": 19204.15323755559, + "rel_diff": 0.0001505159916698643, + "abs_diff_nats": 2.890532168730715 + }, + { + "lane_row": 199, + "call_index": 9, + "lane_in_call": 19, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19207.043766779818, + "log_likelihood_scalar_library_pdip": 19204.153234612586, + "rel_diff": 0.00015051599161488256, + "abs_diff_nats": 2.890532167231868 + }, + { + "lane_row": 200, + "call_index": 10, + "lane_in_call": 0, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19212.151052677797, + "log_likelihood_scalar_library_pdip": 19208.93546834715, + "rel_diff": 0.00016740044423310603, + "abs_diff_nats": 3.2155843306463794 + }, + { + "lane_row": 211, + "call_index": 10, + "lane_in_call": 11, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19201.19225270581, + "log_likelihood_scalar_library_pdip": 19204.345805154717, + "rel_diff": 0.00016421035534892837, + "abs_diff_nats": 3.153552448908158 + }, + { + "lane_row": 213, + "call_index": 10, + "lane_in_call": 13, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19200.834830543048, + "log_likelihood_scalar_library_pdip": 19204.3412315879, + "rel_diff": 0.00018258377116752824, + "abs_diff_nats": 3.5064010448513727 + }, + { + "lane_row": 214, + "call_index": 10, + "lane_in_call": 14, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19383.414355751793, + "log_likelihood_scalar_library_pdip": 19381.45433518121, + "rel_diff": 0.0001011286633441654, + "abs_diff_nats": 1.9600205705828557 + }, + { + "lane_row": 217, + "call_index": 10, + "lane_in_call": 17, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19212.023850097878, + "log_likelihood_scalar_library_pdip": 19208.852138124137, + "rel_diff": 0.00016511720486647437, + "abs_diff_nats": 3.1717119737404573 + }, + { + "lane_row": 222, + "call_index": 11, + "lane_in_call": 2, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19487.67677281184, + "log_likelihood_scalar_library_pdip": 19490.486464100482, + "rel_diff": 0.00014415706318147826, + "abs_diff_nats": 2.80969128864308 + }, + { + "lane_row": 225, + "call_index": 11, + "lane_in_call": 5, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19511.624603786946, + "log_likelihood_scalar_library_pdip": 19513.24374561435, + "rel_diff": 8.297655933124054e-05, + "abs_diff_nats": 1.6191418274029274 + }, + { + "lane_row": 227, + "call_index": 11, + "lane_in_call": 7, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19207.043766990337, + "log_likelihood_scalar_library_pdip": 19204.153235667967, + "rel_diff": 0.00015051594761287884, + "abs_diff_nats": 2.8905313223694975 + }, + { + "lane_row": 228, + "call_index": 11, + "lane_in_call": 8, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19207.043991805192, + "log_likelihood_scalar_library_pdip": 19204.153460373193, + "rel_diff": 0.0001505159515603984, + "abs_diff_nats": 2.890531431999989 + }, + { + "lane_row": 229, + "call_index": 11, + "lane_in_call": 9, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19207.043779773172, + "log_likelihood_scalar_library_pdip": 19204.153248232033, + "rel_diff": 0.00015051595890620487, + "abs_diff_nats": 2.890531541139353 + }, + { + "lane_row": 236, + "call_index": 11, + "lane_in_call": 16, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 19803.70761489194, + "log_likelihood_scalar_library_pdip": 19802.715765393776, + "rel_diff": 5.008653913510777e-05, + "abs_diff_nats": 0.9918494981648109 + }, + { + "lane_row": 237, + "call_index": 11, + "lane_in_call": 17, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 24228.640239757988, + "log_likelihood_scalar_library_pdip": 24228.640549836724, + "rel_diff": 1.279802453555779e-08, + "abs_diff_nats": 0.0003100787362200208 + }, + { + "lane_row": 249, + "call_index": 12, + "lane_in_call": 9, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 20842.915288926157, + "log_likelihood_scalar_library_pdip": 20844.54171672531, + "rel_diff": 7.80265558848447e-05, + "abs_diff_nats": 1.626427799154044 + }, + { + "lane_row": 250, + "call_index": 12, + "lane_in_call": 10, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 22680.592020968885, + "log_likelihood_scalar_library_pdip": 22680.344012524274, + "rel_diff": 1.0934950742971644e-05, + "abs_diff_nats": 0.24800844461060478 + }, + { + "lane_row": 251, + "call_index": 12, + "lane_in_call": 11, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 20450.469898248237, + "log_likelihood_scalar_library_pdip": 20451.414547350458, + "rel_diff": 4.6189915129525694e-05, + "abs_diff_nats": 0.9446491022208647 + }, + { + "lane_row": 254, + "call_index": 12, + "lane_in_call": 14, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 22223.885501093122, + "log_likelihood_scalar_library_pdip": 22223.885501091405, + "rel_diff": 7.726488677522035e-14, + "abs_diff_nats": 1.7171259969472885e-09 + }, + { + "lane_row": 278, + "call_index": 13, + "lane_in_call": 18, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 21003.043441592446, + "log_likelihood_scalar_library_pdip": 21005.374499363683, + "rel_diff": 0.00011097434950788375, + "abs_diff_nats": 2.331057771236374 + }, + { + "lane_row": 282, + "call_index": 14, + "lane_in_call": 2, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 21740.168688325233, + "log_likelihood_scalar_library_pdip": 21739.556993180726, + "rel_diff": 2.8137424543622047e-05, + "abs_diff_nats": 0.6116951445073937 + }, + { + "lane_row": 285, + "call_index": 14, + "lane_in_call": 5, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 22118.710361499758, + "log_likelihood_scalar_library_pdip": 22118.2723846192, + "rel_diff": 1.9801586351014223e-05, + "abs_diff_nats": 0.4379768805592903 + }, + { + "lane_row": 293, + "call_index": 14, + "lane_in_call": 13, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 21302.16793677996, + "log_likelihood_scalar_library_pdip": 21301.632480411863, + "rel_diff": 2.5136870077359087e-05, + "abs_diff_nats": 0.5354563680957654 + }, + { + "lane_row": 295, + "call_index": 14, + "lane_in_call": 15, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 23647.040603728943, + "log_likelihood_scalar_library_pdip": 23646.9724039978, + "rel_diff": 2.8840787724879017e-06, + "abs_diff_nats": 0.06819973114397726 + }, + { + "lane_row": 313, + "call_index": 15, + "lane_in_call": 13, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 22360.246134529996, + "log_likelihood_scalar_library_pdip": 22360.202565376385, + "rel_diff": 1.948513368066709e-06, + "abs_diff_nats": 0.043569153611315414 + }, + { + "lane_row": 327, + "call_index": 16, + "lane_in_call": 7, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 20864.4975820342, + "log_likelihood_scalar_library_pdip": 20864.026989488342, + "rel_diff": 2.2555211709392117e-05, + "abs_diff_nats": 0.4705925458583806 + }, + { + "lane_row": 330, + "call_index": 16, + "lane_in_call": 10, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 22454.812951569376, + "log_likelihood_scalar_library_pdip": 22452.198200609673, + "rel_diff": 0.00011645857284620292, + "abs_diff_nats": 2.6147509597030876 + }, + { + "lane_row": 335, + "call_index": 16, + "lane_in_call": 15, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 23195.008368198207, + "log_likelihood_scalar_library_pdip": 23194.665930408144, + "rel_diff": 1.47636439813473e-05, + "abs_diff_nats": 0.3424377900628315 + }, + { + "lane_row": 338, + "call_index": 16, + "lane_in_call": 18, + "phase": "exploration", + "passes": 16, + "log_likelihood_certified_none": 20527.96295829589, + "log_likelihood_scalar_library_pdip": 20529.268963055292, + "rel_diff": 6.361672019355011e-05, + "abs_diff_nats": 1.306004759400821 + } + ], + "gated": false + }, + "lane_certified": [ + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 0, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 0, + 1, + 0, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 0, + 1, + 0, + 0, + 1, + 0, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 0, + 1, + 0, + 1, + 1, + 1, + 0, + 0, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 0, + 0, + 0, + 1, + 1, + 1, + 1, + 0, + 0, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 0, + 0, + 1, + 0, + 1, + 0, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 0, + 0, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 0, + 1, + 0, + 0, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 0, + 0, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 0, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1 + ], + "lane_passes": [ + 3, + 4, + 4, + 3, + 3, + 7, + 16, + 7, + 5, + 16, + 5, + 3, + 7, + 3, + 5, + 8, + 3, + 2, + 16, + 3, + 16, + 3, + 3, + 4, + 5, + 3, + 3, + 3, + 2, + 16, + 2, + 16, + 3, + 3, + 5, + 6, + 3, + 16, + 2, + 3, + 3, + 7, + 16, + 16, + 5, + 2, + 2, + 4, + 3, + 3, + 4, + 2, + 16, + 2, + 3, + 13, + 3, + 3, + 9, + 3, + 3, + 4, + 3, + 3, + 2, + 7, + 16, + 3, + 4, + 3, + 3, + 2, + 16, + 4, + 7, + 3, + 16, + 7, + 4, + 2, + 16, + 3, + 16, + 2, + 3, + 16, + 13, + 2, + 2, + 4, + 16, + 2, + 3, + 10, + 2, + 3, + 3, + 16, + 3, + 3, + 3, + 5, + 3, + 16, + 4, + 5, + 16, + 2, + 16, + 16, + 2, + 16, + 2, + 3, + 16, + 7, + 3, + 4, + 7, + 2, + 2, + 3, + 7, + 4, + 16, + 14, + 3, + 3, + 7, + 1, + 3, + 4, + 3, + 3, + 5, + 16, + 16, + 3, + 16, + 3, + 2, + 1, + 16, + 16, + 3, + 3, + 16, + 3, + 2, + 3, + 3, + 4, + 2, + 3, + 3, + 3, + 3, + 2, + 3, + 16, + 10, + 5, + 2, + 16, + 16, + 16, + 8, + 5, + 8, + 8, + 16, + 16, + 16, + 2, + 3, + 4, + 2, + 4, + 2, + 13, + 7, + 7, + 4, + 5, + 3, + 8, + 16, + 5, + 16, + 6, + 4, + 4, + 8, + 1, + 16, + 16, + 2, + 16, + 7, + 16, + 16, + 8, + 7, + 3, + 5, + 7, + 4, + 9, + 3, + 10, + 6, + 16, + 6, + 16, + 16, + 9, + 5, + 16, + 5, + 3, + 4, + 4, + 16, + 7, + 11, + 16, + 1, + 16, + 16, + 16, + 2, + 5, + 7, + 3, + 4, + 6, + 16, + 16, + 5, + 3, + 4, + 4, + 5, + 4, + 3, + 14, + 5, + 5, + 3, + 16, + 16, + 16, + 14, + 14, + 16, + 8, + 2, + 5, + 7, + 8, + 7, + 7, + 5, + 3, + 4, + 7, + 4, + 4, + 4, + 4, + 4, + 7, + 7, + 5, + 5, + 8, + 2, + 7, + 16, + 3, + 7, + 5, + 16, + 5, + 12, + 16, + 4, + 7, + 2, + 5, + 4, + 14, + 7, + 16, + 6, + 16, + 8, + 10, + 5, + 4, + 6, + 2, + 3, + 7, + 6, + 5, + 4, + 7, + 5, + 4, + 11, + 16, + 5, + 16, + 7, + 5, + 6, + 4, + 7, + 12, + 7, + 8, + 3, + 6, + 7, + 5, + 3, + 16, + 7, + 5, + 16, + 2, + 4, + 4, + 7, + 16, + 7, + 7, + 16, + 7, + 4, + 5, + 5, + 4, + 4, + 8, + 5, + 7, + 7, + 5, + 5, + 5, + 4, + 8, + 6, + 7, + 5, + 7, + 7, + 6, + 7, + 4, + 7, + 7, + 5, + 3, + 7, + 5, + 7, + 7, + 4, + 7, + 5, + 8, + 8, + 4, + 4, + 5, + 5, + 3, + 7, + 5, + 7, + 4, + 8, + 7, + 5, + 7, + 5, + 5, + 7, + 4, + 8, + 7, + 8, + 8, + 5, + 3, + 7, + 8, + 7, + 5, + 7, + 4, + 14, + 7, + 5, + 5, + 7, + 8, + 6, + 5, + 7, + 7, + 3, + 5, + 5, + 7, + 7, + 5, + 7, + 8, + 7, + 4, + 5, + 7, + 4, + 7, + 4, + 5, + 6, + 4, + 8, + 5, + 4, + 5, + 5, + 7, + 4, + 7, + 7, + 7, + 8, + 8, + 7, + 7, + 7, + 7, + 4, + 7, + 3, + 8, + 4, + 7, + 5, + 7, + 7, + 7, + 5, + 5, + 7, + 6, + 7, + 8, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 7, + 4, + 8, + 7, + 4, + 8, + 6, + 5, + 4, + 4, + 7, + 5, + 4, + 4, + 4, + 4, + 5, + 5, + 7, + 8, + 7, + 8, + 7, + 4, + 8, + 7, + 8, + 8, + 7, + 4, + 5, + 4, + 5, + 4, + 7, + 7, + 4, + 4, + 6, + 7, + 7, + 4, + 7, + 7, + 4, + 7, + 5, + 5, + 4, + 6, + 3, + 7, + 4, + 8, + 4, + 5, + 4, + 4, + 5, + 8, + 3, + 8, + 7, + 7, + 8, + 3, + 4, + 4, + 4, + 7, + 6, + 8, + 8, + 8, + 7, + 5, + 7, + 7, + 8, + 8, + 7, + 7, + 8, + 7, + 8, + 5, + 7, + 7, + 7, + 8, + 8, + 8, + 7, + 7, + 8, + 4, + 7, + 7, + 7, + 8, + 7, + 5, + 5, + 7, + 8, + 8, + 8, + 7, + 7, + 8, + 8, + 7, + 8, + 8, + 7, + 5, + 7, + 7, + 6, + 7, + 7, + 6, + 8, + 7, + 8, + 7, + 7, + 7, + 7, + 7, + 8, + 5, + 7, + 7, + 6, + 8, + 7, + 7, + 7, + 6, + 7, + 8, + 7, + 7, + 8, + 7, + 4, + 7, + 5, + 5, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 7, + 8, + 7, + 7, + 4, + 4, + 7, + 7, + 7, + 7, + 4, + 8, + 8, + 5, + 8, + 8, + 8, + 7, + 8, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 7, + 8, + 8, + 6, + 8, + 7, + 8, + 5, + 7, + 8, + 7, + 8, + 8, + 7, + 8, + 5, + 8, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 7, + 8, + 6, + 7, + 5, + 7, + 8, + 7, + 8, + 7, + 8, + 8, + 8, + 7, + 8, + 7, + 7, + 8, + 8, + 7, + 7, + 7, + 8, + 7, + 8, + 8, + 8, + 7, + 5, + 7, + 8, + 5, + 7, + 6, + 8, + 7, + 7, + 7, + 7, + 5, + 8, + 8, + 8, + 6, + 8, + 5, + 8, + 8, + 7, + 8, + 8, + 7, + 8, + 7, + 8, + 8, + 8, + 5, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 7, + 8, + 8, + 7, + 8, + 3, + 8, + 8, + 3, + 8, + 6, + 5, + 8, + 7, + 7, + 7, + 8, + 8, + 7, + 8, + 8, + 7, + 8, + 8, + 8, + 7, + 6, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 7, + 8, + 8, + 8, + 3, + 8, + 8, + 8, + 8, + 8, + 8, + 3, + 7, + 8, + 7, + 8, + 8, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 6, + 8, + 8, + 6, + 8, + 8, + 5, + 8, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 3, + 8, + 8, + 8, + 8, + 8, + 7, + 8, + 8, + 8, + 7, + 8, + 3, + 8, + 8, + 7, + 8, + 8, + 8, + 8, + 8, + 5, + 6, + 7, + 5, + 8, + 6, + 8, + 7, + 8, + 8, + 8, + 8, + 6, + 8, + 6, + 7, + 8, + 8, + 8, + 7, + 8, + 8, + 8, + 8, + 7, + 8, + 8, + 8, + 8, + 8, + 7, + 8, + 8, + 6, + 8, + 8, + 8, + 8, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 6, + 7, + 6, + 8, + 6, + 6, + 8, + 8, + 8, + 8, + 6, + 8, + 8, + 6, + 7, + 8, + 7, + 8, + 8, + 6, + 8, + 8, + 8, + 8, + 7, + 8, + 8, + 6, + 8, + 8, + 7, + 8, + 8, + 8, + 8, + 6, + 7, + 6, + 7, + 7, + 6, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 7, + 8, + 8, + 8, + 7, + 8, + 8, + 8, + 8, + 5, + 8, + 8, + 8, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 5, + 6, + 4, + 6, + 7, + 6, + 5, + 7, + 7, + 6, + 6, + 6, + 6, + 5, + 7, + 6, + 8, + 7, + 7, + 8, + 8, + 8, + 6, + 6, + 8, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 8, + 5, + 6, + 7, + 7, + 6, + 6, + 6, + 7, + 7, + 8, + 6, + 8, + 8, + 8, + 8, + 6, + 8, + 7, + 6, + 8, + 6, + 6, + 6, + 6, + 7, + 6, + 7, + 8, + 7, + 7, + 8, + 8, + 6, + 7, + 8, + 7, + 7, + 5, + 8, + 7, + 6, + 7, + 6, + 7, + 8, + 6, + 6, + 8, + 8, + 6, + 6, + 7, + 8, + 8, + 7, + 7, + 8, + 7, + 6, + 8, + 7, + 8, + 5, + 5, + 7, + 7, + 7, + 6, + 6, + 6, + 5, + 5, + 6, + 5, + 5, + 6, + 7, + 7, + 7, + 7, + 6, + 6, + 6, + 5, + 6, + 6, + 6, + 6, + 6, + 6, + 7, + 5, + 6, + 7, + 6, + 7, + 5, + 7, + 6, + 6, + 6, + 7, + 6, + 6, + 7, + 5, + 6, + 6, + 6, + 6, + 7, + 6, + 6, + 5, + 5, + 6, + 7, + 6, + 6, + 6, + 5, + 5, + 6, + 7, + 5, + 7, + 6, + 6, + 7, + 6, + 6, + 6, + 7, + 5, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 5, + 7, + 6, + 6, + 7, + 6, + 6, + 6, + 6, + 5, + 6, + 5, + 6, + 6, + 7, + 7, + 6, + 7, + 6, + 6, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 6, + 6, + 6, + 6, + 6, + 5, + 6, + 7, + 6, + 6, + 6, + 7, + 5, + 7, + 7, + 7, + 6, + 5, + 6, + 6, + 6, + 6, + 6, + 7, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 5, + 7, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 7, + 6, + 5, + 7, + 6, + 7, + 6, + 5, + 7, + 7, + 6, + 6, + 5, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 7, + 6, + 6, + 6, + 5, + 6, + 6, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 5, + 5, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 7, + 6, + 6, + 6, + 6, + 7, + 6, + 7, + 6, + 6, + 6, + 7, + 6, + 5, + 6, + 6, + 6, + 6, + 6, + 6, + 5, + 6, + 6, + 6, + 5, + 6, + 6, + 5, + 6, + 5, + 6, + 6, + 6, + 6, + 6, + 5, + 6, + 5, + 6, + 6, + 6, + 6, + 6, + 6, + 7, + 5, + 6, + 6, + 6, + 5, + 6, + 6, + 5, + 5, + 6, + 6, + 6, + 6, + 6, + 5, + 6, + 6, + 6, + 6, + 6, + 6, + 5, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 5, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 7, + 6, + 5, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 5, + 6, + 7, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 7, + 6, + 6, + 6, + 6, + 6, + 7, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 7, + 6, + 6, + 6, + 6, + 6, + 5, + 5, + 6, + 6, + 7, + 6, + 6, + 6, + 6, + 7, + 5, + 6, + 5, + 6, + 6, + 6, + 6, + 6, + 6, + 5, + 6, + 6, + 6, + 6, + 6, + 7, + 6, + 6, + 5, + 5, + 6, + 6, + 6, + 6, + 6, + 6, + 5, + 6, + 5, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 5, + 7, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 5, + 6, + 6, + 5, + 6, + 6, + 7, + 6, + 6, + 7, + 5, + 6, + 6, + 7, + 5, + 6, + 6, + 7, + 5, + 6, + 6, + 5, + 6, + 5, + 6, + 7, + 7, + 6, + 6, + 6, + 6, + 6, + 6, + 5, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 5, + 5, + 5, + 6, + 7, + 6, + 5, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 7, + 5, + 6, + 6, + 7, + 5, + 7, + 6, + 6, + 6, + 6, + 6, + 5, + 6, + 7, + 6, + 6, + 6, + 6, + 6, + 5, + 7, + 7, + 6, + 6, + 6, + 6, + 5, + 6, + 6, + 6, + 6, + 5, + 6, + 6, + 6, + 6, + 6, + 7, + 6, + 6, + 6, + 6, + 6, + 6, + 7, + 6, + 5, + 5, + 6, + 7, + 6, + 6, + 6, + 6, + 6, + 7, + 7, + 5, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 5, + 6, + 5, + 6, + 6, + 6, + 6, + 5, + 5, + 6, + 7, + 6, + 6, + 6, + 5, + 6, + 6, + 6, + 6, + 6, + 5, + 7, + 5, + 6, + 6, + 6, + 6, + 5, + 6, + 5, + 6, + 5, + 6, + 6, + 6, + 6, + 7, + 6, + 6, + 6, + 6, + 6, + 6, + 5, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 5, + 6, + 6, + 6, + 6, + 5, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 7, + 6, + 5, + 6, + 6, + 6, + 6, + 6, + 6, + 7, + 7, + 6, + 6, + 6, + 6, + 7, + 6, + 6, + 6, + 5, + 6, + 6, + 6, + 6, + 7, + 6, + 6, + 6, + 6, + 6, + 7, + 5, + 6, + 5, + 6, + 6, + 5, + 6, + 5, + 7, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 5, + 6, + 5, + 6, + 5, + 6, + 5, + 6, + 6, + 6, + 5, + 6, + 5, + 5, + 5, + 6, + 6, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 6, + 5, + 6, + 5, + 6, + 6, + 5, + 6, + 6, + 6, + 5, + 5, + 6, + 6, + 5, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 5, + 6, + 6, + 6, + 6, + 6, + 6, + 5, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 5, + 6, + 6, + 6, + 6, + 6, + 5, + 6, + 6, + 6, + 6, + 6, + 5, + 6, + 5, + 6, + 6, + 6, + 6, + 5, + 6, + 6, + 6, + 6, + 5, + 5, + 5, + 6, + 6, + 6, + 6, + 6, + 5, + 6, + 6, + 6, + 6, + 6, + 5, + 5, + 6, + 6, + 5, + 6, + 6, + 6, + 6, + 7, + 5, + 5, + 6, + 6, + 5, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 5, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 5, + 6, + 5, + 6, + 6, + 5, + 6, + 6, + 6, + 6, + 6, + 6, + 5, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 5, + 6, + 6, + 6, + 5, + 6, + 5, + 5, + 6, + 6, + 6, + 5, + 6, + 6, + 6, + 6, + 6, + 6, + 5, + 6, + 6, + 6, + 6, + 6, + 5, + 6, + 5, + 6, + 6, + 6, + 5, + 6, + 6, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 5, + 6, + 6, + 5, + 6, + 5, + 6, + 5, + 5, + 6, + 6, + 6, + 6, + 5, + 6, + 6, + 6, + 5, + 5, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 5, + 6, + 6, + 5, + 5, + 5, + 6, + 6, + 6, + 6, + 5, + 6, + 5, + 5, + 5, + 6, + 6, + 6, + 5, + 6, + 6, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 5, + 6, + 6, + 5, + 6, + 6, + 6, + 6, + 6, + 5, + 5, + 6, + 6, + 5, + 5, + 5, + 5, + 6, + 6, + 6, + 5, + 6, + 6, + 5, + 6, + 6, + 5, + 6, + 6, + 6, + 5, + 5, + 6, + 6, + 6, + 5, + 6, + 5, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 5, + 6, + 6, + 6, + 6, + 5, + 6, + 6, + 6, + 6, + 6, + 5, + 6, + 6, + 6, + 6, + 6, + 6, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 6, + 5, + 6, + 6, + 6, + 6, + 5, + 5, + 6, + 6, + 6, + 5, + 5, + 6, + 5, + 6, + 6, + 6, + 5, + 6, + 6, + 5, + 6, + 6, + 5, + 6, + 6, + 6, + 6, + 6, + 5, + 6, + 6, + 5, + 5, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 5, + 6, + 5, + 6, + 6, + 6, + 6, + 5, + 6, + 6, + 6, + 5, + 5, + 5, + 6, + 5, + 6, + 6, + 5, + 6, + 5, + 5, + 5, + 6, + 6, + 5, + 6, + 6, + 5, + 6, + 5, + 6, + 6, + 6, + 6, + 6, + 5, + 5, + 6, + 6, + 6, + 5, + 5, + 6, + 6, + 5, + 6, + 6, + 6, + 5, + 6, + 5, + 6, + 5, + 6, + 5, + 6, + 5, + 6, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 6, + 6, + 6, + 6, + 5, + 6, + 6, + 6, + 6, + 6, + 5, + 5, + 5, + 6, + 6, + 6, + 6, + 6, + 6, + 5, + 6, + 6, + 6, + 6, + 5, + 6, + 5, + 5, + 6, + 6, + 6, + 5, + 6, + 6, + 5, + 6, + 6, + 6, + 5, + 6, + 6, + 5, + 6, + 6, + 6, + 5, + 6, + 6, + 6, + 6, + 6, + 6, + 5, + 6, + 6, + 6, + 5, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 5, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 5, + 6, + 6, + 6, + 6, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 6, + 6, + 5, + 6, + 6, + 6, + 5, + 5, + 6, + 6, + 6, + 5, + 6, + 5, + 6, + 6, + 5, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 5, + 5, + 6, + 6, + 6, + 5, + 6, + 6, + 5, + 5, + 5, + 6, + 5, + 6, + 6, + 6, + 6, + 5, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 6, + 6, + 6, + 5, + 6, + 5, + 5, + 6, + 6, + 6, + 6, + 6, + 5, + 6, + 6, + 6, + 5, + 6, + 6, + 5, + 5, + 5, + 5, + 6, + 5, + 5, + 5, + 6, + 6, + 5, + 5, + 5, + 5, + 6, + 6, + 5, + 6, + 6, + 5, + 6, + 5, + 6, + 6, + 5, + 5, + 6, + 6, + 6, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 6, + 5, + 6, + 6, + 5, + 6, + 5, + 6, + 6, + 6, + 5, + 6, + 6, + 6, + 5, + 5, + 6, + 6, + 6, + 6, + 5, + 5, + 5, + 6, + 5, + 6, + 6, + 6, + 6, + 6, + 6, + 5, + 6, + 6, + 5, + 6, + 6, + 6, + 5, + 6, + 5, + 6, + 6, + 5, + 6, + 6, + 6, + 6, + 6, + 5, + 6, + 5, + 6, + 6, + 6, + 6, + 6, + 6, + 5, + 6, + 5, + 5, + 5, + 6, + 6, + 5, + 6, + 6, + 6, + 5, + 5, + 6, + 6, + 6, + 5, + 5, + 5, + 6, + 6, + 6, + 6, + 6, + 6, + 5, + 6, + 6, + 6, + 6, + 6, + 6, + 5, + 5, + 6, + 5, + 5, + 6, + 6, + 5, + 6, + 6, + 6, + 6, + 5, + 5, + 5, + 6, + 5, + 6, + 6, + 5, + 6, + 6, + 6, + 5, + 6, + 5, + 6, + 6, + 6, + 6, + 6, + 5, + 6, + 6, + 5, + 5, + 6, + 6, + 5, + 5, + 6, + 6, + 6, + 6, + 6, + 6, + 5, + 5, + 5, + 6, + 6, + 5, + 6, + 6, + 6, + 5, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 5, + 6, + 6, + 6, + 5, + 5, + 6, + 6, + 6, + 6, + 6, + 6, + 5, + 6, + 6, + 5, + 6, + 6, + 6, + 5, + 6, + 6, + 6, + 6, + 6, + 5, + 5, + 6, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 6, + 5, + 6, + 6, + 5, + 6, + 6, + 6, + 5, + 6, + 6, + 5, + 5, + 5, + 5, + 6, + 6, + 6, + 5, + 5, + 6, + 6, + 6, + 6, + 5, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 6, + 5, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 6, + 6, + 5, + 6, + 6, + 6, + 6, + 6, + 6, + 5, + 6, + 6, + 6, + 6, + 6, + 5, + 5, + 6, + 6, + 6, + 6, + 5, + 6, + 6, + 6, + 5, + 5, + 6, + 6, + 5, + 5, + 6, + 5, + 5, + 6, + 6, + 5, + 6, + 5, + 6, + 6, + 6, + 5, + 6, + 6, + 6, + 5, + 6, + 6, + 6, + 6, + 5, + 6, + 6, + 6, + 6, + 5, + 5, + 6, + 5, + 6, + 6, + 6, + 5, + 5, + 6, + 6, + 6, + 6, + 6, + 5, + 6, + 6, + 5, + 5, + 5, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 5, + 5, + 5, + 6, + 5, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 5, + 6, + 5, + 5, + 6, + 6, + 5, + 6, + 6, + 5, + 5, + 6, + 6, + 6, + 5, + 5, + 6, + 6, + 6, + 5, + 6, + 6, + 6, + 5, + 5, + 6, + 5, + 6, + 6, + 5, + 5, + 6, + 6, + 6, + 6, + 5, + 6, + 5, + 6, + 6, + 5, + 6, + 6, + 6, + 6, + 5, + 6, + 6, + 5, + 6, + 6, + 5, + 6, + 6, + 6, + 6, + 6, + 6, + 5, + 5, + 6, + 5, + 5, + 5, + 5, + 6, + 6, + 6, + 5, + 6, + 6, + 6, + 6, + 6, + 6, + 5, + 6, + 6, + 6, + 5, + 6, + 6, + 5, + 5, + 5 + ], + "lane_rows": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621, + 622, + 623, + 624, + 625, + 626, + 627, + 628, + 629, + 630, + 631, + 632, + 633, + 634, + 635, + 636, + 637, + 638, + 639, + 640, + 641, + 642, + 643, + 644, + 645, + 646, + 647, + 648, + 649, + 650, + 651, + 652, + 653, + 654, + 655, + 656, + 657, + 658, + 659, + 660, + 661, + 662, + 663, + 664, + 665, + 666, + 667, + 668, + 669, + 670, + 671, + 672, + 673, + 674, + 675, + 676, + 677, + 678, + 679, + 680, + 681, + 682, + 683, + 684, + 685, + 686, + 687, + 688, + 689, + 690, + 691, + 692, + 693, + 694, + 695, + 696, + 697, + 698, + 699, + 700, + 701, + 702, + 703, + 704, + 705, + 706, + 707, + 708, + 709, + 710, + 711, + 712, + 713, + 714, + 715, + 716, + 717, + 718, + 719, + 720, + 721, + 722, + 723, + 724, + 725, + 726, + 727, + 728, + 729, + 730, + 731, + 732, + 733, + 734, + 735, + 736, + 737, + 738, + 739, + 740, + 741, + 742, + 743, + 744, + 745, + 746, + 747, + 748, + 749, + 750, + 751, + 752, + 753, + 754, + 755, + 756, + 757, + 758, + 759, + 760, + 761, + 762, + 763, + 764, + 765, + 766, + 767, + 768, + 769, + 770, + 771, + 772, + 773, + 774, + 775, + 776, + 777, + 778, + 779, + 780, + 781, + 782, + 783, + 784, + 785, + 786, + 787, + 788, + 789, + 790, + 791, + 792, + 793, + 794, + 795, + 796, + 797, + 798, + 799, + 800, + 801, + 802, + 803, + 804, + 805, + 806, + 807, + 808, + 809, + 810, + 811, + 812, + 813, + 814, + 815, + 816, + 817, + 818, + 819, + 820, + 821, + 822, + 823, + 824, + 825, + 826, + 827, + 828, + 829, + 830, + 831, + 832, + 833, + 834, + 835, + 836, + 837, + 838, + 839, + 840, + 841, + 842, + 843, + 844, + 845, + 846, + 847, + 848, + 849, + 850, + 851, + 852, + 853, + 854, + 855, + 856, + 857, + 858, + 859, + 860, + 861, + 862, + 863, + 864, + 865, + 866, + 867, + 868, + 869, + 870, + 871, + 872, + 873, + 874, + 875, + 876, + 877, + 878, + 879, + 880, + 881, + 882, + 883, + 884, + 885, + 886, + 887, + 888, + 889, + 890, + 891, + 892, + 893, + 894, + 895, + 896, + 897, + 898, + 899, + 900, + 901, + 902, + 903, + 904, + 905, + 906, + 907, + 908, + 909, + 910, + 911, + 912, + 913, + 914, + 915, + 916, + 917, + 918, + 919, + 920, + 921, + 922, + 923, + 924, + 925, + 926, + 927, + 928, + 929, + 930, + 931, + 932, + 933, + 934, + 935, + 936, + 937, + 938, + 939, + 940, + 941, + 942, + 943, + 944, + 945, + 946, + 947, + 948, + 949, + 950, + 951, + 952, + 953, + 954, + 955, + 956, + 957, + 958, + 959, + 960, + 961, + 962, + 963, + 964, + 965, + 966, + 967, + 968, + 969, + 970, + 971, + 972, + 973, + 974, + 975, + 976, + 977, + 978, + 979, + 980, + 981, + 982, + 983, + 984, + 985, + 986, + 987, + 988, + 989, + 990, + 991, + 992, + 993, + 994, + 995, + 996, + 997, + 998, + 999, + 1000, + 1001, + 1002, + 1003, + 1004, + 1005, + 1006, + 1007, + 1008, + 1009, + 1010, + 1011, + 1012, + 1013, + 1014, + 1015, + 1016, + 1017, + 1018, + 1019, + 1020, + 1021, + 1022, + 1023, + 1024, + 1025, + 1026, + 1027, + 1028, + 1029, + 1030, + 1031, + 1032, + 1033, + 1034, + 1035, + 1036, + 1037, + 1038, + 1039, + 1040, + 1041, + 1042, + 1043, + 1044, + 1045, + 1046, + 1047, + 1048, + 1049, + 1050, + 1051, + 1052, + 1053, + 1054, + 1055, + 1056, + 1057, + 1058, + 1059, + 1060, + 1061, + 1062, + 1063, + 1064, + 1065, + 1066, + 1067, + 1068, + 1069, + 1070, + 1071, + 1072, + 1073, + 1074, + 1075, + 1076, + 1077, + 1078, + 1079, + 1080, + 1081, + 1082, + 1083, + 1084, + 1085, + 1086, + 1087, + 1088, + 1089, + 1090, + 1091, + 1092, + 1093, + 1094, + 1095, + 1096, + 1097, + 1098, + 1099, + 1100, + 1101, + 1102, + 1103, + 1104, + 1105, + 1106, + 1107, + 1108, + 1109, + 1110, + 1111, + 1112, + 1113, + 1114, + 1115, + 1116, + 1117, + 1118, + 1119, + 1120, + 1121, + 1122, + 1123, + 1124, + 1125, + 1126, + 1127, + 1128, + 1129, + 1130, + 1131, + 1132, + 1133, + 1134, + 1135, + 1136, + 1137, + 1138, + 1139, + 1140, + 1141, + 1142, + 1143, + 1144, + 1145, + 1146, + 1147, + 1148, + 1149, + 1150, + 1151, + 1152, + 1153, + 1154, + 1155, + 1156, + 1157, + 1158, + 1159, + 1160, + 1161, + 1162, + 1163, + 1164, + 1165, + 1166, + 1167, + 1168, + 1169, + 1170, + 1171, + 1172, + 1173, + 1174, + 1175, + 1176, + 1177, + 1178, + 1179, + 1180, + 1181, + 1182, + 1183, + 1184, + 1185, + 1186, + 1187, + 1188, + 1189, + 1190, + 1191, + 1192, + 1193, + 1194, + 1195, + 1196, + 1197, + 1198, + 1199, + 1200, + 1201, + 1202, + 1203, + 1204, + 1205, + 1206, + 1207, + 1208, + 1209, + 1210, + 1211, + 1212, + 1213, + 1214, + 1215, + 1216, + 1217, + 1218, + 1219, + 1220, + 1221, + 1222, + 1223, + 1224, + 1225, + 1226, + 1227, + 1228, + 1229, + 1230, + 1231, + 1232, + 1233, + 1234, + 1235, + 1236, + 1237, + 1238, + 1239, + 1240, + 1241, + 1242, + 1243, + 1244, + 1245, + 1246, + 1247, + 1248, + 1249, + 1250, + 1251, + 1252, + 1253, + 1254, + 1255, + 1256, + 1257, + 1258, + 1259, + 1260, + 1261, + 1262, + 1263, + 1264, + 1265, + 1266, + 1267, + 1268, + 1269, + 1270, + 1271, + 1272, + 1273, + 1274, + 1275, + 1276, + 1277, + 1278, + 1279, + 1280, + 1281, + 1282, + 1283, + 1284, + 1285, + 1286, + 1287, + 1288, + 1289, + 1290, + 1291, + 1292, + 1293, + 1294, + 1295, + 1296, + 1297, + 1298, + 1299, + 1300, + 1301, + 1302, + 1303, + 1304, + 1305, + 1306, + 1307, + 1308, + 1309, + 1310, + 1311, + 1312, + 1313, + 1314, + 1315, + 1316, + 1317, + 1318, + 1319, + 1320, + 1321, + 1322, + 1323, + 1324, + 1325, + 1326, + 1327, + 1328, + 1329, + 1330, + 1331, + 1332, + 1333, + 1334, + 1335, + 1336, + 1337, + 1338, + 1339, + 1340, + 1341, + 1342, + 1343, + 1344, + 1345, + 1346, + 1347, + 1348, + 1349, + 1350, + 1351, + 1352, + 1353, + 1354, + 1355, + 1356, + 1357, + 1358, + 1359, + 1360, + 1361, + 1362, + 1363, + 1364, + 1365, + 1366, + 1367, + 1368, + 1369, + 1370, + 1371, + 1372, + 1373, + 1374, + 1375, + 1376, + 1377, + 1378, + 1379, + 1380, + 1381, + 1382, + 1383, + 1384, + 1385, + 1386, + 1387, + 1388, + 1389, + 1390, + 1391, + 1392, + 1393, + 1394, + 1395, + 1396, + 1397, + 1398, + 1399, + 1400, + 1401, + 1402, + 1403, + 1404, + 1405, + 1406, + 1407, + 1408, + 1409, + 1410, + 1411, + 1412, + 1413, + 1414, + 1415, + 1416, + 1417, + 1418, + 1419, + 1420, + 1421, + 1422, + 1423, + 1424, + 1425, + 1426, + 1427, + 1428, + 1429, + 1430, + 1431, + 1432, + 1433, + 1434, + 1435, + 1436, + 1437, + 1438, + 1439, + 1440, + 1441, + 1442, + 1443, + 1444, + 1445, + 1446, + 1447, + 1448, + 1449, + 1450, + 1451, + 1452, + 1453, + 1454, + 1455, + 1456, + 1457, + 1458, + 1459, + 1460, + 1461, + 1462, + 1463, + 1464, + 1465, + 1466, + 1467, + 1468, + 1469, + 1470, + 1471, + 1472, + 1473, + 1474, + 1475, + 1476, + 1477, + 1478, + 1479, + 1480, + 1481, + 1482, + 1483, + 1484, + 1485, + 1486, + 1487, + 1488, + 1489, + 1490, + 1491, + 1492, + 1493, + 1494, + 1495, + 1496, + 1497, + 1498, + 1499, + 1500, + 1501, + 1502, + 1503, + 1504, + 1505, + 1506, + 1507, + 1508, + 1509, + 1510, + 1511, + 1512, + 1513, + 1514, + 1515, + 1516, + 1517, + 1518, + 1519, + 1520, + 1521, + 1522, + 1523, + 1524, + 1525, + 1526, + 1527, + 1528, + 1529, + 1530, + 1531, + 1532, + 1533, + 1534, + 1535, + 1536, + 1537, + 1538, + 1539, + 1540, + 1541, + 1542, + 1543, + 1544, + 1545, + 1546, + 1547, + 1548, + 1549, + 1550, + 1551, + 1552, + 1553, + 1554, + 1555, + 1556, + 1557, + 1558, + 1559, + 1560, + 1561, + 1562, + 1563, + 1564, + 1565, + 1566, + 1567, + 1568, + 1569, + 1570, + 1571, + 1572, + 1573, + 1574, + 1575, + 1576, + 1577, + 1578, + 1579, + 1580, + 1581, + 1582, + 1583, + 1584, + 1585, + 1586, + 1587, + 1588, + 1589, + 1590, + 1591, + 1592, + 1593, + 1594, + 1595, + 1596, + 1597, + 1598, + 1599, + 1600, + 1601, + 1602, + 1603, + 1604, + 1605, + 1606, + 1607, + 1608, + 1609, + 1610, + 1611, + 1612, + 1613, + 1614, + 1615, + 1616, + 1617, + 1618, + 1619, + 1620, + 1621, + 1622, + 1623, + 1624, + 1625, + 1626, + 1627, + 1628, + 1629, + 1630, + 1631, + 1632, + 1633, + 1634, + 1635, + 1636, + 1637, + 1638, + 1639, + 1640, + 1641, + 1642, + 1643, + 1644, + 1645, + 1646, + 1647, + 1648, + 1649, + 1650, + 1651, + 1652, + 1653, + 1654, + 1655, + 1656, + 1657, + 1658, + 1659, + 1660, + 1661, + 1662, + 1663, + 1664, + 1665, + 1666, + 1667, + 1668, + 1669, + 1670, + 1671, + 1672, + 1673, + 1674, + 1675, + 1676, + 1677, + 1678, + 1679, + 1680, + 1681, + 1682, + 1683, + 1684, + 1685, + 1686, + 1687, + 1688, + 1689, + 1690, + 1691, + 1692, + 1693, + 1694, + 1695, + 1696, + 1697, + 1698, + 1699, + 1700, + 1701, + 1702, + 1703, + 1704, + 1705, + 1706, + 1707, + 1708, + 1709, + 1710, + 1711, + 1712, + 1713, + 1714, + 1715, + 1716, + 1717, + 1718, + 1719, + 1720, + 1721, + 1722, + 1723, + 1724, + 1725, + 1726, + 1727, + 1728, + 1729, + 1730, + 1731, + 1732, + 1733, + 1734, + 1735, + 1736, + 1737, + 1738, + 1739, + 1740, + 1741, + 1742, + 1743, + 1744, + 1745, + 1746, + 1747, + 1748, + 1749, + 1750, + 1751, + 1752, + 1753, + 1754, + 1755, + 1756, + 1757, + 1758, + 1759, + 1760, + 1761, + 1762, + 1763, + 1764, + 1765, + 1766, + 1767, + 1768, + 1769, + 1770, + 1771, + 1772, + 1773, + 1774, + 1775, + 1776, + 1777, + 1778, + 1779, + 1780, + 1781, + 1782, + 1783, + 1784, + 1785, + 1786, + 1787, + 1788, + 1789, + 1790, + 1791, + 1792, + 1793, + 1794, + 1795, + 1796, + 1797, + 1798, + 1799, + 1800, + 1801, + 1802, + 1803, + 1804, + 1805, + 1806, + 1807, + 1808, + 1809, + 1810, + 1811, + 1812, + 1813, + 1814, + 1815, + 1816, + 1817, + 1818, + 1819, + 1820, + 1821, + 1822, + 1823, + 1824, + 1825, + 1826, + 1827, + 1828, + 1829, + 1830, + 1831, + 1832, + 1833, + 1834, + 1835, + 1836, + 1837, + 1838, + 1839, + 1840, + 1841, + 1842, + 1843, + 1844, + 1845, + 1846, + 1847, + 1848, + 1849, + 1850, + 1851, + 1852, + 1853, + 1854, + 1855, + 1856, + 1857, + 1858, + 1859, + 1860, + 1861, + 1862, + 1863, + 1864, + 1865, + 1866, + 1867, + 1868, + 1869, + 1870, + 1871, + 1872, + 1873, + 1874, + 1875, + 1876, + 1877, + 1878, + 1879, + 1880, + 1881, + 1882, + 1883, + 1884, + 1885, + 1886, + 1887, + 1888, + 1889, + 1890, + 1891, + 1892, + 1893, + 1894, + 1895, + 1896, + 1897, + 1898, + 1899, + 1900, + 1901, + 1902, + 1903, + 1904, + 1905, + 1906, + 1907, + 1908, + 1909, + 1910, + 1911, + 1912, + 1913, + 1914, + 1915, + 1916, + 1917, + 1918, + 1919, + 1920, + 1921, + 1922, + 1923, + 1924, + 1925, + 1926, + 1927, + 1928, + 1929, + 1930, + 1931, + 1932, + 1933, + 1934, + 1935, + 1936, + 1937, + 1938, + 1939, + 1940, + 1941, + 1942, + 1943, + 1944, + 1945, + 1946, + 1947, + 1948, + 1949, + 1950, + 1951, + 1952, + 1953, + 1954, + 1955, + 1956, + 1957, + 1958, + 1959, + 1960, + 1961, + 1962, + 1963, + 1964, + 1965, + 1966, + 1967, + 1968, + 1969, + 1970, + 1971, + 1972, + 1973, + 1974, + 1975, + 1976, + 1977, + 1978, + 1979, + 1980, + 1981, + 1982, + 1983, + 1984, + 1985, + 1986, + 1987, + 1988, + 1989, + 1990, + 1991, + 1992, + 1993, + 1994, + 1995, + 1996, + 1997, + 1998, + 1999, + 2000, + 2001, + 2002, + 2003, + 2004, + 2005, + 2006, + 2007, + 2008, + 2009, + 2010, + 2011, + 2012, + 2013, + 2014, + 2015, + 2016, + 2017, + 2018, + 2019, + 2020, + 2021, + 2022, + 2023, + 2024, + 2025, + 2026, + 2027, + 2028, + 2029, + 2030, + 2031, + 2032, + 2033, + 2034, + 2035, + 2036, + 2037, + 2038, + 2039, + 2040, + 2041, + 2042, + 2043, + 2044, + 2045, + 2046, + 2047, + 2048, + 2049, + 2050, + 2051, + 2052, + 2053, + 2054, + 2055, + 2056, + 2057, + 2058, + 2059, + 2060, + 2061, + 2062, + 2063, + 2064, + 2065, + 2066, + 2067, + 2068, + 2069, + 2070, + 2071, + 2072, + 2073, + 2074, + 2075, + 2076, + 2077, + 2078, + 2079, + 2080, + 2081, + 2082, + 2083, + 2084, + 2085, + 2086, + 2087, + 2088, + 2089, + 2090, + 2091, + 2092, + 2093, + 2094, + 2095, + 2096, + 2097, + 2098, + 2099, + 2100, + 2101, + 2102, + 2103, + 2104, + 2105, + 2106, + 2107, + 2108, + 2109, + 2110, + 2111, + 2112, + 2113, + 2114, + 2115, + 2116, + 2117, + 2118, + 2119, + 2120, + 2121, + 2122, + 2123, + 2124, + 2125, + 2126, + 2127, + 2128, + 2129, + 2130, + 2131, + 2132, + 2133, + 2134, + 2135, + 2136, + 2137, + 2138, + 2139, + 2140, + 2141, + 2142, + 2143, + 2144, + 2145, + 2146, + 2147, + 2148, + 2149, + 2150, + 2151, + 2152, + 2153, + 2154, + 2155, + 2156, + 2157, + 2158, + 2159, + 2160, + 2161, + 2162, + 2163, + 2164, + 2165, + 2166, + 2167, + 2168, + 2169, + 2170, + 2171, + 2172, + 2173, + 2174, + 2175, + 2176, + 2177, + 2178, + 2179, + 2180, + 2181, + 2182, + 2183, + 2184, + 2185, + 2186, + 2187, + 2188, + 2189, + 2190, + 2191, + 2192, + 2193, + 2194, + 2195, + 2196, + 2197, + 2198, + 2199, + 2200, + 2201, + 2202, + 2203, + 2204, + 2205, + 2206, + 2207, + 2208, + 2209, + 2210, + 2211, + 2212, + 2213, + 2214, + 2215, + 2216, + 2217, + 2218, + 2219, + 2220, + 2221, + 2222, + 2223, + 2224, + 2225, + 2226, + 2227, + 2228, + 2229, + 2230, + 2231, + 2232, + 2233, + 2234, + 2235, + 2236, + 2237, + 2238, + 2239, + 2240, + 2241, + 2242, + 2243, + 2244, + 2245, + 2246, + 2247, + 2248, + 2249, + 2250, + 2251, + 2252, + 2253, + 2254, + 2255, + 2256, + 2257, + 2258, + 2259, + 2260, + 2261, + 2262, + 2263, + 2264, + 2265, + 2266, + 2267, + 2268, + 2269, + 2270, + 2271, + 2272, + 2273, + 2274, + 2275, + 2276, + 2277, + 2278, + 2279, + 2280, + 2281, + 2282, + 2283, + 2284, + 2285, + 2286, + 2287, + 2288, + 2289, + 2290, + 2291, + 2292, + 2293, + 2294, + 2295, + 2296, + 2297, + 2298, + 2299, + 2300, + 2301, + 2302, + 2303, + 2304, + 2305, + 2306, + 2307, + 2308, + 2309, + 2310, + 2311, + 2312, + 2313, + 2314, + 2315, + 2316, + 2317, + 2318, + 2319, + 2320, + 2321, + 2322, + 2323, + 2324, + 2325, + 2326, + 2327, + 2328, + 2329, + 2330, + 2331, + 2332, + 2333, + 2334, + 2335, + 2336, + 2337, + 2338, + 2339, + 2340, + 2341, + 2342, + 2343, + 2344, + 2345, + 2346, + 2347, + 2348, + 2349, + 2350, + 2351, + 2352, + 2353, + 2354, + 2355, + 2356, + 2357, + 2358, + 2359, + 2360, + 2361, + 2362, + 2363, + 2364, + 2365, + 2366, + 2367, + 2368, + 2369, + 2370, + 2371, + 2372, + 2373, + 2374, + 2375, + 2376, + 2377, + 2378, + 2379, + 2380, + 2381, + 2382, + 2383, + 2384, + 2385, + 2386, + 2387, + 2388, + 2389, + 2390, + 2391, + 2392, + 2393, + 2394, + 2395, + 2396, + 2397, + 2398, + 2399, + 2400, + 2401, + 2402, + 2403, + 2404, + 2405, + 2406, + 2407, + 2408, + 2409, + 2410, + 2411, + 2412, + 2413, + 2414, + 2415, + 2416, + 2417, + 2418, + 2419, + 2420, + 2421, + 2422, + 2423, + 2424, + 2425, + 2426, + 2427, + 2428, + 2429, + 2430, + 2431, + 2432, + 2433, + 2434, + 2435, + 2436, + 2437, + 2438, + 2439, + 2440, + 2441, + 2442, + 2443, + 2444, + 2445, + 2446, + 2447, + 2448, + 2449, + 2450, + 2451, + 2452, + 2453, + 2454, + 2455, + 2456, + 2457, + 2458, + 2459, + 2460, + 2461, + 2462, + 2463, + 2464, + 2465, + 2466, + 2467, + 2468, + 2469, + 2470, + 2471, + 2472, + 2473, + 2474, + 2475, + 2476, + 2477, + 2478, + 2479, + 2480, + 2481, + 2482, + 2483, + 2484, + 2485, + 2486, + 2487, + 2488, + 2489, + 2490, + 2491, + 2492, + 2493, + 2494, + 2495, + 2496, + 2497, + 2498, + 2499, + 2500, + 2501, + 2502, + 2503, + 2504, + 2505, + 2506, + 2507, + 2508, + 2509, + 2510, + 2511, + 2512, + 2513, + 2514, + 2515, + 2516, + 2517, + 2518, + 2519, + 2520, + 2521, + 2522, + 2523, + 2524, + 2525, + 2526, + 2527, + 2528, + 2529, + 2530, + 2531, + 2532, + 2533, + 2534, + 2535, + 2536, + 2537, + 2538, + 2539, + 2540, + 2541, + 2542, + 2543, + 2544, + 2545, + 2546, + 2547, + 2548, + 2549, + 2550, + 2551, + 2552, + 2553, + 2554, + 2555, + 2556, + 2557, + 2558, + 2559, + 2560, + 2561, + 2562, + 2563, + 2564, + 2565, + 2566, + 2567, + 2568, + 2569, + 2570, + 2571, + 2572, + 2573, + 2574, + 2575, + 2576, + 2577, + 2578, + 2579, + 2580, + 2581, + 2582, + 2583, + 2584, + 2585, + 2586, + 2587, + 2588, + 2589, + 2590, + 2591, + 2592, + 2593, + 2594, + 2595, + 2596, + 2597, + 2598, + 2599, + 2600, + 2601, + 2602, + 2603, + 2604, + 2605, + 2606, + 2607, + 2608, + 2609, + 2610, + 2611, + 2612, + 2613, + 2614, + 2615, + 2616, + 2617, + 2618, + 2619, + 2620, + 2621, + 2622, + 2623, + 2624, + 2625, + 2626, + 2627, + 2628, + 2629, + 2630, + 2631, + 2632, + 2633, + 2634, + 2635, + 2636, + 2637, + 2638, + 2639, + 2640, + 2641, + 2642, + 2643, + 2644, + 2645, + 2646, + 2647, + 2648, + 2649, + 2650, + 2651, + 2652, + 2653, + 2654, + 2655, + 2656, + 2657, + 2658, + 2659, + 2660, + 2661, + 2662, + 2663, + 2664, + 2665, + 2666, + 2667, + 2668, + 2669, + 2670, + 2671, + 2672, + 2673, + 2674, + 2675, + 2676, + 2677, + 2678, + 2679, + 2680, + 2681, + 2682, + 2683, + 2684, + 2685, + 2686, + 2687, + 2688, + 2689, + 2690, + 2691, + 2692, + 2693, + 2694, + 2695, + 2696, + 2697, + 2698, + 2699, + 2700, + 2701, + 2702, + 2703, + 2704, + 2705, + 2706, + 2707, + 2708, + 2709, + 2710, + 2711, + 2712, + 2713, + 2714, + 2715, + 2716, + 2717, + 2718, + 2719, + 2720, + 2721, + 2722, + 2723, + 2724, + 2725, + 2726, + 2727, + 2728, + 2729, + 2730, + 2731, + 2732, + 2733, + 2734, + 2735, + 2736, + 2737, + 2738, + 2739, + 2740, + 2741, + 2742, + 2743, + 2744, + 2745, + 2746, + 2747, + 2748, + 2749, + 2750, + 2751, + 2752, + 2753, + 2754, + 2755, + 2756, + 2757, + 2758, + 2759, + 2760, + 2761, + 2762, + 2763, + 2764, + 2765, + 2766, + 2767, + 2768, + 2769, + 2770, + 2771, + 2772, + 2773, + 2774, + 2775, + 2776, + 2777, + 2778, + 2779, + 2780, + 2781, + 2782, + 2783, + 2784, + 2785, + 2786, + 2787, + 2788, + 2789, + 2790, + 2791, + 2792, + 2793, + 2794, + 2795, + 2796, + 2797, + 2798, + 2799, + 2800, + 2801, + 2802, + 2803, + 2804, + 2805, + 2806, + 2807, + 2808, + 2809, + 2810, + 2811, + 2812, + 2813, + 2814, + 2815, + 2816, + 2817, + 2818, + 2819, + 2820, + 2821, + 2822, + 2823, + 2824, + 2825, + 2826, + 2827, + 2828, + 2829, + 2830, + 2831, + 2832, + 2833, + 2834, + 2835, + 2836, + 2837, + 2838, + 2839 + ], + "rate_pass_wall_s": 32.792798049998964 + }, + "routes": { + "b_s3_pdip": { + "label": "S3 PDIP (source-only)", + "status": "ok", + "solver": "library", + "ms": 38.91333489991666, + "log_likelihood": 28622.39485118912 + }, + "d_s3_certified_fallback": { + "label": "S3 certified active set, budget 11, PDIP fallback", + "status": "ok", + "solver": "harness-injected certified active set", + "pass_budget": 11, + "fallback": true, + "injected_solver_calls_jax": 1, + "injected_solver_calls_numpy": 0, + "ms": 30.169564400057425, + "log_likelihood": 28622.394851189252 + } + }, + "equivalence_pins": [ + { + "pin": "route d (certified, fallback) == route b (library PDIP)", + "route": "d_s3_certified_fallback", + "reference": "b_s3_pdip", + "expectation": "the certified active set returns the library's own positive solution", + "rtol": 1e-09, + "got": 28622.394851189252, + "reference_value": 28622.39485118912, + "rel_diff": 4.575691088611358e-15, + "status": "PASS" + } + ], + "reference": { + "log_evidence_s3_library": 28622.39485119987 + }, + "library_revisions": { + "PyAutoNerves": { + "head": "1fa613aa8d89a79613009fb66f5b4e2d21deb57a", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoNerves", + "module_file": "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/__init__.py" + }, + "PyAutoFit": { + "head": "dd9fbe0aab60c4a57702b1444ca031b317c91331", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoFit", + "module_file": "/mnt/ral/jnightin/PyAuto/PyAutoFit/autofit/__init__.py" + }, + "PyAutoArray": { + "head": "3de624b5b91a4efa130dc3cb0a3a0f06f85025a3", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoArray", + "module_file": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/__init__.py" + }, + "PyAutoGalaxy": { + "head": "70a61e26cd715cefe7012a38285698091246a8a4", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy", + "module_file": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/__init__.py" + }, + "PyAutoLens": { + "head": "86054bbc19baa2f710a12e04a94fa27ab37cc354", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoLens", + "module_file": "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/__init__.py" + } + }, + "timer": { + "dataset_load": 0.0750712310000381, + "mask_and_oversample": 0.014334589999634773, + "adapt_image_build": 0.0022064340009819716, + "model_build": 0.5941284500004258, + "instance_from_vector": 0.01247954300197307, + "register_pytrees": 0.0007429010001942515, + "fit_imaging_eager": 4.552093195001362, + "s3_system_build": 3.152841222999996, + "b_s3_pdip_library_likelihood_jit_lower": 1.276441406000231, + "b_s3_pdip_library_likelihood_jit_compile": 3.437178715998016, + "b_s3_pdip_library_likelihood_jit_first_call": 0.10070659700068063, + "b_s3_pdip_library_likelihood_jit_steady_x10": 0.38913334899916663, + "d_s3_certified_fallback_library_likelihood_jit_lower": 0.4725338110001758, + "d_s3_certified_fallback_library_likelihood_jit_compile": 3.8807399610013817, + "d_s3_certified_fallback_library_likelihood_jit_first_call": 0.04021514399937587, + "d_s3_certified_fallback_library_likelihood_jit_steady_x10": 0.30169564400057425, + "captured_rate_pass": 26.004200072999083, + "captured_rate_uncertified_pdip_recheck": 6.785607401998277 + }, + "note": "Phase C1 (#304) rate pass: untimed. No millisecond here is a result. The rate is the fraction of captured lanes whose certificate failed under the named certified_fallback; the phase-C2 verdict takes it together with the timed pass." +} \ No newline at end of file diff --git a/results/breakdown/imaging/fixed_light_trace_rectangular_jitvmap16_captured_pix1_libcertified_fboff_b16_hpc_a100_fp64_fixed_light_trace.json b/results/breakdown/imaging/fixed_light_trace_rectangular_jitvmap16_captured_pix1_libcertified_fboff_b16_hpc_a100_fp64_fixed_light_trace.json new file mode 100644 index 000000000..09dce99f2 --- /dev/null +++ b/results/breakdown/imaging/fixed_light_trace_rectangular_jitvmap16_captured_pix1_libcertified_fboff_b16_hpc_a100_fp64_fixed_light_trace.json @@ -0,0 +1,5042 @@ +{ + "device": { + "backend": "gpu", + "device": "cuda:0", + "hostname": "euclid-ral-gpu-1", + "xla_flags": "--xla_disable_hlo_passes=constant_folding --xla_gpu_autotune_level=0 --xla_gpu_enable_triton_gemm=false", + "omp_num_threads": null, + "cpu_count": 124, + "jax_compilation_cache_dir": "/mnt/ral/jnightin/autolens_profiling_wt/certified-solver-phase-c1-lane-rate/output/jax_cache/fixed_light_lanerate_rectangular_pix1_time_16_certified_off_350768_22", + "autotune_cache_entries_at_start": 0, + "cache_fresh": true, + "nvidia_smi": "NVIDIA A100 80GB PCIe, 35453 MiB, 81920 MiB" + }, + "machine": { + "cpu_model": "AMD EPYC 7702 64-Core Processor", + "cpu_count_os": 124, + "nproc": 4, + "nproc_all": 124, + "nproc_note": "GNU nproc honours OMP_NUM_THREADS, so `nproc` can print 1 on a multi-core host; `nproc_all` is the core count.", + "ram_total": "928298200 kB", + "kernel": "5.14.0-687.50.1.el9_8.x86_64", + "platform": "Linux-5.14.0-687.50.1.el9_8.x86_64-x86_64-with-glibc2.34", + "python": "3.12.4", + "jax_thread_env": { + "NPROC": null + }, + "blas_thread_env": { + "OMP_NUM_THREADS": null, + "OPENBLAS_NUM_THREADS": null, + "MKL_NUM_THREADS": null, + "VECLIB_MAXIMUM_THREADS": null, + "NUMEXPR_NUM_THREADS": null + }, + "thread_env_note": "NPROC sizes XLA's CPU intra-op pool (the JAX rows); the BLAS knobs pin OpenBLAS/MKL/OpenMP (the numpy/scipy rows) and do not touch JAX. Two disjoint families; both are recorded on every CPU timing.", + "gpu": "NVIDIA A100 80GB PCIe, 81920 MiB, 610.57.04" + }, + "precision": "fp64", + "configuration": { + "pixel_scale_arcsec": 0.05, + "mask_radius_arcsec": 3.5, + "image_pixels_masked": 15361, + "over_sampled_pixels": 62752, + "mesh": "rectangular", + "mesh_shape": [ + 39, + 39 + ], + "source_pixels": 1521, + "source_pixels_requested": null, + "dataset": "hst", + "dataset_sha256": { + "data.fits": "e4e833a28e9c6f6fb023cd85c0d3dde74068720256bc77a240633500e5b04fac", + "noise_map.fits": "315c6266a0acd3ac9c8da82fcd2b45a08697362481fd7a35072bab1658530ba3", + "psf.fits": "8389ba0e8bf4a09b4a561cfc246181a2fb944ed396754cd0ff76fdd22910d303" + }, + "cell_source_sha256": "06a162fcdae6b329384ec33322f443df07215d86e56f0505ac15b3d3473eb432", + "inversion_path": "dense", + "pass_budget": 11, + "pass_budget_basis": "phase 3 (autolens_profiling#255): the smallest ZERO-fallback budget per mesh, the budget a production run fixes. NOT phase 0's certifying budget (2 for Delaunay), which falls back on 67.5 % of a graded draw set and is not a production cost.", + "border_relocator_mode": "cell", + "border_relocator": true, + "border_relocator_note": "'cell' is use_border_relocator=True, which every profiling cell in this family forces; 'library' passes None and takes the shipped config default, which is what production runs. The resolved boolean is what this leg actually ran.", + "routes_selected": [ + "b", + "d" + ], + "trace_calls": 10, + "command_buffers_traced": "off", + "use_mixed_precision": false, + "tau_rel": 1e-09, + "regularization": { + "scheme": "constant", + "coefficient": 1.0 + }, + "thread_env": { + "n_threads": null, + "vars": [ + "OPENBLAS_NUM_THREADS", + "MKL_NUM_THREADS", + "OMP_NUM_THREADS", + "VECLIB_MAXIMUM_THREADS", + "NUMEXPR_NUM_THREADS" + ], + "set_to": null, + "preexisting": {}, + "overridden": {}, + "note": "Not pinned (legacy variant): recorded as found." + }, + "over_sample_size_lp_rule": { + "sub_size_list": [ + 4, + 2, + 2 + ], + "radial_list": [ + 0.3, + 0.6 + ], + "centre": [ + 0.0, + 0.0 + ] + }, + "vmap_batch": 16, + "lanes": "captured", + "arms": [ + "vmap", + "scalar" + ], + "fallback": "off", + "draw_seed": 0, + "vmap_composition": "jax.jit(jax.vmap(fn))", + "lane_rtol": 1e-09, + "vmap_flags_note": "Strict ProfileCLI.parse_cell_args rejects unknown flags. These keys record the exact batching program and prevent historical vmap(jit) artifacts from being mistaken for current jit(vmap) measurements.", + "solver_source": "library", + "solver": "certified", + "certified_fallback": "none", + "certified_pass_budget": 16, + "captured_pass": "time", + "batches": "/mnt/ral/jnightin/autolens_profiling_wt/certified-solver-phase-c1-lane-rate/results/breakdown/imaging/nautilus_batches_rectangular_pix1.npz" + }, + "solver_injection": { + "patched": null, + "part_v": "none \u2014 library mode selects the solver through al.Settings", + "part_b_route_d": { + "patched": "autoarray.inversion.inversion.inversion_util.reconstruction_positive_only_from", + "pass_budget": 11, + "fallback": true + }, + "note": "Library mode (phase B, #300): PART V's arms and references run the library's own positive-only solve, selected by Settings(positive_only_solver, certified_fallback, certified_pass_budget); nothing is injected. PART B's single-call route d (the fiducial d == b pin) still uses the phase-1 harness injection at the phase-3 budget and is not a phase-B row. The untimed certification report observes the library solve (library_solver_observed) without changing it." + }, + "routes": { + "b_s3_pdip": { + "label": "S3 PDIP (source-only)", + "status": "ok", + "solver": "library", + "ms": 38.94080659993051, + "log_likelihood": 28622.39485118912 + }, + "d_s3_certified_fallback": { + "label": "S3 certified active set, budget 11, PDIP fallback", + "status": "ok", + "solver": "harness-injected certified active set", + "pass_budget": 11, + "fallback": true, + "injected_solver_calls_jax": 1, + "injected_solver_calls_numpy": 0, + "ms": 30.230409800060443, + "log_likelihood": 28622.394851189252 + } + }, + "equivalence_pins": [ + { + "pin": "route d (certified, fallback) == route b (library PDIP)", + "route": "d_s3_certified_fallback", + "reference": "b_s3_pdip", + "expectation": "the certified active set returns the library's own positive solution", + "rtol": 1e-09, + "got": 28622.394851189252, + "reference_value": 28622.39485118912, + "rel_diff": 4.575691088611358e-15, + "status": "PASS" + } + ], + "equivalence_rtol": 1e-09, + "reference": { + "log_evidence_s0_library": 28622.394851199875, + "log_evidence_s3_library": 28622.39485119987, + "s3": { + "n_params": 1521, + "n_mapper": 1521, + "n_funcs": 0, + "edge_zeroed_pixels": 152, + "subtracted_light_flux": 5253.476646922047 + } + }, + "command_buffers": { + "wall_on_ms": 492.7899731999787, + "wall_off_ms": 495.960514699982, + "command_buffer_delta_ms": 3.17054150000331, + "command_buffer_delta_pct": 0.6433859600298066, + "traced": "off", + "compiler_option": "xla_gpu_enable_command_buffer", + "probe": { + "note": "Not taken in --vmap-batch mode: the CUPTI-inside-a-CUDA-graph probe is a phase-1 diagnostic about the JOIN, and this mode already compiles and times both the command-buffers ON and OFF executable of every arm." + }, + "note": "ONE lowering, TWO compilations, one process. wall_on_ms is the PRODUCTION program (CUDA graphs as XLA ships them) and is the number comparable to phase 5's row; wall_off_ms is the graph-less program the stage rows attribute. The delta is the launch overhead the graphs remove \u2014 it lands in device_idle and host_outside_span, not in any stage. Reconciliation is computed against wall_off_ms." + }, + "trace": { + "parser": "ProfileData.from_file(xplane) + as_text() + stack_frame_index(proto field 17)", + "stage_audit": { + "mesh_construction": [ + { + "instruction": "fusion.2", + "ms": 0.14846999999999982, + "opcode": "fusion", + "shape": "(f64[15361,2]{1,0}, s64[15361,2]{1,0}, s32[15361,2]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:227", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:227 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_select_fusion", + "ms": 0.039597549999999926, + "opcode": "fusion", + "shape": "(u32[2,15361]{1,0}, u32[2,15361]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69 (forward_interp)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:573 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/abstract.py:36 (AbstractInterpolator.mappings)" + ] + }, + { + "instruction": "loop_select_fusion.3", + "ms": 0.03488783749999943, + "opcode": "fusion", + "shape": "(u32[15361]{0}, u32[15361]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_select_fusion.1", + "ms": 0.03473039374999958, + "opcode": "fusion", + "shape": "(u32[15361]{0}, u32[15361]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_add_fusion", + "ms": 0.021229881249999475, + "opcode": "fusion", + "shape": "s64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69 (forward_interp)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:573 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/abstract.py:36 (AbstractInterpolator.mappings)" + ] + }, + { + "instruction": "loop_add_fusion.3", + "ms": 0.021092224999999503, + "opcode": "fusion", + "shape": "s64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "mixed_fusion": [ + { + "instruction": "loop_divide_gather_fusion", + "ms": 0.7003358249999999, + "opcode": "fusion", + "shape": "(f64[15361,1,1,1521]{3,2,1,0}, f64[15361,1,1,1521]{3,2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_broadcast_fusion.3", + "ms": 0.23251897500000013, + "opcode": "fusion", + "shape": "f64[1521,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_multiply_transpose_fusion", + "ms": 0.1855460125, + "opcode": "fusion", + "shape": "(f64[1369,1369]{1,0}, f64[1369,1369]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:237 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:274 (_certified_positive_only_from)" + ] + }, + { + "instruction": "loop_broadcast_fusion", + "ms": 0.13649223125000007, + "opcode": "fusion", + "shape": "f64[15361,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:342", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:342 (mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:283 (Mapper.mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:91 (AbstractInversionImaging._mapping_matrix_for_convolution_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:137 (AbstractInversionImaging.operated_mapping_matrix_list)" + ] + }, + { + "instruction": "input_reduce_fusion.3", + "ms": 0.11361058749999996, + "opcode": "fusion", + "shape": "f64[92,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123 (data_vector_via_blurred_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:67 (InversionImagingMapping.data_vector)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:699 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_reduce_fusion.6", + "ms": 0.11175777499999999, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163 (mapped_reconstructed_data_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:120 (InversionImagingMapping._mapped_reconstructed_data_dict_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:196 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + } + ], + "border_relocator": [ + { + "instruction": "eigh.0", + "ms": 0.07437944374999991, + "opcode": "custom-call", + "shape": "(f64[2,2]{0,1}, f64[2]{0}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "custom-call.2", + "ms": 0.007910456250000001, + "opcode": "custom-call", + "shape": "(f64[2,2]{1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_reduce_fusion.7", + "ms": 0.005284137500000001, + "opcode": "fusion", + "shape": "(f64[], f64[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:270", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:270 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_add_fusion.5", + "ms": 0.003600881249999995, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:423 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_concatenate_fusion.4", + "ms": 0.0023745499999999996, + "opcode": "fusion", + "shape": "f64[392,2]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:238", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:238 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_reduce_fusion.14", + "ms": 0.001610337499999999, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:256", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:256 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + } + ], + "other": [ + { + "instruction": "copy.41", + "ms": 0.0303602312499998, + "opcode": "copy", + "shape": "u32[2,15361]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.42", + "ms": 0.030067275000000313, + "opcode": "copy", + "shape": "u32[2,15361]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.59", + "ms": 0.028573787500000766, + "opcode": "copy", + "shape": "u32[15361]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.51", + "ms": 0.028510237500000833, + "opcode": "copy", + "shape": "u32[15361]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.50", + "ms": 0.028448731250000973, + "opcode": "copy", + "shape": "u32[15361]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.60", + "ms": 0.02844560625000095, + "opcode": "copy", + "shape": "u32[15361]{0}", + "source": "", + "stack": [] + } + ], + "pdip_solve": [ + { + "instruction": "cholesky.40", + "ms": 8.861813318750002, + "opcode": "custom-call", + "shape": "(f64[1369,1369]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "triangular-solve.1", + "ms": 1.5525129624999907, + "opcode": "custom-call", + "shape": "(f64[1369,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "triangular-solve", + "ms": 1.3149034812500089, + "opcode": "custom-call", + "shape": "(f64[1369,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "cholesky.60", + "ms": 0.8453678250000011, + "opcode": "custom-call", + "shape": "(f64[1369,1369]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:237 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:274 (_certified_positive_only_from)" + ] + }, + { + "instruction": "cholesky.70", + "ms": 0.838412799999998, + "opcode": "custom-call", + "shape": "(f64[1369,1369]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:297 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:274 (_certified_positive_only_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:496 (reconstruction_positive_only_from)" + ] + }, + { + "instruction": "input_transpose_fusion.1", + "ms": 0.3112221062500004, + "opcode": "fusion", + "shape": "f64[1369,1369]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + } + ], + "mapping_matrix": [ + { + "instruction": "input_reduce_fusion.20", + "ms": 0.0028111124999999995, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:362 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + } + ], + "regularization_H": [ + { + "instruction": "input_scatter_fusion.8", + "ms": 0.002840362499999999, + "opcode": "fusion", + "shape": "f64[1521,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:123 (weighted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:366 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "psf_convolution_mapping_matrix": [ + { + "instruction": "fft.19.0", + "ms": 1.7862128062499991, + "opcode": "fft", + "shape": "f64[1521,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_scatter_fusion", + "ms": 1.4272017124999998, + "opcode": "fusion", + "shape": "f64[1521,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.15.0", + "ms": 1.3883661874999982, + "opcode": "fft", + "shape": "c128[1521,180,91]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.17.0", + "ms": 0.9928161124999997, + "opcode": "fft", + "shape": "c128[1521,91,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_transpose_fusion.2", + "ms": 0.5221779874999999, + "opcode": "fusion", + "shape": "c128[1521,91,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "wrapped_transpose.2", + "ms": 0.50538510625, + "opcode": "fusion", + "shape": "c128[1521,180,91]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + } + ], + "curvature_matrix_F": [ + { + "instruction": "cublas-lt-matmul.2", + "ms": 4.349770500000001, + "opcode": "custom-call", + "shape": "(f64[1521,1521]{1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "inversion_other": [ + { + "instruction": "cholesky.80", + "ms": 0.9205718187500017, + "opcode": "custom-call", + "shape": "(f64[1521,1521]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1078 (AbstractInversion.log_det_curvature_reg_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:347 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "cholesky.90", + "ms": 0.9019525062500009, + "opcode": "custom-call", + "shape": "(f64[1521,1521]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1157 (AbstractInversion.log_det_regularization_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:348 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "loop_reduce_window_fusion.3", + "ms": 0.005837662500000002, + "opcode": "fusion", + "shape": "s64[6,16]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "loop_reduce_window_fusion.2", + "ms": 0.0030367124999999932, + "opcode": "fusion", + "shape": "s64[86,16]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "input_scatter_fusion.9", + "ms": 0.0025597687499999953, + "opcode": "fusion", + "shape": "s64[1369]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527 (AbstractInversion.zeroed_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:567 (AbstractInversion.solve_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:684 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_broadcast_fusion.4", + "ms": 0.001910556249999998, + "opcode": "fusion", + "shape": "(s64[1369]{0}, s64[1369]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527 (AbstractInversion.zeroed_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:567 (AbstractInversion.solve_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:684 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "chi_squared_evidence": [ + { + "instruction": "loop_multiply_fusion", + "ms": 0.002975749999999999, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:300", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:300 (AbstractNDArray.__pow__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:60 (unwrap_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:35 (to_new_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:78 (chi_squared_map_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:78 (AbstractFit.chi_squared_map)" + ] + } + ] + }, + "stage_audit_note": "The HLO instructions that contributed most of each stage's milliseconds, with their full source stack. A stage row is only as good as the rules that built it; this is how a reader checks a row against the HLO instead of trusting it.", + "untraced_wall_ms": 30.995313312496364, + "reconciliation_vs_untraced_pct": 6.608653897451632, + "wall_basis": "wall_ms is the TRACED run's wall, the run these kernel durations came from. untraced_wall_ms is the same executable without the profiler; the difference is the profiler's overhead and belongs in neither the stages nor the idle row.", + "calls": 160, + "call_split": "per-call (first-instruction recurrence)", + "call_blocks": 160, + "events": 89090, + "streams": [ + "Stream #14(Memset,MemcpyD2H,Compute,MemcpyH2D,MemcpyD2D)" + ], + "per_stage_ms": { + "border_relocator": { + "median_ms": 0.0966555, + "min_ms": 0.09599800000000003, + "max_ms": 0.09759799999999999 + }, + "chi_squared_evidence": { + "median_ms": 0.0029595000000000003, + "min_ms": 0.002815, + "max_ms": 0.003296 + }, + "curvature_matrix_F": { + "median_ms": 4.327062, + "min_ms": 4.305276, + "max_ms": 4.522166 + }, + "inversion_other": { + "median_ms": 1.838941, + "min_ms": 1.823593, + "max_ms": 1.862181 + }, + "mapping_matrix": { + "median_ms": 0.002816, + "min_ms": 0.002783, + "max_ms": 0.002849 + }, + "memset": { + "median_ms": 0.040222999999999995, + "min_ms": 0.014975999999999998, + "max_ms": 0.05491200000000002 + }, + "mesh_construction": { + "median_ms": 0.3445290000000001, + "min_ms": 0.3419430000000003, + "max_ms": 0.3463909999999999 + }, + "mixed_fusion": { + "median_ms": 1.8530155000000004, + "min_ms": 1.8474620000000004, + "max_ms": 1.858663 + }, + "other": { + "median_ms": 0.18080299999999977, + "min_ms": 0.18034199999999972, + "max_ms": 0.18120699999999973 + }, + "pdip_solve": { + "median_ms": 16.078145999999997, + "min_ms": 4.668055, + "max_ms": 21.500268000000016 + }, + "psf_convolution_mapping_matrix": { + "median_ms": 6.6214715, + "min_ms": 6.607412999999999, + "max_ms": 6.6393819999999995 + }, + "regularization_H": { + "median_ms": 0.002816, + "min_ms": 0.002432, + "max_ms": 0.0032 + } + }, + "stage_order": [ + "border_relocator", + "mesh_construction", + "mapping_matrix", + "psf_convolution_mapping_matrix", + "curvature_matrix_F", + "regularization_H", + "pdip_solve", + "chi_squared_evidence", + "inversion_other", + "mixed_fusion", + "other", + "memset" + ], + "mixed_fusion": { + "ms": 1.8530155000000004, + "constituent_stage_sets": { + "curvature_matrix_F + psf_convolution_mapping_matrix": 0.7003358249999999, + "pdip_solve + psf_convolution_mapping_matrix": 0.23251897500000013, + "inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": 0.1855460125, + "mapping_matrix + pdip_solve": 0.13883138125000027, + "data_vector_D + pdip_solve": 0.11732490625000003, + "mapped_reconstruction + pdip_solve": 0.11175777499999999, + "border_relocator + pdip_solve": 0.07066861875000008, + "mesh_construction + pdip_solve": 0.03856215000000002, + "inversion_other + regularization_H": 0.03077855624999999, + "inversion_other + pdip_solve": 0.030346618749999933, + "border_relocator + mesh_construction + pdip_solve": 0.02686664375000001, + "curvature_reg_reduce_gather + inversion_other": 0.025528625, + "border_relocator + inversion_other + mapping_matrix + mesh_construction + pdip_solve": 0.020533562500000012, + "pdip_solve + regularization_H": 0.019172987499999985, + "inversion_other + mapping_matrix + pdip_solve + regularization_H": 0.015526856249999997, + "inversion_other + mapping_matrix + mesh_construction": 0.012942187500000008, + "pdip_solve + ray_trace_data_grid": 0.012830974999999996, + "grids_and_structures + mass_profile_deflections + pdip_solve": 0.009855012500000006, + "inversion_other + mapped_reconstruction + reconstruction_scatter": 0.009664968750000004, + "inversion_other + mapped_reconstruction + pdip_solve": 0.009102518749999993, + "chi_squared_evidence + pdip_solve": 0.0076110499999999925, + "inversion_other + mesh_construction + pdip_solve": 0.005480099999999985, + "grids_and_structures + mass_profile_deflections + ray_trace_data_grid": 0.005286868749999997, + "inversion_other + pdip_solve + ray_trace_data_grid": 0.004893300000000005, + "border_relocator + mesh_construction": 0.003445131250000003, + "border_relocator + inversion_other": 0.003382518750000002, + "border_relocator + inversion_other + mesh_construction + pdip_solve": 0.0024909624999999995, + "chi_squared_evidence + inversion_other": 0.001795793750000001 + }, + "example_kernels": { + "curvature_matrix_F + psf_convolution_mapping_matrix": [ + "loop_divide_gather_fusion" + ], + "pdip_solve + psf_convolution_mapping_matrix": [ + "loop_broadcast_fusion.3" + ], + "inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": [ + "input_multiply_transpose_fusion" + ], + "mapping_matrix + pdip_solve": [ + "loop_divide_fusion.1", + "loop_broadcast_fusion" + ], + "data_vector_D + pdip_solve": [ + "input_reduce_fusion.3", + "input_reduce_fusion.18" + ], + "mapped_reconstruction + pdip_solve": [ + "input_reduce_fusion.6" + ], + "border_relocator + pdip_solve": [ + "input_reduce_fusion.8", + "loop_select_sine_fusion", + "input_concatenate_fusion.1", + "input_transpose_fusion.6" + ], + "mesh_construction + pdip_solve": [ + "loop_multiply_fusion.2", + "loop_pad_fusion", + "loop_reduce_fusion", + "triton_softmax.1" + ], + "inversion_other + regularization_H": [ + "input_transpose_fusion.4" + ], + "inversion_other + pdip_solve": [ + "input_scatter_fusion.11", + "input_reduce_fusion.9", + "input_reduce_fusion.16", + "input_reduce_fusion.4" + ] + }, + "prorated_estimate_ms": { + "psf_convolution_mapping_matrix": 0.46642740000000005, + "pdip_solve": 0.46354291406250014, + "curvature_matrix_F": 0.35016791249999996, + "inversion_other": 0.11494141822916662, + "mapped_reconstruction": 0.10852121979166665, + "mapping_matrix": 0.08171817968750014, + "data_vector_D": 0.058662453125000014, + "border_relocator": 0.052433135416666714, + "reconstruction_scatter": 0.049608159375, + "mesh_construction": 0.04082940416666668, + "regularization_H": 0.02885748593749999, + "curvature_reg_reduce_gather": 0.0127643125, + "ray_trace_data_grid": 0.009808877083333334, + "grids_and_structures": 0.005047293750000001, + "mass_profile_deflections": 0.005047293750000001, + "chi_squared_evidence": 0.004703421874999997 + }, + "prorated_note": "ESTIMATE ONLY \u2014 a mixed fusion's time split equally across the stages its constituents span. Never summed into the measured table, never reconciled." + }, + "other_sources_ms": { + "copy.41": 0.0303602312499998, + "copy.42": 0.030067275000000313, + "copy.59": 0.028573787500000766, + "copy.51": 0.028510237500000833, + "copy.50": 0.028448731250000973, + "copy.60": 0.02844560625000095, + "copy.96": 0.001685175000000001, + "copy.95": 0.0016329874999999993, + "copy.52": 0.0015435812499999988, + "copy.34": 0.001537562499999998 + }, + "device_span_ms": 31.929734237500004, + "device_busy_ms": 30.27548594375, + "device_idle_ms": 1.6542482937500047, + "largest_idle_gaps": [ + { + "gap_ms": 0.052286, + "after": "input_concatenate_fusion.4", + "before": "custom-call.2" + }, + { + "gap_ms": 0.033983, + "after": "loop_multiply_fusion.1", + "before": "eigh.0" + }, + { + "gap_ms": 0.031711, + "after": "while.26", + "before": "input_transpose_fusion" + }, + { + "gap_ms": 0.026815, + "after": "while.26", + "before": "input_transpose_fusion" + }, + { + "gap_ms": 0.025087, + "after": "loop_add_fusion.3", + "before": "loop_select_fusion.3" + }, + { + "gap_ms": 0.023615, + "after": "loop_broadcast_fusion.6", + "before": "loop_broadcast_fusion.8" + }, + { + "gap_ms": 0.020256, + "after": "eigh.0", + "before": "eigh.0" + }, + { + "gap_ms": 0.019296, + "after": "copy.50", + "before": "copy.51" + } + ], + "kernel_ms": 31.389438, + "sum_ms": 33.04368629375, + "wall_ms": 31.936779850002498, + "host_outside_span_ms": 0.007045612502494691, + "reconciliation_pct": 3.4659300309746626, + "unjoined_ms": 0.0, + "unjoined_pct": 0.0, + "other_ms": 0.18080299999999977, + "other_pct": 0.5661278339556379, + "note": "Stage rows attribute the command-buffers-OFF program (see the module docstring): kernel times are the same, the launch overhead the CUDA graphs remove is not. sum_ms = kernel rows + device_idle_ms; the residual against wall_ms is host_outside_span_ms (dispatch before the first kernel, teardown after the last).", + "per_stage_ms_per_lane": { + "border_relocator": 0.0966555, + "chi_squared_evidence": 0.0029595000000000003, + "curvature_matrix_F": 4.327062, + "inversion_other": 1.838941, + "mapping_matrix": 0.002816, + "memset": 0.040222999999999995, + "mesh_construction": 0.3445290000000001, + "mixed_fusion": 1.8530155000000004, + "other": 0.18080299999999977, + "pdip_solve": 16.078145999999997, + "psf_convolution_mapping_matrix": 6.6214715, + "regularization_H": 0.002816 + }, + "per_lane_divisor": 1, + "host_callback": { + "pure_callback_span_ms": 0, + "qhull_ms": 0.0, + "callback_body_ms_note": "the OUTERMOST matching body event, not a sum: under the probe the body appears twice (the wrapper and the timed re-implementation it calls) and summing them would count the same work twice", + "events_by_name": { + "ThenExecuteCallback:GetEventForComputeStreamSyncPoint": { + "count": 160, + "ms": 0.2977295000000001 + } + }, + "note": "HOST milliseconds per traced BATCH (the whole invocation), aggregated by name because the events nest. Not a row of the device table: the device pays for them as the idle gaps largest_idle_gaps names." + }, + "host_callback_ms": 0 + }, + "hlo_census": { + "status": "excluded", + "reason": "The legacy census anchors PyAutoArray source line numbers that moved after the phase-1 run. No batched attribution is published from unsupported anchors; the device-event table and wall reconciliation remain valid." + }, + "stage_map_provenance": [ + { + "label": "log_det_curvature_reg", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 850, + 882 + ], + "requires": { + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 884, + 896 + ] + }, + "function": null + }, + { + "label": "log_det_regularization", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 850, + 882 + ], + "requires": { + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 897, + 943 + ] + }, + "function": null + }, + { + "label": "curvature_reg_add", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 359, + 372 + ], + "requires": null, + "function": null + }, + { + "label": "curvature_reg_reduce_gather", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 374, + 398 + ], + "requires": null, + "function": null + }, + { + "label": "edge_subset_gather", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 606, + 614 + ], + "requires": null, + "function": null + }, + { + "label": "regularization_term", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 786, + 849 + ], + "requires": null, + "function": null + }, + { + "label": "mapped_reconstruction", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 722, + 785 + ], + "requires": null, + "function": null + }, + { + "label": "reconstruction_scatter", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 583, + 605 + ], + "requires": null, + "function": null + }, + { + "label": "reconstruction_scatter", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 615, + 721 + ], + "requires": null, + "function": null + }, + { + "label": "certified_active_set_solve", + "path": "likelihood_breakdown/active_set_steps.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "certified_active_set_solve", + "path": "likelihood_breakdown/library_solver_injection.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "pdip_solve", + "path": "PyAutoArray/autoarray/util/jax_nnls.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "pdip_solve", + "path": "PyAutoArray/autoarray/inversion/inversion/inversion_util.py", + "lines": [ + 256, + 488 + ], + "requires": null, + "function": null + }, + { + "label": "mapped_reconstruction", + "path": "PyAutoArray/autoarray/inversion/inversion/inversion_util.py", + "lines": [ + 156, + 200 + ], + "requires": null, + "function": null + }, + { + "label": "curvature_matrix_F", + "path": "PyAutoArray/autoarray/inversion/inversion/inversion_util.py", + "lines": [ + 12, + 155 + ], + "requires": null, + "function": null + }, + { + "label": "reconstruction_scatter", + "path": "PyAutoArray/autoarray/inversion/inversion/inversion_util.py", + "lines": [ + 201, + 255 + ], + "requires": null, + "function": null + }, + { + "label": "data_vector_D", + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py", + "lines": [ + 54, + 73 + ], + "requires": null, + "function": null + }, + { + "label": "curvature_matrix_F", + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py", + "lines": [ + 74, + 110 + ], + "requires": null, + "function": null + }, + { + "label": "data_vector_D", + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py", + "lines": null, + "requires": null, + "function": "data_vector_via_blurred_mapping_matrix_from" + }, + { + "label": "curvature_matrix_F", + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "likelihood_breakdown/psf_cube_injection.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": [ + 1086, + 1300 + ], + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": [ + 632, + 642 + ], + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": [ + 670, + 691 + ], + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": null, + "requires": { + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": [ + 1086, + 1300 + ] + }, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": null, + "requires": { + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py", + "lines": [ + 119, + 150 + ] + }, + "function": null + }, + { + "label": "psf_convolution_image", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py", + "lines": [ + 119, + 150 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_qhull_callback", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 139, + 172 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_seed_argmin", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 173, + 207 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_locate_walk", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 208, + 372 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_dual_areas", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 373, + 396 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_dual_areas", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 437, + 494 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_dual_areas", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 605, + 615 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_interpolation_weights", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 616, + 695 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_interpolation_weights", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 896, + 1000 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_construction", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "border_relocator", + "path": "PyAutoArray/autoarray/inversion/mesh/border_relocator.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "mesh_construction", + "path": "PyAutoArray/autoarray/inversion/mesh/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "mapping_matrix", + "path": "PyAutoArray/autoarray/inversion/mappers/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "mapping_matrix", + "path": "PyAutoArray/autoarray/inversion/mappings/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "mapping_matrix", + "path": "PyAutoArray/autoarray/inversion/linear_obj/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "regularization_H", + "path": "PyAutoArray/autoarray/inversion/regularization/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "chi_squared_evidence", + "path": "PyAutoArray/autoarray/fit/fit_util.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "chi_squared_evidence", + "path": "PyAutoArray/autoarray/fit/fit_dataset.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "ray_trace_mesh_grid", + "path": "PyAutoLens/autolens/lens/to_inversion.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "ray_trace_mesh_grid", + "path": "PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "mass_profile_deflections", + "path": "PyAutoGalaxy/autogalaxy/profiles/mass/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "light_profile_image", + "path": "PyAutoGalaxy/autogalaxy/profiles/light/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "light_profile_image", + "path": "PyAutoGalaxy/autogalaxy/operate/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "ray_trace_data_grid", + "path": "PyAutoLens/autolens/lens/tracer.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "ray_trace_data_grid", + "path": "PyAutoLens/autolens/lens/tracer_util.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "grids_and_structures", + "path": "PyAutoArray/autoarray/structures/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "grids_and_structures", + "path": "PyAutoArray/autoarray/operators/over_sampling/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "grids_and_structures", + "path": "PyAutoArray/autoarray/geometry/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "inversion_other", + "path": "PyAutoArray/autoarray/inversion/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "fit_imaging_other", + "path": "PyAutoLens/autolens/imaging/fit_imaging.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "fit_imaging_other", + "path": "PyAutoGalaxy/autogalaxy/imaging/fit_imaging.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "fit_imaging_other", + "path": "PyAutoArray/autoarray/fit/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "analysis_other", + "path": "PyAutoLens/autolens/analysis/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "analysis_other", + "path": "PyAutoGalaxy/autogalaxy/analysis/", + "lines": null, + "requires": null, + "function": null + } + ], + "trace_timing": { + "traced_wall_ms": 31.936779850002498, + "untraced_wall_ms": 30.995313312496364, + "profiler_overhead_ms": 0.941466537506134, + "profiler_overhead_pct": 3.0374480425934696 + }, + "jit_phases": { + "b_s3_pdip_library_likelihood_jit": { + "lower_s": 1.2775583429975086, + "compile_s": 3.3500151180014655, + "first_call_s": 0.11060720900059096, + "steady_per_call_s": 0.03894080659993051 + }, + "d_s3_certified_fallback_library_likelihood_jit": { + "lower_s": 0.4704094159969827, + "compile_s": 3.8768692949997785, + "first_call_s": 0.04782125299971085, + "steady_per_call_s": 0.03023040980006044 + } + }, + "peak_bytes": { + "after_setup": 85616640, + "after_routes": 1197479168, + "after_all": 19155302656, + "note": "jax.devices()[0].memory_stats()['peak_bytes_in_use']; None on a backend that does not report it (CPU). Process-wide high-water marks." + }, + "note": "Every stage row is a MEASURED sum of GPU kernel durations joined to library source through the optimized HLO of ONE program \u2014 not arithmetic across compilations. The rows attribute the command-buffers-OFF program: kernel time is the same as production, the launch overhead the CUDA graphs remove is not, and command_buffers.* carries both walls and their delta. sum_ms = kernel rows + measured device_idle_ms; the residual against the wall is host_outside_span_ms and is reported, not absorbed. mixed_fusion.prorated_estimate_ms is an ESTIMATE and is never part of the table. No row may be quoted if reconciliation_pct is outside 5 % or unjoined_ms is non-zero.", + "vmap": { + "batch": 16, + "lanes_mode": "captured", + "arms": [ + "vmap", + "scalar" + ], + "draw_seed": 0, + "fallback": false, + "composition": "jax.jit(jax.vmap(fn))", + "composition_provenance": "Current Fitness._vmap after PyAutoFit#1638. Array 343376 used the retired jax.vmap(jax.jit(fn)) composition and is historical evidence only.", + "headline_arm": "scalar", + "lane_rtol": 1e-09, + "lanes": [ + { + "lane": 0, + "draw_name": "call00015_lane00", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.0017002711605432041, + "centre_1": -0.009377257327484623, + "ell_comps_0": -0.002548851608736212, + "ell_comps_1": -0.004262475027349674, + "einstein_radius": -0.0230617600435421 + }, + "log_likelihood_vmap": 18463.288067231657, + "log_likelihood_scalar": 18463.28806683203, + "log_likelihood_library_pdip": 18463.07897110663, + "log_likelihood_library_pdip_scalar": 18463.078970707007, + "rel_diff_vmap_vs_library_pdip": 1.1325095091253122e-05, + "rel_diff_scalar_vs_library_pdip_scalar": 1.1325095091301208e-05, + "abs_diff_nats": 3.996283339802176e-07, + "rel_diff": 2.1644483503353945e-11, + "rel_diff_scalar_vs_library_pdip": 1.1325073446524493e-05, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 3.996246960014105e-07, + "rel_diff_library_pdip_vmap_vs_scalar": 2.1644531588444352e-11, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 1, + "draw_name": "call00015_lane01", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.00044835385344320865, + "centre_1": -0.003464237160596487, + "ell_comps_0": -0.0010036884316776545, + "ell_comps_1": 0.0020035511501456356, + "einstein_radius": -0.05761540720338343 + }, + "log_likelihood_vmap": 15734.704790642201, + "log_likelihood_scalar": 15734.7047905047, + "log_likelihood_library_pdip": 15734.21749647698, + "log_likelihood_library_pdip_scalar": 15734.21749633948, + "rel_diff_vmap_vs_library_pdip": 3.0970346337859525e-05, + "rel_diff_scalar_vs_library_pdip_scalar": 3.0970346338130175e-05, + "abs_diff_nats": 1.3750104699283838e-07, + "rel_diff": 8.738711582044747e-12, + "rel_diff_scalar_vs_library_pdip": 3.09703375988773e-05, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 1.3750104699283838e-07, + "rel_diff_library_pdip_vmap_vs_scalar": 8.738982222968992e-12, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 2, + "draw_name": "call00015_lane02", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.0017572218110215735, + "centre_1": 0.0022774942133795186, + "ell_comps_0": 0.0023932647815035485, + "ell_comps_1": -0.011727950927316913, + "einstein_radius": -0.027234805142873908 + }, + "log_likelihood_vmap": 18704.474460443005, + "log_likelihood_scalar": 18704.474460339556, + "log_likelihood_library_pdip": 18706.165986625834, + "log_likelihood_library_pdip_scalar": 18706.16598652238, + "rel_diff_vmap_vs_library_pdip": 9.042612922596431e-05, + "rel_diff_scalar_vs_library_pdip_scalar": 9.042612922626992e-05, + "abs_diff_nats": 1.0344956535845995e-07, + "rel_diff": 5.530738945796713e-12, + "rel_diff_scalar_vs_library_pdip": 9.042613475620314e-05, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 1.0345320333726704e-07, + "rel_diff_library_pdip_vmap_vs_scalar": 5.530433302676995e-12, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 3, + "draw_name": "call00015_lane03", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.002862791114730316, + "centre_1": 0.0038524808804676603, + "ell_comps_0": 0.006111415425061918, + "ell_comps_1": -0.022191169695991525, + "einstein_radius": -0.03531000166767062 + }, + "log_likelihood_vmap": -22166.22174524019, + "log_likelihood_scalar": -22166.221751478894, + "log_likelihood_library_pdip": -22166.22174065224, + "log_likelihood_library_pdip_scalar": -22166.221751014193, + "rel_diff_vmap_vs_library_pdip": 2.0697932713801966e-10, + "rel_diff_scalar_vs_library_pdip_scalar": 2.0964369396034086e-11, + "abs_diff_nats": 6.238704372663051e-06, + "rel_diff": 2.81450959148995e-10, + "rel_diff_scalar_vs_library_pdip": 4.884302864244839e-10, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 1.0361953172832727e-05, + "rel_diff_library_pdip_vmap_vs_scalar": 4.674659168001253e-10, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 4, + "pdip_iter": null + }, + { + "lane": 4, + "draw_name": "call00015_lane04", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.0017545152650242774, + "centre_1": 0.005096768299803747, + "ell_comps_0": 0.00015519416981613077, + "ell_comps_1": 0.007279341501820333, + "einstein_radius": -0.03249658545615719 + }, + "log_likelihood_vmap": -194383.645694929, + "log_likelihood_scalar": NaN, + "log_likelihood_library_pdip": -194384.27721637877, + "log_likelihood_library_pdip_scalar": NaN, + "rel_diff_vmap_vs_library_pdip": 3.24882988900689e-06, + "rel_diff_scalar_vs_library_pdip_scalar": NaN, + "abs_diff_nats": NaN, + "rel_diff": NaN, + "rel_diff_scalar_vs_library_pdip": NaN, + "abs_diff_library_pdip_vmap_vs_scalar_nats": NaN, + "rel_diff_library_pdip_vmap_vs_scalar": NaN, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": true, + "passes": 2, + "pdip_iter": null + }, + { + "lane": 5, + "draw_name": "call00015_lane05", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.0009851407640018856, + "centre_1": 0.002274591191563648, + "ell_comps_0": 0.006006903437417319, + "ell_comps_1": 0.008497457839948512, + "einstein_radius": -0.07242218866013372 + }, + "log_likelihood_vmap": 14761.660929765763, + "log_likelihood_scalar": 14761.660929765752, + "log_likelihood_library_pdip": 14761.660929764937, + "log_likelihood_library_pdip_scalar": 14761.660929764927, + "rel_diff_vmap_vs_library_pdip": 5.594364977891205e-14, + "rel_diff_scalar_vs_library_pdip_scalar": 5.594364977891209e-14, + "abs_diff_nats": 1.0913936421275139e-11, + "rel_diff": 7.393433891485766e-16, + "rel_diff_scalar_vs_library_pdip": 5.520430638976343e-14, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 1.0913936421275139e-11, + "rel_diff_library_pdip_vmap_vs_scalar": 7.393433891486179e-16, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 14, + "pdip_iter": null + }, + { + "lane": 6, + "draw_name": "call00015_lane06", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.002713857824416392, + "centre_1": 0.00891817739575143, + "ell_comps_0": 0.001298959041684998, + "ell_comps_1": -0.0098959428603974, + "einstein_radius": 0.04379561090121875 + }, + "log_likelihood_vmap": 21597.12687121904, + "log_likelihood_scalar": 21597.126871231176, + "log_likelihood_library_pdip": 21597.126871219363, + "log_likelihood_library_pdip_scalar": 21597.126871231252, + "rel_diff_vmap_vs_library_pdip": 1.4991814224263155e-14, + "rel_diff_scalar_vs_library_pdip_scalar": 3.5373943675208197e-15, + "abs_diff_nats": 1.2136297300457954e-08, + "rel_diff": 5.619403623833093e-13, + "rel_diff_scalar_vs_library_pdip": 5.469485481593535e-13, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 1.1888914741575718e-08, + "rel_diff_library_pdip_vmap_vs_scalar": 5.504859425265732e-13, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 6, + "pdip_iter": null + }, + { + "lane": 7, + "draw_name": "call00015_lane07", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.01063269420288399, + "centre_1": -0.0015469073410711704, + "ell_comps_0": -0.012689283848227026, + "ell_comps_1": 0.0004952469855790744, + "einstein_radius": 0.02732727396499479 + }, + "log_likelihood_vmap": 7413.159094942479, + "log_likelihood_scalar": 7413.159096774973, + "log_likelihood_library_pdip": 7413.159095297509, + "log_likelihood_library_pdip_scalar": 7413.159096700954, + "rel_diff_vmap_vs_library_pdip": 4.7891910482440813e-11, + "rel_diff_scalar_vs_library_pdip_scalar": 9.984719853379113e-12, + "abs_diff_nats": 1.832493580877781e-06, + "rel_diff": 2.4719469216234556e-10, + "rel_diff_scalar_vs_library_pdip": 1.993027817291713e-10, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 1.4034449122846127e-06, + "rel_diff_library_pdip_vmap_vs_scalar": 1.8931806183806058e-10, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 6, + "pdip_iter": null + }, + { + "lane": 8, + "draw_name": "call00015_lane08", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.003586333218755102, + "centre_1": 0.0002442650473125539, + "ell_comps_0": -0.0025095685188555317, + "ell_comps_1": 0.008402687166147546, + "einstein_radius": 0.003809182535237543 + }, + "log_likelihood_vmap": 19066.421358553263, + "log_likelihood_scalar": 19066.42135821115, + "log_likelihood_library_pdip": 19060.202679471302, + "log_likelihood_library_pdip_scalar": 19060.20267912919, + "rel_diff_vmap_vs_library_pdip": 0.0003262651078028279, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0003262651078086841, + "abs_diff_nats": 3.421118890400976e-07, + "rel_diff": 1.7943162097000628e-11, + "rel_diff_scalar_vs_library_pdip": 0.00032626508985381163, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 3.421118890400976e-07, + "rel_diff_library_pdip_vmap_vs_scalar": 1.7949016324716636e-11, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 9, + "draw_name": "call00015_lane09", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.004569070502203608, + "centre_1": -0.0008437281377326854, + "ell_comps_0": 0.016330335737132294, + "ell_comps_1": 0.007271610957481866, + "einstein_radius": -0.0644363448871137 + }, + "log_likelihood_vmap": 12781.02635455443, + "log_likelihood_scalar": 12781.026354229361, + "log_likelihood_library_pdip": 12782.703321755558, + "log_likelihood_library_pdip_scalar": 12782.70332143049, + "rel_diff_vmap_vs_library_pdip": 0.00013119034048725823, + "rel_diff_scalar_vs_library_pdip_scalar": 0.00013119034049059443, + "abs_diff_nats": 3.250679583288729e-07, + "rel_diff": 2.54336349303673e-11, + "rel_diff_scalar_vs_library_pdip": 0.0001311903659175565, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 3.250679583288729e-07, + "rel_diff_library_pdip_vmap_vs_scalar": 2.543029828314087e-11, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 10, + "draw_name": "call00015_lane10", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.00041413552102611065, + "centre_1": -0.004015077828810355, + "ell_comps_0": 0.005329766760357603, + "ell_comps_1": 0.01667480963359283, + "einstein_radius": 0.011021193939315443 + }, + "log_likelihood_vmap": 25442.23680048243, + "log_likelihood_scalar": 25442.23680048246, + "log_likelihood_library_pdip": 25442.236800481296, + "log_likelihood_library_pdip_scalar": 25442.23680048131, + "rel_diff_vmap_vs_library_pdip": 4.4612798658926975e-14, + "rel_diff_scalar_vs_library_pdip_scalar": 4.518475761609268e-14, + "abs_diff_nats": 2.9103830456733704e-11, + "rel_diff": 1.1439179143314085e-15, + "rel_diff_scalar_vs_library_pdip": 4.575671657325843e-14, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 1.4551915228366852e-11, + "rel_diff_library_pdip_vmap_vs_scalar": 5.719589571657301e-16, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 6, + "pdip_iter": null + }, + { + "lane": 11, + "draw_name": "call00015_lane11", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.00234856906735493, + "centre_1": -0.0005637310462631455, + "ell_comps_0": 0.002190699592912508, + "ell_comps_1": -0.01675931647125419, + "einstein_radius": -0.1186639473801736 + }, + "log_likelihood_vmap": -3234.471614889735, + "log_likelihood_scalar": -3234.4716141754543, + "log_likelihood_library_pdip": -3234.481431636159, + "log_likelihood_library_pdip_scalar": -3234.481430921878, + "rel_diff_vmap_vs_library_pdip": 3.035029457234597e-06, + "rel_diff_scalar_vs_library_pdip_scalar": 3.035029457904832e-06, + "abs_diff_nats": 7.142807589843869e-07, + "rel_diff": 2.2083383136026517e-10, + "rel_diff_scalar_vs_library_pdip": 3.0352502903956714e-06, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 7.142807589843869e-07, + "rel_diff_library_pdip_vmap_vs_scalar": 2.208331611230817e-10, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 12, + "draw_name": "call00015_lane12", + "draw_kind": "captured", + "offsets": { + "centre_0": -9.326736988388313e-05, + "centre_1": -0.0013488200741109593, + "ell_comps_0": 0.00997667014421897, + "ell_comps_1": -0.014348588092779897, + "einstein_radius": -0.02126731799195114 + }, + "log_likelihood_vmap": 18887.307347644703, + "log_likelihood_scalar": 18887.3073475926, + "log_likelihood_library_pdip": 18883.933556142838, + "log_likelihood_library_pdip_scalar": 18883.93355609074, + "rel_diff_vmap_vs_library_pdip": 0.00017865936097657688, + "rel_diff_scalar_vs_library_pdip_scalar": 0.00017865936097687714, + "abs_diff_nats": 5.210313247516751e-08, + "rel_diff": 2.758632107599427e-12, + "rel_diff_scalar_vs_library_pdip": 0.00017865935821745192, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 5.209949449636042e-08, + "rel_diff_library_pdip_vmap_vs_scalar": 2.7589323136310487e-12, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 13, + "draw_name": "call00015_lane13", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.007013568613743564, + "centre_1": 0.004528745612839986, + "ell_comps_0": -0.018496405934026655, + "ell_comps_1": 0.0014830576999261711, + "einstein_radius": -0.04673040108359361 + }, + "log_likelihood_vmap": 23869.488067817772, + "log_likelihood_scalar": 23869.488067817765, + "log_likelihood_library_pdip": 23869.488067815804, + "log_likelihood_library_pdip_scalar": 23869.4880678158, + "rel_diff_vmap_vs_library_pdip": 8.245449290931163e-14, + "rel_diff_scalar_vs_library_pdip_scalar": 8.230208164700238e-14, + "abs_diff_nats": 7.275957614183426e-12, + "rel_diff": 3.048225246185022e-16, + "rel_diff_scalar_vs_library_pdip": 8.21496703846931e-14, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 3.637978807091713e-12, + "rel_diff_library_pdip_vmap_vs_scalar": 1.5241126230926365e-16, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 9, + "pdip_iter": null + }, + { + "lane": 14, + "draw_name": "call00015_lane14", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.005108692197125562, + "centre_1": -0.010240010499870703, + "ell_comps_0": -0.00684600823433492, + "ell_comps_1": -0.002573928604858717, + "einstein_radius": -0.0214638151942923 + }, + "log_likelihood_vmap": -177848.2317124089, + "log_likelihood_scalar": NaN, + "log_likelihood_library_pdip": -177847.95788399922, + "log_likelihood_library_pdip_scalar": NaN, + "rel_diff_vmap_vs_library_pdip": 1.53967699673555e-06, + "rel_diff_scalar_vs_library_pdip_scalar": NaN, + "abs_diff_nats": NaN, + "rel_diff": NaN, + "rel_diff_scalar_vs_library_pdip": NaN, + "abs_diff_library_pdip_vmap_vs_scalar_nats": NaN, + "rel_diff_library_pdip_vmap_vs_scalar": NaN, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": true, + "passes": 2, + "pdip_iter": null + }, + { + "lane": 15, + "draw_name": "call00015_lane15", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.0015375882948530809, + "centre_1": 0.00010861850037634777, + "ell_comps_0": 0.010624594413718456, + "ell_comps_1": -0.00030576693661378264, + "einstein_radius": 0.018140577124415858 + }, + "log_likelihood_vmap": 25794.98543958666, + "log_likelihood_scalar": 25794.98543952393, + "log_likelihood_library_pdip": 25794.985439584038, + "log_likelihood_library_pdip_scalar": 25794.9854395183, + "rel_diff_vmap_vs_library_pdip": 1.016857608257453e-13, + "rel_diff_scalar_vs_library_pdip_scalar": 2.1832116193988196e-13, + "abs_diff_nats": 6.27296685706824e-08, + "rel_diff": 2.4318551649409318e-12, + "rel_diff_scalar_vs_library_pdip": 2.33016940410952e-12, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6.573827704414725e-08, + "rel_diff_library_pdip_vmap_vs_scalar": 2.5484905660553403e-12, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 8, + "pdip_iter": null + } + ], + "lane_pins": [ + { + "pin": "lane 0: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 18463.288067231657, + "reference_value": 18463.07897110663, + "rel_diff": 1.1325095091253122e-05, + "abs_diff_nats": 0.20909612502509844, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 0: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 18463.28806683203, + "reference_value": 18463.078970707007, + "rel_diff": 1.1325095091301208e-05, + "abs_diff_nats": 0.20909612502146047, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 0: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 18463.288067231657, + "reference_value": 18463.28806683203, + "rel_diff": 2.1644483503353945e-11, + "abs_diff_nats": 3.996283339802176e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 0: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 18463.07897110663, + "reference_value": 18463.078970707007, + "rel_diff": 2.1644531588444352e-11, + "abs_diff_nats": 3.996246960014105e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 1: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 15734.704790642201, + "reference_value": 15734.21749647698, + "rel_diff": 3.0970346337859525e-05, + "abs_diff_nats": 0.48729416522110114, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 1: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 15734.7047905047, + "reference_value": 15734.21749633948, + "rel_diff": 3.0970346338130175e-05, + "abs_diff_nats": 0.48729416522110114, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 1: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 15734.704790642201, + "reference_value": 15734.7047905047, + "rel_diff": 8.738711582044747e-12, + "abs_diff_nats": 1.3750104699283838e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 1: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 15734.21749647698, + "reference_value": 15734.21749633948, + "rel_diff": 8.738982222968992e-12, + "abs_diff_nats": 1.3750104699283838e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 2: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 18704.474460443005, + "reference_value": 18706.165986625834, + "rel_diff": 9.042612922596431e-05, + "abs_diff_nats": 1.6915261828289658, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 2: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 18704.474460339556, + "reference_value": 18706.16598652238, + "rel_diff": 9.042612922626992e-05, + "abs_diff_nats": 1.6915261828253279, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 2: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 18704.474460443005, + "reference_value": 18704.474460339556, + "rel_diff": 5.530738945796713e-12, + "abs_diff_nats": 1.0344956535845995e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 2: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 18706.165986625834, + "reference_value": 18706.16598652238, + "rel_diff": 5.530433302676995e-12, + "abs_diff_nats": 1.0345320333726704e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 3: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -22166.22174524019, + "reference_value": -22166.22174065224, + "rel_diff": 2.0697932713801966e-10, + "abs_diff_nats": 4.587949661072344e-06, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 3: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -22166.221751478894, + "reference_value": -22166.221751014193, + "rel_diff": 2.0964369396034086e-11, + "abs_diff_nats": 4.6470086090266705e-07, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 3: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -22166.22174524019, + "reference_value": -22166.221751478894, + "rel_diff": 2.81450959148995e-10, + "abs_diff_nats": 6.238704372663051e-06, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 3: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -22166.22174065224, + "reference_value": -22166.221751014193, + "rel_diff": 4.674659168001253e-10, + "abs_diff_nats": 1.0361953172832727e-05, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 4: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -194383.645694929, + "reference_value": -194384.27721637877, + "rel_diff": 3.24882988900689e-06, + "abs_diff_nats": 0.6315214497735724, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 4: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": NaN, + "reference_value": NaN, + "rel_diff": NaN, + "abs_diff_nats": NaN, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 4: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -194383.645694929, + "reference_value": NaN, + "rel_diff": NaN, + "abs_diff_nats": NaN, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 4: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -194384.27721637877, + "reference_value": NaN, + "rel_diff": NaN, + "abs_diff_nats": NaN, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 5: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 14761.660929765763, + "reference_value": 14761.660929764937, + "rel_diff": 5.594364977891205e-14, + "abs_diff_nats": 8.258211892098188e-10, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 5: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 14761.660929765752, + "reference_value": 14761.660929764927, + "rel_diff": 5.594364977891209e-14, + "abs_diff_nats": 8.258211892098188e-10, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 5: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 14761.660929765763, + "reference_value": 14761.660929765752, + "rel_diff": 7.393433891485766e-16, + "abs_diff_nats": 1.0913936421275139e-11, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 5: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 14761.660929764937, + "reference_value": 14761.660929764927, + "rel_diff": 7.393433891486179e-16, + "abs_diff_nats": 1.0913936421275139e-11, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 6: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 21597.12687121904, + "reference_value": 21597.126871219363, + "rel_diff": 1.4991814224263155e-14, + "abs_diff_nats": 3.2378011383116245e-10, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 6: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 21597.126871231176, + "reference_value": 21597.126871231252, + "rel_diff": 3.5373943675208197e-15, + "abs_diff_nats": 7.639755494892597e-11, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 6: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 21597.12687121904, + "reference_value": 21597.126871231176, + "rel_diff": 5.619403623833093e-13, + "abs_diff_nats": 1.2136297300457954e-08, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 6: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 21597.126871219363, + "reference_value": 21597.126871231252, + "rel_diff": 5.504859425265732e-13, + "abs_diff_nats": 1.1888914741575718e-08, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 7: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 7413.159094942479, + "reference_value": 7413.159095297509, + "rel_diff": 4.7891910482440813e-11, + "abs_diff_nats": 3.5503035178408027e-07, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 7: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 7413.159096774973, + "reference_value": 7413.159096700954, + "rel_diff": 9.984719853379113e-12, + "abs_diff_nats": 7.401831680908799e-08, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 7: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 7413.159094942479, + "reference_value": 7413.159096774973, + "rel_diff": 2.4719469216234556e-10, + "abs_diff_nats": 1.832493580877781e-06, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 7: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 7413.159095297509, + "reference_value": 7413.159096700954, + "rel_diff": 1.8931806183806058e-10, + "abs_diff_nats": 1.4034449122846127e-06, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 8: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 19066.421358553263, + "reference_value": 19060.202679471302, + "rel_diff": 0.0003262651078028279, + "abs_diff_nats": 6.218679081961454, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 8: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 19066.42135821115, + "reference_value": 19060.20267912919, + "rel_diff": 0.0003262651078086841, + "abs_diff_nats": 6.218679081961454, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 8: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 19066.421358553263, + "reference_value": 19066.42135821115, + "rel_diff": 1.7943162097000628e-11, + "abs_diff_nats": 3.421118890400976e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 8: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 19060.202679471302, + "reference_value": 19060.20267912919, + "rel_diff": 1.7949016324716636e-11, + "abs_diff_nats": 3.421118890400976e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 9: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 12781.02635455443, + "reference_value": 12782.703321755558, + "rel_diff": 0.00013119034048725823, + "abs_diff_nats": 1.6769672011287184, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 9: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 12781.026354229361, + "reference_value": 12782.70332143049, + "rel_diff": 0.00013119034049059443, + "abs_diff_nats": 1.6769672011287184, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 9: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 12781.02635455443, + "reference_value": 12781.026354229361, + "rel_diff": 2.54336349303673e-11, + "abs_diff_nats": 3.250679583288729e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 9: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 12782.703321755558, + "reference_value": 12782.70332143049, + "rel_diff": 2.543029828314087e-11, + "abs_diff_nats": 3.250679583288729e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 10: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 25442.23680048243, + "reference_value": 25442.236800481296, + "rel_diff": 4.4612798658926975e-14, + "abs_diff_nats": 1.1350493878126144e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 10: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 25442.23680048246, + "reference_value": 25442.23680048131, + "rel_diff": 4.518475761609268e-14, + "abs_diff_nats": 1.1496013030409813e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 10: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 25442.23680048243, + "reference_value": 25442.23680048246, + "rel_diff": 1.1439179143314085e-15, + "abs_diff_nats": 2.9103830456733704e-11, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 10: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 25442.236800481296, + "reference_value": 25442.23680048131, + "rel_diff": 5.719589571657301e-16, + "abs_diff_nats": 1.4551915228366852e-11, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 11: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -3234.471614889735, + "reference_value": -3234.481431636159, + "rel_diff": 3.035029457234597e-06, + "abs_diff_nats": 0.009816746423894074, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 11: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -3234.4716141754543, + "reference_value": -3234.481430921878, + "rel_diff": 3.035029457904832e-06, + "abs_diff_nats": 0.009816746423894074, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 11: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -3234.471614889735, + "reference_value": -3234.4716141754543, + "rel_diff": 2.2083383136026517e-10, + "abs_diff_nats": 7.142807589843869e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 11: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -3234.481431636159, + "reference_value": -3234.481430921878, + "rel_diff": 2.208331611230817e-10, + "abs_diff_nats": 7.142807589843869e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 12: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 18887.307347644703, + "reference_value": 18883.933556142838, + "rel_diff": 0.00017865936097657688, + "abs_diff_nats": 3.3737915018646163, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 12: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 18887.3073475926, + "reference_value": 18883.93355609074, + "rel_diff": 0.00017865936097687714, + "abs_diff_nats": 3.3737915018609783, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 12: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 18887.307347644703, + "reference_value": 18887.3073475926, + "rel_diff": 2.758632107599427e-12, + "abs_diff_nats": 5.210313247516751e-08, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 12: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 18883.933556142838, + "reference_value": 18883.93355609074, + "rel_diff": 2.7589323136310487e-12, + "abs_diff_nats": 5.209949449636042e-08, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 13: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 23869.488067817772, + "reference_value": 23869.488067815804, + "rel_diff": 8.245449290931163e-14, + "abs_diff_nats": 1.9681465346366167e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 13: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 23869.488067817765, + "reference_value": 23869.4880678158, + "rel_diff": 8.230208164700238e-14, + "abs_diff_nats": 1.964508555829525e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 13: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 23869.488067817772, + "reference_value": 23869.488067817765, + "rel_diff": 3.048225246185022e-16, + "abs_diff_nats": 7.275957614183426e-12, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 13: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 23869.488067815804, + "reference_value": 23869.4880678158, + "rel_diff": 1.5241126230926365e-16, + "abs_diff_nats": 3.637978807091713e-12, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 14: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -177848.2317124089, + "reference_value": -177847.95788399922, + "rel_diff": 1.53967699673555e-06, + "abs_diff_nats": 0.27382840967038646, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 14: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": NaN, + "reference_value": NaN, + "rel_diff": NaN, + "abs_diff_nats": NaN, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 14: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -177848.2317124089, + "reference_value": NaN, + "rel_diff": NaN, + "abs_diff_nats": NaN, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 14: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -177847.95788399922, + "reference_value": NaN, + "rel_diff": NaN, + "abs_diff_nats": NaN, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 15: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 25794.98543958666, + "reference_value": 25794.985439584038, + "rel_diff": 1.016857608257453e-13, + "abs_diff_nats": 2.622982719913125e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 15: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 25794.98543952393, + "reference_value": 25794.9854395183, + "rel_diff": 2.1832116193988196e-13, + "abs_diff_nats": 5.631591193377972e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 15: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 25794.98543958666, + "reference_value": 25794.98543952393, + "rel_diff": 2.4318551649409318e-12, + "abs_diff_nats": 6.27296685706824e-08, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 15: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 25794.985439584038, + "reference_value": 25794.9854395183, + "rel_diff": 2.5484905660553403e-12, + "abs_diff_nats": 6.573827704414725e-08, + "within_rtol": true, + "status": "RECORDED" + } + ], + "lanes_failed": 9, + "arm_rows": { + "vmap": { + "arm": "vmap", + "program": "jax.jit(jax.vmap(fn))", + "stands_for": "Nautilus(use_jax_vmap=True) \u2014 Fitness._vmap", + "hlo_source": "jax.jit(jax.vmap(fn)).lower(batched_tree) \u2014 the exact current Fitness._vmap composition (PyAutoFit#1638)", + "batch_wall_ms": 446.7999532000249, + "wall_production_nesting_ms": 446.7999532000249, + "wall_aot_command_buffers_on_ms": 446.7157532002602, + "wall_aot_command_buffers_off_ms": 447.2237981000944, + "command_buffer_delta_ms": 0.5080448998342035, + "production_nesting_vs_aot_on_delta_ms": 0.08419999976467807, + "production_nesting_vs_aot_on_delta_pct": 0.0188486748366207, + "wall_per_lane_ms": 27.924997075001556, + "wall_per_lane_command_buffers_off_ms": 27.9514873812559, + "traced_batch_wall_ms": 453.5386453000683, + "untraced_batch_wall_ms": 448.2074265000847, + "traced_wall_per_lane_ms": 28.34616533125427, + "callback_count_per_call": 0.0, + "callback_count_per_lane": 0.0, + "callback_expectation": "0 \u2014 the rectangular mesh has no qhull host callback (asserted)", + "host_qhull_ms": 0.0, + "host_tables_ms": 0.0, + "host_qhull_ms_per_lane": 0.0, + "host_tables_ms_per_lane": 0.0, + "host_callback_probe": { + "calls": 0, + "qhull_ms_total": 0.0, + "tables_ms_total": 0.0, + "total_ms_total": 0.0, + "qhull_ms_mean": 0.0, + "tables_ms_mean": 0.0, + "total_ms_mean": 0.0, + "non_finite_calls": 0, + "n_points": [] + }, + "host_callback_records_first": [], + "device_idle_ms": 12.226573500000029, + "device_idle_ms_per_lane": 0.7641608437500018, + "trace": { + "parser": "ProfileData.from_file(xplane) + as_text() + stack_frame_index(proto field 17)", + "stage_audit": { + "mixed_fusion": [ + { + "instruction": "loop_divide_gather_fusion", + "ms": 16.820930199999996, + "opcode": "fusion", + "shape": "(f64[15361,16,1,1,1521]{4,3,2,1,0}, f64[15361,16,1,1,1521]{4,3,2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_multiply_transpose_fusion", + "ms": 4.952832099999999, + "opcode": "fusion", + "shape": "(f64[16,1369,1369]{2,1,0}, f64[16,1369,1369]{2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:237 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:274 (_certified_positive_only_from)" + ] + }, + { + "instruction": "loop_broadcast_fusion", + "ms": 4.0774168, + "opcode": "fusion", + "shape": "f64[16,1521,180,180]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_reduce_fusion.3", + "ms": 2.0882291, + "opcode": "fusion", + "shape": "f64[92,16,1521]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123 (data_vector_via_blurred_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:67 (InversionImagingMapping.data_vector)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:699 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_reduce_fusion.6", + "ms": 1.7723984, + "opcode": "fusion", + "shape": "f64[15361,16]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163 (mapped_reconstructed_data_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:120 (InversionImagingMapping._mapped_reconstructed_data_dict_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:196 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "loop_broadcast_fusion.1", + "ms": 1.7182655, + "opcode": "fusion", + "shape": "f64[15361,16,1521]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:353", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:353 (mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:283 (Mapper.mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:91 (AbstractInversionImaging._mapping_matrix_for_convolution_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:137 (AbstractInversionImaging.operated_mapping_matrix_list)" + ] + } + ], + "other": [ + { + "instruction": "copy.60", + "ms": 0.08004939999999997, + "opcode": "copy", + "shape": "u32[16,2,15361]{2,1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.61", + "ms": 0.07916309999999999, + "opcode": "copy", + "shape": "u32[16,2,15361]{2,1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.79", + "ms": 0.0388731, + "opcode": "copy", + "shape": "u32[16,15361]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.70", + "ms": 0.038450600000000036, + "opcode": "copy", + "shape": "u32[16,15361]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.69", + "ms": 0.038386300000000054, + "opcode": "copy", + "shape": "u32[16,15361]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.78", + "ms": 0.03811430000000006, + "opcode": "copy", + "shape": "u32[16,15361]{1,0}", + "source": "", + "stack": [] + } + ], + "mesh_construction": [ + { + "instruction": "fusion.6", + "ms": 0.4728285999999999, + "opcode": "fusion", + "shape": "(f64[16,15361,2]{2,1,0}, s64[16,15361,2]{2,1,0}, s32[16,15361,2]{2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:227", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:227 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_select_fusion", + "ms": 0.17209260000000007, + "opcode": "fusion", + "shape": "(u32[16,2,15361]{2,1,0}, u32[16,2,15361]{2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69 (forward_interp)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:573 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/abstract.py:36 (AbstractInterpolator.mappings)" + ] + }, + { + "instruction": "loop_select_fusion.1", + "ms": 0.08476619999999996, + "opcode": "fusion", + "shape": "(u32[16,15361]{1,0}, u32[16,15361]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_select_fusion.2", + "ms": 0.08117289999999996, + "opcode": "fusion", + "shape": "(u32[16,15361]{1,0}, u32[16,15361]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_subtract_transpose_fusion", + "ms": 0.041135099999999994, + "opcode": "fusion", + "shape": "(f64[16,15361,2]{2,1,0}, f64[491552,1,1,1]{3,2,1,0}, f64[491552,1,1,1]{3,2,1,0}, f64[16,15361,2]{2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69 (forward_interp)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:573 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/abstract.py:36 (AbstractInterpolator.mappings)" + ] + }, + { + "instruction": "loop_add_fusion", + "ms": 0.021490799999999977, + "opcode": "fusion", + "shape": "s64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69 (forward_interp)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:573 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/abstract.py:36 (AbstractInterpolator.mappings)" + ] + } + ], + "border_relocator": [ + { + "instruction": "custom-call.2", + "ms": 0.042335000000000005, + "opcode": "custom-call", + "shape": "(f64[16,2,2]{2,1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "eigh.0", + "ms": 0.0148895, + "opcode": "custom-call", + "shape": "(f64[16,2,2]{1,2,0}, f64[16,2]{1,0}, s32[16]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_add_rsqrt_fusion", + "ms": 0.0125822, + "opcode": "fusion", + "shape": "(f64[16,15361]{1,0}, f64[16,15361]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:311", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:311 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:423 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_abs_fusion", + "ms": 0.003299, + "opcode": "fusion", + "shape": "(f64[16,392,1]{2,1,0}, f64[16,392,1]{2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:269", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:269 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_reduce_fusion.8", + "ms": 0.0031295000000000003, + "opcode": "fusion", + "shape": "f64[16]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:269", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:269 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_reduce_fusion.7", + "ms": 0.0031007, + "opcode": "fusion", + "shape": "f64[16]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:270", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:270 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + } + ], + "pdip_solve": [ + { + "instruction": "cholesky.40", + "ms": 86.78110500000298, + "opcode": "custom-call", + "shape": "(f64[16,1369,1369]{1,2,0}, s32[16]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "triangular-solve", + "ms": 26.52049580000069, + "opcode": "custom-call", + "shape": "(f64[16,1369,1]{1,2,0}, s8[256]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "triangular-solve.1", + "ms": 23.90866470000078, + "opcode": "custom-call", + "shape": "(f64[16,1369,1]{1,2,0}, s8[256]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "input_transpose_fusion", + "ms": 10.404165299999994, + "opcode": "fusion", + "shape": "f64[16,1369,1369]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "cholesky.60", + "ms": 6.2176203999999915, + "opcode": "custom-call", + "shape": "(f64[16,1369,1369]{1,2,0}, s32[16]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:237 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:274 (_certified_positive_only_from)" + ] + }, + { + "instruction": "input_transpose_fusion.1", + "ms": 6.055252299999999, + "opcode": "fusion", + "shape": "f64[16,1369,1369]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + } + ], + "psf_convolution_mapping_matrix": [ + { + "instruction": "input_scatter_fusion", + "ms": 32.7720154, + "opcode": "fusion", + "shape": "f64[16,1521,180,180]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.29.0", + "ms": 28.475934799999994, + "opcode": "fft", + "shape": "f64[16,1521,180,180]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.25.0", + "ms": 21.899580699999998, + "opcode": "fft", + "shape": "c128[16,1521,180,91]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.27.0", + "ms": 15.7336374, + "opcode": "fft", + "shape": "c128[16,1521,91,180]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_transpose_fusion.3", + "ms": 8.5564765, + "opcode": "fusion", + "shape": "c128[16,1521,91,180]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "wrapped_transpose.2", + "ms": 7.9908945, + "opcode": "fusion", + "shape": "c128[16,1521,180,91]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + } + ], + "regularization_H": [ + { + "instruction": "wrapped_broadcast", + "ms": 0.48366059999999994, + "opcode": "fusion", + "shape": "f64[16,1521,1521]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:124", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:124 (weighted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:366 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_scatter_fusion.7", + "ms": 0.0026942999999999997, + "opcode": "fusion", + "shape": "f64[1521,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:123 (weighted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:366 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "mapping_matrix": [ + { + "instruction": "input_scatter_fusion.5", + "ms": 0.0637012, + "opcode": "fusion", + "shape": "f64[16,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:71", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:71 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:362 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + }, + { + "instruction": "input_reduce_fusion.20", + "ms": 0.003696, + "opcode": "fusion", + "shape": "f64[16]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:362 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + } + ], + "curvature_matrix_F": [ + { + "instruction": "cublas-lt-matmul.2", + "ms": 98.311615, + "opcode": "custom-call", + "shape": "(f64[16,1521,1521]{2,1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "inversion_other": [ + { + "instruction": "cholesky.80", + "ms": 8.229948899999979, + "opcode": "custom-call", + "shape": "(f64[16,1521,1521]{1,2,0}, s32[16]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1078 (AbstractInversion.log_det_curvature_reg_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:347 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "cholesky.90", + "ms": 8.066884199999977, + "opcode": "custom-call", + "shape": "(f64[16,1521,1521]{1,2,0}, s32[16]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1157 (AbstractInversion.log_det_regularization_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:348 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "loop_reduce_window_fusion.3", + "ms": 0.0076766000000000004, + "opcode": "fusion", + "shape": "s64[6,16]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "loop_reduce_window_fusion.2", + "ms": 0.0036608000000000005, + "opcode": "fusion", + "shape": "s64[86,16]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "input_scatter_fusion.9", + "ms": 0.0028064000000000006, + "opcode": "fusion", + "shape": "s64[1369]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527 (AbstractInversion.zeroed_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:567 (AbstractInversion.solve_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:684 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_broadcast_fusion.5", + "ms": 0.0021344, + "opcode": "fusion", + "shape": "(s64[1369]{0}, s64[1369]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527 (AbstractInversion.zeroed_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:567 (AbstractInversion.solve_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:684 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ] + }, + "stage_audit_note": "The HLO instructions that contributed most of each stage's milliseconds, with their full source stack. A stage row is only as good as the rules that built it; this is how a reader checks a row against the HLO instead of trusting it.", + "untraced_wall_ms": 448.2074265000847, + "reconciliation_vs_untraced_pct": 1.0077102102451647, + "wall_basis": "wall_ms is the TRACED run's wall, the run these kernel durations came from. untraced_wall_ms is the same executable without the profiler; the difference is the profiler's overhead and belongs in neither the stages nor the idle row.", + "calls": 10, + "call_split": "per-call (first-instruction recurrence)", + "call_blocks": 10, + "events": 89110, + "streams": [ + "Stream #14(MemcpyD2H,Compute,MemcpyD2D)" + ], + "per_stage_ms": { + "border_relocator": { + "median_ms": 0.086398, + "min_ms": 0.08576099999999998, + "max_ms": 0.086686 + }, + "curvature_matrix_F": { + "median_ms": 98.1538145, + "min_ms": 97.123263, + "max_ms": 99.064656 + }, + "inversion_other": { + "median_ms": 16.300854499999993, + "min_ms": 15.977066000000002, + "max_ms": 16.553269000000014 + }, + "mapping_matrix": { + "median_ms": 0.06760000000000001, + "min_ms": 0.065343, + "max_ms": 0.069054 + }, + "mesh_construction": { + "median_ms": 1.026503499999999, + "min_ms": 1.0210619999999992, + "max_ms": 1.0304719999999985 + }, + "mixed_fusion": { + "median_ms": 34.459796, + "min_ms": 33.969133, + "max_ms": 34.84329100000001 + }, + "other": { + "median_ms": 0.4001825000000001, + "min_ms": 0.39728600000000014, + "max_ms": 0.4023260000000001 + }, + "pdip_solve": { + "median_ms": 174.09903700000314, + "min_ms": 173.19914900000367, + "max_ms": 179.887651000003 + }, + "psf_convolution_mapping_matrix": { + "median_ms": 115.417574, + "min_ms": 115.18890800000001, + "max_ms": 115.855132 + }, + "regularization_H": { + "median_ms": 0.48572499999999996, + "min_ms": 0.479636, + "max_ms": 0.495316 + } + }, + "stage_order": [ + "border_relocator", + "mesh_construction", + "mapping_matrix", + "psf_convolution_mapping_matrix", + "curvature_matrix_F", + "regularization_H", + "pdip_solve", + "inversion_other", + "mixed_fusion", + "other" + ], + "mixed_fusion": { + "ms": 34.459796, + "constituent_stage_sets": { + "curvature_matrix_F + psf_convolution_mapping_matrix": 16.820930199999996, + "inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": 4.952832099999999, + "pdip_solve + psf_convolution_mapping_matrix": 4.0774168, + "data_vector_D + pdip_solve": 2.1052879, + "mapped_reconstruction + pdip_solve": 1.7723984, + "mapping_matrix + pdip_solve": 1.7212126, + "border_relocator + pdip_solve": 1.3526783, + "inversion_other + regularization_H": 0.47869079999999997, + "curvature_reg_reduce_gather + inversion_other": 0.47478709999999996, + "inversion_other + pdip_solve": 0.20442839999999998, + "border_relocator + inversion_other + mapping_matrix + mesh_construction + pdip_solve": 0.0903627, + "inversion_other + mapping_matrix + mesh_construction + pdip_solve": 0.07112160000000001, + "mesh_construction + pdip_solve": 0.03542630000000001, + "grids_and_structures + mass_profile_deflections + ray_trace_data_grid": 0.028738399999999997, + "inversion_other + mesh_construction + pdip_solve": 0.0280316, + "inversion_other + pdip_solve + regularization_H": 0.0253404, + "border_relocator + mesh_construction": 0.0235292, + "inversion_other + mapped_reconstruction + reconstruction_scatter": 0.021826599999999998, + "chi_squared_evidence + pdip_solve": 0.0215324, + "grids_and_structures + mass_profile_deflections + pdip_solve + ray_trace_data_grid": 0.0172318, + "pdip_solve + regularization_H": 0.0156378, + "pdip_solve + ray_trace_data_grid": 0.013036599999999992, + "inversion_other + mapping_matrix": 0.011541900000000003, + "inversion_other + mapped_reconstruction": 0.009830199999999999, + "border_relocator + inversion_other + pdip_solve": 0.0074206, + "border_relocator + inversion_other + mesh_construction + pdip_solve": 0.006028599999999999, + "inversion_other + pdip_solve + ray_trace_data_grid": 0.0048479, + "grids_and_structures + mass_profile_deflections + pdip_solve": 0.0041983, + "mapping_matrix + pdip_solve + regularization_H": 0.0040352, + "border_relocator + inversion_other + mapping_matrix + mesh_construction": 0.002832, + "chi_squared_evidence + inversion_other": 0.0023296 + }, + "example_kernels": { + "curvature_matrix_F + psf_convolution_mapping_matrix": [ + "loop_divide_gather_fusion" + ], + "inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": [ + "input_multiply_transpose_fusion" + ], + "pdip_solve + psf_convolution_mapping_matrix": [ + "loop_broadcast_fusion" + ], + "data_vector_D + pdip_solve": [ + "input_reduce_fusion.3", + "input_reduce_fusion.18" + ], + "mapped_reconstruction + pdip_solve": [ + "input_reduce_fusion.6" + ], + "mapping_matrix + pdip_solve": [ + "loop_broadcast_fusion.1", + "loop_divide_fusion" + ], + "border_relocator + pdip_solve": [ + "input_reduce_fusion.9", + "loop_select_sine_fusion", + "input_concatenate_fusion.4", + "input_transpose_fusion.8" + ], + "inversion_other + regularization_H": [ + "input_transpose_fusion.5" + ], + "curvature_reg_reduce_gather + inversion_other": [ + "input_transpose_fusion.4" + ], + "inversion_other + pdip_solve": [ + "input_reduce_fusion.4", + "input_reduce_fusion.5", + "input_scatter_fusion.11", + "input_transpose_fusion.2" + ] + }, + "prorated_estimate_ms": { + "psf_convolution_mapping_matrix": 10.449173499999997, + "curvature_matrix_F": 8.410465099999998, + "pdip_solve": 6.964028481666667, + "mapped_reconstruction": 2.1365978583333334, + "inversion_other": 1.8962358149999998, + "reconstruction_scatter": 1.2454835583333332, + "data_vector_D": 1.05264395, + "mapping_matrix": 0.9042832566666669, + "border_relocator": 0.7108649733333334, + "regularization_H": 0.25695616666666665, + "curvature_reg_reduce_gather": 0.23739354999999998, + "mesh_construction": 0.07688970666666667, + "ray_trace_data_grid": 0.022021683333333326, + "grids_and_structures": 0.01528685, + "mass_profile_deflections": 0.01528685, + "chi_squared_evidence": 0.011931 + }, + "prorated_note": "ESTIMATE ONLY \u2014 a mixed fusion's time split equally across the stages its constituents span. Never summed into the measured table, never reconciled." + }, + "other_sources_ms": { + "copy.60": 0.08004939999999997, + "copy.61": 0.07916309999999999, + "copy.79": 0.0388731, + "copy.70": 0.038450600000000036, + "copy.69": 0.038386300000000054, + "copy.78": 0.03811430000000006, + "copy.100": 0.0336503, + "copy.98": 0.02345249999999999, + "copy.99": 0.02343939999999999, + "copy.113": 0.0024383, + "copy.53": 0.0021311999999999998, + "copy.62": 0.0017504000000000003 + }, + "device_span_ms": 453.407828, + "device_busy_ms": 441.18125449999997, + "device_idle_ms": 12.226573500000029, + "largest_idle_gaps": [ + { + "gap_ms": 0.111966, + "after": "cholesky.40", + "before": "cholesky.40" + }, + { + "gap_ms": 0.052415, + "after": "cholesky.40", + "before": "cholesky.40" + }, + { + "gap_ms": 0.052222, + "after": "input_reduce_fusion.17", + "before": "loop_broadcast_fusion" + }, + { + "gap_ms": 0.031487, + "after": "loop_select_fusion.3", + "before": "input_transpose_fusion.1" + }, + { + "gap_ms": 0.02336, + "after": "while.42", + "before": "copy.99" + }, + { + "gap_ms": 0.020287, + "after": "while.42", + "before": "copy.99" + }, + { + "gap_ms": 0.019583, + "after": "while.42", + "before": "copy.99" + }, + { + "gap_ms": 0.019296, + "after": "while.42", + "before": "copy.99" + } + ], + "kernel_ms": 440.4974850000031, + "sum_ms": 452.72405850000314, + "wall_ms": 453.5386453000683, + "host_outside_span_ms": 0.1308173000683155, + "reconciliation_pct": -0.17960692181505905, + "unjoined_ms": 0.0, + "unjoined_pct": 0.0, + "other_ms": 0.4001825000000001, + "other_pct": 0.08823559009734067, + "note": "Stage rows attribute the command-buffers-OFF program (see the module docstring): kernel times are the same, the launch overhead the CUDA graphs remove is not. sum_ms = kernel rows + device_idle_ms; the residual against wall_ms is host_outside_span_ms (dispatch before the first kernel, teardown after the last).", + "per_stage_ms_per_lane": { + "border_relocator": 0.005399875, + "curvature_matrix_F": 6.13461340625, + "inversion_other": 1.0188034062499995, + "mapping_matrix": 0.0042250000000000005, + "mesh_construction": 0.06415646874999993, + "mixed_fusion": 2.15373725, + "other": 0.025011406250000007, + "pdip_solve": 10.881189812500196, + "psf_convolution_mapping_matrix": 7.213598375, + "regularization_H": 0.030357812499999998 + }, + "per_lane_divisor": 16, + "host_callback": { + "pure_callback_span_ms": 0, + "qhull_ms": 0.0, + "callback_body_ms_note": "the OUTERMOST matching body event, not a sum: under the probe the body appears twice (the wrapper and the timed re-implementation it calls) and summing them would count the same work twice", + "events_by_name": { + "ThenExecuteCallback:GetEventForComputeStreamSyncPoint": { + "count": 10, + "ms": 0.0300968 + } + }, + "note": "HOST milliseconds per traced BATCH (the whole invocation), aggregated by name because the events nest. Not a row of the device table: the device pays for them as the idle gaps largest_idle_gaps names." + }, + "host_callback_ms": 0 + }, + "hlo_census": { + "status": "excluded", + "reason": "The legacy census anchors PyAutoArray source line numbers that moved after the phase-1 run. No batched attribution is published from unsupported anchors; the device-event table and wall reconciliation remain valid." + }, + "trace_split": { + "expected_calls": 10, + "executions_per_invocation": 1, + "method": "per-call (first-instruction recurrence)", + "note": "DECIDED IN CODE: the scalar arm's trace is split by trace_calls * B, so every lane's execution is its own block and the per-stage median is taken over all of them. The vmap arm's is split by trace_calls, one block per batched execution, and per_stage_ms_per_lane divides those rows by B." + } + }, + "scalar": { + "arm": "scalar", + "program": "jax.jit(fn), called B times", + "stands_for": "Nautilus(use_jax_vmap=False, use_jax_jit=True). Plain use_jax_vmap=False is UNJITTED and is NOT this arm", + "hlo_source": "jax.jit(fn).lower(lane_trees[0]) \u2014 the same program phase 1 traced", + "batch_wall_ms": 492.7870002997224, + "wall_production_nesting_ms": 492.7870002997224, + "wall_aot_command_buffers_on_ms": 492.7899731999787, + "wall_aot_command_buffers_off_ms": 495.960514699982, + "command_buffer_delta_ms": 3.17054150000331, + "production_nesting_vs_aot_on_delta_ms": -0.0029729002562817186, + "production_nesting_vs_aot_on_delta_pct": -0.0006032793721383792, + "wall_per_lane_ms": 30.79918751873265, + "wall_per_lane_command_buffers_off_ms": 30.997532168748876, + "traced_batch_wall_ms": 510.98847760003997, + "untraced_batch_wall_ms": 495.9250129999418, + "traced_wall_per_lane_ms": 31.936779850002498, + "callback_count_per_call": 0.0, + "callback_count_per_lane": 0.0, + "callback_expectation": "0 \u2014 the rectangular mesh has no qhull host callback (asserted)", + "host_qhull_ms": 0.0, + "host_tables_ms": 0.0, + "host_qhull_ms_per_lane": 0.0, + "host_tables_ms_per_lane": 0.0, + "host_callback_probe": { + "calls": 0, + "qhull_ms_total": 0.0, + "tables_ms_total": 0.0, + "total_ms_total": 0.0, + "qhull_ms_mean": 0.0, + "tables_ms_mean": 0.0, + "total_ms_mean": 0.0, + "non_finite_calls": 0, + "n_points": [] + }, + "host_callback_records_first": [], + "device_idle_ms": 1.6542482937500047, + "device_idle_ms_per_lane": 1.6542482937500047, + "trace": { + "parser": "ProfileData.from_file(xplane) + as_text() + stack_frame_index(proto field 17)", + "stage_audit": { + "mesh_construction": [ + { + "instruction": "fusion.2", + "ms": 0.14846999999999982, + "opcode": "fusion", + "shape": "(f64[15361,2]{1,0}, s64[15361,2]{1,0}, s32[15361,2]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:227", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:227 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_select_fusion", + "ms": 0.039597549999999926, + "opcode": "fusion", + "shape": "(u32[2,15361]{1,0}, u32[2,15361]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69 (forward_interp)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:573 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/abstract.py:36 (AbstractInterpolator.mappings)" + ] + }, + { + "instruction": "loop_select_fusion.3", + "ms": 0.03488783749999943, + "opcode": "fusion", + "shape": "(u32[15361]{0}, u32[15361]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_select_fusion.1", + "ms": 0.03473039374999958, + "opcode": "fusion", + "shape": "(u32[15361]{0}, u32[15361]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_add_fusion", + "ms": 0.021229881249999475, + "opcode": "fusion", + "shape": "s64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69 (forward_interp)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:573 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/abstract.py:36 (AbstractInterpolator.mappings)" + ] + }, + { + "instruction": "loop_add_fusion.3", + "ms": 0.021092224999999503, + "opcode": "fusion", + "shape": "s64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "mixed_fusion": [ + { + "instruction": "loop_divide_gather_fusion", + "ms": 0.7003358249999999, + "opcode": "fusion", + "shape": "(f64[15361,1,1,1521]{3,2,1,0}, f64[15361,1,1,1521]{3,2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_broadcast_fusion.3", + "ms": 0.23251897500000013, + "opcode": "fusion", + "shape": "f64[1521,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_multiply_transpose_fusion", + "ms": 0.1855460125, + "opcode": "fusion", + "shape": "(f64[1369,1369]{1,0}, f64[1369,1369]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:237 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:274 (_certified_positive_only_from)" + ] + }, + { + "instruction": "loop_broadcast_fusion", + "ms": 0.13649223125000007, + "opcode": "fusion", + "shape": "f64[15361,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:342", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:342 (mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:283 (Mapper.mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:91 (AbstractInversionImaging._mapping_matrix_for_convolution_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:137 (AbstractInversionImaging.operated_mapping_matrix_list)" + ] + }, + { + "instruction": "input_reduce_fusion.3", + "ms": 0.11361058749999996, + "opcode": "fusion", + "shape": "f64[92,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123 (data_vector_via_blurred_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:67 (InversionImagingMapping.data_vector)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:699 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_reduce_fusion.6", + "ms": 0.11175777499999999, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163 (mapped_reconstructed_data_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:120 (InversionImagingMapping._mapped_reconstructed_data_dict_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:196 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + } + ], + "border_relocator": [ + { + "instruction": "eigh.0", + "ms": 0.07437944374999991, + "opcode": "custom-call", + "shape": "(f64[2,2]{0,1}, f64[2]{0}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "custom-call.2", + "ms": 0.007910456250000001, + "opcode": "custom-call", + "shape": "(f64[2,2]{1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_reduce_fusion.7", + "ms": 0.005284137500000001, + "opcode": "fusion", + "shape": "(f64[], f64[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:270", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:270 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_add_fusion.5", + "ms": 0.003600881249999995, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:423 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_concatenate_fusion.4", + "ms": 0.0023745499999999996, + "opcode": "fusion", + "shape": "f64[392,2]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:238", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:238 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_reduce_fusion.14", + "ms": 0.001610337499999999, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:256", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:256 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + } + ], + "other": [ + { + "instruction": "copy.41", + "ms": 0.0303602312499998, + "opcode": "copy", + "shape": "u32[2,15361]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.42", + "ms": 0.030067275000000313, + "opcode": "copy", + "shape": "u32[2,15361]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.59", + "ms": 0.028573787500000766, + "opcode": "copy", + "shape": "u32[15361]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.51", + "ms": 0.028510237500000833, + "opcode": "copy", + "shape": "u32[15361]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.50", + "ms": 0.028448731250000973, + "opcode": "copy", + "shape": "u32[15361]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.60", + "ms": 0.02844560625000095, + "opcode": "copy", + "shape": "u32[15361]{0}", + "source": "", + "stack": [] + } + ], + "pdip_solve": [ + { + "instruction": "cholesky.40", + "ms": 8.861813318750002, + "opcode": "custom-call", + "shape": "(f64[1369,1369]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "triangular-solve.1", + "ms": 1.5525129624999907, + "opcode": "custom-call", + "shape": "(f64[1369,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "triangular-solve", + "ms": 1.3149034812500089, + "opcode": "custom-call", + "shape": "(f64[1369,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "cholesky.60", + "ms": 0.8453678250000011, + "opcode": "custom-call", + "shape": "(f64[1369,1369]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:237 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:274 (_certified_positive_only_from)" + ] + }, + { + "instruction": "cholesky.70", + "ms": 0.838412799999998, + "opcode": "custom-call", + "shape": "(f64[1369,1369]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:297 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:274 (_certified_positive_only_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:496 (reconstruction_positive_only_from)" + ] + }, + { + "instruction": "input_transpose_fusion.1", + "ms": 0.3112221062500004, + "opcode": "fusion", + "shape": "f64[1369,1369]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + } + ], + "mapping_matrix": [ + { + "instruction": "input_reduce_fusion.20", + "ms": 0.0028111124999999995, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:362 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + } + ], + "regularization_H": [ + { + "instruction": "input_scatter_fusion.8", + "ms": 0.002840362499999999, + "opcode": "fusion", + "shape": "f64[1521,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:123 (weighted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:366 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "psf_convolution_mapping_matrix": [ + { + "instruction": "fft.19.0", + "ms": 1.7862128062499991, + "opcode": "fft", + "shape": "f64[1521,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_scatter_fusion", + "ms": 1.4272017124999998, + "opcode": "fusion", + "shape": "f64[1521,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.15.0", + "ms": 1.3883661874999982, + "opcode": "fft", + "shape": "c128[1521,180,91]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.17.0", + "ms": 0.9928161124999997, + "opcode": "fft", + "shape": "c128[1521,91,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_transpose_fusion.2", + "ms": 0.5221779874999999, + "opcode": "fusion", + "shape": "c128[1521,91,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "wrapped_transpose.2", + "ms": 0.50538510625, + "opcode": "fusion", + "shape": "c128[1521,180,91]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + } + ], + "curvature_matrix_F": [ + { + "instruction": "cublas-lt-matmul.2", + "ms": 4.349770500000001, + "opcode": "custom-call", + "shape": "(f64[1521,1521]{1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "inversion_other": [ + { + "instruction": "cholesky.80", + "ms": 0.9205718187500017, + "opcode": "custom-call", + "shape": "(f64[1521,1521]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1078 (AbstractInversion.log_det_curvature_reg_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:347 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "cholesky.90", + "ms": 0.9019525062500009, + "opcode": "custom-call", + "shape": "(f64[1521,1521]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1157 (AbstractInversion.log_det_regularization_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:348 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "loop_reduce_window_fusion.3", + "ms": 0.005837662500000002, + "opcode": "fusion", + "shape": "s64[6,16]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "loop_reduce_window_fusion.2", + "ms": 0.0030367124999999932, + "opcode": "fusion", + "shape": "s64[86,16]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "input_scatter_fusion.9", + "ms": 0.0025597687499999953, + "opcode": "fusion", + "shape": "s64[1369]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527 (AbstractInversion.zeroed_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:567 (AbstractInversion.solve_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:684 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_broadcast_fusion.4", + "ms": 0.001910556249999998, + "opcode": "fusion", + "shape": "(s64[1369]{0}, s64[1369]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527 (AbstractInversion.zeroed_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:567 (AbstractInversion.solve_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:684 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "chi_squared_evidence": [ + { + "instruction": "loop_multiply_fusion", + "ms": 0.002975749999999999, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:300", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:300 (AbstractNDArray.__pow__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:60 (unwrap_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:35 (to_new_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:78 (chi_squared_map_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:78 (AbstractFit.chi_squared_map)" + ] + } + ] + }, + "stage_audit_note": "The HLO instructions that contributed most of each stage's milliseconds, with their full source stack. A stage row is only as good as the rules that built it; this is how a reader checks a row against the HLO instead of trusting it.", + "untraced_wall_ms": 30.995313312496364, + "reconciliation_vs_untraced_pct": 6.608653897451632, + "wall_basis": "wall_ms is the TRACED run's wall, the run these kernel durations came from. untraced_wall_ms is the same executable without the profiler; the difference is the profiler's overhead and belongs in neither the stages nor the idle row.", + "calls": 160, + "call_split": "per-call (first-instruction recurrence)", + "call_blocks": 160, + "events": 89090, + "streams": [ + "Stream #14(Memset,MemcpyD2H,Compute,MemcpyH2D,MemcpyD2D)" + ], + "per_stage_ms": { + "border_relocator": { + "median_ms": 0.0966555, + "min_ms": 0.09599800000000003, + "max_ms": 0.09759799999999999 + }, + "chi_squared_evidence": { + "median_ms": 0.0029595000000000003, + "min_ms": 0.002815, + "max_ms": 0.003296 + }, + "curvature_matrix_F": { + "median_ms": 4.327062, + "min_ms": 4.305276, + "max_ms": 4.522166 + }, + "inversion_other": { + "median_ms": 1.838941, + "min_ms": 1.823593, + "max_ms": 1.862181 + }, + "mapping_matrix": { + "median_ms": 0.002816, + "min_ms": 0.002783, + "max_ms": 0.002849 + }, + "memset": { + "median_ms": 0.040222999999999995, + "min_ms": 0.014975999999999998, + "max_ms": 0.05491200000000002 + }, + "mesh_construction": { + "median_ms": 0.3445290000000001, + "min_ms": 0.3419430000000003, + "max_ms": 0.3463909999999999 + }, + "mixed_fusion": { + "median_ms": 1.8530155000000004, + "min_ms": 1.8474620000000004, + "max_ms": 1.858663 + }, + "other": { + "median_ms": 0.18080299999999977, + "min_ms": 0.18034199999999972, + "max_ms": 0.18120699999999973 + }, + "pdip_solve": { + "median_ms": 16.078145999999997, + "min_ms": 4.668055, + "max_ms": 21.500268000000016 + }, + "psf_convolution_mapping_matrix": { + "median_ms": 6.6214715, + "min_ms": 6.607412999999999, + "max_ms": 6.6393819999999995 + }, + "regularization_H": { + "median_ms": 0.002816, + "min_ms": 0.002432, + "max_ms": 0.0032 + } + }, + "stage_order": [ + "border_relocator", + "mesh_construction", + "mapping_matrix", + "psf_convolution_mapping_matrix", + "curvature_matrix_F", + "regularization_H", + "pdip_solve", + "chi_squared_evidence", + "inversion_other", + "mixed_fusion", + "other", + "memset" + ], + "mixed_fusion": { + "ms": 1.8530155000000004, + "constituent_stage_sets": { + "curvature_matrix_F + psf_convolution_mapping_matrix": 0.7003358249999999, + "pdip_solve + psf_convolution_mapping_matrix": 0.23251897500000013, + "inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": 0.1855460125, + "mapping_matrix + pdip_solve": 0.13883138125000027, + "data_vector_D + pdip_solve": 0.11732490625000003, + "mapped_reconstruction + pdip_solve": 0.11175777499999999, + "border_relocator + pdip_solve": 0.07066861875000008, + "mesh_construction + pdip_solve": 0.03856215000000002, + "inversion_other + regularization_H": 0.03077855624999999, + "inversion_other + pdip_solve": 0.030346618749999933, + "border_relocator + mesh_construction + pdip_solve": 0.02686664375000001, + "curvature_reg_reduce_gather + inversion_other": 0.025528625, + "border_relocator + inversion_other + mapping_matrix + mesh_construction + pdip_solve": 0.020533562500000012, + "pdip_solve + regularization_H": 0.019172987499999985, + "inversion_other + mapping_matrix + pdip_solve + regularization_H": 0.015526856249999997, + "inversion_other + mapping_matrix + mesh_construction": 0.012942187500000008, + "pdip_solve + ray_trace_data_grid": 0.012830974999999996, + "grids_and_structures + mass_profile_deflections + pdip_solve": 0.009855012500000006, + "inversion_other + mapped_reconstruction + reconstruction_scatter": 0.009664968750000004, + "inversion_other + mapped_reconstruction + pdip_solve": 0.009102518749999993, + "chi_squared_evidence + pdip_solve": 0.0076110499999999925, + "inversion_other + mesh_construction + pdip_solve": 0.005480099999999985, + "grids_and_structures + mass_profile_deflections + ray_trace_data_grid": 0.005286868749999997, + "inversion_other + pdip_solve + ray_trace_data_grid": 0.004893300000000005, + "border_relocator + mesh_construction": 0.003445131250000003, + "border_relocator + inversion_other": 0.003382518750000002, + "border_relocator + inversion_other + mesh_construction + pdip_solve": 0.0024909624999999995, + "chi_squared_evidence + inversion_other": 0.001795793750000001 + }, + "example_kernels": { + "curvature_matrix_F + psf_convolution_mapping_matrix": [ + "loop_divide_gather_fusion" + ], + "pdip_solve + psf_convolution_mapping_matrix": [ + "loop_broadcast_fusion.3" + ], + "inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": [ + "input_multiply_transpose_fusion" + ], + "mapping_matrix + pdip_solve": [ + "loop_divide_fusion.1", + "loop_broadcast_fusion" + ], + "data_vector_D + pdip_solve": [ + "input_reduce_fusion.3", + "input_reduce_fusion.18" + ], + "mapped_reconstruction + pdip_solve": [ + "input_reduce_fusion.6" + ], + "border_relocator + pdip_solve": [ + "input_reduce_fusion.8", + "loop_select_sine_fusion", + "input_concatenate_fusion.1", + "input_transpose_fusion.6" + ], + "mesh_construction + pdip_solve": [ + "loop_multiply_fusion.2", + "loop_pad_fusion", + "loop_reduce_fusion", + "triton_softmax.1" + ], + "inversion_other + regularization_H": [ + "input_transpose_fusion.4" + ], + "inversion_other + pdip_solve": [ + "input_scatter_fusion.11", + "input_reduce_fusion.9", + "input_reduce_fusion.16", + "input_reduce_fusion.4" + ] + }, + "prorated_estimate_ms": { + "psf_convolution_mapping_matrix": 0.46642740000000005, + "pdip_solve": 0.46354291406250014, + "curvature_matrix_F": 0.35016791249999996, + "inversion_other": 0.11494141822916662, + "mapped_reconstruction": 0.10852121979166665, + "mapping_matrix": 0.08171817968750014, + "data_vector_D": 0.058662453125000014, + "border_relocator": 0.052433135416666714, + "reconstruction_scatter": 0.049608159375, + "mesh_construction": 0.04082940416666668, + "regularization_H": 0.02885748593749999, + "curvature_reg_reduce_gather": 0.0127643125, + "ray_trace_data_grid": 0.009808877083333334, + "grids_and_structures": 0.005047293750000001, + "mass_profile_deflections": 0.005047293750000001, + "chi_squared_evidence": 0.004703421874999997 + }, + "prorated_note": "ESTIMATE ONLY \u2014 a mixed fusion's time split equally across the stages its constituents span. Never summed into the measured table, never reconciled." + }, + "other_sources_ms": { + "copy.41": 0.0303602312499998, + "copy.42": 0.030067275000000313, + "copy.59": 0.028573787500000766, + "copy.51": 0.028510237500000833, + "copy.50": 0.028448731250000973, + "copy.60": 0.02844560625000095, + "copy.96": 0.001685175000000001, + "copy.95": 0.0016329874999999993, + "copy.52": 0.0015435812499999988, + "copy.34": 0.001537562499999998 + }, + "device_span_ms": 31.929734237500004, + "device_busy_ms": 30.27548594375, + "device_idle_ms": 1.6542482937500047, + "largest_idle_gaps": [ + { + "gap_ms": 0.052286, + "after": "input_concatenate_fusion.4", + "before": "custom-call.2" + }, + { + "gap_ms": 0.033983, + "after": "loop_multiply_fusion.1", + "before": "eigh.0" + }, + { + "gap_ms": 0.031711, + "after": "while.26", + "before": "input_transpose_fusion" + }, + { + "gap_ms": 0.026815, + "after": "while.26", + "before": "input_transpose_fusion" + }, + { + "gap_ms": 0.025087, + "after": "loop_add_fusion.3", + "before": "loop_select_fusion.3" + }, + { + "gap_ms": 0.023615, + "after": "loop_broadcast_fusion.6", + "before": "loop_broadcast_fusion.8" + }, + { + "gap_ms": 0.020256, + "after": "eigh.0", + "before": "eigh.0" + }, + { + "gap_ms": 0.019296, + "after": "copy.50", + "before": "copy.51" + } + ], + "kernel_ms": 31.389438, + "sum_ms": 33.04368629375, + "wall_ms": 31.936779850002498, + "host_outside_span_ms": 0.007045612502494691, + "reconciliation_pct": 3.4659300309746626, + "unjoined_ms": 0.0, + "unjoined_pct": 0.0, + "other_ms": 0.18080299999999977, + "other_pct": 0.5661278339556379, + "note": "Stage rows attribute the command-buffers-OFF program (see the module docstring): kernel times are the same, the launch overhead the CUDA graphs remove is not. sum_ms = kernel rows + device_idle_ms; the residual against wall_ms is host_outside_span_ms (dispatch before the first kernel, teardown after the last).", + "per_stage_ms_per_lane": { + "border_relocator": 0.0966555, + "chi_squared_evidence": 0.0029595000000000003, + "curvature_matrix_F": 4.327062, + "inversion_other": 1.838941, + "mapping_matrix": 0.002816, + "memset": 0.040222999999999995, + "mesh_construction": 0.3445290000000001, + "mixed_fusion": 1.8530155000000004, + "other": 0.18080299999999977, + "pdip_solve": 16.078145999999997, + "psf_convolution_mapping_matrix": 6.6214715, + "regularization_H": 0.002816 + }, + "per_lane_divisor": 1, + "host_callback": { + "pure_callback_span_ms": 0, + "qhull_ms": 0.0, + "callback_body_ms_note": "the OUTERMOST matching body event, not a sum: under the probe the body appears twice (the wrapper and the timed re-implementation it calls) and summing them would count the same work twice", + "events_by_name": { + "ThenExecuteCallback:GetEventForComputeStreamSyncPoint": { + "count": 160, + "ms": 0.2977295000000001 + } + }, + "note": "HOST milliseconds per traced BATCH (the whole invocation), aggregated by name because the events nest. Not a row of the device table: the device pays for them as the idle gaps largest_idle_gaps names." + }, + "host_callback_ms": 0 + }, + "hlo_census": { + "status": "excluded", + "reason": "The legacy census anchors PyAutoArray source line numbers that moved after the phase-1 run. No batched attribution is published from unsupported anchors; the device-event table and wall reconciliation remain valid." + }, + "trace_split": { + "expected_calls": 160, + "executions_per_invocation": 16, + "method": "per-call (first-instruction recurrence)", + "note": "DECIDED IN CODE: the scalar arm's trace is split by trace_calls * B, so every lane's execution is its own block and the per-stage median is taken over all of them. The vmap arm's is split by trace_calls, one block per batched execution, and per_stage_ms_per_lane divides those rows by B." + } + } + }, + "certification_report": { + "source": "vmap arm, library solve observed through its stats= out-dict (PyAutoArray #566) and jax.debug.callback(..., ordered=True); ordered because the unordered batching rule returns the lanes permuted. Untimed, separately compiled; max rel diff of its log likelihoods vs the timed arm's: 2.209e-06", + "rows": 16, + "pdip_iter": "NOT AVAILABLE per lane without changing library numerics. The fallback branch calls the library's own reconstruction_positive_only_from, which returns the solution alone \u2014 jax_nnls.solve_nnls' iteration count is discarded inside the library's custom_vjp primal. The PDIP while_loop's cost is in the pdip_solve stage row of each arm's device table instead, which is a max-over-lanes quantity under vmap because every lane runs the same fixed kernel sequence.", + "passes_semantics": "library `passes`: restricted active-set passes run (jax_active_set.solve_certified)" + }, + "lane_construction": { + "draws_sha256": "6bdc2dd94a49d4d0c9095b0fbaa94aad0f0243aedd8fc4dad1391ab796f19d33", + "lane_rows": [ + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315 + ], + "calls": [ + 15 + ], + "stage": "pix1", + "regularization_range": { + "galaxies.source.pixelization.regularization.inner_coefficient": { + "min": 1.5395402868893563e-06, + "max": 631.3270846999916 + }, + "galaxies.source.pixelization.regularization.outer_coefficient": { + "min": 1.585514819488347e-06, + "max": 4.102561528173602 + }, + "galaxies.source.pixelization.regularization.signal_scale": { + "min": 0.06623313471893155, + "max": 0.9779334025364208 + } + }, + "phases": [ + "exploration" + ], + "window_rule": "nautilus_batches.timed_window: consecutive captured calls, in call order, from the FIRST call that is not a prior batch, concatenated and truncated to B; at B == n_batch exactly one real Nautilus batch. Falls back to the latest B lanes if the post-prior lanes run out; never repeats a lane.", + "note": "Lane k is captured lane lane_rows[k]: the mass AND shear of a real Nautilus proposal (nautilus_batch_capture.py), lens light fixed at S3, the S3 light-subtracted dataset shared by every lane. `offsets` in the lane table are the mass offsets from the fiducial; the shear is in the capture file." + }, + "captured": { + "batches_path": "/mnt/ral/jnightin/autolens_profiling_wt/certified-solver-phase-c1-lane-rate/results/breakdown/imaging/nautilus_batches_rectangular_pix1.npz", + "batches_sha256": "c0b62fba544cb62c8a273c19837cf364127f5af7fdaa110f3a2c8a973e0b6cc0", + "schema_version": 2, + "n_calls": 972, + "n_lanes": 19440, + "call_sizes_seen": [ + 20 + ], + "calls_by_phase": { + "prior": 15, + "exploration": 957 + }, + "parameter_paths": [ + "galaxies.source.pixelization.regularization.inner_coefficient", + "galaxies.source.pixelization.regularization.outer_coefficient", + "galaxies.source.pixelization.regularization.signal_scale", + "galaxies.lens.mass.centre.centre_0", + "galaxies.lens.mass.centre.centre_1", + "galaxies.lens.mass.einstein_radius", + "galaxies.lens.mass.ell_comps.ell_comps_0", + "galaxies.lens.mass.ell_comps.ell_comps_1", + "galaxies.lens.shear.gamma_1", + "galaxies.lens.shear.gamma_2" + ], + "stage": "pix1", + "regularization": { + "class": "Adapt", + "free": true, + "priors": { + "inner_coefficient": [ + "LogUniform", + 1e-06, + 1000000.0 + ], + "outer_coefficient": [ + "LogUniform", + 1e-06, + 1000000.0 + ], + "signal_scale": [ + "Uniform", + 0.0, + 1.0 + ] + }, + "priors_source": "PyAutoGalaxy packaged config/priors/regularization (adapt_split.yaml / adapt.yaml / constant.yaml); adapt_split.yaml and adapt.yaml are identical to euclid_strong_lens_modeling_pipeline/config/priors/regularization/'s copies" + }, + "nautilus": { + "departures_from_production": [ + "mass/shear priors are the phase-B cell's Gaussians, not chained from source_lp", + "no positions likelihood", + "the cell's mesh (39x39 RectangularBilinearAdaptImage, weight_power 1, weight_floor 0) fixed in both stages; source_pix_1 uses RectangularBilinearAdaptDensity, source_pix_2 frees weight_power / weight_floor", + "seeded (production passes no seed)", + "quick updates disabled (iterations_per_quick_update=1e12; render-only)", + "NullPaths: no output directory, so no checkpoint and one Sampler.run call", + "post-fit perform_update skipped (samples / latent variables never built)" + ], + "n_batch": 20, + "n_like_max": 40000, + "n_live": 150, + "number_of_cores": 1, + "production_reference": "euclid_strong_lens_modeling_pipeline/scripts/full_model.py source_pix_1 (n_live=150) / source_pix_2 (n_live=75): af.Nautilus(n_batch=20, **SettingsSearch.search_dict) with use_jax_vmap=True and number_of_cores=1 (SettingsSearch defaults)", + "production_stage": "source_pix_1", + "seed": 1, + "stage": "pix1", + "use_jax_vmap": true, + "version": "1.0.5" + }, + "capture_fit_status": "sampling complete (n_like_max or convergence); post-fit result skipped", + "capture_library_revisions": { + "PyAutoArray": { + "head": "3de624b5b91a4efa130dc3cb0a3a0f06f85025a3", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoArray" + }, + "PyAutoFit": { + "head": "dd9fbe0aab60c4a57702b1444ca031b317c91331", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoFit" + }, + "PyAutoGalaxy": { + "head": "70a61e26cd715cefe7012a38285698091246a8a4", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy" + }, + "PyAutoLens": { + "head": "86054bbc19baa2f710a12e04a94fa27ab37cc354", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoLens" + }, + "PyAutoNerves": { + "head": "1fa613aa8d89a79613009fb66f5b4e2d21deb57a", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoNerves" + } + }, + "fingerprint_check": { + "fields": [ + "mesh", + "source_pixels", + "dataset_sha256", + "regularization_class", + "regularization_s0_fiducial", + "border_relocator", + "use_mixed_precision", + "log_evidence_s3_library" + ], + "not_identity": "the regularization coefficients: free per lane since the capture frees them", + "log_evidence_s3_library_rel_diff": 0.0, + "passed": true + }, + "timed_window_vs_capture_pdip": { + "reference": "the capture's own figure of merit (library PDIP, Fitness.call_wrap jax.jit(jax.vmap(call)) over parameter vectors) for the same lanes", + "compared_against": "this cell's jit(vmap) library-PDIP reference", + "n_compared": 16, + "max_rel_diff": 3.7082866944510103e-06, + "max_abs_diff_nats": 0.7208299557678401, + "gated": false, + "note": "RECORDED, NOT GATED: proves the lane trees rebuilt here are the models the sampler evaluated (a wrong parameter mapping shows up as nats, not 1e-10)." + } + }, + "matched": { + "vmap_wall_per_lane_ms": 27.924997075001556, + "scalar_wall_per_lane_ms": 30.79918751873265, + "speedup_vmap_over_scalar": 1.1029253623916784, + "note": "Both walls are the PRODUCTION nesting of their arm, measured in one process on the same B lanes with the SAME library Settings (no injection). A speedup below 1 means the batch is slower per lane than B sequential jitted calls." + }, + "solver_source": "library", + "solver": "certified", + "certified_fallback": "none", + "certified_pass_budget": 16, + "certified_pass_budget_basis": "config default (Settings().certified_pass_budget)", + "certified_tau_rel": 1e-09, + "solver_used": "certified", + "solver_check": { + "solver_used": "certified", + "solver_used_source": "AbstractInversion.positive_only_solver_used on the fiducial S3 inversion, built eagerly on the JAX backend (AnalysisImaging(use_jax=True).fit_from) with the arms' Settings", + "reference_solver_used": "pdip", + "traced_solver_kwargs_jax": [ + "certified" + ], + "observed_calls_jax": 1, + "report_rows": 16, + "report_vs_timed_arm_max_rel_diff": 2.2088446615713593e-06 + }, + "lanes_certified": [ + false, + false, + false, + true, + true, + true, + true, + true, + false, + false, + true, + false, + false, + true, + true, + true + ], + "lanes_passes": [ + 16, + 16, + 16, + 4, + 2, + 14, + 6, + 6, + 16, + 16, + 6, + 16, + 16, + 9, + 2, + 8 + ], + "uncertified_lanes": 7, + "per_lane_certification_note": "certified / passes come from the library's own solve through its stats= out-dict (PyAutoArray #566): passes is the number of restricted active-set passes the library ran (0 when the unconstrained solve was already non-negative), certified is its KKT certificate. With certified_fallback=pdip a False lane returned the PDIP solution; with none it returned the last uncertified iterate. null for a library-PDIP row (no certificate).", + "gate": { + "pre_registered": true, + "gated": [ + "per lane: jit(vmap) arm vs jit(vmap) library PDIP <= lane_rtol relative", + "per lane: scalar jit arm vs scalar jit library PDIP <= lane_rtol relative" + ], + "recorded_not_gated": [ + "per lane: jit(vmap) arm vs scalar jit arm (rel_diff, abs_diff_nats)", + "per lane: jit(vmap) library PDIP vs scalar jit library PDIP", + "uncertified_lanes (certified_fallback=none rows)" + ], + "lanes_failed": 9, + "passed": false, + "policy_eligible": false, + "note": "Pre-registered before submission (module docstring; submit header). Phase 3 (results/notes/hst_gpu_residue_phase3_psf_2026_09.md) placed phase 2's ~2.5e-9 certified-vs-PDIP residual BETWEEN the jit(vmap) and scalar-jit compositions, not in the solver \u2014 so each arm is gated against the library-PDIP reference of its OWN composition, and the cross-composition difference is recorded with its nats. A certified_fallback=none row is policy-eligible only if every lane certifies AND passes the gate. Timing is never gated." + }, + "library_revisions": { + "PyAutoArray": { + "head": "3de624b5b91a4efa130dc3cb0a3a0f06f85025a3", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoArray", + "module_file": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/__init__.py" + }, + "PyAutoFit": { + "head": "dd9fbe0aab60c4a57702b1444ca031b317c91331", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoFit", + "module_file": "/mnt/ral/jnightin/PyAuto/PyAutoFit/autofit/__init__.py" + }, + "PyAutoGalaxy": { + "head": "70a61e26cd715cefe7012a38285698091246a8a4", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy", + "module_file": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/__init__.py" + }, + "PyAutoLens": { + "head": "86054bbc19baa2f710a12e04a94fa27ab37cc354", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoLens", + "module_file": "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/__init__.py" + }, + "autoarray_file": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/__init__.py" + } + }, + "headline_arm_note": "`trace`, `hlo_census`, `command_buffers` and `trace_timing` above describe the scalar arm \u2014 the program phase 1 traced. Both arms' full blocks, the lane table and the matched comparison are under `vmap`." +} \ No newline at end of file diff --git a/results/breakdown/imaging/fixed_light_trace_rectangular_jitvmap16_captured_pix1_libcertified_fboff_b16_hpc_a100_fp64_fixed_light_trace.png b/results/breakdown/imaging/fixed_light_trace_rectangular_jitvmap16_captured_pix1_libcertified_fboff_b16_hpc_a100_fp64_fixed_light_trace.png new file mode 100644 index 000000000..a8c7eb312 Binary files /dev/null and b/results/breakdown/imaging/fixed_light_trace_rectangular_jitvmap16_captured_pix1_libcertified_fboff_b16_hpc_a100_fp64_fixed_light_trace.png differ diff --git a/results/breakdown/imaging/fixed_light_trace_rectangular_jitvmap16_captured_pix1_libcertified_fbon_b16_hpc_a100_fp64_fixed_light_trace.json b/results/breakdown/imaging/fixed_light_trace_rectangular_jitvmap16_captured_pix1_libcertified_fbon_b16_hpc_a100_fp64_fixed_light_trace.json new file mode 100644 index 000000000..946b07a0c --- /dev/null +++ b/results/breakdown/imaging/fixed_light_trace_rectangular_jitvmap16_captured_pix1_libcertified_fbon_b16_hpc_a100_fp64_fixed_light_trace.json @@ -0,0 +1,5046 @@ +{ + "device": { + "backend": "gpu", + "device": "cuda:0", + "hostname": "euclid-ral-gpu-2", + "xla_flags": "--xla_disable_hlo_passes=constant_folding --xla_gpu_autotune_level=0 --xla_gpu_enable_triton_gemm=false", + "omp_num_threads": null, + "cpu_count": 124, + "jax_compilation_cache_dir": "/mnt/ral/jnightin/autolens_profiling_wt/certified-solver-phase-c1-lane-rate/output/jax_cache/fixed_light_lanerate_rectangular_pix1_time_16_certified_on_350768_21", + "autotune_cache_entries_at_start": 0, + "cache_fresh": true, + "nvidia_smi": "NVIDIA A100 80GB PCIe, 35455 MiB, 81920 MiB" + }, + "machine": { + "cpu_model": "AMD EPYC 7702 64-Core Processor", + "cpu_count_os": 124, + "nproc": 4, + "nproc_all": 124, + "nproc_note": "GNU nproc honours OMP_NUM_THREADS, so `nproc` can print 1 on a multi-core host; `nproc_all` is the core count.", + "ram_total": "928298204 kB", + "kernel": "5.14.0-687.50.1.el9_8.x86_64", + "platform": "Linux-5.14.0-687.50.1.el9_8.x86_64-x86_64-with-glibc2.34", + "python": "3.12.4", + "jax_thread_env": { + "NPROC": null + }, + "blas_thread_env": { + "OMP_NUM_THREADS": null, + "OPENBLAS_NUM_THREADS": null, + "MKL_NUM_THREADS": null, + "VECLIB_MAXIMUM_THREADS": null, + "NUMEXPR_NUM_THREADS": null + }, + "thread_env_note": "NPROC sizes XLA's CPU intra-op pool (the JAX rows); the BLAS knobs pin OpenBLAS/MKL/OpenMP (the numpy/scipy rows) and do not touch JAX. Two disjoint families; both are recorded on every CPU timing.", + "gpu": "NVIDIA A100 80GB PCIe, 81920 MiB, 610.57.04" + }, + "precision": "fp64", + "configuration": { + "pixel_scale_arcsec": 0.05, + "mask_radius_arcsec": 3.5, + "image_pixels_masked": 15361, + "over_sampled_pixels": 62752, + "mesh": "rectangular", + "mesh_shape": [ + 39, + 39 + ], + "source_pixels": 1521, + "source_pixels_requested": null, + "dataset": "hst", + "dataset_sha256": { + "data.fits": "e4e833a28e9c6f6fb023cd85c0d3dde74068720256bc77a240633500e5b04fac", + "noise_map.fits": "315c6266a0acd3ac9c8da82fcd2b45a08697362481fd7a35072bab1658530ba3", + "psf.fits": "8389ba0e8bf4a09b4a561cfc246181a2fb944ed396754cd0ff76fdd22910d303" + }, + "cell_source_sha256": "06a162fcdae6b329384ec33322f443df07215d86e56f0505ac15b3d3473eb432", + "inversion_path": "dense", + "pass_budget": 11, + "pass_budget_basis": "phase 3 (autolens_profiling#255): the smallest ZERO-fallback budget per mesh, the budget a production run fixes. NOT phase 0's certifying budget (2 for Delaunay), which falls back on 67.5 % of a graded draw set and is not a production cost.", + "border_relocator_mode": "cell", + "border_relocator": true, + "border_relocator_note": "'cell' is use_border_relocator=True, which every profiling cell in this family forces; 'library' passes None and takes the shipped config default, which is what production runs. The resolved boolean is what this leg actually ran.", + "routes_selected": [ + "b", + "d" + ], + "trace_calls": 10, + "command_buffers_traced": "off", + "use_mixed_precision": false, + "tau_rel": 1e-09, + "regularization": { + "scheme": "constant", + "coefficient": 1.0 + }, + "thread_env": { + "n_threads": null, + "vars": [ + "OPENBLAS_NUM_THREADS", + "MKL_NUM_THREADS", + "OMP_NUM_THREADS", + "VECLIB_MAXIMUM_THREADS", + "NUMEXPR_NUM_THREADS" + ], + "set_to": null, + "preexisting": {}, + "overridden": {}, + "note": "Not pinned (legacy variant): recorded as found." + }, + "over_sample_size_lp_rule": { + "sub_size_list": [ + 4, + 2, + 2 + ], + "radial_list": [ + 0.3, + 0.6 + ], + "centre": [ + 0.0, + 0.0 + ] + }, + "vmap_batch": 16, + "lanes": "captured", + "arms": [ + "vmap", + "scalar" + ], + "fallback": "on", + "draw_seed": 0, + "vmap_composition": "jax.jit(jax.vmap(fn))", + "lane_rtol": 1e-09, + "vmap_flags_note": "Strict ProfileCLI.parse_cell_args rejects unknown flags. These keys record the exact batching program and prevent historical vmap(jit) artifacts from being mistaken for current jit(vmap) measurements.", + "solver_source": "library", + "solver": "certified", + "certified_fallback": "pdip", + "certified_pass_budget": 16, + "captured_pass": "time", + "batches": "/mnt/ral/jnightin/autolens_profiling_wt/certified-solver-phase-c1-lane-rate/results/breakdown/imaging/nautilus_batches_rectangular_pix1.npz" + }, + "solver_injection": { + "patched": null, + "part_v": "none \u2014 library mode selects the solver through al.Settings", + "part_b_route_d": { + "patched": "autoarray.inversion.inversion.inversion_util.reconstruction_positive_only_from", + "pass_budget": 11, + "fallback": true + }, + "note": "Library mode (phase B, #300): PART V's arms and references run the library's own positive-only solve, selected by Settings(positive_only_solver, certified_fallback, certified_pass_budget); nothing is injected. PART B's single-call route d (the fiducial d == b pin) still uses the phase-1 harness injection at the phase-3 budget and is not a phase-B row. The untimed certification report observes the library solve (library_solver_observed) without changing it." + }, + "routes": { + "b_s3_pdip": { + "label": "S3 PDIP (source-only)", + "status": "ok", + "solver": "library", + "ms": 38.95759799997904, + "log_likelihood": 28622.39485118912 + }, + "d_s3_certified_fallback": { + "label": "S3 certified active set, budget 11, PDIP fallback", + "status": "ok", + "solver": "harness-injected certified active set", + "pass_budget": 11, + "fallback": true, + "injected_solver_calls_jax": 1, + "injected_solver_calls_numpy": 0, + "ms": 30.214900400096667, + "log_likelihood": 28622.394851189252 + } + }, + "equivalence_pins": [ + { + "pin": "route d (certified, fallback) == route b (library PDIP)", + "route": "d_s3_certified_fallback", + "reference": "b_s3_pdip", + "expectation": "the certified active set returns the library's own positive solution", + "rtol": 1e-09, + "got": 28622.394851189252, + "reference_value": 28622.39485118912, + "rel_diff": 4.575691088611358e-15, + "status": "PASS" + } + ], + "equivalence_rtol": 1e-09, + "reference": { + "log_evidence_s0_library": 28622.394851199875, + "log_evidence_s3_library": 28622.39485119987, + "s3": { + "n_params": 1521, + "n_mapper": 1521, + "n_funcs": 0, + "edge_zeroed_pixels": 152, + "subtracted_light_flux": 5253.476646922047 + } + }, + "command_buffers": { + "wall_on_ms": 677.3452973000531, + "wall_off_ms": 682.2297303999221, + "command_buffer_delta_ms": 4.884433099869057, + "command_buffer_delta_pct": 0.7211141967529349, + "traced": "off", + "compiler_option": "xla_gpu_enable_command_buffer", + "probe": { + "note": "Not taken in --vmap-batch mode: the CUPTI-inside-a-CUDA-graph probe is a phase-1 diagnostic about the JOIN, and this mode already compiles and times both the command-buffers ON and OFF executable of every arm." + }, + "note": "ONE lowering, TWO compilations, one process. wall_on_ms is the PRODUCTION program (CUDA graphs as XLA ships them) and is the number comparable to phase 5's row; wall_off_ms is the graph-less program the stage rows attribute. The delta is the launch overhead the graphs remove \u2014 it lands in device_idle and host_outside_span, not in any stage. Reconciliation is computed against wall_off_ms." + }, + "trace": { + "parser": "ProfileData.from_file(xplane) + as_text() + stack_frame_index(proto field 17)", + "stage_audit": { + "mesh_construction": [ + { + "instruction": "fusion.2", + "ms": 0.1481451625000001, + "opcode": "fusion", + "shape": "(f64[15361,2]{1,0}, s64[15361,2]{1,0}, s32[15361,2]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:227", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:227 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_select_fusion", + "ms": 0.039184324999999694, + "opcode": "fusion", + "shape": "(u32[2,15361]{1,0}, u32[2,15361]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69 (forward_interp)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:573 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/abstract.py:36 (AbstractInterpolator.mappings)" + ] + }, + { + "instruction": "loop_select_fusion.6", + "ms": 0.034532712499999764, + "opcode": "fusion", + "shape": "(u32[15361]{0}, u32[15361]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_select_fusion.1", + "ms": 0.03433358750000023, + "opcode": "fusion", + "shape": "(u32[15361]{0}, u32[15361]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_add_fusion.7", + "ms": 0.02104513124999953, + "opcode": "fusion", + "shape": "s64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_add_fusion", + "ms": 0.020980193749999553, + "opcode": "fusion", + "shape": "s64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69 (forward_interp)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:573 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/abstract.py:36 (AbstractInterpolator.mappings)" + ] + } + ], + "mixed_fusion": [ + { + "instruction": "loop_divide_gather_fusion", + "ms": 0.6957160187499998, + "opcode": "fusion", + "shape": "(f64[15361,1,1,1521]{3,2,1,0}, f64[15361,1,1,1521]{3,2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_broadcast_fusion.3", + "ms": 0.23337609374999993, + "opcode": "fusion", + "shape": "f64[1521,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_multiply_transpose_fusion", + "ms": 0.18472471875000007, + "opcode": "fusion", + "shape": "(f64[1369,1369]{1,0}, f64[1369,1369]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:237 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:274 (_certified_positive_only_from)" + ] + }, + { + "instruction": "loop_broadcast_fusion", + "ms": 0.13639111875, + "opcode": "fusion", + "shape": "f64[15361,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:342", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:342 (mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:283 (Mapper.mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:91 (AbstractInversionImaging._mapping_matrix_for_convolution_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:137 (AbstractInversionImaging.operated_mapping_matrix_list)" + ] + }, + { + "instruction": "input_reduce_fusion.11", + "ms": 0.11359529375, + "opcode": "fusion", + "shape": "f64[92,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123 (data_vector_via_blurred_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:67 (InversionImagingMapping.data_vector)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:699 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_reduce_fusion.14", + "ms": 0.11179722500000007, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163 (mapped_reconstructed_data_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:120 (InversionImagingMapping._mapped_reconstructed_data_dict_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:196 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + } + ], + "border_relocator": [ + { + "instruction": "eigh.0", + "ms": 0.0740736062499999, + "opcode": "custom-call", + "shape": "(f64[2,2]{0,1}, f64[2]{0}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "custom-call.2", + "ms": 0.007912006250000006, + "opcode": "custom-call", + "shape": "(f64[2,2]{1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_reduce_fusion.15", + "ms": 0.005312068749999999, + "opcode": "fusion", + "shape": "(f64[], f64[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:270", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:270 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_add_fusion.9", + "ms": 0.0036249499999999996, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:423 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_concatenate_fusion.4", + "ms": 0.0023793437500000017, + "opcode": "fusion", + "shape": "f64[392,2]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:238", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:238 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_reduce_fusion.22", + "ms": 0.001590556250000001, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:256", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:256 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + } + ], + "other": [ + { + "instruction": "copy.63", + "ms": 0.03012568125000019, + "opcode": "copy", + "shape": "u32[2,15361]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.64", + "ms": 0.02982254375000077, + "opcode": "copy", + "shape": "u32[2,15361]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.81", + "ms": 0.02858591250000069, + "opcode": "copy", + "shape": "u32[15361]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.73", + "ms": 0.028505462500000876, + "opcode": "copy", + "shape": "u32[15361]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.82", + "ms": 0.0283477500000011, + "opcode": "copy", + "shape": "u32[15361]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.72", + "ms": 0.028247775000001137, + "opcode": "copy", + "shape": "u32[15361]{0}", + "source": "", + "stack": [] + } + ], + "pdip_solve": [ + { + "instruction": "cholesky.40", + "ms": 8.834679812500003, + "opcode": "custom-call", + "shape": "(f64[1369,1369]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "cholesky.60", + "ms": 6.379414124999969, + "opcode": "custom-call", + "shape": "(f64[1369,1369]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:106", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:106 (factorize_kkt)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:212 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve.7", + "ms": 1.5466199374999623, + "opcode": "custom-call", + "shape": "(f64[1369,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "triangular-solve.6", + "ms": 1.3093116687500153, + "opcode": "custom-call", + "shape": "(f64[1369,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "triangular-solve", + "ms": 0.9732707624999928, + "opcode": "custom-call", + "shape": "(f64[1369,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:213 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve.2", + "ms": 0.9302861625000245, + "opcode": "custom-call", + "shape": "(f64[1369,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:217 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + } + ], + "mapping_matrix": [ + { + "instruction": "input_reduce_fusion.28", + "ms": 0.0028161437500000006, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:362 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + } + ], + "regularization_H": [ + { + "instruction": "input_scatter_fusion.8", + "ms": 0.0027709187500000016, + "opcode": "fusion", + "shape": "f64[1521,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:123 (weighted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:366 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "psf_convolution_mapping_matrix": [ + { + "instruction": "fft.19.0", + "ms": 1.7800044812499995, + "opcode": "fft", + "shape": "f64[1521,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_scatter_fusion", + "ms": 1.4214474374999992, + "opcode": "fusion", + "shape": "f64[1521,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.15.0", + "ms": 1.3830779874999992, + "opcode": "fft", + "shape": "c128[1521,180,91]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.17.0", + "ms": 0.9921816250000004, + "opcode": "fft", + "shape": "c128[1521,91,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_transpose_fusion.4", + "ms": 0.5221223125, + "opcode": "fusion", + "shape": "c128[1521,91,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "wrapped_transpose.2", + "ms": 0.50774696875, + "opcode": "fusion", + "shape": "c128[1521,180,91]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + } + ], + "curvature_matrix_F": [ + { + "instruction": "cublas-lt-matmul.2", + "ms": 4.366860325000003, + "opcode": "custom-call", + "shape": "(f64[1521,1521]{1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "inversion_other": [ + { + "instruction": "cholesky.120", + "ms": 0.9176413500000014, + "opcode": "custom-call", + "shape": "(f64[1521,1521]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1078 (AbstractInversion.log_det_curvature_reg_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:347 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "cholesky.130", + "ms": 0.9006329875000011, + "opcode": "custom-call", + "shape": "(f64[1521,1521]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1157 (AbstractInversion.log_det_regularization_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:348 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "loop_reduce_window_fusion.3", + "ms": 0.00579086249999999, + "opcode": "fusion", + "shape": "s64[6,16]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "loop_reduce_window_fusion.2", + "ms": 0.003018343749999991, + "opcode": "fusion", + "shape": "s64[86,16]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "input_scatter_fusion.9", + "ms": 0.0025459437499999954, + "opcode": "fusion", + "shape": "s64[1369]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527 (AbstractInversion.zeroed_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:567 (AbstractInversion.solve_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:684 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_broadcast_fusion.4", + "ms": 0.0019107624999999977, + "opcode": "fusion", + "shape": "(s64[1369]{0}, s64[1369]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527 (AbstractInversion.zeroed_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:567 (AbstractInversion.solve_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:684 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "chi_squared_evidence": [ + { + "instruction": "loop_multiply_fusion.2", + "ms": 0.0029798937499999974, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:300", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:300 (AbstractNDArray.__pow__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:60 (unwrap_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:35 (to_new_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:78 (chi_squared_map_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:78 (AbstractFit.chi_squared_map)" + ] + } + ] + }, + "stage_audit_note": "The HLO instructions that contributed most of each stage's milliseconds, with their full source stack. A stage row is only as good as the rules that built it; this is how a reader checks a row against the HLO instead of trusting it.", + "untraced_wall_ms": 42.650429012496716, + "reconciliation_vs_untraced_pct": -21.452712330433613, + "wall_basis": "wall_ms is the TRACED run's wall, the run these kernel durations came from. untraced_wall_ms is the same executable without the profiler; the difference is the profiler's overhead and belongs in neither the stages nor the idle row.", + "calls": 160, + "call_split": "per-call (first-instruction recurrence)", + "call_blocks": 160, + "events": 134500, + "streams": [ + "Stream #14(MemcpyH2D,Compute,MemcpyD2H,Memset,MemcpyD2D)" + ], + "per_stage_ms": { + "border_relocator": { + "median_ms": 0.09642900000000004, + "min_ms": 0.09564500000000001, + "max_ms": 0.09740000000000001 + }, + "chi_squared_evidence": { + "median_ms": 0.002975, + "min_ms": 0.002847, + "max_ms": 0.003328 + }, + "curvature_matrix_F": { + "median_ms": 4.3388975, + "min_ms": 4.308712, + "max_ms": 4.521694 + }, + "inversion_other": { + "median_ms": 1.8344719999999999, + "min_ms": 1.822318, + "max_ms": 1.854093 + }, + "mapping_matrix": { + "median_ms": 0.002816, + "min_ms": 0.002783, + "max_ms": 0.002848 + }, + "memset": { + "median_ms": 0.03918350000000001, + "min_ms": 0.014751999999999998, + "max_ms": 0.10527399999999994 + }, + "mesh_construction": { + "median_ms": 0.34237549999999983, + "min_ms": 0.3399209999999998, + "max_ms": 0.3439689999999998 + }, + "mixed_fusion": { + "median_ms": 1.8487105000000001, + "min_ms": 1.8430510000000002, + "max_ms": 1.8544769999999997 + }, + "other": { + "median_ms": 0.18028849999999969, + "min_ms": 0.17941699999999977, + "max_ms": 0.18363699999999977 + }, + "pdip_solve": { + "median_ms": 16.03756299999999, + "min_ms": 4.649876999999999, + "max_ms": 48.07878999999992 + }, + "psf_convolution_mapping_matrix": { + "median_ms": 6.606725500000001, + "min_ms": 6.584301, + "max_ms": 6.6237569999999995 + }, + "regularization_H": { + "median_ms": 0.002752, + "min_ms": 0.002432, + "max_ms": 0.003232 + } + }, + "stage_order": [ + "border_relocator", + "mesh_construction", + "mapping_matrix", + "psf_convolution_mapping_matrix", + "curvature_matrix_F", + "regularization_H", + "pdip_solve", + "chi_squared_evidence", + "inversion_other", + "mixed_fusion", + "other", + "memset" + ], + "mixed_fusion": { + "ms": 1.8487105000000001, + "constituent_stage_sets": { + "curvature_matrix_F + psf_convolution_mapping_matrix": 0.6957160187499998, + "pdip_solve + psf_convolution_mapping_matrix": 0.23337609374999993, + "inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": 0.18472471875000007, + "mapping_matrix + pdip_solve": 0.1387286625000001, + "data_vector_D + pdip_solve": 0.11731176875000013, + "mapped_reconstruction + pdip_solve": 0.11179722500000007, + "border_relocator + pdip_solve": 0.07092946875000007, + "mesh_construction + pdip_solve": 0.038702762500000105, + "inversion_other + regularization_H": 0.031007618749999986, + "inversion_other + pdip_solve": 0.030165462499999924, + "border_relocator + mesh_construction + pdip_solve": 0.027064900000000017, + "curvature_reg_reduce_gather + inversion_other": 0.025772318750000012, + "border_relocator + inversion_other + mapping_matrix + mesh_construction + pdip_solve": 0.020572025000000015, + "pdip_solve + regularization_H": 0.019315131249999996, + "inversion_other + mapping_matrix + pdip_solve + regularization_H": 0.015423406249999983, + "inversion_other + mapping_matrix + mesh_construction": 0.012941031250000002, + "pdip_solve + ray_trace_data_grid": 0.012810718750000059, + "grids_and_structures + mass_profile_deflections + pdip_solve": 0.009774931249999995, + "inversion_other + mapped_reconstruction + reconstruction_scatter": 0.009560143749999995, + "inversion_other + mapped_reconstruction": 0.008867768750000001, + "chi_squared_evidence + pdip_solve": 0.007603593749999994, + "inversion_other + mesh_construction + pdip_solve": 0.005450837499999997, + "grids_and_structures + mass_profile_deflections + ray_trace_data_grid": 0.005214674999999999, + "inversion_other + pdip_solve + ray_trace_data_grid": 0.004812693749999996, + "border_relocator + mesh_construction": 0.00342489375, + "border_relocator + inversion_other": 0.0033499062500000018, + "border_relocator + inversion_other + mesh_construction + pdip_solve": 0.0024591437500000035, + "chi_squared_evidence + inversion_other": 0.0017915624999999993 + }, + "example_kernels": { + "curvature_matrix_F + psf_convolution_mapping_matrix": [ + "loop_divide_gather_fusion" + ], + "pdip_solve + psf_convolution_mapping_matrix": [ + "loop_broadcast_fusion.3" + ], + "inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": [ + "input_multiply_transpose_fusion" + ], + "mapping_matrix + pdip_solve": [ + "loop_divide_fusion.1", + "loop_broadcast_fusion" + ], + "data_vector_D + pdip_solve": [ + "input_reduce_fusion.11", + "input_reduce_fusion.26" + ], + "mapped_reconstruction + pdip_solve": [ + "input_reduce_fusion.14" + ], + "border_relocator + pdip_solve": [ + "input_reduce_fusion.16", + "loop_select_sine_fusion", + "input_concatenate_fusion.1", + "input_transpose_fusion.8" + ], + "mesh_construction + pdip_solve": [ + "loop_multiply_fusion.4", + "loop_pad_fusion", + "loop_reduce_fusion", + "triton_softmax.1" + ], + "inversion_other + regularization_H": [ + "input_transpose_fusion.6" + ], + "inversion_other + pdip_solve": [ + "input_scatter_fusion.11", + "input_reduce_fusion.17", + "input_reduce_fusion.24", + "input_reduce_fusion.12" + ] + }, + "prorated_estimate_ms": { + "psf_convolution_mapping_matrix": 0.46454605624999984, + "pdip_solve": 0.4608377867708336, + "curvature_matrix_F": 0.3478580093749999, + "inversion_other": 0.11616510968749999, + "mapped_reconstruction": 0.10970039114583338, + "mapping_matrix": 0.08164826489583339, + "data_vector_D": 0.058655884375000064, + "border_relocator": 0.052602958645833385, + "reconstruction_scatter": 0.04936789427083335, + "mesh_construction": 0.04094527531250006, + "regularization_H": 0.029017226562499988, + "curvature_reg_reduce_gather": 0.012886159375000006, + "ray_trace_data_grid": 0.009747815625000027, + "grids_and_structures": 0.004996535416666665, + "mass_profile_deflections": 0.004996535416666665, + "chi_squared_evidence": 0.0046975781249999965 + }, + "prorated_note": "ESTIMATE ONLY \u2014 a mixed fusion's time split equally across the stages its constituents span. Never summed into the measured table, never reconciled." + }, + "other_sources_ms": { + "copy.63": 0.03012568125000019, + "copy.64": 0.02982254375000077, + "copy.81": 0.02858591250000069, + "copy.73": 0.028505462500000876, + "copy.82": 0.0283477500000011, + "copy.72": 0.028247775000001137, + "copy.122": 0.0016843500000000007, + "copy.121": 0.0016307500000000003, + "copy.74": 0.0015381624999999983, + "copy.56": 0.0015323374999999973, + "copy.120": 0.0007351687500000007, + "copy.43": 0.0006679875000000006 + }, + "device_span_ms": 43.704272200000005, + "device_busy_ms": 41.53670503125, + "device_idle_ms": 2.167567168750004, + "largest_idle_gaps": [ + { + "gap_ms": 0.041981, + "after": "while.33", + "before": "input_scatter_fusion.1" + }, + { + "gap_ms": 0.041726, + "after": "input_concatenate_fusion.4", + "before": "custom-call.2" + }, + { + "gap_ms": 0.032478, + "after": "loop_multiply_fusion.3", + "before": "eigh.0" + }, + { + "gap_ms": 0.029471, + "after": "fusion.2", + "before": "fusion.2" + }, + { + "gap_ms": 0.027423, + "after": "while.33", + "before": "input_reduce_fusion" + }, + { + "gap_ms": 0.026655, + "after": "loop_add_fusion.7", + "before": "loop_select_fusion.6" + }, + { + "gap_ms": 0.02595, + "after": "copy.72", + "before": "copy.73" + }, + { + "gap_ms": 0.024255, + "after": "while.40", + "before": "input_transpose_fusion.2" + } + ], + "kernel_ms": 31.333187999999993, + "sum_ms": 33.50075516875, + "wall_ms": 43.70916029374712, + "host_outside_span_ms": 0.004888093747112521, + "reconciliation_pct": -23.355299109824127, + "unjoined_ms": 0.0, + "unjoined_pct": 0.0, + "other_ms": 0.18028849999999969, + "other_pct": 0.41247303491618703, + "note": "Stage rows attribute the command-buffers-OFF program (see the module docstring): kernel times are the same, the launch overhead the CUDA graphs remove is not. sum_ms = kernel rows + device_idle_ms; the residual against wall_ms is host_outside_span_ms (dispatch before the first kernel, teardown after the last).", + "per_stage_ms_per_lane": { + "border_relocator": 0.09642900000000004, + "chi_squared_evidence": 0.002975, + "curvature_matrix_F": 4.3388975, + "inversion_other": 1.8344719999999999, + "mapping_matrix": 0.002816, + "memset": 0.03918350000000001, + "mesh_construction": 0.34237549999999983, + "mixed_fusion": 1.8487105000000001, + "other": 0.18028849999999969, + "pdip_solve": 16.03756299999999, + "psf_convolution_mapping_matrix": 6.606725500000001, + "regularization_H": 0.002752 + }, + "per_lane_divisor": 1, + "host_callback": { + "pure_callback_span_ms": 0, + "qhull_ms": 0.0, + "callback_body_ms_note": "the OUTERMOST matching body event, not a sum: under the probe the body appears twice (the wrapper and the timed re-implementation it calls) and summing them would count the same work twice", + "events_by_name": { + "ThenExecuteCallback:GetEventForComputeStreamSyncPoint": { + "count": 160, + "ms": 0.3133482000000001 + } + }, + "note": "HOST milliseconds per traced BATCH (the whole invocation), aggregated by name because the events nest. Not a row of the device table: the device pays for them as the idle gaps largest_idle_gaps names." + }, + "host_callback_ms": 0 + }, + "hlo_census": { + "status": "excluded", + "reason": "The legacy census anchors PyAutoArray source line numbers that moved after the phase-1 run. No batched attribution is published from unsupported anchors; the device-event table and wall reconciliation remain valid." + }, + "stage_map_provenance": [ + { + "label": "log_det_curvature_reg", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 850, + 882 + ], + "requires": { + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 884, + 896 + ] + }, + "function": null + }, + { + "label": "log_det_regularization", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 850, + 882 + ], + "requires": { + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 897, + 943 + ] + }, + "function": null + }, + { + "label": "curvature_reg_add", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 359, + 372 + ], + "requires": null, + "function": null + }, + { + "label": "curvature_reg_reduce_gather", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 374, + 398 + ], + "requires": null, + "function": null + }, + { + "label": "edge_subset_gather", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 606, + 614 + ], + "requires": null, + "function": null + }, + { + "label": "regularization_term", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 786, + 849 + ], + "requires": null, + "function": null + }, + { + "label": "mapped_reconstruction", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 722, + 785 + ], + "requires": null, + "function": null + }, + { + "label": "reconstruction_scatter", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 583, + 605 + ], + "requires": null, + "function": null + }, + { + "label": "reconstruction_scatter", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 615, + 721 + ], + "requires": null, + "function": null + }, + { + "label": "certified_active_set_solve", + "path": "likelihood_breakdown/active_set_steps.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "certified_active_set_solve", + "path": "likelihood_breakdown/library_solver_injection.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "pdip_solve", + "path": "PyAutoArray/autoarray/util/jax_nnls.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "pdip_solve", + "path": "PyAutoArray/autoarray/inversion/inversion/inversion_util.py", + "lines": [ + 256, + 488 + ], + "requires": null, + "function": null + }, + { + "label": "mapped_reconstruction", + "path": "PyAutoArray/autoarray/inversion/inversion/inversion_util.py", + "lines": [ + 156, + 200 + ], + "requires": null, + "function": null + }, + { + "label": "curvature_matrix_F", + "path": "PyAutoArray/autoarray/inversion/inversion/inversion_util.py", + "lines": [ + 12, + 155 + ], + "requires": null, + "function": null + }, + { + "label": "reconstruction_scatter", + "path": "PyAutoArray/autoarray/inversion/inversion/inversion_util.py", + "lines": [ + 201, + 255 + ], + "requires": null, + "function": null + }, + { + "label": "data_vector_D", + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py", + "lines": [ + 54, + 73 + ], + "requires": null, + "function": null + }, + { + "label": "curvature_matrix_F", + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py", + "lines": [ + 74, + 110 + ], + "requires": null, + "function": null + }, + { + "label": "data_vector_D", + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py", + "lines": null, + "requires": null, + "function": "data_vector_via_blurred_mapping_matrix_from" + }, + { + "label": "curvature_matrix_F", + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "likelihood_breakdown/psf_cube_injection.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": [ + 1086, + 1300 + ], + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": [ + 632, + 642 + ], + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": [ + 670, + 691 + ], + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": null, + "requires": { + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": [ + 1086, + 1300 + ] + }, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": null, + "requires": { + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py", + "lines": [ + 119, + 150 + ] + }, + "function": null + }, + { + "label": "psf_convolution_image", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py", + "lines": [ + 119, + 150 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_qhull_callback", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 139, + 172 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_seed_argmin", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 173, + 207 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_locate_walk", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 208, + 372 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_dual_areas", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 373, + 396 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_dual_areas", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 437, + 494 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_dual_areas", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 605, + 615 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_interpolation_weights", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 616, + 695 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_interpolation_weights", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 896, + 1000 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_construction", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "border_relocator", + "path": "PyAutoArray/autoarray/inversion/mesh/border_relocator.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "mesh_construction", + "path": "PyAutoArray/autoarray/inversion/mesh/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "mapping_matrix", + "path": "PyAutoArray/autoarray/inversion/mappers/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "mapping_matrix", + "path": "PyAutoArray/autoarray/inversion/mappings/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "mapping_matrix", + "path": "PyAutoArray/autoarray/inversion/linear_obj/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "regularization_H", + "path": "PyAutoArray/autoarray/inversion/regularization/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "chi_squared_evidence", + "path": "PyAutoArray/autoarray/fit/fit_util.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "chi_squared_evidence", + "path": "PyAutoArray/autoarray/fit/fit_dataset.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "ray_trace_mesh_grid", + "path": "PyAutoLens/autolens/lens/to_inversion.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "ray_trace_mesh_grid", + "path": "PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "mass_profile_deflections", + "path": "PyAutoGalaxy/autogalaxy/profiles/mass/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "light_profile_image", + "path": "PyAutoGalaxy/autogalaxy/profiles/light/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "light_profile_image", + "path": "PyAutoGalaxy/autogalaxy/operate/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "ray_trace_data_grid", + "path": "PyAutoLens/autolens/lens/tracer.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "ray_trace_data_grid", + "path": "PyAutoLens/autolens/lens/tracer_util.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "grids_and_structures", + "path": "PyAutoArray/autoarray/structures/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "grids_and_structures", + "path": "PyAutoArray/autoarray/operators/over_sampling/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "grids_and_structures", + "path": "PyAutoArray/autoarray/geometry/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "inversion_other", + "path": "PyAutoArray/autoarray/inversion/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "fit_imaging_other", + "path": "PyAutoLens/autolens/imaging/fit_imaging.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "fit_imaging_other", + "path": "PyAutoGalaxy/autogalaxy/imaging/fit_imaging.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "fit_imaging_other", + "path": "PyAutoArray/autoarray/fit/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "analysis_other", + "path": "PyAutoLens/autolens/analysis/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "analysis_other", + "path": "PyAutoGalaxy/autogalaxy/analysis/", + "lines": null, + "requires": null, + "function": null + } + ], + "trace_timing": { + "traced_wall_ms": 43.70916029374712, + "untraced_wall_ms": 42.650429012496716, + "profiler_overhead_ms": 1.0587312812504024, + "profiler_overhead_pct": 2.482346146952451 + }, + "jit_phases": { + "b_s3_pdip_library_likelihood_jit": { + "lower_s": 1.281587307999871, + "compile_s": 3.514000808001583, + "first_call_s": 0.1016554689995246, + "steady_per_call_s": 0.03895759799997904 + }, + "d_s3_certified_fallback_library_likelihood_jit": { + "lower_s": 0.47250380200057407, + "compile_s": 3.657232142999419, + "first_call_s": 0.03978114699930302, + "steady_per_call_s": 0.030214900400096667 + } + }, + "peak_bytes": { + "after_setup": 85616640, + "after_routes": 1197479168, + "after_all": 19155306752, + "note": "jax.devices()[0].memory_stats()['peak_bytes_in_use']; None on a backend that does not report it (CPU). Process-wide high-water marks." + }, + "note": "Every stage row is a MEASURED sum of GPU kernel durations joined to library source through the optimized HLO of ONE program \u2014 not arithmetic across compilations. The rows attribute the command-buffers-OFF program: kernel time is the same as production, the launch overhead the CUDA graphs remove is not, and command_buffers.* carries both walls and their delta. sum_ms = kernel rows + measured device_idle_ms; the residual against the wall is host_outside_span_ms and is reported, not absorbed. mixed_fusion.prorated_estimate_ms is an ESTIMATE and is never part of the table. No row may be quoted if reconciliation_pct is outside 5 % or unjoined_ms is non-zero.", + "vmap": { + "batch": 16, + "lanes_mode": "captured", + "arms": [ + "vmap", + "scalar" + ], + "draw_seed": 0, + "fallback": true, + "composition": "jax.jit(jax.vmap(fn))", + "composition_provenance": "Current Fitness._vmap after PyAutoFit#1638. Array 343376 used the retired jax.vmap(jax.jit(fn)) composition and is historical evidence only.", + "headline_arm": "scalar", + "lane_rtol": 1e-09, + "lanes": [ + { + "lane": 0, + "draw_name": "call00015_lane00", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.0017002711605432041, + "centre_1": -0.009377257327484623, + "ell_comps_0": -0.002548851608736212, + "ell_comps_1": -0.004262475027349674, + "einstein_radius": -0.0230617600435421 + }, + "log_likelihood_vmap": 18463.07897110663, + "log_likelihood_scalar": 18463.078970707007, + "log_likelihood_library_pdip": 18463.07897110663, + "log_likelihood_library_pdip_scalar": 18463.078970707007, + "rel_diff_vmap_vs_library_pdip": 0.0, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 3.996246960014105e-07, + "rel_diff": 2.1644531588444352e-11, + "rel_diff_scalar_vs_library_pdip": 2.1644531587975868e-11, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 3.996246960014105e-07, + "rel_diff_library_pdip_vmap_vs_scalar": 2.1644531588444352e-11, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 1, + "draw_name": "call00015_lane01", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.00044835385344320865, + "centre_1": -0.003464237160596487, + "ell_comps_0": -0.0010036884316776545, + "ell_comps_1": 0.0020035511501456356, + "einstein_radius": -0.05761540720338343 + }, + "log_likelihood_vmap": 15734.21749647698, + "log_likelihood_scalar": 15734.21749633948, + "log_likelihood_library_pdip": 15734.21749647698, + "log_likelihood_library_pdip_scalar": 15734.21749633948, + "rel_diff_vmap_vs_library_pdip": 0.0, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 1.3750104699283838e-07, + "rel_diff": 8.738982222968992e-12, + "rel_diff_scalar_vs_library_pdip": 8.738982222892622e-12, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 1.3750104699283838e-07, + "rel_diff_library_pdip_vmap_vs_scalar": 8.738982222968992e-12, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 2, + "draw_name": "call00015_lane02", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.0017572218110215735, + "centre_1": 0.0022774942133795186, + "ell_comps_0": 0.0023932647815035485, + "ell_comps_1": -0.011727950927316913, + "einstein_radius": -0.027234805142873908 + }, + "log_likelihood_vmap": 18706.165986625834, + "log_likelihood_scalar": 18706.16598652238, + "log_likelihood_library_pdip": 18706.165986625834, + "log_likelihood_library_pdip_scalar": 18706.16598652238, + "rel_diff_vmap_vs_library_pdip": 0.0, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 1.0345320333726704e-07, + "rel_diff": 5.530433302676995e-12, + "rel_diff_scalar_vs_library_pdip": 5.530433302646409e-12, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 1.0345320333726704e-07, + "rel_diff_library_pdip_vmap_vs_scalar": 5.530433302676995e-12, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 3, + "draw_name": "call00015_lane03", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.002862791114730316, + "centre_1": 0.0038524808804676603, + "ell_comps_0": 0.006111415425061918, + "ell_comps_1": -0.022191169695991525, + "einstein_radius": -0.03531000166767062 + }, + "log_likelihood_vmap": -22166.22174361447, + "log_likelihood_scalar": -22166.221755103128, + "log_likelihood_library_pdip": -22166.221752550147, + "log_likelihood_library_pdip_scalar": -22166.22175331667, + "rel_diff_vmap_vs_library_pdip": 4.031213079661079e-10, + "rel_diff_scalar_vs_library_pdip_scalar": 8.059373477961076e-11, + "abs_diff_nats": 1.1488657037261873e-05, + "rel_diff": 5.182956826919294e-10, + "rel_diff_scalar_vs_library_pdip": 1.1517437478551592e-10, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 7.665221346542239e-07, + "rel_diff_library_pdip_vmap_vs_scalar": 3.4580640001922354e-11, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 4, + "pdip_iter": null + }, + { + "lane": 4, + "draw_name": "call00015_lane04", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.0017545152650242774, + "centre_1": 0.005096768299803747, + "ell_comps_0": 0.00015519416981613077, + "ell_comps_1": 0.007279341501820333, + "einstein_radius": -0.03249658545615719 + }, + "log_likelihood_vmap": -194384.10737004073, + "log_likelihood_scalar": NaN, + "log_likelihood_library_pdip": NaN, + "log_likelihood_library_pdip_scalar": NaN, + "rel_diff_vmap_vs_library_pdip": NaN, + "rel_diff_scalar_vs_library_pdip_scalar": NaN, + "abs_diff_nats": NaN, + "rel_diff": NaN, + "rel_diff_scalar_vs_library_pdip": NaN, + "abs_diff_library_pdip_vmap_vs_scalar_nats": NaN, + "rel_diff_library_pdip_vmap_vs_scalar": NaN, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": true, + "passes": 2, + "pdip_iter": null + }, + { + "lane": 5, + "draw_name": "call00015_lane05", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.0009851407640018856, + "centre_1": 0.002274591191563648, + "ell_comps_0": 0.006006903437417319, + "ell_comps_1": 0.008497457839948512, + "einstein_radius": -0.07242218866013372 + }, + "log_likelihood_vmap": 14761.660929765763, + "log_likelihood_scalar": 14761.660929765752, + "log_likelihood_library_pdip": 14761.660929764941, + "log_likelihood_library_pdip_scalar": 14761.66092976493, + "rel_diff_vmap_vs_library_pdip": 5.569720198252916e-14, + "rel_diff_scalar_vs_library_pdip_scalar": 5.56972019825292e-14, + "abs_diff_nats": 1.0913936421275139e-11, + "rel_diff": 7.393433891485766e-16, + "rel_diff_scalar_vs_library_pdip": 5.495785859338054e-14, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 1.0913936421275139e-11, + "rel_diff_library_pdip_vmap_vs_scalar": 7.393433891486177e-16, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 14, + "pdip_iter": null + }, + { + "lane": 6, + "draw_name": "call00015_lane06", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.002713857824416392, + "centre_1": 0.00891817739575143, + "ell_comps_0": 0.001298959041684998, + "ell_comps_1": -0.0098959428603974, + "einstein_radius": 0.04379561090121875 + }, + "log_likelihood_vmap": 21597.126871218283, + "log_likelihood_scalar": 21597.12687123079, + "log_likelihood_library_pdip": 21597.126871219538, + "log_likelihood_library_pdip_scalar": 21597.126871230867, + "rel_diff_vmap_vs_library_pdip": 5.811433603787356e-14, + "rel_diff_scalar_vs_library_pdip_scalar": 3.537394367520883e-15, + "abs_diff_nats": 1.2507371138781309e-08, + "rel_diff": 5.791219921684209e-13, + "rel_diff_scalar_vs_library_pdip": 5.21007656130849e-13, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 1.1328666005283594e-08, + "rel_diff_library_pdip_vmap_vs_scalar": 5.245450504980966e-13, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 6, + "pdip_iter": null + }, + { + "lane": 7, + "draw_name": "call00015_lane07", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.01063269420288399, + "centre_1": -0.0015469073410711704, + "ell_comps_0": -0.012689283848227026, + "ell_comps_1": 0.0004952469855790744, + "einstein_radius": 0.02732727396499479 + }, + "log_likelihood_vmap": 7413.159095196606, + "log_likelihood_scalar": 7413.159096848976, + "log_likelihood_library_pdip": 7413.159095095707, + "log_likelihood_library_pdip_scalar": 7413.159096808238, + "rel_diff_vmap_vs_library_pdip": 1.3610842681285529e-11, + "rel_diff_scalar_vs_library_pdip_scalar": 5.495374664136499e-12, + "abs_diff_nats": 1.652369974181056e-06, + "rel_diff": 2.2289687198045019e-10, + "rel_diff_scalar_vs_library_pdip": 2.3650771471445255e-10, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 1.7125312297139317e-06, + "rel_diff_library_pdip_vmap_vs_scalar": 2.3101233999567986e-10, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 6, + "pdip_iter": null + }, + { + "lane": 8, + "draw_name": "call00015_lane08", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.003586333218755102, + "centre_1": 0.0002442650473125539, + "ell_comps_0": -0.0025095685188555317, + "ell_comps_1": 0.008402687166147546, + "einstein_radius": 0.003809182535237543 + }, + "log_likelihood_vmap": 19060.202679471302, + "log_likelihood_scalar": 19060.20267912919, + "log_likelihood_library_pdip": 19060.202679471302, + "log_likelihood_library_pdip_scalar": 19060.20267912919, + "rel_diff_vmap_vs_library_pdip": 0.0, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 3.421118890400976e-07, + "rel_diff": 1.7949016324716636e-11, + "rel_diff_scalar_vs_library_pdip": 1.7949016324394468e-11, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 3.421118890400976e-07, + "rel_diff_library_pdip_vmap_vs_scalar": 1.7949016324716636e-11, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 9, + "draw_name": "call00015_lane09", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.004569070502203608, + "centre_1": -0.0008437281377326854, + "ell_comps_0": 0.016330335737132294, + "ell_comps_1": 0.007271610957481866, + "einstein_radius": -0.0644363448871137 + }, + "log_likelihood_vmap": 12782.703321755558, + "log_likelihood_scalar": 12782.70332143049, + "log_likelihood_library_pdip": 12782.703321755558, + "log_likelihood_library_pdip_scalar": 12782.70332143049, + "rel_diff_vmap_vs_library_pdip": 0.0, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 3.250679583288729e-07, + "rel_diff": 2.543029828314087e-11, + "rel_diff_scalar_vs_library_pdip": 2.543029828249417e-11, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 3.250679583288729e-07, + "rel_diff_library_pdip_vmap_vs_scalar": 2.543029828314087e-11, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 10, + "draw_name": "call00015_lane10", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.00041413552102611065, + "centre_1": -0.004015077828810355, + "ell_comps_0": 0.005329766760357603, + "ell_comps_1": 0.01667480963359283, + "einstein_radius": 0.011021193939315443 + }, + "log_likelihood_vmap": 25442.23680048243, + "log_likelihood_scalar": 25442.23680048246, + "log_likelihood_library_pdip": 25442.236800481296, + "log_likelihood_library_pdip_scalar": 25442.23680048131, + "rel_diff_vmap_vs_library_pdip": 4.4612798658926975e-14, + "rel_diff_scalar_vs_library_pdip_scalar": 4.518475761609268e-14, + "abs_diff_nats": 2.9103830456733704e-11, + "rel_diff": 1.1439179143314085e-15, + "rel_diff_scalar_vs_library_pdip": 4.575671657325843e-14, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 1.4551915228366852e-11, + "rel_diff_library_pdip_vmap_vs_scalar": 5.719589571657301e-16, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 6, + "pdip_iter": null + }, + { + "lane": 11, + "draw_name": "call00015_lane11", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.00234856906735493, + "centre_1": -0.0005637310462631455, + "ell_comps_0": 0.002190699592912508, + "ell_comps_1": -0.01675931647125419, + "einstein_radius": -0.1186639473801736 + }, + "log_likelihood_vmap": -3234.481431636159, + "log_likelihood_scalar": -3234.481430921878, + "log_likelihood_library_pdip": -3234.481431636159, + "log_likelihood_library_pdip_scalar": -3234.481430921878, + "rel_diff_vmap_vs_library_pdip": 0.0, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 7.142807589843869e-07, + "rel_diff": 2.208331611230817e-10, + "rel_diff_scalar_vs_library_pdip": 2.208331610743144e-10, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 7.142807589843869e-07, + "rel_diff_library_pdip_vmap_vs_scalar": 2.208331611230817e-10, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 12, + "draw_name": "call00015_lane12", + "draw_kind": "captured", + "offsets": { + "centre_0": -9.326736988388313e-05, + "centre_1": -0.0013488200741109593, + "ell_comps_0": 0.00997667014421897, + "ell_comps_1": -0.014348588092779897, + "einstein_radius": -0.02126731799195114 + }, + "log_likelihood_vmap": 18883.933556142838, + "log_likelihood_scalar": 18883.93355609074, + "log_likelihood_library_pdip": 18883.933556142838, + "log_likelihood_library_pdip_scalar": 18883.93355609074, + "rel_diff_vmap_vs_library_pdip": 0.0, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 5.209949449636042e-08, + "rel_diff": 2.7589323136310487e-12, + "rel_diff_scalar_vs_library_pdip": 2.7589323136234372e-12, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 5.209949449636042e-08, + "rel_diff_library_pdip_vmap_vs_scalar": 2.7589323136310487e-12, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 13, + "draw_name": "call00015_lane13", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.007013568613743564, + "centre_1": 0.004528745612839986, + "ell_comps_0": -0.018496405934026655, + "ell_comps_1": 0.0014830576999261711, + "einstein_radius": -0.04673040108359361 + }, + "log_likelihood_vmap": 23869.488067817772, + "log_likelihood_scalar": 23869.488067817765, + "log_likelihood_library_pdip": 23869.488067815804, + "log_likelihood_library_pdip_scalar": 23869.4880678158, + "rel_diff_vmap_vs_library_pdip": 8.245449290931163e-14, + "rel_diff_scalar_vs_library_pdip_scalar": 8.230208164700238e-14, + "abs_diff_nats": 7.275957614183426e-12, + "rel_diff": 3.048225246185022e-16, + "rel_diff_scalar_vs_library_pdip": 8.21496703846931e-14, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 3.637978807091713e-12, + "rel_diff_library_pdip_vmap_vs_scalar": 1.5241126230926365e-16, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 9, + "pdip_iter": null + }, + { + "lane": 14, + "draw_name": "call00015_lane14", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.005108692197125562, + "centre_1": -0.010240010499870703, + "ell_comps_0": -0.00684600823433492, + "ell_comps_1": -0.002573928604858717, + "einstein_radius": -0.0214638151942923 + }, + "log_likelihood_vmap": -177848.1574694459, + "log_likelihood_scalar": NaN, + "log_likelihood_library_pdip": -177848.13779112743, + "log_likelihood_library_pdip_scalar": NaN, + "rel_diff_vmap_vs_library_pdip": 1.1064675014312083e-07, + "rel_diff_scalar_vs_library_pdip_scalar": NaN, + "abs_diff_nats": NaN, + "rel_diff": NaN, + "rel_diff_scalar_vs_library_pdip": NaN, + "abs_diff_library_pdip_vmap_vs_scalar_nats": NaN, + "rel_diff_library_pdip_vmap_vs_scalar": NaN, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": true, + "passes": 2, + "pdip_iter": null + }, + { + "lane": 15, + "draw_name": "call00015_lane15", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.0015375882948530809, + "centre_1": 0.00010861850037634777, + "ell_comps_0": 0.010624594413718456, + "ell_comps_1": -0.00030576693661378264, + "einstein_radius": 0.018140577124415858 + }, + "log_likelihood_vmap": 25794.9854395939, + "log_likelihood_scalar": 25794.985439519525, + "log_likelihood_library_pdip": 25794.985439583575, + "log_likelihood_library_pdip_scalar": 25794.985439519085, + "rel_diff_vmap_vs_library_pdip": 4.002554635554374e-13, + "rel_diff_scalar_vs_library_pdip_scalar": 1.706515542294891e-14, + "abs_diff_nats": 7.437483873218298e-08, + "rel_diff": 2.8833060947666245e-12, + "rel_diff_scalar_vs_library_pdip": 2.4830506312040274e-12, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6.44904503133148e-08, + "rel_diff_library_pdip_vmap_vs_scalar": 2.5001157866331842e-12, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 8, + "pdip_iter": null + } + ], + "lane_pins": [ + { + "pin": "lane 0: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 18463.07897110663, + "reference_value": 18463.07897110663, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 0: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 18463.078970707007, + "reference_value": 18463.078970707007, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 0: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 18463.07897110663, + "reference_value": 18463.078970707007, + "rel_diff": 2.1644531588444352e-11, + "abs_diff_nats": 3.996246960014105e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 0: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 18463.07897110663, + "reference_value": 18463.078970707007, + "rel_diff": 2.1644531588444352e-11, + "abs_diff_nats": 3.996246960014105e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 1: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 15734.21749647698, + "reference_value": 15734.21749647698, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 1: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 15734.21749633948, + "reference_value": 15734.21749633948, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 1: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 15734.21749647698, + "reference_value": 15734.21749633948, + "rel_diff": 8.738982222968992e-12, + "abs_diff_nats": 1.3750104699283838e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 1: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 15734.21749647698, + "reference_value": 15734.21749633948, + "rel_diff": 8.738982222968992e-12, + "abs_diff_nats": 1.3750104699283838e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 2: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 18706.165986625834, + "reference_value": 18706.165986625834, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 2: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 18706.16598652238, + "reference_value": 18706.16598652238, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 2: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 18706.165986625834, + "reference_value": 18706.16598652238, + "rel_diff": 5.530433302676995e-12, + "abs_diff_nats": 1.0345320333726704e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 2: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 18706.165986625834, + "reference_value": 18706.16598652238, + "rel_diff": 5.530433302676995e-12, + "abs_diff_nats": 1.0345320333726704e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 3: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -22166.22174361447, + "reference_value": -22166.221752550147, + "rel_diff": 4.031213079661079e-10, + "abs_diff_nats": 8.935676305554807e-06, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 3: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -22166.221755103128, + "reference_value": -22166.22175331667, + "rel_diff": 8.059373477961076e-11, + "abs_diff_nats": 1.7864585970528424e-06, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 3: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -22166.22174361447, + "reference_value": -22166.221755103128, + "rel_diff": 5.182956826919294e-10, + "abs_diff_nats": 1.1488657037261873e-05, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 3: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -22166.221752550147, + "reference_value": -22166.22175331667, + "rel_diff": 3.4580640001922354e-11, + "abs_diff_nats": 7.665221346542239e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 4: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -194384.10737004073, + "reference_value": NaN, + "rel_diff": NaN, + "abs_diff_nats": NaN, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 4: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": NaN, + "reference_value": NaN, + "rel_diff": NaN, + "abs_diff_nats": NaN, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 4: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -194384.10737004073, + "reference_value": NaN, + "rel_diff": NaN, + "abs_diff_nats": NaN, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 4: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": NaN, + "reference_value": NaN, + "rel_diff": NaN, + "abs_diff_nats": NaN, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 5: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 14761.660929765763, + "reference_value": 14761.660929764941, + "rel_diff": 5.569720198252916e-14, + "abs_diff_nats": 8.221832104027271e-10, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 5: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 14761.660929765752, + "reference_value": 14761.66092976493, + "rel_diff": 5.56972019825292e-14, + "abs_diff_nats": 8.221832104027271e-10, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 5: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 14761.660929765763, + "reference_value": 14761.660929765752, + "rel_diff": 7.393433891485766e-16, + "abs_diff_nats": 1.0913936421275139e-11, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 5: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 14761.660929764941, + "reference_value": 14761.66092976493, + "rel_diff": 7.393433891486177e-16, + "abs_diff_nats": 1.0913936421275139e-11, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 6: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 21597.126871218283, + "reference_value": 21597.126871219538, + "rel_diff": 5.811433603787356e-14, + "abs_diff_nats": 1.255102688446641e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 6: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 21597.12687123079, + "reference_value": 21597.126871230867, + "rel_diff": 3.537394367520883e-15, + "abs_diff_nats": 7.639755494892597e-11, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 6: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 21597.126871218283, + "reference_value": 21597.12687123079, + "rel_diff": 5.791219921684209e-13, + "abs_diff_nats": 1.2507371138781309e-08, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 6: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 21597.126871219538, + "reference_value": 21597.126871230867, + "rel_diff": 5.245450504980966e-13, + "abs_diff_nats": 1.1328666005283594e-08, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 7: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 7413.159095196606, + "reference_value": 7413.159095095707, + "rel_diff": 1.3610842681285529e-11, + "abs_diff_nats": 1.0089934221468866e-07, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 7: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 7413.159096848976, + "reference_value": 7413.159096808238, + "rel_diff": 5.495374664136499e-12, + "abs_diff_nats": 4.0738086681813e-08, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 7: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 7413.159095196606, + "reference_value": 7413.159096848976, + "rel_diff": 2.2289687198045019e-10, + "abs_diff_nats": 1.652369974181056e-06, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 7: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 7413.159095095707, + "reference_value": 7413.159096808238, + "rel_diff": 2.3101233999567986e-10, + "abs_diff_nats": 1.7125312297139317e-06, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 8: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 19060.202679471302, + "reference_value": 19060.202679471302, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 8: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 19060.20267912919, + "reference_value": 19060.20267912919, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 8: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 19060.202679471302, + "reference_value": 19060.20267912919, + "rel_diff": 1.7949016324716636e-11, + "abs_diff_nats": 3.421118890400976e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 8: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 19060.202679471302, + "reference_value": 19060.20267912919, + "rel_diff": 1.7949016324716636e-11, + "abs_diff_nats": 3.421118890400976e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 9: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 12782.703321755558, + "reference_value": 12782.703321755558, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 9: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 12782.70332143049, + "reference_value": 12782.70332143049, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 9: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 12782.703321755558, + "reference_value": 12782.70332143049, + "rel_diff": 2.543029828314087e-11, + "abs_diff_nats": 3.250679583288729e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 9: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 12782.703321755558, + "reference_value": 12782.70332143049, + "rel_diff": 2.543029828314087e-11, + "abs_diff_nats": 3.250679583288729e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 10: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 25442.23680048243, + "reference_value": 25442.236800481296, + "rel_diff": 4.4612798658926975e-14, + "abs_diff_nats": 1.1350493878126144e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 10: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 25442.23680048246, + "reference_value": 25442.23680048131, + "rel_diff": 4.518475761609268e-14, + "abs_diff_nats": 1.1496013030409813e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 10: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 25442.23680048243, + "reference_value": 25442.23680048246, + "rel_diff": 1.1439179143314085e-15, + "abs_diff_nats": 2.9103830456733704e-11, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 10: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 25442.236800481296, + "reference_value": 25442.23680048131, + "rel_diff": 5.719589571657301e-16, + "abs_diff_nats": 1.4551915228366852e-11, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 11: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -3234.481431636159, + "reference_value": -3234.481431636159, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 11: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -3234.481430921878, + "reference_value": -3234.481430921878, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 11: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -3234.481431636159, + "reference_value": -3234.481430921878, + "rel_diff": 2.208331611230817e-10, + "abs_diff_nats": 7.142807589843869e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 11: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -3234.481431636159, + "reference_value": -3234.481430921878, + "rel_diff": 2.208331611230817e-10, + "abs_diff_nats": 7.142807589843869e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 12: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 18883.933556142838, + "reference_value": 18883.933556142838, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 12: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 18883.93355609074, + "reference_value": 18883.93355609074, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 12: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 18883.933556142838, + "reference_value": 18883.93355609074, + "rel_diff": 2.7589323136310487e-12, + "abs_diff_nats": 5.209949449636042e-08, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 12: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 18883.933556142838, + "reference_value": 18883.93355609074, + "rel_diff": 2.7589323136310487e-12, + "abs_diff_nats": 5.209949449636042e-08, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 13: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 23869.488067817772, + "reference_value": 23869.488067815804, + "rel_diff": 8.245449290931163e-14, + "abs_diff_nats": 1.9681465346366167e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 13: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 23869.488067817765, + "reference_value": 23869.4880678158, + "rel_diff": 8.230208164700238e-14, + "abs_diff_nats": 1.964508555829525e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 13: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 23869.488067817772, + "reference_value": 23869.488067817765, + "rel_diff": 3.048225246185022e-16, + "abs_diff_nats": 7.275957614183426e-12, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 13: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 23869.488067815804, + "reference_value": 23869.4880678158, + "rel_diff": 1.5241126230926365e-16, + "abs_diff_nats": 3.637978807091713e-12, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 14: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -177848.1574694459, + "reference_value": -177848.13779112743, + "rel_diff": 1.1064675014312083e-07, + "abs_diff_nats": 0.019678318465594202, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 14: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": NaN, + "reference_value": NaN, + "rel_diff": NaN, + "abs_diff_nats": NaN, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 14: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -177848.1574694459, + "reference_value": NaN, + "rel_diff": NaN, + "abs_diff_nats": NaN, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 14: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -177848.13779112743, + "reference_value": NaN, + "rel_diff": NaN, + "abs_diff_nats": NaN, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 15: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 25794.9854395939, + "reference_value": 25794.985439583575, + "rel_diff": 4.002554635554374e-13, + "abs_diff_nats": 1.0324583854526281e-08, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 15: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 25794.985439519525, + "reference_value": 25794.985439519085, + "rel_diff": 1.706515542294891e-14, + "abs_diff_nats": 4.4019543565809727e-10, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 15: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 25794.9854395939, + "reference_value": 25794.985439519525, + "rel_diff": 2.8833060947666245e-12, + "abs_diff_nats": 7.437483873218298e-08, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 15: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 25794.985439583575, + "reference_value": 25794.985439519085, + "rel_diff": 2.5001157866331842e-12, + "abs_diff_nats": 6.44904503133148e-08, + "within_rtol": true, + "status": "RECORDED" + } + ], + "lanes_failed": 2, + "arm_rows": { + "vmap": { + "arm": "vmap", + "program": "jax.jit(jax.vmap(fn))", + "stands_for": "Nautilus(use_jax_vmap=True) \u2014 Fitness._vmap", + "hlo_source": "jax.jit(jax.vmap(fn)).lower(batched_tree) \u2014 the exact current Fitness._vmap composition (PyAutoFit#1638)", + "batch_wall_ms": 710.3779523000412, + "wall_production_nesting_ms": 710.3779523000412, + "wall_aot_command_buffers_on_ms": 712.3177015000692, + "wall_aot_command_buffers_off_ms": 712.1087406998413, + "command_buffer_delta_ms": -0.20896080022794195, + "production_nesting_vs_aot_on_delta_ms": -1.939749200028018, + "production_nesting_vs_aot_on_delta_pct": -0.27231517565028945, + "wall_per_lane_ms": 44.398622018752576, + "wall_per_lane_command_buffers_off_ms": 44.50679629374008, + "traced_batch_wall_ms": 722.839157099952, + "untraced_batch_wall_ms": 712.3232884998288, + "traced_wall_per_lane_ms": 45.177447318747, + "callback_count_per_call": 0.0, + "callback_count_per_lane": 0.0, + "callback_expectation": "0 \u2014 the rectangular mesh has no qhull host callback (asserted)", + "host_qhull_ms": 0.0, + "host_tables_ms": 0.0, + "host_qhull_ms_per_lane": 0.0, + "host_tables_ms_per_lane": 0.0, + "host_callback_probe": { + "calls": 0, + "qhull_ms_total": 0.0, + "tables_ms_total": 0.0, + "total_ms_total": 0.0, + "qhull_ms_mean": 0.0, + "tables_ms_mean": 0.0, + "total_ms_mean": 0.0, + "non_finite_calls": 0, + "n_points": [] + }, + "host_callback_records_first": [], + "device_idle_ms": 28.007573999999977, + "device_idle_ms_per_lane": 1.7504733749999986, + "trace": { + "parser": "ProfileData.from_file(xplane) + as_text() + stack_frame_index(proto field 17)", + "stage_audit": { + "mixed_fusion": [ + { + "instruction": "loop_divide_gather_fusion", + "ms": 16.9626333, + "opcode": "fusion", + "shape": "(f64[15361,16,1,1,1521]{4,3,2,1,0}, f64[15361,16,1,1,1521]{4,3,2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_add_multiply_transpose_fusion", + "ms": 5.1413752, + "opcode": "fusion", + "shape": "(f64[16,1369,1369]{2,1,0}, f64[16,1369,1369]{2,1,0}, f64[16,1369,1369]{2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:237 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:274 (_certified_positive_only_from)" + ] + }, + { + "instruction": "loop_broadcast_fusion", + "ms": 4.0831873000000005, + "opcode": "fusion", + "shape": "f64[16,1521,180,180]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:303 (AbstractInversion.operated_mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:68 (InversionImagingMapping.data_vector)" + ] + }, + { + "instruction": "input_reduce_fusion.15", + "ms": 2.0864852000000003, + "opcode": "fusion", + "shape": "f64[92,16,1521]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123 (data_vector_via_blurred_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:67 (InversionImagingMapping.data_vector)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:699 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_reduce_fusion.18", + "ms": 1.7732183, + "opcode": "fusion", + "shape": "f64[15361,16]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163 (mapped_reconstructed_data_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:120 (InversionImagingMapping._mapped_reconstructed_data_dict_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:196 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "loop_broadcast_fusion.1", + "ms": 1.7268508999999999, + "opcode": "fusion", + "shape": "f64[15361,16,1521]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:353", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:353 (mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:283 (Mapper.mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:91 (AbstractInversionImaging._mapping_matrix_for_convolution_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:137 (AbstractInversionImaging.operated_mapping_matrix_list)" + ] + } + ], + "other": [ + { + "instruction": "copy.69", + "ms": 0.07926109999999997, + "opcode": "copy", + "shape": "u32[16,2,15361]{2,1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.68", + "ms": 0.07882310000000001, + "opcode": "copy", + "shape": "u32[16,2,15361]{2,1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.87", + "ms": 0.0391316, + "opcode": "copy", + "shape": "u32[16,15361]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.77", + "ms": 0.03885950000000004, + "opcode": "copy", + "shape": "u32[16,15361]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.78", + "ms": 0.03870310000000004, + "opcode": "copy", + "shape": "u32[16,15361]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.86", + "ms": 0.038408600000000064, + "opcode": "copy", + "shape": "u32[16,15361]{1,0}", + "source": "", + "stack": [] + } + ], + "mesh_construction": [ + { + "instruction": "fusion.6", + "ms": 0.47413930000000004, + "opcode": "fusion", + "shape": "(f64[16,15361,2]{2,1,0}, s64[16,15361,2]{2,1,0}, s32[16,15361,2]{2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:227", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:227 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_select_fusion", + "ms": 0.1734701, + "opcode": "fusion", + "shape": "(u32[16,2,15361]{2,1,0}, u32[16,2,15361]{2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69 (forward_interp)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:573 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/abstract.py:36 (AbstractInterpolator.mappings)" + ] + }, + { + "instruction": "loop_select_fusion.1", + "ms": 0.08413530000000001, + "opcode": "fusion", + "shape": "(u32[16,15361]{1,0}, u32[16,15361]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_select_fusion.4", + "ms": 0.08088339999999994, + "opcode": "fusion", + "shape": "(u32[16,15361]{1,0}, u32[16,15361]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_subtract_transpose_fusion", + "ms": 0.043793700000000005, + "opcode": "fusion", + "shape": "(f64[16,15361,2]{2,1,0}, f64[491552,1,1,1]{3,2,1,0}, f64[491552,1,1,1]{3,2,1,0}, f64[16,15361,2]{2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69 (forward_interp)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:573 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/abstract.py:36 (AbstractInterpolator.mappings)" + ] + }, + { + "instruction": "loop_add_fusion", + "ms": 0.02133079999999997, + "opcode": "fusion", + "shape": "s64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69 (forward_interp)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:573 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/abstract.py:36 (AbstractInterpolator.mappings)" + ] + } + ], + "border_relocator": [ + { + "instruction": "custom-call.2", + "ms": 0.042164900000000005, + "opcode": "custom-call", + "shape": "(f64[16,2,2]{2,1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "eigh.0", + "ms": 0.014559500000000003, + "opcode": "custom-call", + "shape": "(f64[16,2,2]{1,2,0}, f64[16,2]{1,0}, s32[16]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_add_rsqrt_fusion", + "ms": 0.0130203, + "opcode": "fusion", + "shape": "(f64[16,15361]{1,0}, f64[16,15361]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:311", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:311 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:423 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_abs_fusion", + "ms": 0.0033629999999999997, + "opcode": "fusion", + "shape": "(f64[16,392,1]{2,1,0}, f64[16,392,1]{2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:269", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:269 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_reduce_fusion.20", + "ms": 0.0031231999999999996, + "opcode": "fusion", + "shape": "f64[16]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:269", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:269 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_reduce_fusion.19", + "ms": 0.003103700000000001, + "opcode": "fusion", + "shape": "f64[16]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:270", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:270 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + } + ], + "pdip_solve": [ + { + "instruction": "cholesky.60", + "ms": 107.53748739998578, + "opcode": "custom-call", + "shape": "(f64[16,1369,1369]{1,2,0}, s32[16]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:106", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:106 (factorize_kkt)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:212 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "cholesky.40", + "ms": 84.35081819999033, + "opcode": "custom-call", + "shape": "(f64[16,1369,1369]{1,2,0}, s32[16]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "triangular-solve", + "ms": 33.000130900000194, + "opcode": "custom-call", + "shape": "(f64[16,1369,1]{1,2,0}, s8[256]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:213 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve.2", + "ms": 30.10419869999944, + "opcode": "custom-call", + "shape": "(f64[16,1369,1]{1,2,0}, s8[256]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:217 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve.3", + "ms": 29.53390920000027, + "opcode": "custom-call", + "shape": "(f64[16,1369,1]{1,2,0}, s8[256]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:217 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve.1", + "ms": 29.154225900000164, + "opcode": "custom-call", + "shape": "(f64[16,1369,1]{1,2,0}, s8[256]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:213 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + } + ], + "psf_convolution_mapping_matrix": [ + { + "instruction": "input_scatter_fusion", + "ms": 32.666079999999994, + "opcode": "fusion", + "shape": "f64[16,1521,180,180]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:303 (AbstractInversion.operated_mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:68 (InversionImagingMapping.data_vector)" + ] + }, + { + "instruction": "fft.24.0", + "ms": 28.5886365, + "opcode": "fft", + "shape": "f64[16,1521,180,180]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:303 (AbstractInversion.operated_mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:68 (InversionImagingMapping.data_vector)" + ] + }, + { + "instruction": "fft.20.0", + "ms": 21.8496246, + "opcode": "fft", + "shape": "c128[16,1521,180,91]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:303 (AbstractInversion.operated_mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:68 (InversionImagingMapping.data_vector)" + ] + }, + { + "instruction": "fft.22.0", + "ms": 15.7263929, + "opcode": "fft", + "shape": "c128[16,1521,91,180]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:303 (AbstractInversion.operated_mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:68 (InversionImagingMapping.data_vector)" + ] + }, + { + "instruction": "input_transpose_fusion.4", + "ms": 8.5532752, + "opcode": "fusion", + "shape": "c128[16,1521,91,180]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:303 (AbstractInversion.operated_mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:68 (InversionImagingMapping.data_vector)" + ] + }, + { + "instruction": "wrapped_transpose.2", + "ms": 8.0248365, + "opcode": "fusion", + "shape": "c128[16,1521,180,91]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:303 (AbstractInversion.operated_mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:68 (InversionImagingMapping.data_vector)" + ] + } + ], + "regularization_H": [ + { + "instruction": "wrapped_broadcast", + "ms": 0.4932269, + "opcode": "fusion", + "shape": "f64[16,1521,1521]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:124", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:124 (weighted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:366 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_scatter_fusion.7", + "ms": 0.0026432, + "opcode": "fusion", + "shape": "f64[1521,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:123 (weighted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:366 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "mapping_matrix": [ + { + "instruction": "input_scatter_fusion.5", + "ms": 0.06358209999999999, + "opcode": "fusion", + "shape": "f64[16,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:71", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:71 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:362 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + }, + { + "instruction": "input_reduce_fusion.33", + "ms": 0.0037278, + "opcode": "fusion", + "shape": "f64[16]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:362 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + } + ], + "curvature_matrix_F": [ + { + "instruction": "cublas-lt-matmul.2", + "ms": 98.97958690000002, + "opcode": "custom-call", + "shape": "(f64[16,1521,1521]{2,1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "inversion_other": [ + { + "instruction": "cholesky.120", + "ms": 8.312794699999996, + "opcode": "custom-call", + "shape": "(f64[16,1521,1521]{1,2,0}, s32[16]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1078 (AbstractInversion.log_det_curvature_reg_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:347 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "cholesky.130", + "ms": 8.189485999999981, + "opcode": "custom-call", + "shape": "(f64[16,1521,1521]{1,2,0}, s32[16]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1157 (AbstractInversion.log_det_regularization_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:348 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "loop_reduce_window_fusion.3", + "ms": 0.007970799999999998, + "opcode": "fusion", + "shape": "s64[6,16]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "loop_reduce_window_fusion.2", + "ms": 0.0037280000000000004, + "opcode": "fusion", + "shape": "s64[86,16]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "input_scatter_fusion.9", + "ms": 0.0028832000000000007, + "opcode": "fusion", + "shape": "s64[1369]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527 (AbstractInversion.zeroed_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:567 (AbstractInversion.solve_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:684 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_broadcast_fusion.5", + "ms": 0.002195, + "opcode": "fusion", + "shape": "(s64[1369]{0}, s64[1369]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527 (AbstractInversion.zeroed_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:567 (AbstractInversion.solve_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:684 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ] + }, + "stage_audit_note": "The HLO instructions that contributed most of each stage's milliseconds, with their full source stack. A stage row is only as good as the rules that built it; this is how a reader checks a row against the HLO instead of trusting it.", + "untraced_wall_ms": 712.3232884998288, + "reconciliation_vs_untraced_pct": 1.4811973257814912, + "wall_basis": "wall_ms is the TRACED run's wall, the run these kernel durations came from. untraced_wall_ms is the same executable without the profiler; the difference is the profiler's overhead and belongs in neither the stages nor the idle row.", + "calls": 10, + "call_split": "per-call (first-instruction recurrence)", + "call_blocks": 10, + "events": 220740, + "streams": [ + "Stream #14(MemcpyD2D,Compute,MemcpyD2H)" + ], + "per_stage_ms": { + "border_relocator": { + "median_ms": 0.0862405, + "min_ms": 0.08600999999999999, + "max_ms": 0.08674599999999999 + }, + "curvature_matrix_F": { + "median_ms": 99.0439775, + "min_ms": 98.265563, + "max_ms": 99.419582 + }, + "inversion_other": { + "median_ms": 16.522588000000027, + "min_ms": 16.279988999999997, + "max_ms": 16.688795000000006 + }, + "mapping_matrix": { + "median_ms": 0.0673265, + "min_ms": 0.06575700000000001, + "max_ms": 0.068928 + }, + "mesh_construction": { + "median_ms": 1.0305189999999982, + "min_ms": 1.0276869999999991, + "max_ms": 1.033543999999999 + }, + "mixed_fusion": { + "median_ms": 35.057405, + "min_ms": 34.526121, + "max_ms": 35.460657 + }, + "other": { + "median_ms": 0.3980254999999999, + "min_ms": 0.39587499999999987, + "max_ms": 0.39975099999999975 + }, + "pdip_solve": { + "median_ms": 426.78749900000696, + "min_ms": 425.9816720000059, + "max_ms": 427.587065000008 + }, + "psf_convolution_mapping_matrix": { + "median_ms": 115.37742700000001, + "min_ms": 115.14095699999999, + "max_ms": 115.62937199999999 + }, + "regularization_H": { + "median_ms": 0.49562, + "min_ms": 0.48791, + "max_ms": 0.506627 + } + }, + "stage_order": [ + "border_relocator", + "mesh_construction", + "mapping_matrix", + "psf_convolution_mapping_matrix", + "curvature_matrix_F", + "regularization_H", + "pdip_solve", + "inversion_other", + "mixed_fusion", + "other" + ], + "mixed_fusion": { + "ms": 35.057405, + "constituent_stage_sets": { + "curvature_matrix_F + psf_convolution_mapping_matrix": 16.9626333, + "inversion_other + pdip_solve + reconstruction_scatter": 5.1413752, + "pdip_solve + psf_convolution_mapping_matrix": 4.0831873000000005, + "data_vector_D + pdip_solve": 2.1037838000000004, + "mapped_reconstruction + pdip_solve": 1.7732183, + "mapping_matrix + pdip_solve": 1.7299004999999998, + "border_relocator + pdip_solve": 1.6056786, + "inversion_other + regularization_H": 0.48432490000000006, + "curvature_reg_reduce_gather + inversion_other": 0.4806735, + "inversion_other + pdip_solve": 0.2060462, + "border_relocator + inversion_other + mapping_matrix + mesh_construction + pdip_solve": 0.0906153, + "inversion_other + mapping_matrix + mesh_construction + pdip_solve": 0.0736008, + "mesh_construction + pdip_solve": 0.03543570000000001, + "grids_and_structures + mass_profile_deflections + ray_trace_data_grid": 0.028946199999999995, + "inversion_other + mesh_construction + pdip_solve": 0.0284438, + "inversion_other + pdip_solve + regularization_H": 0.025650600000000006, + "border_relocator + mesh_construction": 0.0235771, + "inversion_other + reconstruction_scatter": 0.0217913, + "chi_squared_evidence + pdip_solve": 0.0212222, + "grids_and_structures + mass_profile_deflections + pdip_solve + ray_trace_data_grid": 0.0172698, + "pdip_solve + regularization_H": 0.015769, + "pdip_solve + ray_trace_data_grid": 0.012975799999999994, + "inversion_other + mapping_matrix": 0.0118557, + "inversion_other + mapped_reconstruction + reconstruction_scatter": 0.009964599999999999, + "border_relocator + inversion_other + pdip_solve": 0.0075423999999999995, + "border_relocator + inversion_other + mesh_construction + pdip_solve": 0.0060317999999999995, + "inversion_other + pdip_solve + ray_trace_data_grid": 0.004793499999999999, + "grids_and_structures + mass_profile_deflections + pdip_solve": 0.0042239, + "mapping_matrix + pdip_solve + regularization_H": 0.0040575, + "border_relocator + inversion_other + mapping_matrix + mesh_construction": 0.0028767000000000003, + "chi_squared_evidence + inversion_other": 0.0023264 + }, + "example_kernels": { + "curvature_matrix_F + psf_convolution_mapping_matrix": [ + "loop_divide_gather_fusion" + ], + "inversion_other + pdip_solve + reconstruction_scatter": [ + "input_add_multiply_transpose_fusion" + ], + "pdip_solve + psf_convolution_mapping_matrix": [ + "loop_broadcast_fusion" + ], + "data_vector_D + pdip_solve": [ + "input_reduce_fusion.15", + "input_reduce_fusion.31" + ], + "mapped_reconstruction + pdip_solve": [ + "input_reduce_fusion.18" + ], + "mapping_matrix + pdip_solve": [ + "loop_broadcast_fusion.1", + "loop_divide_fusion" + ], + "border_relocator + pdip_solve": [ + "input_reduce_fusion.21", + "loop_select_sine_fusion", + "input_concatenate_fusion.5", + "input_transpose_fusion.5" + ], + "inversion_other + regularization_H": [ + "input_transpose_fusion.7" + ], + "curvature_reg_reduce_gather + inversion_other": [ + "input_transpose_fusion.6" + ], + "inversion_other + pdip_solve": [ + "input_reduce_fusion.16", + "input_reduce_fusion.17", + "input_scatter_fusion.11", + "input_transpose_fusion.3" + ] + }, + "prorated_estimate_ms": { + "psf_convolution_mapping_matrix": 10.5229103, + "curvature_matrix_F": 8.48131665, + "pdip_solve": 7.574652993333333, + "inversion_other": 2.381516085, + "reconstruction_scatter": 1.7280089166666666, + "data_vector_D": 1.0518919000000002, + "mapping_matrix": 0.9094730349999998, + "mapped_reconstruction": 0.8899306833333333, + "border_relocator": 0.8374921683333333, + "regularization_H": 0.25994965000000003, + "curvature_reg_reduce_gather": 0.24033675, + "mesh_construction": 0.07773805166666667, + "ray_trace_data_grid": 0.022051916666666664, + "grids_and_structures": 0.015374149999999996, + "mass_profile_deflections": 0.015374149999999996, + "chi_squared_evidence": 0.0117743 + }, + "prorated_note": "ESTIMATE ONLY \u2014 a mixed fusion's time split equally across the stages its constituents span. Never summed into the measured table, never reconciled." + }, + "other_sources_ms": { + "copy.69": 0.07926109999999997, + "copy.68": 0.07882310000000001, + "copy.87": 0.0391316, + "copy.77": 0.03885950000000004, + "copy.78": 0.03870310000000004, + "copy.86": 0.038408600000000064, + "copy.124": 0.03229049999999999, + "copy.123": 0.023346599999999978, + "copy.122": 0.022690300000000024, + "copy.138": 0.0023967999999999997, + "copy.61": 0.0021376, + "copy.70": 0.0017536000000000001 + }, + "device_span_ms": 722.7507141, + "device_busy_ms": 694.7431401, + "device_idle_ms": 28.007573999999977, + "largest_idle_gaps": [ + { + "gap_ms": 0.080444, + "after": "triangular-solve", + "before": "triangular-solve" + }, + { + "gap_ms": 0.048926, + "after": "input_reduce_fusion.30", + "before": "loop_broadcast_fusion" + }, + { + "gap_ms": 0.034718, + "after": "while.73", + "before": "copy.123" + }, + { + "gap_ms": 0.032415, + "after": "loop_select_fusion.6", + "before": "loop_select_fusion.5" + }, + { + "gap_ms": 0.025631, + "after": "while.78", + "before": "input_reduce_fusion" + }, + { + "gap_ms": 0.025407, + "after": "while.78", + "before": "cholesky.80" + }, + { + "gap_ms": 0.024446, + "after": "while.73", + "before": "copy.123" + }, + { + "gap_ms": 0.022911, + "after": "while.73", + "before": "loop_select_fusion.10" + } + ], + "kernel_ms": 694.866628000007, + "sum_ms": 722.874202000007, + "wall_ms": 722.839157099952, + "host_outside_span_ms": 0.088442999952008, + "reconciliation_pct": 0.004848229334396881, + "unjoined_ms": 0.0, + "unjoined_pct": 0.0, + "other_ms": 0.3980254999999999, + "other_pct": 0.05506418628410886, + "note": "Stage rows attribute the command-buffers-OFF program (see the module docstring): kernel times are the same, the launch overhead the CUDA graphs remove is not. sum_ms = kernel rows + device_idle_ms; the residual against wall_ms is host_outside_span_ms (dispatch before the first kernel, teardown after the last).", + "per_stage_ms_per_lane": { + "border_relocator": 0.00539003125, + "curvature_matrix_F": 6.19024859375, + "inversion_other": 1.0326617500000017, + "mapping_matrix": 0.00420790625, + "mesh_construction": 0.06440743749999989, + "mixed_fusion": 2.1910878125, + "other": 0.024876593749999995, + "pdip_solve": 26.674218687500435, + "psf_convolution_mapping_matrix": 7.211089187500001, + "regularization_H": 0.03097625 + }, + "per_lane_divisor": 16, + "host_callback": { + "pure_callback_span_ms": 0, + "qhull_ms": 0.0, + "callback_body_ms_note": "the OUTERMOST matching body event, not a sum: under the probe the body appears twice (the wrapper and the timed re-implementation it calls) and summing them would count the same work twice", + "events_by_name": { + "ThenExecuteCallback:GetEventForComputeStreamSyncPoint": { + "count": 10, + "ms": 0.0295897 + } + }, + "note": "HOST milliseconds per traced BATCH (the whole invocation), aggregated by name because the events nest. Not a row of the device table: the device pays for them as the idle gaps largest_idle_gaps names." + }, + "host_callback_ms": 0 + }, + "hlo_census": { + "status": "excluded", + "reason": "The legacy census anchors PyAutoArray source line numbers that moved after the phase-1 run. No batched attribution is published from unsupported anchors; the device-event table and wall reconciliation remain valid." + }, + "trace_split": { + "expected_calls": 10, + "executions_per_invocation": 1, + "method": "per-call (first-instruction recurrence)", + "note": "DECIDED IN CODE: the scalar arm's trace is split by trace_calls * B, so every lane's execution is its own block and the per-stage median is taken over all of them. The vmap arm's is split by trace_calls, one block per batched execution, and per_stage_ms_per_lane divides those rows by B." + } + }, + "scalar": { + "arm": "scalar", + "program": "jax.jit(fn), called B times", + "stands_for": "Nautilus(use_jax_vmap=False, use_jax_jit=True). Plain use_jax_vmap=False is UNJITTED and is NOT this arm", + "hlo_source": "jax.jit(fn).lower(lane_trees[0]) \u2014 the same program phase 1 traced", + "batch_wall_ms": 677.531935099978, + "wall_production_nesting_ms": 677.531935099978, + "wall_aot_command_buffers_on_ms": 677.3452973000531, + "wall_aot_command_buffers_off_ms": 682.2297303999221, + "command_buffer_delta_ms": 4.884433099869057, + "production_nesting_vs_aot_on_delta_ms": 0.186637799924938, + "production_nesting_vs_aot_on_delta_pct": 0.02755430659500991, + "wall_per_lane_ms": 42.345745943748625, + "wall_per_lane_command_buffers_off_ms": 42.63935814999513, + "traced_batch_wall_ms": 699.3465646999539, + "untraced_batch_wall_ms": 682.4068641999474, + "traced_wall_per_lane_ms": 43.70916029374712, + "callback_count_per_call": 0.0, + "callback_count_per_lane": 0.0, + "callback_expectation": "0 \u2014 the rectangular mesh has no qhull host callback (asserted)", + "host_qhull_ms": 0.0, + "host_tables_ms": 0.0, + "host_qhull_ms_per_lane": 0.0, + "host_tables_ms_per_lane": 0.0, + "host_callback_probe": { + "calls": 0, + "qhull_ms_total": 0.0, + "tables_ms_total": 0.0, + "total_ms_total": 0.0, + "qhull_ms_mean": 0.0, + "tables_ms_mean": 0.0, + "total_ms_mean": 0.0, + "non_finite_calls": 0, + "n_points": [] + }, + "host_callback_records_first": [], + "device_idle_ms": 2.167567168750004, + "device_idle_ms_per_lane": 2.167567168750004, + "trace": { + "parser": "ProfileData.from_file(xplane) + as_text() + stack_frame_index(proto field 17)", + "stage_audit": { + "mesh_construction": [ + { + "instruction": "fusion.2", + "ms": 0.1481451625000001, + "opcode": "fusion", + "shape": "(f64[15361,2]{1,0}, s64[15361,2]{1,0}, s32[15361,2]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:227", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:227 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_select_fusion", + "ms": 0.039184324999999694, + "opcode": "fusion", + "shape": "(u32[2,15361]{1,0}, u32[2,15361]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69 (forward_interp)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:573 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/abstract.py:36 (AbstractInterpolator.mappings)" + ] + }, + { + "instruction": "loop_select_fusion.6", + "ms": 0.034532712499999764, + "opcode": "fusion", + "shape": "(u32[15361]{0}, u32[15361]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_select_fusion.1", + "ms": 0.03433358750000023, + "opcode": "fusion", + "shape": "(u32[15361]{0}, u32[15361]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_add_fusion.7", + "ms": 0.02104513124999953, + "opcode": "fusion", + "shape": "s64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_add_fusion", + "ms": 0.020980193749999553, + "opcode": "fusion", + "shape": "s64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69 (forward_interp)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:573 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/abstract.py:36 (AbstractInterpolator.mappings)" + ] + } + ], + "mixed_fusion": [ + { + "instruction": "loop_divide_gather_fusion", + "ms": 0.6957160187499998, + "opcode": "fusion", + "shape": "(f64[15361,1,1,1521]{3,2,1,0}, f64[15361,1,1,1521]{3,2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_broadcast_fusion.3", + "ms": 0.23337609374999993, + "opcode": "fusion", + "shape": "f64[1521,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_multiply_transpose_fusion", + "ms": 0.18472471875000007, + "opcode": "fusion", + "shape": "(f64[1369,1369]{1,0}, f64[1369,1369]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:237 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:274 (_certified_positive_only_from)" + ] + }, + { + "instruction": "loop_broadcast_fusion", + "ms": 0.13639111875, + "opcode": "fusion", + "shape": "f64[15361,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:342", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:342 (mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:283 (Mapper.mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:91 (AbstractInversionImaging._mapping_matrix_for_convolution_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:137 (AbstractInversionImaging.operated_mapping_matrix_list)" + ] + }, + { + "instruction": "input_reduce_fusion.11", + "ms": 0.11359529375, + "opcode": "fusion", + "shape": "f64[92,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123 (data_vector_via_blurred_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:67 (InversionImagingMapping.data_vector)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:699 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_reduce_fusion.14", + "ms": 0.11179722500000007, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163 (mapped_reconstructed_data_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:120 (InversionImagingMapping._mapped_reconstructed_data_dict_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:196 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + } + ], + "border_relocator": [ + { + "instruction": "eigh.0", + "ms": 0.0740736062499999, + "opcode": "custom-call", + "shape": "(f64[2,2]{0,1}, f64[2]{0}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "custom-call.2", + "ms": 0.007912006250000006, + "opcode": "custom-call", + "shape": "(f64[2,2]{1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_reduce_fusion.15", + "ms": 0.005312068749999999, + "opcode": "fusion", + "shape": "(f64[], f64[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:270", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:270 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_add_fusion.9", + "ms": 0.0036249499999999996, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:423 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_concatenate_fusion.4", + "ms": 0.0023793437500000017, + "opcode": "fusion", + "shape": "f64[392,2]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:238", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:238 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_reduce_fusion.22", + "ms": 0.001590556250000001, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:256", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:256 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + } + ], + "other": [ + { + "instruction": "copy.63", + "ms": 0.03012568125000019, + "opcode": "copy", + "shape": "u32[2,15361]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.64", + "ms": 0.02982254375000077, + "opcode": "copy", + "shape": "u32[2,15361]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.81", + "ms": 0.02858591250000069, + "opcode": "copy", + "shape": "u32[15361]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.73", + "ms": 0.028505462500000876, + "opcode": "copy", + "shape": "u32[15361]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.82", + "ms": 0.0283477500000011, + "opcode": "copy", + "shape": "u32[15361]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.72", + "ms": 0.028247775000001137, + "opcode": "copy", + "shape": "u32[15361]{0}", + "source": "", + "stack": [] + } + ], + "pdip_solve": [ + { + "instruction": "cholesky.40", + "ms": 8.834679812500003, + "opcode": "custom-call", + "shape": "(f64[1369,1369]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "cholesky.60", + "ms": 6.379414124999969, + "opcode": "custom-call", + "shape": "(f64[1369,1369]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:106", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:106 (factorize_kkt)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:212 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve.7", + "ms": 1.5466199374999623, + "opcode": "custom-call", + "shape": "(f64[1369,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "triangular-solve.6", + "ms": 1.3093116687500153, + "opcode": "custom-call", + "shape": "(f64[1369,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "triangular-solve", + "ms": 0.9732707624999928, + "opcode": "custom-call", + "shape": "(f64[1369,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:213 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve.2", + "ms": 0.9302861625000245, + "opcode": "custom-call", + "shape": "(f64[1369,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:217 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + } + ], + "mapping_matrix": [ + { + "instruction": "input_reduce_fusion.28", + "ms": 0.0028161437500000006, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:362 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + } + ], + "regularization_H": [ + { + "instruction": "input_scatter_fusion.8", + "ms": 0.0027709187500000016, + "opcode": "fusion", + "shape": "f64[1521,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:123 (weighted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:366 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "psf_convolution_mapping_matrix": [ + { + "instruction": "fft.19.0", + "ms": 1.7800044812499995, + "opcode": "fft", + "shape": "f64[1521,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_scatter_fusion", + "ms": 1.4214474374999992, + "opcode": "fusion", + "shape": "f64[1521,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.15.0", + "ms": 1.3830779874999992, + "opcode": "fft", + "shape": "c128[1521,180,91]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.17.0", + "ms": 0.9921816250000004, + "opcode": "fft", + "shape": "c128[1521,91,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_transpose_fusion.4", + "ms": 0.5221223125, + "opcode": "fusion", + "shape": "c128[1521,91,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "wrapped_transpose.2", + "ms": 0.50774696875, + "opcode": "fusion", + "shape": "c128[1521,180,91]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + } + ], + "curvature_matrix_F": [ + { + "instruction": "cublas-lt-matmul.2", + "ms": 4.366860325000003, + "opcode": "custom-call", + "shape": "(f64[1521,1521]{1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "inversion_other": [ + { + "instruction": "cholesky.120", + "ms": 0.9176413500000014, + "opcode": "custom-call", + "shape": "(f64[1521,1521]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1078 (AbstractInversion.log_det_curvature_reg_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:347 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "cholesky.130", + "ms": 0.9006329875000011, + "opcode": "custom-call", + "shape": "(f64[1521,1521]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1157 (AbstractInversion.log_det_regularization_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:348 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "loop_reduce_window_fusion.3", + "ms": 0.00579086249999999, + "opcode": "fusion", + "shape": "s64[6,16]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "loop_reduce_window_fusion.2", + "ms": 0.003018343749999991, + "opcode": "fusion", + "shape": "s64[86,16]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "input_scatter_fusion.9", + "ms": 0.0025459437499999954, + "opcode": "fusion", + "shape": "s64[1369]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527 (AbstractInversion.zeroed_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:567 (AbstractInversion.solve_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:684 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_broadcast_fusion.4", + "ms": 0.0019107624999999977, + "opcode": "fusion", + "shape": "(s64[1369]{0}, s64[1369]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527 (AbstractInversion.zeroed_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:567 (AbstractInversion.solve_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:684 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "chi_squared_evidence": [ + { + "instruction": "loop_multiply_fusion.2", + "ms": 0.0029798937499999974, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:300", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:300 (AbstractNDArray.__pow__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:60 (unwrap_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:35 (to_new_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:78 (chi_squared_map_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:78 (AbstractFit.chi_squared_map)" + ] + } + ] + }, + "stage_audit_note": "The HLO instructions that contributed most of each stage's milliseconds, with their full source stack. A stage row is only as good as the rules that built it; this is how a reader checks a row against the HLO instead of trusting it.", + "untraced_wall_ms": 42.650429012496716, + "reconciliation_vs_untraced_pct": -21.452712330433613, + "wall_basis": "wall_ms is the TRACED run's wall, the run these kernel durations came from. untraced_wall_ms is the same executable without the profiler; the difference is the profiler's overhead and belongs in neither the stages nor the idle row.", + "calls": 160, + "call_split": "per-call (first-instruction recurrence)", + "call_blocks": 160, + "events": 134500, + "streams": [ + "Stream #14(MemcpyH2D,Compute,MemcpyD2H,Memset,MemcpyD2D)" + ], + "per_stage_ms": { + "border_relocator": { + "median_ms": 0.09642900000000004, + "min_ms": 0.09564500000000001, + "max_ms": 0.09740000000000001 + }, + "chi_squared_evidence": { + "median_ms": 0.002975, + "min_ms": 0.002847, + "max_ms": 0.003328 + }, + "curvature_matrix_F": { + "median_ms": 4.3388975, + "min_ms": 4.308712, + "max_ms": 4.521694 + }, + "inversion_other": { + "median_ms": 1.8344719999999999, + "min_ms": 1.822318, + "max_ms": 1.854093 + }, + "mapping_matrix": { + "median_ms": 0.002816, + "min_ms": 0.002783, + "max_ms": 0.002848 + }, + "memset": { + "median_ms": 0.03918350000000001, + "min_ms": 0.014751999999999998, + "max_ms": 0.10527399999999994 + }, + "mesh_construction": { + "median_ms": 0.34237549999999983, + "min_ms": 0.3399209999999998, + "max_ms": 0.3439689999999998 + }, + "mixed_fusion": { + "median_ms": 1.8487105000000001, + "min_ms": 1.8430510000000002, + "max_ms": 1.8544769999999997 + }, + "other": { + "median_ms": 0.18028849999999969, + "min_ms": 0.17941699999999977, + "max_ms": 0.18363699999999977 + }, + "pdip_solve": { + "median_ms": 16.03756299999999, + "min_ms": 4.649876999999999, + "max_ms": 48.07878999999992 + }, + "psf_convolution_mapping_matrix": { + "median_ms": 6.606725500000001, + "min_ms": 6.584301, + "max_ms": 6.6237569999999995 + }, + "regularization_H": { + "median_ms": 0.002752, + "min_ms": 0.002432, + "max_ms": 0.003232 + } + }, + "stage_order": [ + "border_relocator", + "mesh_construction", + "mapping_matrix", + "psf_convolution_mapping_matrix", + "curvature_matrix_F", + "regularization_H", + "pdip_solve", + "chi_squared_evidence", + "inversion_other", + "mixed_fusion", + "other", + "memset" + ], + "mixed_fusion": { + "ms": 1.8487105000000001, + "constituent_stage_sets": { + "curvature_matrix_F + psf_convolution_mapping_matrix": 0.6957160187499998, + "pdip_solve + psf_convolution_mapping_matrix": 0.23337609374999993, + "inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": 0.18472471875000007, + "mapping_matrix + pdip_solve": 0.1387286625000001, + "data_vector_D + pdip_solve": 0.11731176875000013, + "mapped_reconstruction + pdip_solve": 0.11179722500000007, + "border_relocator + pdip_solve": 0.07092946875000007, + "mesh_construction + pdip_solve": 0.038702762500000105, + "inversion_other + regularization_H": 0.031007618749999986, + "inversion_other + pdip_solve": 0.030165462499999924, + "border_relocator + mesh_construction + pdip_solve": 0.027064900000000017, + "curvature_reg_reduce_gather + inversion_other": 0.025772318750000012, + "border_relocator + inversion_other + mapping_matrix + mesh_construction + pdip_solve": 0.020572025000000015, + "pdip_solve + regularization_H": 0.019315131249999996, + "inversion_other + mapping_matrix + pdip_solve + regularization_H": 0.015423406249999983, + "inversion_other + mapping_matrix + mesh_construction": 0.012941031250000002, + "pdip_solve + ray_trace_data_grid": 0.012810718750000059, + "grids_and_structures + mass_profile_deflections + pdip_solve": 0.009774931249999995, + "inversion_other + mapped_reconstruction + reconstruction_scatter": 0.009560143749999995, + "inversion_other + mapped_reconstruction": 0.008867768750000001, + "chi_squared_evidence + pdip_solve": 0.007603593749999994, + "inversion_other + mesh_construction + pdip_solve": 0.005450837499999997, + "grids_and_structures + mass_profile_deflections + ray_trace_data_grid": 0.005214674999999999, + "inversion_other + pdip_solve + ray_trace_data_grid": 0.004812693749999996, + "border_relocator + mesh_construction": 0.00342489375, + "border_relocator + inversion_other": 0.0033499062500000018, + "border_relocator + inversion_other + mesh_construction + pdip_solve": 0.0024591437500000035, + "chi_squared_evidence + inversion_other": 0.0017915624999999993 + }, + "example_kernels": { + "curvature_matrix_F + psf_convolution_mapping_matrix": [ + "loop_divide_gather_fusion" + ], + "pdip_solve + psf_convolution_mapping_matrix": [ + "loop_broadcast_fusion.3" + ], + "inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": [ + "input_multiply_transpose_fusion" + ], + "mapping_matrix + pdip_solve": [ + "loop_divide_fusion.1", + "loop_broadcast_fusion" + ], + "data_vector_D + pdip_solve": [ + "input_reduce_fusion.11", + "input_reduce_fusion.26" + ], + "mapped_reconstruction + pdip_solve": [ + "input_reduce_fusion.14" + ], + "border_relocator + pdip_solve": [ + "input_reduce_fusion.16", + "loop_select_sine_fusion", + "input_concatenate_fusion.1", + "input_transpose_fusion.8" + ], + "mesh_construction + pdip_solve": [ + "loop_multiply_fusion.4", + "loop_pad_fusion", + "loop_reduce_fusion", + "triton_softmax.1" + ], + "inversion_other + regularization_H": [ + "input_transpose_fusion.6" + ], + "inversion_other + pdip_solve": [ + "input_scatter_fusion.11", + "input_reduce_fusion.17", + "input_reduce_fusion.24", + "input_reduce_fusion.12" + ] + }, + "prorated_estimate_ms": { + "psf_convolution_mapping_matrix": 0.46454605624999984, + "pdip_solve": 0.4608377867708336, + "curvature_matrix_F": 0.3478580093749999, + "inversion_other": 0.11616510968749999, + "mapped_reconstruction": 0.10970039114583338, + "mapping_matrix": 0.08164826489583339, + "data_vector_D": 0.058655884375000064, + "border_relocator": 0.052602958645833385, + "reconstruction_scatter": 0.04936789427083335, + "mesh_construction": 0.04094527531250006, + "regularization_H": 0.029017226562499988, + "curvature_reg_reduce_gather": 0.012886159375000006, + "ray_trace_data_grid": 0.009747815625000027, + "grids_and_structures": 0.004996535416666665, + "mass_profile_deflections": 0.004996535416666665, + "chi_squared_evidence": 0.0046975781249999965 + }, + "prorated_note": "ESTIMATE ONLY \u2014 a mixed fusion's time split equally across the stages its constituents span. Never summed into the measured table, never reconciled." + }, + "other_sources_ms": { + "copy.63": 0.03012568125000019, + "copy.64": 0.02982254375000077, + "copy.81": 0.02858591250000069, + "copy.73": 0.028505462500000876, + "copy.82": 0.0283477500000011, + "copy.72": 0.028247775000001137, + "copy.122": 0.0016843500000000007, + "copy.121": 0.0016307500000000003, + "copy.74": 0.0015381624999999983, + "copy.56": 0.0015323374999999973, + "copy.120": 0.0007351687500000007, + "copy.43": 0.0006679875000000006 + }, + "device_span_ms": 43.704272200000005, + "device_busy_ms": 41.53670503125, + "device_idle_ms": 2.167567168750004, + "largest_idle_gaps": [ + { + "gap_ms": 0.041981, + "after": "while.33", + "before": "input_scatter_fusion.1" + }, + { + "gap_ms": 0.041726, + "after": "input_concatenate_fusion.4", + "before": "custom-call.2" + }, + { + "gap_ms": 0.032478, + "after": "loop_multiply_fusion.3", + "before": "eigh.0" + }, + { + "gap_ms": 0.029471, + "after": "fusion.2", + "before": "fusion.2" + }, + { + "gap_ms": 0.027423, + "after": "while.33", + "before": "input_reduce_fusion" + }, + { + "gap_ms": 0.026655, + "after": "loop_add_fusion.7", + "before": "loop_select_fusion.6" + }, + { + "gap_ms": 0.02595, + "after": "copy.72", + "before": "copy.73" + }, + { + "gap_ms": 0.024255, + "after": "while.40", + "before": "input_transpose_fusion.2" + } + ], + "kernel_ms": 31.333187999999993, + "sum_ms": 33.50075516875, + "wall_ms": 43.70916029374712, + "host_outside_span_ms": 0.004888093747112521, + "reconciliation_pct": -23.355299109824127, + "unjoined_ms": 0.0, + "unjoined_pct": 0.0, + "other_ms": 0.18028849999999969, + "other_pct": 0.41247303491618703, + "note": "Stage rows attribute the command-buffers-OFF program (see the module docstring): kernel times are the same, the launch overhead the CUDA graphs remove is not. sum_ms = kernel rows + device_idle_ms; the residual against wall_ms is host_outside_span_ms (dispatch before the first kernel, teardown after the last).", + "per_stage_ms_per_lane": { + "border_relocator": 0.09642900000000004, + "chi_squared_evidence": 0.002975, + "curvature_matrix_F": 4.3388975, + "inversion_other": 1.8344719999999999, + "mapping_matrix": 0.002816, + "memset": 0.03918350000000001, + "mesh_construction": 0.34237549999999983, + "mixed_fusion": 1.8487105000000001, + "other": 0.18028849999999969, + "pdip_solve": 16.03756299999999, + "psf_convolution_mapping_matrix": 6.606725500000001, + "regularization_H": 0.002752 + }, + "per_lane_divisor": 1, + "host_callback": { + "pure_callback_span_ms": 0, + "qhull_ms": 0.0, + "callback_body_ms_note": "the OUTERMOST matching body event, not a sum: under the probe the body appears twice (the wrapper and the timed re-implementation it calls) and summing them would count the same work twice", + "events_by_name": { + "ThenExecuteCallback:GetEventForComputeStreamSyncPoint": { + "count": 160, + "ms": 0.3133482000000001 + } + }, + "note": "HOST milliseconds per traced BATCH (the whole invocation), aggregated by name because the events nest. Not a row of the device table: the device pays for them as the idle gaps largest_idle_gaps names." + }, + "host_callback_ms": 0 + }, + "hlo_census": { + "status": "excluded", + "reason": "The legacy census anchors PyAutoArray source line numbers that moved after the phase-1 run. No batched attribution is published from unsupported anchors; the device-event table and wall reconciliation remain valid." + }, + "trace_split": { + "expected_calls": 160, + "executions_per_invocation": 16, + "method": "per-call (first-instruction recurrence)", + "note": "DECIDED IN CODE: the scalar arm's trace is split by trace_calls * B, so every lane's execution is its own block and the per-stage median is taken over all of them. The vmap arm's is split by trace_calls, one block per batched execution, and per_stage_ms_per_lane divides those rows by B." + } + } + }, + "certification_report": { + "source": "vmap arm, library solve observed through its stats= out-dict (PyAutoArray #566) and jax.debug.callback(..., ordered=True); ordered because the unordered batching rule returns the lanes permuted. Untimed, separately compiled; max rel diff of its log likelihoods vs the timed arm's: 7.769e-07", + "rows": 16, + "pdip_iter": "NOT AVAILABLE per lane without changing library numerics. The fallback branch calls the library's own reconstruction_positive_only_from, which returns the solution alone \u2014 jax_nnls.solve_nnls' iteration count is discarded inside the library's custom_vjp primal. The PDIP while_loop's cost is in the pdip_solve stage row of each arm's device table instead, which is a max-over-lanes quantity under vmap because every lane runs the same fixed kernel sequence.", + "passes_semantics": "library `passes`: restricted active-set passes run (jax_active_set.solve_certified)" + }, + "lane_construction": { + "draws_sha256": "6bdc2dd94a49d4d0c9095b0fbaa94aad0f0243aedd8fc4dad1391ab796f19d33", + "lane_rows": [ + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315 + ], + "calls": [ + 15 + ], + "stage": "pix1", + "regularization_range": { + "galaxies.source.pixelization.regularization.inner_coefficient": { + "min": 1.5395402868893563e-06, + "max": 631.3270846999916 + }, + "galaxies.source.pixelization.regularization.outer_coefficient": { + "min": 1.585514819488347e-06, + "max": 4.102561528173602 + }, + "galaxies.source.pixelization.regularization.signal_scale": { + "min": 0.06623313471893155, + "max": 0.9779334025364208 + } + }, + "phases": [ + "exploration" + ], + "window_rule": "nautilus_batches.timed_window: consecutive captured calls, in call order, from the FIRST call that is not a prior batch, concatenated and truncated to B; at B == n_batch exactly one real Nautilus batch. Falls back to the latest B lanes if the post-prior lanes run out; never repeats a lane.", + "note": "Lane k is captured lane lane_rows[k]: the mass AND shear of a real Nautilus proposal (nautilus_batch_capture.py), lens light fixed at S3, the S3 light-subtracted dataset shared by every lane. `offsets` in the lane table are the mass offsets from the fiducial; the shear is in the capture file." + }, + "captured": { + "batches_path": "/mnt/ral/jnightin/autolens_profiling_wt/certified-solver-phase-c1-lane-rate/results/breakdown/imaging/nautilus_batches_rectangular_pix1.npz", + "batches_sha256": "c0b62fba544cb62c8a273c19837cf364127f5af7fdaa110f3a2c8a973e0b6cc0", + "schema_version": 2, + "n_calls": 972, + "n_lanes": 19440, + "call_sizes_seen": [ + 20 + ], + "calls_by_phase": { + "prior": 15, + "exploration": 957 + }, + "parameter_paths": [ + "galaxies.source.pixelization.regularization.inner_coefficient", + "galaxies.source.pixelization.regularization.outer_coefficient", + "galaxies.source.pixelization.regularization.signal_scale", + "galaxies.lens.mass.centre.centre_0", + "galaxies.lens.mass.centre.centre_1", + "galaxies.lens.mass.einstein_radius", + "galaxies.lens.mass.ell_comps.ell_comps_0", + "galaxies.lens.mass.ell_comps.ell_comps_1", + "galaxies.lens.shear.gamma_1", + "galaxies.lens.shear.gamma_2" + ], + "stage": "pix1", + "regularization": { + "class": "Adapt", + "free": true, + "priors": { + "inner_coefficient": [ + "LogUniform", + 1e-06, + 1000000.0 + ], + "outer_coefficient": [ + "LogUniform", + 1e-06, + 1000000.0 + ], + "signal_scale": [ + "Uniform", + 0.0, + 1.0 + ] + }, + "priors_source": "PyAutoGalaxy packaged config/priors/regularization (adapt_split.yaml / adapt.yaml / constant.yaml); adapt_split.yaml and adapt.yaml are identical to euclid_strong_lens_modeling_pipeline/config/priors/regularization/'s copies" + }, + "nautilus": { + "departures_from_production": [ + "mass/shear priors are the phase-B cell's Gaussians, not chained from source_lp", + "no positions likelihood", + "the cell's mesh (39x39 RectangularBilinearAdaptImage, weight_power 1, weight_floor 0) fixed in both stages; source_pix_1 uses RectangularBilinearAdaptDensity, source_pix_2 frees weight_power / weight_floor", + "seeded (production passes no seed)", + "quick updates disabled (iterations_per_quick_update=1e12; render-only)", + "NullPaths: no output directory, so no checkpoint and one Sampler.run call", + "post-fit perform_update skipped (samples / latent variables never built)" + ], + "n_batch": 20, + "n_like_max": 40000, + "n_live": 150, + "number_of_cores": 1, + "production_reference": "euclid_strong_lens_modeling_pipeline/scripts/full_model.py source_pix_1 (n_live=150) / source_pix_2 (n_live=75): af.Nautilus(n_batch=20, **SettingsSearch.search_dict) with use_jax_vmap=True and number_of_cores=1 (SettingsSearch defaults)", + "production_stage": "source_pix_1", + "seed": 1, + "stage": "pix1", + "use_jax_vmap": true, + "version": "1.0.5" + }, + "capture_fit_status": "sampling complete (n_like_max or convergence); post-fit result skipped", + "capture_library_revisions": { + "PyAutoArray": { + "head": "3de624b5b91a4efa130dc3cb0a3a0f06f85025a3", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoArray" + }, + "PyAutoFit": { + "head": "dd9fbe0aab60c4a57702b1444ca031b317c91331", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoFit" + }, + "PyAutoGalaxy": { + "head": "70a61e26cd715cefe7012a38285698091246a8a4", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy" + }, + "PyAutoLens": { + "head": "86054bbc19baa2f710a12e04a94fa27ab37cc354", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoLens" + }, + "PyAutoNerves": { + "head": "1fa613aa8d89a79613009fb66f5b4e2d21deb57a", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoNerves" + } + }, + "fingerprint_check": { + "fields": [ + "mesh", + "source_pixels", + "dataset_sha256", + "regularization_class", + "regularization_s0_fiducial", + "border_relocator", + "use_mixed_precision", + "log_evidence_s3_library" + ], + "not_identity": "the regularization coefficients: free per lane since the capture frees them", + "log_evidence_s3_library_rel_diff": 0.0, + "passed": true + }, + "timed_window_vs_capture_pdip": { + "reference": "the capture's own figure of merit (library PDIP, Fitness.call_wrap jax.jit(jax.vmap(call)) over parameter vectors) for the same lanes", + "compared_against": "this cell's jit(vmap) library-PDIP reference", + "n_compared": 16, + "max_rel_diff": NaN, + "max_abs_diff_nats": NaN, + "gated": false, + "note": "RECORDED, NOT GATED: proves the lane trees rebuilt here are the models the sampler evaluated (a wrong parameter mapping shows up as nats, not 1e-10)." + } + }, + "matched": { + "vmap_wall_per_lane_ms": 44.398622018752576, + "scalar_wall_per_lane_ms": 42.345745943748625, + "speedup_vmap_over_scalar": 0.9537626173592306, + "note": "Both walls are the PRODUCTION nesting of their arm, measured in one process on the same B lanes with the SAME library Settings (no injection). A speedup below 1 means the batch is slower per lane than B sequential jitted calls." + }, + "solver_source": "library", + "solver": "certified", + "certified_fallback": "pdip", + "certified_pass_budget": 16, + "certified_pass_budget_basis": "config default (Settings().certified_pass_budget)", + "certified_tau_rel": 1e-09, + "solver_used": "certified", + "solver_check": { + "solver_used": "certified", + "solver_used_source": "AbstractInversion.positive_only_solver_used on the fiducial S3 inversion, built eagerly on the JAX backend (AnalysisImaging(use_jax=True).fit_from) with the arms' Settings", + "reference_solver_used": "pdip", + "traced_solver_kwargs_jax": [ + "certified" + ], + "observed_calls_jax": 1, + "report_rows": 16, + "report_vs_timed_arm_max_rel_diff": 7.768789745578647e-07 + }, + "lanes_certified": [ + false, + false, + false, + true, + true, + true, + true, + true, + false, + false, + true, + false, + false, + true, + true, + true + ], + "lanes_passes": [ + 16, + 16, + 16, + 4, + 2, + 14, + 6, + 6, + 16, + 16, + 6, + 16, + 16, + 9, + 2, + 8 + ], + "uncertified_lanes": 7, + "per_lane_certification_note": "certified / passes come from the library's own solve through its stats= out-dict (PyAutoArray #566): passes is the number of restricted active-set passes the library ran (0 when the unconstrained solve was already non-negative), certified is its KKT certificate. With certified_fallback=pdip a False lane returned the PDIP solution; with none it returned the last uncertified iterate. null for a library-PDIP row (no certificate).", + "gate": { + "pre_registered": true, + "gated": [ + "per lane: jit(vmap) arm vs jit(vmap) library PDIP <= lane_rtol relative", + "per lane: scalar jit arm vs scalar jit library PDIP <= lane_rtol relative" + ], + "recorded_not_gated": [ + "per lane: jit(vmap) arm vs scalar jit arm (rel_diff, abs_diff_nats)", + "per lane: jit(vmap) library PDIP vs scalar jit library PDIP", + "uncertified_lanes (certified_fallback=none rows)" + ], + "lanes_failed": 2, + "passed": false, + "policy_eligible": false, + "note": "Pre-registered before submission (module docstring; submit header). Phase 3 (results/notes/hst_gpu_residue_phase3_psf_2026_09.md) placed phase 2's ~2.5e-9 certified-vs-PDIP residual BETWEEN the jit(vmap) and scalar-jit compositions, not in the solver \u2014 so each arm is gated against the library-PDIP reference of its OWN composition, and the cross-composition difference is recorded with its nats. A certified_fallback=none row is policy-eligible only if every lane certifies AND passes the gate. Timing is never gated." + }, + "library_revisions": { + "PyAutoArray": { + "head": "3de624b5b91a4efa130dc3cb0a3a0f06f85025a3", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoArray", + "module_file": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/__init__.py" + }, + "PyAutoFit": { + "head": "dd9fbe0aab60c4a57702b1444ca031b317c91331", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoFit", + "module_file": "/mnt/ral/jnightin/PyAuto/PyAutoFit/autofit/__init__.py" + }, + "PyAutoGalaxy": { + "head": "70a61e26cd715cefe7012a38285698091246a8a4", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy", + "module_file": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/__init__.py" + }, + "PyAutoLens": { + "head": "86054bbc19baa2f710a12e04a94fa27ab37cc354", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoLens", + "module_file": "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/__init__.py" + }, + "autoarray_file": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/__init__.py" + } + }, + "headline_arm_note": "`trace`, `hlo_census`, `command_buffers` and `trace_timing` above describe the scalar arm \u2014 the program phase 1 traced. Both arms' full blocks, the lane table and the matched comparison are under `vmap`." +} \ No newline at end of file diff --git a/results/breakdown/imaging/fixed_light_trace_rectangular_jitvmap16_captured_pix1_libcertified_fbon_b16_hpc_a100_fp64_fixed_light_trace.png b/results/breakdown/imaging/fixed_light_trace_rectangular_jitvmap16_captured_pix1_libcertified_fbon_b16_hpc_a100_fp64_fixed_light_trace.png new file mode 100644 index 000000000..d6299eb11 Binary files /dev/null and b/results/breakdown/imaging/fixed_light_trace_rectangular_jitvmap16_captured_pix1_libcertified_fbon_b16_hpc_a100_fp64_fixed_light_trace.png differ diff --git a/results/breakdown/imaging/fixed_light_trace_rectangular_jitvmap16_captured_pix1_libpdip_fbon_b16_hpc_a100_fp64_fixed_light_trace.json b/results/breakdown/imaging/fixed_light_trace_rectangular_jitvmap16_captured_pix1_libpdip_fbon_b16_hpc_a100_fp64_fixed_light_trace.json new file mode 100644 index 000000000..e30e03cc7 --- /dev/null +++ b/results/breakdown/imaging/fixed_light_trace_rectangular_jitvmap16_captured_pix1_libpdip_fbon_b16_hpc_a100_fp64_fixed_light_trace.json @@ -0,0 +1,5663 @@ +{ + "device": { + "backend": "gpu", + "device": "cuda:0", + "hostname": "euclid-ral-gpu-2", + "xla_flags": "--xla_disable_hlo_passes=constant_folding --xla_gpu_autotune_level=0 --xla_gpu_enable_triton_gemm=false", + "omp_num_threads": null, + "cpu_count": 124, + "jax_compilation_cache_dir": "/mnt/ral/jnightin/autolens_profiling_wt/certified-solver-phase-c1-lane-rate/output/jax_cache/fixed_light_lanerate_rectangular_pix1_time_16_pdip_on_350768_20", + "autotune_cache_entries_at_start": 0, + "cache_fresh": true, + "nvidia_smi": "NVIDIA A100 80GB PCIe, 35453 MiB, 81920 MiB" + }, + "machine": { + "cpu_model": "AMD EPYC 7702 64-Core Processor", + "cpu_count_os": 124, + "nproc": 4, + "nproc_all": 124, + "nproc_note": "GNU nproc honours OMP_NUM_THREADS, so `nproc` can print 1 on a multi-core host; `nproc_all` is the core count.", + "ram_total": "928298204 kB", + "kernel": "5.14.0-687.50.1.el9_8.x86_64", + "platform": "Linux-5.14.0-687.50.1.el9_8.x86_64-x86_64-with-glibc2.34", + "python": "3.12.4", + "jax_thread_env": { + "NPROC": null + }, + "blas_thread_env": { + "OMP_NUM_THREADS": null, + "OPENBLAS_NUM_THREADS": null, + "MKL_NUM_THREADS": null, + "VECLIB_MAXIMUM_THREADS": null, + "NUMEXPR_NUM_THREADS": null + }, + "thread_env_note": "NPROC sizes XLA's CPU intra-op pool (the JAX rows); the BLAS knobs pin OpenBLAS/MKL/OpenMP (the numpy/scipy rows) and do not touch JAX. Two disjoint families; both are recorded on every CPU timing.", + "gpu": "NVIDIA A100 80GB PCIe, 81920 MiB, 610.57.04" + }, + "precision": "fp64", + "configuration": { + "pixel_scale_arcsec": 0.05, + "mask_radius_arcsec": 3.5, + "image_pixels_masked": 15361, + "over_sampled_pixels": 62752, + "mesh": "rectangular", + "mesh_shape": [ + 39, + 39 + ], + "source_pixels": 1521, + "source_pixels_requested": null, + "dataset": "hst", + "dataset_sha256": { + "data.fits": "e4e833a28e9c6f6fb023cd85c0d3dde74068720256bc77a240633500e5b04fac", + "noise_map.fits": "315c6266a0acd3ac9c8da82fcd2b45a08697362481fd7a35072bab1658530ba3", + "psf.fits": "8389ba0e8bf4a09b4a561cfc246181a2fb944ed396754cd0ff76fdd22910d303" + }, + "cell_source_sha256": "06a162fcdae6b329384ec33322f443df07215d86e56f0505ac15b3d3473eb432", + "inversion_path": "dense", + "pass_budget": 11, + "pass_budget_basis": "phase 3 (autolens_profiling#255): the smallest ZERO-fallback budget per mesh, the budget a production run fixes. NOT phase 0's certifying budget (2 for Delaunay), which falls back on 67.5 % of a graded draw set and is not a production cost.", + "border_relocator_mode": "cell", + "border_relocator": true, + "border_relocator_note": "'cell' is use_border_relocator=True, which every profiling cell in this family forces; 'library' passes None and takes the shipped config default, which is what production runs. The resolved boolean is what this leg actually ran.", + "routes_selected": [ + "b", + "d" + ], + "trace_calls": 10, + "command_buffers_traced": "off", + "use_mixed_precision": false, + "tau_rel": 1e-09, + "regularization": { + "scheme": "constant", + "coefficient": 1.0 + }, + "thread_env": { + "n_threads": null, + "vars": [ + "OPENBLAS_NUM_THREADS", + "MKL_NUM_THREADS", + "OMP_NUM_THREADS", + "VECLIB_MAXIMUM_THREADS", + "NUMEXPR_NUM_THREADS" + ], + "set_to": null, + "preexisting": {}, + "overridden": {}, + "note": "Not pinned (legacy variant): recorded as found." + }, + "over_sample_size_lp_rule": { + "sub_size_list": [ + 4, + 2, + 2 + ], + "radial_list": [ + 0.3, + 0.6 + ], + "centre": [ + 0.0, + 0.0 + ] + }, + "vmap_batch": 16, + "lanes": "captured", + "arms": [ + "vmap", + "scalar" + ], + "fallback": "on", + "draw_seed": 0, + "vmap_composition": "jax.jit(jax.vmap(fn))", + "lane_rtol": 1e-09, + "vmap_flags_note": "Strict ProfileCLI.parse_cell_args rejects unknown flags. These keys record the exact batching program and prevent historical vmap(jit) artifacts from being mistaken for current jit(vmap) measurements.", + "solver_source": "library", + "solver": "pdip", + "certified_fallback": "pdip", + "certified_pass_budget": 16, + "captured_pass": "time", + "batches": "/mnt/ral/jnightin/autolens_profiling_wt/certified-solver-phase-c1-lane-rate/results/breakdown/imaging/nautilus_batches_rectangular_pix1.npz" + }, + "solver_injection": { + "patched": null, + "part_v": "none \u2014 library mode selects the solver through al.Settings", + "part_b_route_d": { + "patched": "autoarray.inversion.inversion.inversion_util.reconstruction_positive_only_from", + "pass_budget": 11, + "fallback": true + }, + "note": "Library mode (phase B, #300): PART V's arms and references run the library's own positive-only solve, selected by Settings(positive_only_solver, certified_fallback, certified_pass_budget); nothing is injected. PART B's single-call route d (the fiducial d == b pin) still uses the phase-1 harness injection at the phase-3 budget and is not a phase-B row. The untimed certification report observes the library solve (library_solver_observed) without changing it." + }, + "routes": { + "b_s3_pdip": { + "label": "S3 PDIP (source-only)", + "status": "ok", + "solver": "library", + "ms": 38.99015970018809, + "log_likelihood": 28622.39485118912 + }, + "d_s3_certified_fallback": { + "label": "S3 certified active set, budget 11, PDIP fallback", + "status": "ok", + "solver": "harness-injected certified active set", + "pass_budget": 11, + "fallback": true, + "injected_solver_calls_jax": 1, + "injected_solver_calls_numpy": 0, + "ms": 30.333011699985946, + "log_likelihood": 28622.394851189252 + } + }, + "equivalence_pins": [ + { + "pin": "route d (certified, fallback) == route b (library PDIP)", + "route": "d_s3_certified_fallback", + "reference": "b_s3_pdip", + "expectation": "the certified active set returns the library's own positive solution", + "rtol": 1e-09, + "got": 28622.394851189252, + "reference_value": 28622.39485118912, + "rel_diff": 4.575691088611358e-15, + "status": "PASS" + } + ], + "equivalence_rtol": 1e-09, + "reference": { + "log_evidence_s0_library": 28622.394851199875, + "log_evidence_s3_library": 28622.39485119987, + "s3": { + "n_params": 1521, + "n_mapper": 1521, + "n_funcs": 0, + "edge_zeroed_pixels": 152, + "subtracted_light_flux": 5253.476646922047 + } + }, + "command_buffers": { + "wall_on_ms": 661.7818452999927, + "wall_off_ms": 667.6247766001325, + "command_buffer_delta_ms": 5.842931300139753, + "command_buffer_delta_pct": 0.8829089739521474, + "traced": "off", + "compiler_option": "xla_gpu_enable_command_buffer", + "probe": { + "note": "Not taken in --vmap-batch mode: the CUPTI-inside-a-CUDA-graph probe is a phase-1 diagnostic about the JOIN, and this mode already compiles and times both the command-buffers ON and OFF executable of every arm." + }, + "note": "ONE lowering, TWO compilations, one process. wall_on_ms is the PRODUCTION program (CUDA graphs as XLA ships them) and is the number comparable to phase 5's row; wall_off_ms is the graph-less program the stage rows attribute. The delta is the launch overhead the graphs remove \u2014 it lands in device_idle and host_outside_span, not in any stage. Reconciliation is computed against wall_off_ms." + }, + "trace": { + "parser": "ProfileData.from_file(xplane) + as_text() + stack_frame_index(proto field 17)", + "stage_audit": { + "mesh_construction": [ + { + "instruction": "fusion.2", + "ms": 0.14868716250000005, + "opcode": "fusion", + "shape": "(f64[15361,2]{1,0}, s64[15361,2]{1,0}, s32[15361,2]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:227", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:227 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_select_fusion", + "ms": 0.039655062499999845, + "opcode": "fusion", + "shape": "(u32[2,15361]{1,0}, u32[2,15361]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69 (forward_interp)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:573 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/abstract.py:36 (AbstractInterpolator.mappings)" + ] + }, + { + "instruction": "loop_select_fusion.1", + "ms": 0.03491270624999978, + "opcode": "fusion", + "shape": "(u32[15361]{0}, u32[15361]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_select_fusion.4", + "ms": 0.034876706249999403, + "opcode": "fusion", + "shape": "(u32[15361]{0}, u32[15361]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_add_fusion", + "ms": 0.020992356249999514, + "opcode": "fusion", + "shape": "s64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69 (forward_interp)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:573 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/abstract.py:36 (AbstractInterpolator.mappings)" + ] + }, + { + "instruction": "loop_add_fusion.1", + "ms": 0.02043442499999958, + "opcode": "fusion", + "shape": "s64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "mixed_fusion": [ + { + "instruction": "loop_divide_gather_fusion", + "ms": 0.69834855, + "opcode": "fusion", + "shape": "(f64[15361,1,1,1521]{3,2,1,0}, f64[15361,1,1,1521]{3,2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_add_multiply_fusion", + "ms": 0.08985887499999999, + "opcode": "fusion", + "shape": "(f64[1369,1369]{1,0}, f64[1369,1369]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:61", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:61 (initialize)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:72 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:508 (reconstruction_positive_only_from)" + ] + }, + { + "instruction": "input_transpose_fusion.3", + "ms": 0.03090203125, + "opcode": "fusion", + "shape": "f64[1521,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1157 (AbstractInversion.log_det_regularization_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:348 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "loop_reduce_fusion.1", + "ms": 0.02713931875000001, + "opcode": "fusion", + "shape": "f64[92,2]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:556", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:556 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/abstract.py:36 (AbstractInterpolator.mappings)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:167 (Mapper.pix_indexes_for_sub_slim_index)" + ] + }, + { + "instruction": "input_transpose_fusion.2", + "ms": 0.02566110000000001, + "opcode": "fusion", + "shape": "f64[1521,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1078 (AbstractInversion.log_det_curvature_reg_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:347 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "input_transpose_fusion.4", + "ms": 0.016269693750000005, + "opcode": "fusion", + "shape": "f64[1369,1369]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:62", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:62 (initialize)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:72 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:508 (reconstruction_positive_only_from)" + ] + } + ], + "ray_trace_data_grid": [ + { + "instruction": "input_reduce_fusion.16", + "ms": 0.0028033562499999998, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:506", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:506 (FlatLambdaCDM._simpson_1d)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:644 (FlatLambdaCDM.angular_diameter_distance_kpc_z1z2)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:151 (LensingCosmology.angular_diameter_distance_between_redshifts_in_kpc_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:355 (LensingCosmology.scaling_factor_between_redshifts_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer_util.py:252 (traced_grid_2d_list_from)" + ] + }, + { + "instruction": "input_reduce_fusion.14", + "ms": 0.0027743375, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:506", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:506 (FlatLambdaCDM._simpson_1d)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:644 (FlatLambdaCDM.angular_diameter_distance_kpc_z1z2)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:133 (LensingCosmology.angular_diameter_distance_to_earth_in_kpc_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:362 (LensingCosmology.scaling_factor_between_redshifts_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer_util.py:252 (traced_grid_2d_list_from)" + ] + }, + { + "instruction": "input_reduce_fusion.15", + "ms": 0.0026159812500000054, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:503", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:503 (FlatLambdaCDM._simpson_1d)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:644 (FlatLambdaCDM.angular_diameter_distance_kpc_z1z2)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:133 (LensingCosmology.angular_diameter_distance_to_earth_in_kpc_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:362 (LensingCosmology.scaling_factor_between_redshifts_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer_util.py:252 (traced_grid_2d_list_from)" + ] + }, + { + "instruction": "input_reduce_fusion.17", + "ms": 0.00257735, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:503", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:503 (FlatLambdaCDM._simpson_1d)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:644 (FlatLambdaCDM.angular_diameter_distance_kpc_z1z2)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:151 (LensingCosmology.angular_diameter_distance_between_redshifts_in_kpc_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:355 (LensingCosmology.scaling_factor_between_redshifts_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer_util.py:252 (traced_grid_2d_list_from)" + ] + }, + { + "instruction": "loop_divide_fusion.2", + "ms": 0.002070731250000002, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:380", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:380 (LensingCosmology.scaling_factor_between_redshifts_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer_util.py:252 (traced_grid_2d_list_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer.py:632 (Tracer.traced_grid_2d_list_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/structures/decorators/abstract.py:93 (AbstractMaker.evaluate_func)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/structures/decorators/abstract.py:110 (AbstractMaker.result)" + ] + } + ], + "border_relocator": [ + { + "instruction": "eigh.0", + "ms": 0.07508699374999986, + "opcode": "custom-call", + "shape": "(f64[2,2]{0,1}, f64[2]{0}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "custom-call.2", + "ms": 0.007893050000000006, + "opcode": "custom-call", + "shape": "(f64[2,2]{1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_reduce_fusion.11", + "ms": 0.005195931249999998, + "opcode": "fusion", + "shape": "(f64[], f64[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:270", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:270 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_add_fusion.7", + "ms": 0.00361134374999999, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:423 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_concatenate_fusion.1", + "ms": 0.0035696999999999973, + "opcode": "fusion", + "shape": "f64[15361,2]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:323", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:323 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:423 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_select_sine_fusion", + "ms": 0.0033085562499999993, + "opcode": "fusion", + "shape": "(f64[], f64[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:301", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:301 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:423 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + } + ], + "other": [ + { + "instruction": "copy.31", + "ms": 0.030478974999999475, + "opcode": "copy", + "shape": "u32[2,15361]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.32", + "ms": 0.0303792312499996, + "opcode": "copy", + "shape": "u32[2,15361]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.49", + "ms": 0.02871175000000049, + "opcode": "copy", + "shape": "u32[15361]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.41", + "ms": 0.02867093750000055, + "opcode": "copy", + "shape": "u32[15361]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.50", + "ms": 0.028484112500000856, + "opcode": "copy", + "shape": "u32[15361]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.40", + "ms": 0.028408175000000962, + "opcode": "copy", + "shape": "u32[15361]{0}", + "source": "", + "stack": [] + } + ], + "mapping_matrix": [ + { + "instruction": "loop_broadcast_fusion.1", + "ms": 0.13644355, + "opcode": "fusion", + "shape": "f64[15361,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:342", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:342 (mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:283 (Mapper.mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:91 (AbstractInversionImaging._mapping_matrix_for_convolution_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:137 (AbstractInversionImaging.operated_mapping_matrix_list)" + ] + }, + { + "instruction": "input_reduce_fusion.25", + "ms": 0.0028621500000000004, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:362 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + }, + { + "instruction": "loop_divide_fusion.1", + "ms": 0.002349793750000001, + "opcode": "fusion", + "shape": "f64[1521]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:92", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:92 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:362 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + } + ], + "regularization_H": [ + { + "instruction": "loop_broadcast_fusion.2", + "ms": 0.019296431249999992, + "opcode": "fusion", + "shape": "(f64[1521,1521]{1,0}, f64[1521,1521]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:111", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:111 (weighted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:366 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_scatter_fusion.8", + "ms": 0.0028075500000000024, + "opcode": "fusion", + "shape": "f64[1521,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:123 (weighted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:366 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "psf_convolution_mapping_matrix": [ + { + "instruction": "fft.19.0", + "ms": 1.78361086875, + "opcode": "fft", + "shape": "f64[1521,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_scatter_fusion", + "ms": 1.5050567187499995, + "opcode": "fusion", + "shape": "f64[1521,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.15.0", + "ms": 1.3871463687500003, + "opcode": "fft", + "shape": "c128[1521,180,91]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.17.0", + "ms": 0.9924331812499999, + "opcode": "fft", + "shape": "c128[1521,91,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_transpose_fusion.1", + "ms": 0.5220780812500002, + "opcode": "fusion", + "shape": "c128[1521,91,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "wrapped_transpose.2", + "ms": 0.5072184624999998, + "opcode": "fusion", + "shape": "c128[1521,180,91]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + } + ], + "curvature_matrix_F": [ + { + "instruction": "cublas-lt-matmul.2", + "ms": 4.378591162499999, + "opcode": "custom-call", + "shape": "(f64[1521,1521]{1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "data_vector_D": [ + { + "instruction": "input_reduce_fusion.7", + "ms": 0.1137388000000001, + "opcode": "fusion", + "shape": "f64[92,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123 (data_vector_via_blurred_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:67 (InversionImagingMapping.data_vector)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:699 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_reduce_fusion.23", + "ms": 0.003733112499999998, + "opcode": "fusion", + "shape": "f64[1521]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123 (data_vector_via_blurred_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:67 (InversionImagingMapping.data_vector)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:699 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "inversion_other": [ + { + "instruction": "cholesky.60", + "ms": 0.9182304375000017, + "opcode": "custom-call", + "shape": "(f64[1521,1521]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1078 (AbstractInversion.log_det_curvature_reg_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:347 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "cholesky.70", + "ms": 0.900068837500001, + "opcode": "custom-call", + "shape": "(f64[1521,1521]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1157 (AbstractInversion.log_det_regularization_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:348 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "input_reduce_fusion.13", + "ms": 0.018974237499999998, + "opcode": "fusion", + "shape": "f64[1521]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:946", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:946 (AbstractInversion.regularization_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:346 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)", + "/mnt/ral/jnightin/autolens_profiling_wt/certified-solver-phase-c1-lane-rate/scripts/imaging/likelihood_breakdown/fixed_light_trace.py:1195 (_captured_likelihood_fn.._likelihood)" + ] + }, + { + "instruction": "loop_reduce_window_fusion.3", + "ms": 0.0057904937499999925, + "opcode": "fusion", + "shape": "s64[6,16]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "input_scatter_fusion.11", + "ms": 0.003821343750000001, + "opcode": "fusion", + "shape": "pred[1521]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:526", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:526 (AbstractInversion.zeroed_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:567 (AbstractInversion.solve_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:684 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_reduce_window_fusion.2", + "ms": 0.003105518750000003, + "opcode": "fusion", + "shape": "s64[86,16]{1,0}", + "source": "", + "stack": [] + } + ], + "pdip_solve": [ + { + "instruction": "cholesky.20", + "ms": 14.245732850000072, + "opcode": "custom-call", + "shape": "(f64[1369,1369]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:106", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:106 (factorize_kkt)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:212 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve", + "ms": 2.1669083187500173, + "opcode": "custom-call", + "shape": "(f64[1369,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:213 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve.2", + "ms": 2.078144474999935, + "opcode": "custom-call", + "shape": "(f64[1369,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:217 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve.3", + "ms": 2.0590597437499127, + "opcode": "custom-call", + "shape": "(f64[1369,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:217 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve.1", + "ms": 2.004522081249921, + "opcode": "custom-call", + "shape": "(f64[1369,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:213 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "cholesky.40", + "ms": 0.8455922750000019, + "opcode": "custom-call", + "shape": "(f64[1369,1369]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:62", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:62 (initialize)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:72 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:508 (reconstruction_positive_only_from)" + ] + } + ], + "mapped_reconstruction": [ + { + "instruction": "input_reduce_fusion.10", + "ms": 0.11175244374999993, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163 (mapped_reconstructed_data_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:120 (InversionImagingMapping._mapped_reconstructed_data_dict_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:196 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + } + ], + "chi_squared_evidence": [ + { + "instruction": "input_reduce_fusion.22", + "ms": 0.0038462874999999975, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:104", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:104 (noise_normalization_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:98 (AbstractFit.noise_normalization)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:306 (FitDataset.noise_normalization)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:349 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)" + ] + }, + { + "instruction": "input_reduce_fusion.24", + "ms": 0.003808350000000001, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:90", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:90 (chi_squared_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:87 (AbstractFit.chi_squared)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:293 (FitDataset.chi_squared)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:345 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)" + ] + }, + { + "instruction": "loop_multiply_fusion.2", + "ms": 0.0029753624999999955, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:300", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:300 (AbstractNDArray.__pow__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:60 (unwrap_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:35 (to_new_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:78 (chi_squared_map_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:78 (AbstractFit.chi_squared_map)" + ] + } + ] + }, + "stage_audit_note": "The HLO instructions that contributed most of each stage's milliseconds, with their full source stack. A stage row is only as good as the rules that built it; this is how a reader checks a row against the HLO instead of trusting it.", + "untraced_wall_ms": 41.72168969375889, + "reconciliation_vs_untraced_pct": 2.5323308038244132, + "wall_basis": "wall_ms is the TRACED run's wall, the run these kernel durations came from. untraced_wall_ms is the same executable without the profiler; the difference is the profiler's overhead and belongs in neither the stages nor the idle row.", + "calls": 160, + "call_split": "per-call (first-instruction recurrence)", + "call_blocks": 160, + "events": 149920, + "streams": [ + "Stream #14(MemcpyD2H,Compute,MemcpyH2D,Memset,MemcpyD2D)" + ], + "per_stage_ms": { + "border_relocator": { + "median_ms": 0.10588700000000002, + "min_ms": 0.10514500000000002, + "max_ms": 0.26473800000000003 + }, + "chi_squared_evidence": { + "median_ms": 0.010608, + "min_ms": 0.010303, + "max_ms": 0.011040000000000001 + }, + "curvature_matrix_F": { + "median_ms": 4.3614075, + "min_ms": 4.336079, + "max_ms": 4.532242 + }, + "data_vector_D": { + "median_ms": 0.11744149999999999, + "min_ms": 0.11657200000000001, + "max_ms": 0.118588 + }, + "inversion_other": { + "median_ms": 1.8648995000000002, + "min_ms": 1.8517009999999998, + "max_ms": 1.8848850000000001 + }, + "mapped_reconstruction": { + "median_ms": 0.1117135, + "min_ms": 0.111073, + "max_ms": 0.112604 + }, + "mapping_matrix": { + "median_ms": 0.141658, + "min_ms": 0.141593, + "max_ms": 0.141786 + }, + "memset": { + "median_ms": 0.05356750000000002, + "min_ms": 0.038175, + "max_ms": 0.06268900000000001 + }, + "mesh_construction": { + "median_ms": 0.38247850000000005, + "min_ms": 0.37994000000000033, + "max_ms": 0.38427200000000006 + }, + "mixed_fusion": { + "median_ms": 0.9923545000000001, + "min_ms": 0.989497, + "max_ms": 0.9949700000000001 + }, + "other": { + "median_ms": 0.19586199999999968, + "min_ms": 0.19480499999999976, + "max_ms": 0.1963349999999997 + }, + "pdip_solve": { + "median_ms": 25.223602499999984, + "min_ms": 18.133828999999995, + "max_ms": 29.62129000000002 + }, + "psf_convolution_mapping_matrix": { + "median_ms": 6.9307155, + "min_ms": 6.907947, + "max_ms": 6.949066999999999 + }, + "ray_trace_data_grid": { + "median_ms": 0.012832000000000001, + "min_ms": 0.012735, + "max_ms": 0.013056000000000002 + }, + "regularization_H": { + "median_ms": 0.0220635, + "min_ms": 0.021505, + "max_ms": 0.023230999999999998 + } + }, + "stage_order": [ + "ray_trace_data_grid", + "border_relocator", + "mesh_construction", + "mapping_matrix", + "psf_convolution_mapping_matrix", + "data_vector_D", + "curvature_matrix_F", + "regularization_H", + "pdip_solve", + "mapped_reconstruction", + "chi_squared_evidence", + "inversion_other", + "mixed_fusion", + "other", + "memset" + ], + "mixed_fusion": { + "ms": 0.9923545000000001, + "constituent_stage_sets": { + "curvature_matrix_F + psf_convolution_mapping_matrix": 0.69834855, + "inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": 0.08985887499999999, + "inversion_other + regularization_H": 0.03090203125, + "border_relocator + mesh_construction": 0.030603243750000016, + "curvature_reg_reduce_gather + inversion_other": 0.02566110000000001, + "border_relocator + inversion_other + mapping_matrix + mesh_construction": 0.02049218125000001, + "border_relocator + pdip_solve": 0.016269693750000005, + "inversion_other + mapping_matrix + regularization_H": 0.015486306249999976, + "inversion_other + mapping_matrix + mesh_construction": 0.012841743749999999, + "grids_and_structures + mass_profile_deflections": 0.010084231249999995, + "inversion_other + mapped_reconstruction + reconstruction_scatter": 0.009653781250000002, + "inversion_other + mapped_reconstruction": 0.00894964375, + "inversion_other + mesh_construction": 0.005592074999999995, + "grids_and_structures + mass_profile_deflections + ray_trace_data_grid": 0.005271243749999998, + "inversion_other + ray_trace_data_grid": 0.004773912499999996, + "border_relocator + inversion_other": 0.0033671562500000017, + "border_relocator + inversion_other + mesh_construction": 0.0024583437500000044, + "chi_squared_evidence + inversion_other": 0.0017903500000000007 + }, + "example_kernels": { + "curvature_matrix_F + psf_convolution_mapping_matrix": [ + "loop_divide_gather_fusion" + ], + "inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": [ + "loop_add_multiply_fusion" + ], + "inversion_other + regularization_H": [ + "input_transpose_fusion.3" + ], + "border_relocator + mesh_construction": [ + "loop_reduce_fusion.1", + "loop_select_fusion.5" + ], + "curvature_reg_reduce_gather + inversion_other": [ + "input_transpose_fusion.2" + ], + "border_relocator + inversion_other + mapping_matrix + mesh_construction": [ + "input_scatter_fusion.6", + "input_scatter_fusion.10" + ], + "border_relocator + pdip_solve": [ + "input_transpose_fusion.4" + ], + "inversion_other + mapping_matrix + regularization_H": [ + "input_scatter_fusion.4", + "input_scatter_fusion.5", + "input_scatter_fusion.2", + "input_scatter_fusion.3" + ], + "inversion_other + mapping_matrix + mesh_construction": [ + "input_scatter_fusion.7" + ], + "grids_and_structures + mass_profile_deflections": [ + "loop_divide_minimum_multiply_sine_sqrt_fusion", + "loop_slice_fusion" + ] + }, + "prorated_estimate_ms": { + "curvature_matrix_F": 0.349174275, + "psf_convolution_mapping_matrix": 0.349174275, + "inversion_other": 0.08158595677083331, + "border_relocator": 0.031062540104166682, + "pdip_solve": 0.030599565625, + "mapped_reconstruction": 0.03015746770833333, + "mesh_construction": 0.028320733854166672, + "reconstruction_scatter": 0.02568264583333333, + "regularization_H": 0.020613117708333326, + "mapping_matrix": 0.014565728645833328, + "curvature_reg_reduce_gather": 0.012830550000000005, + "grids_and_structures": 0.006799196874999997, + "mass_profile_deflections": 0.006799196874999997, + "ray_trace_data_grid": 0.004144037499999998, + "chi_squared_evidence": 0.0008951750000000003 + }, + "prorated_note": "ESTIMATE ONLY \u2014 a mixed fusion's time split equally across the stages its constituents span. Never summed into the measured table, never reconciled." + }, + "other_sources_ms": { + "copy.31": 0.030478974999999475, + "copy.32": 0.0303792312499996, + "copy.49": 0.02871175000000049, + "copy.41": 0.02867093750000055, + "copy.50": 0.028484112500000856, + "copy.40": 0.028408175000000962, + "loop_reduce_window_fusion": 0.006472906250000008, + "loop_reduce_window_fusion.1": 0.004344731249999991, + "copy.69": 0.0017843499999999992, + "loop_broadcast_fusion.3": 0.001777775, + "copy.90": 0.0016805625000000017, + "copy.33": 0.0015455687499999983, + "copy.42": 0.0015387749999999985, + "copy.24": 0.001530781249999998 + }, + "device_span_ms": 42.78826123125, + "device_busy_ms": 40.5371313375, + "device_idle_ms": 2.2511298937499973, + "largest_idle_gaps": [ + { + "gap_ms": 0.052894, + "after": "while.28", + "before": "input_scatter_fusion.1" + }, + { + "gap_ms": 0.04707, + "after": "input_concatenate_fusion.4", + "before": "custom-call.2" + }, + { + "gap_ms": 0.036286, + "after": "loop_multiply_fusion.3", + "before": "eigh.0" + }, + { + "gap_ms": 0.033407, + "after": "loop_add_fusion.5", + "before": "loop_select_fusion.4" + }, + { + "gap_ms": 0.032767, + "after": "eigh.0", + "before": "eigh.0" + }, + { + "gap_ms": 0.025247, + "after": "eigh.0", + "before": "eigh.0" + }, + { + "gap_ms": 0.022911, + "after": "loop_add_fusion.1", + "before": "loop_select_fusion.1" + }, + { + "gap_ms": 0.020639, + "after": "loop_broadcast_fusion.6", + "before": "loop_broadcast_fusion.8" + } + ], + "kernel_ms": 40.527090999999984, + "sum_ms": 42.77822089374998, + "wall_ms": 42.793087456243484, + "host_outside_span_ms": 0.004826224993486505, + "reconciliation_pct": -0.034740569978044485, + "unjoined_ms": 0.0, + "unjoined_pct": 0.0, + "other_ms": 0.19586199999999968, + "other_pct": 0.457695416812987, + "note": "Stage rows attribute the command-buffers-OFF program (see the module docstring): kernel times are the same, the launch overhead the CUDA graphs remove is not. sum_ms = kernel rows + device_idle_ms; the residual against wall_ms is host_outside_span_ms (dispatch before the first kernel, teardown after the last).", + "per_stage_ms_per_lane": { + "border_relocator": 0.10588700000000002, + "chi_squared_evidence": 0.010608, + "curvature_matrix_F": 4.3614075, + "data_vector_D": 0.11744149999999999, + "inversion_other": 1.8648995000000002, + "mapped_reconstruction": 0.1117135, + "mapping_matrix": 0.141658, + "memset": 0.05356750000000002, + "mesh_construction": 0.38247850000000005, + "mixed_fusion": 0.9923545000000001, + "other": 0.19586199999999968, + "pdip_solve": 25.223602499999984, + "psf_convolution_mapping_matrix": 6.9307155, + "ray_trace_data_grid": 0.012832000000000001, + "regularization_H": 0.0220635 + }, + "per_lane_divisor": 1, + "host_callback": { + "pure_callback_span_ms": 0, + "qhull_ms": 0.0, + "callback_body_ms_note": "the OUTERMOST matching body event, not a sum: under the probe the body appears twice (the wrapper and the timed re-implementation it calls) and summing them would count the same work twice", + "events_by_name": { + "ThenExecuteCallback:GetEventForComputeStreamSyncPoint": { + "count": 160, + "ms": 0.2949737000000001 + } + }, + "note": "HOST milliseconds per traced BATCH (the whole invocation), aggregated by name because the events nest. Not a row of the device table: the device pays for them as the idle gaps largest_idle_gaps names." + }, + "host_callback_ms": 0 + }, + "hlo_census": { + "status": "excluded", + "reason": "The legacy census anchors PyAutoArray source line numbers that moved after the phase-1 run. No batched attribution is published from unsupported anchors; the device-event table and wall reconciliation remain valid." + }, + "stage_map_provenance": [ + { + "label": "log_det_curvature_reg", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 850, + 882 + ], + "requires": { + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 884, + 896 + ] + }, + "function": null + }, + { + "label": "log_det_regularization", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 850, + 882 + ], + "requires": { + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 897, + 943 + ] + }, + "function": null + }, + { + "label": "curvature_reg_add", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 359, + 372 + ], + "requires": null, + "function": null + }, + { + "label": "curvature_reg_reduce_gather", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 374, + 398 + ], + "requires": null, + "function": null + }, + { + "label": "edge_subset_gather", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 606, + 614 + ], + "requires": null, + "function": null + }, + { + "label": "regularization_term", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 786, + 849 + ], + "requires": null, + "function": null + }, + { + "label": "mapped_reconstruction", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 722, + 785 + ], + "requires": null, + "function": null + }, + { + "label": "reconstruction_scatter", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 583, + 605 + ], + "requires": null, + "function": null + }, + { + "label": "reconstruction_scatter", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 615, + 721 + ], + "requires": null, + "function": null + }, + { + "label": "certified_active_set_solve", + "path": "likelihood_breakdown/active_set_steps.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "certified_active_set_solve", + "path": "likelihood_breakdown/library_solver_injection.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "pdip_solve", + "path": "PyAutoArray/autoarray/util/jax_nnls.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "pdip_solve", + "path": "PyAutoArray/autoarray/inversion/inversion/inversion_util.py", + "lines": [ + 256, + 488 + ], + "requires": null, + "function": null + }, + { + "label": "mapped_reconstruction", + "path": "PyAutoArray/autoarray/inversion/inversion/inversion_util.py", + "lines": [ + 156, + 200 + ], + "requires": null, + "function": null + }, + { + "label": "curvature_matrix_F", + "path": "PyAutoArray/autoarray/inversion/inversion/inversion_util.py", + "lines": [ + 12, + 155 + ], + "requires": null, + "function": null + }, + { + "label": "reconstruction_scatter", + "path": "PyAutoArray/autoarray/inversion/inversion/inversion_util.py", + "lines": [ + 201, + 255 + ], + "requires": null, + "function": null + }, + { + "label": "data_vector_D", + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py", + "lines": [ + 54, + 73 + ], + "requires": null, + "function": null + }, + { + "label": "curvature_matrix_F", + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py", + "lines": [ + 74, + 110 + ], + "requires": null, + "function": null + }, + { + "label": "data_vector_D", + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py", + "lines": null, + "requires": null, + "function": "data_vector_via_blurred_mapping_matrix_from" + }, + { + "label": "curvature_matrix_F", + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "likelihood_breakdown/psf_cube_injection.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": [ + 1086, + 1300 + ], + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": [ + 632, + 642 + ], + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": [ + 670, + 691 + ], + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": null, + "requires": { + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": [ + 1086, + 1300 + ] + }, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": null, + "requires": { + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py", + "lines": [ + 119, + 150 + ] + }, + "function": null + }, + { + "label": "psf_convolution_image", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py", + "lines": [ + 119, + 150 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_qhull_callback", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 139, + 172 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_seed_argmin", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 173, + 207 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_locate_walk", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 208, + 372 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_dual_areas", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 373, + 396 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_dual_areas", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 437, + 494 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_dual_areas", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 605, + 615 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_interpolation_weights", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 616, + 695 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_interpolation_weights", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 896, + 1000 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_construction", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "border_relocator", + "path": "PyAutoArray/autoarray/inversion/mesh/border_relocator.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "mesh_construction", + "path": "PyAutoArray/autoarray/inversion/mesh/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "mapping_matrix", + "path": "PyAutoArray/autoarray/inversion/mappers/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "mapping_matrix", + "path": "PyAutoArray/autoarray/inversion/mappings/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "mapping_matrix", + "path": "PyAutoArray/autoarray/inversion/linear_obj/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "regularization_H", + "path": "PyAutoArray/autoarray/inversion/regularization/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "chi_squared_evidence", + "path": "PyAutoArray/autoarray/fit/fit_util.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "chi_squared_evidence", + "path": "PyAutoArray/autoarray/fit/fit_dataset.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "ray_trace_mesh_grid", + "path": "PyAutoLens/autolens/lens/to_inversion.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "ray_trace_mesh_grid", + "path": "PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "mass_profile_deflections", + "path": "PyAutoGalaxy/autogalaxy/profiles/mass/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "light_profile_image", + "path": "PyAutoGalaxy/autogalaxy/profiles/light/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "light_profile_image", + "path": "PyAutoGalaxy/autogalaxy/operate/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "ray_trace_data_grid", + "path": "PyAutoLens/autolens/lens/tracer.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "ray_trace_data_grid", + "path": "PyAutoLens/autolens/lens/tracer_util.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "grids_and_structures", + "path": "PyAutoArray/autoarray/structures/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "grids_and_structures", + "path": "PyAutoArray/autoarray/operators/over_sampling/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "grids_and_structures", + "path": "PyAutoArray/autoarray/geometry/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "inversion_other", + "path": "PyAutoArray/autoarray/inversion/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "fit_imaging_other", + "path": "PyAutoLens/autolens/imaging/fit_imaging.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "fit_imaging_other", + "path": "PyAutoGalaxy/autogalaxy/imaging/fit_imaging.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "fit_imaging_other", + "path": "PyAutoArray/autoarray/fit/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "analysis_other", + "path": "PyAutoLens/autolens/analysis/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "analysis_other", + "path": "PyAutoGalaxy/autogalaxy/analysis/", + "lines": null, + "requires": null, + "function": null + } + ], + "trace_timing": { + "traced_wall_ms": 42.793087456243484, + "untraced_wall_ms": 41.72168969375889, + "profiler_overhead_ms": 1.0713977624845938, + "profiler_overhead_pct": 2.567963498958824 + }, + "jit_phases": { + "b_s3_pdip_library_likelihood_jit": { + "lower_s": 1.2723002359998645, + "compile_s": 3.444784950999747, + "first_call_s": 0.10170477900101105, + "steady_per_call_s": 0.038990159700188085 + }, + "d_s3_certified_fallback_library_likelihood_jit": { + "lower_s": 0.47242535400073393, + "compile_s": 3.68565623899849, + "first_call_s": 0.040132984999218024, + "steady_per_call_s": 0.030333011699985944 + } + }, + "peak_bytes": { + "after_setup": 85616640, + "after_routes": 1197479168, + "after_all": 19155302144, + "note": "jax.devices()[0].memory_stats()['peak_bytes_in_use']; None on a backend that does not report it (CPU). Process-wide high-water marks." + }, + "note": "Every stage row is a MEASURED sum of GPU kernel durations joined to library source through the optimized HLO of ONE program \u2014 not arithmetic across compilations. The rows attribute the command-buffers-OFF program: kernel time is the same as production, the launch overhead the CUDA graphs remove is not, and command_buffers.* carries both walls and their delta. sum_ms = kernel rows + measured device_idle_ms; the residual against the wall is host_outside_span_ms and is reported, not absorbed. mixed_fusion.prorated_estimate_ms is an ESTIMATE and is never part of the table. No row may be quoted if reconciliation_pct is outside 5 % or unjoined_ms is non-zero.", + "vmap": { + "batch": 16, + "lanes_mode": "captured", + "arms": [ + "vmap", + "scalar" + ], + "draw_seed": 0, + "fallback": true, + "composition": "jax.jit(jax.vmap(fn))", + "composition_provenance": "Current Fitness._vmap after PyAutoFit#1638. Array 343376 used the retired jax.vmap(jax.jit(fn)) composition and is historical evidence only.", + "headline_arm": "scalar", + "lane_rtol": 1e-09, + "lanes": [ + { + "lane": 0, + "draw_name": "call00015_lane00", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.0017002711605432041, + "centre_1": -0.009377257327484623, + "ell_comps_0": -0.002548851608736212, + "ell_comps_1": -0.004262475027349674, + "einstein_radius": -0.0230617600435421 + }, + "log_likelihood_vmap": 18463.07897110663, + "log_likelihood_scalar": 18463.078970707007, + "log_likelihood_library_pdip": 18463.07897110663, + "log_likelihood_library_pdip_scalar": 18463.078970707007, + "rel_diff_vmap_vs_library_pdip": 0.0, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 3.996246960014105e-07, + "rel_diff": 2.1644531588444352e-11, + "rel_diff_scalar_vs_library_pdip": 2.1644531587975868e-11, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 3.996246960014105e-07, + "rel_diff_library_pdip_vmap_vs_scalar": 2.1644531588444352e-11, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 1, + "draw_name": "call00015_lane01", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.00044835385344320865, + "centre_1": -0.003464237160596487, + "ell_comps_0": -0.0010036884316776545, + "ell_comps_1": 0.0020035511501456356, + "einstein_radius": -0.05761540720338343 + }, + "log_likelihood_vmap": 15734.21749647698, + "log_likelihood_scalar": 15734.21749633948, + "log_likelihood_library_pdip": 15734.21749647698, + "log_likelihood_library_pdip_scalar": 15734.21749633948, + "rel_diff_vmap_vs_library_pdip": 0.0, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 1.3750104699283838e-07, + "rel_diff": 8.738982222968992e-12, + "rel_diff_scalar_vs_library_pdip": 8.738982222892622e-12, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 1.3750104699283838e-07, + "rel_diff_library_pdip_vmap_vs_scalar": 8.738982222968992e-12, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 2, + "draw_name": "call00015_lane02", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.0017572218110215735, + "centre_1": 0.0022774942133795186, + "ell_comps_0": 0.0023932647815035485, + "ell_comps_1": -0.011727950927316913, + "einstein_radius": -0.027234805142873908 + }, + "log_likelihood_vmap": 18706.165986625834, + "log_likelihood_scalar": 18706.16598652238, + "log_likelihood_library_pdip": 18706.165986625834, + "log_likelihood_library_pdip_scalar": 18706.16598652238, + "rel_diff_vmap_vs_library_pdip": 0.0, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 1.0345320333726704e-07, + "rel_diff": 5.530433302676995e-12, + "rel_diff_scalar_vs_library_pdip": 5.530433302646409e-12, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 1.0345320333726704e-07, + "rel_diff_library_pdip_vmap_vs_scalar": 5.530433302676995e-12, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 3, + "draw_name": "call00015_lane03", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.002862791114730316, + "centre_1": 0.0038524808804676603, + "ell_comps_0": 0.006111415425061918, + "ell_comps_1": -0.022191169695991525, + "einstein_radius": -0.03531000166767062 + }, + "log_likelihood_vmap": -22166.221752036443, + "log_likelihood_scalar": -22166.22175077076, + "log_likelihood_library_pdip": -22166.22174580778, + "log_likelihood_library_pdip_scalar": -22166.221750479657, + "rel_diff_vmap_vs_library_pdip": 2.8099798073767275e-10, + "rel_diff_scalar_vs_library_pdip_scalar": 1.3132765315747392e-11, + "abs_diff_nats": 1.2656819308176637e-06, + "rel_diff": 5.7099579037354596e-11, + "rel_diff_scalar_vs_library_pdip": 2.2389840168753368e-10, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 4.671877832151949e-06, + "rel_diff_library_pdip_vmap_vs_scalar": 2.107656363245962e-10, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 4, + "draw_name": "call00015_lane04", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.0017545152650242774, + "centre_1": 0.005096768299803747, + "ell_comps_0": 0.00015519416981613077, + "ell_comps_1": 0.007279341501820333, + "einstein_radius": -0.03249658545615719 + }, + "log_likelihood_vmap": -194383.53464290412, + "log_likelihood_scalar": NaN, + "log_likelihood_library_pdip": -194383.71431936364, + "log_likelihood_library_pdip_scalar": NaN, + "rel_diff_vmap_vs_library_pdip": 9.243390586977035e-07, + "rel_diff_scalar_vs_library_pdip_scalar": NaN, + "abs_diff_nats": NaN, + "rel_diff": NaN, + "rel_diff_scalar_vs_library_pdip": NaN, + "abs_diff_library_pdip_vmap_vs_scalar_nats": NaN, + "rel_diff_library_pdip_vmap_vs_scalar": NaN, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 5, + "draw_name": "call00015_lane05", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.0009851407640018856, + "centre_1": 0.002274591191563648, + "ell_comps_0": 0.006006903437417319, + "ell_comps_1": 0.008497457839948512, + "einstein_radius": -0.07242218866013372 + }, + "log_likelihood_vmap": 14761.660929764937, + "log_likelihood_scalar": 14761.660929764934, + "log_likelihood_library_pdip": 14761.660929764941, + "log_likelihood_library_pdip_scalar": 14761.66092976493, + "rel_diff_vmap_vs_library_pdip": 2.4644779638287237e-16, + "rel_diff_scalar_vs_library_pdip_scalar": 2.4644779638287257e-16, + "abs_diff_nats": 3.637978807091713e-12, + "rel_diff": 2.464477963828725e-16, + "rel_diff_scalar_vs_library_pdip": 4.928955927657447e-16, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 1.0913936421275139e-11, + "rel_diff_library_pdip_vmap_vs_scalar": 7.393433891486177e-16, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 6, + "draw_name": "call00015_lane06", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.002713857824416392, + "centre_1": 0.00891817739575143, + "ell_comps_0": 0.001298959041684998, + "ell_comps_1": -0.0098959428603974, + "einstein_radius": 0.04379561090121875 + }, + "log_likelihood_vmap": 21597.12687122062, + "log_likelihood_scalar": 21597.126871230066, + "log_likelihood_library_pdip": 21597.126871220295, + "log_likelihood_library_pdip_scalar": 21597.126871229542, + "rel_diff_vmap_vs_library_pdip": 1.4991814224262508e-14, + "rel_diff_scalar_vs_library_pdip_scalar": 2.4256418520144683e-14, + "abs_diff_nats": 9.447830962017179e-09, + "rel_diff": 4.3745777011676537e-13, + "rel_diff_scalar_vs_library_pdip": 4.524495843412258e-13, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 9.247742127627134e-09, + "rel_diff_library_pdip_vmap_vs_scalar": 4.281931658208874e-13, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 7, + "draw_name": "call00015_lane07", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.01063269420288399, + "centre_1": -0.0015469073410711704, + "ell_comps_0": -0.012689283848227026, + "ell_comps_1": 0.0004952469855790744, + "einstein_radius": 0.02732727396499479 + }, + "log_likelihood_vmap": 7413.159095230236, + "log_likelihood_scalar": 7413.159096650659, + "log_likelihood_library_pdip": 7413.159095181654, + "log_likelihood_library_pdip_scalar": 7413.159096744621, + "rel_diff_vmap_vs_library_pdip": 6.55342322566359e-12, + "rel_diff_scalar_vs_library_pdip_scalar": 1.267498989342164e-11, + "abs_diff_nats": 1.4204233593773097e-06, + "rel_diff": 1.9160837381988354e-10, + "rel_diff_scalar_vs_library_pdip": 1.981617970835166e-10, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 1.5629666449967772e-06, + "rel_diff_library_pdip_vmap_vs_scalar": 2.1083678693515843e-10, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 8, + "draw_name": "call00015_lane08", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.003586333218755102, + "centre_1": 0.0002442650473125539, + "ell_comps_0": -0.0025095685188555317, + "ell_comps_1": 0.008402687166147546, + "einstein_radius": 0.003809182535237543 + }, + "log_likelihood_vmap": 19060.202679471302, + "log_likelihood_scalar": 19060.20267912919, + "log_likelihood_library_pdip": 19060.202679471302, + "log_likelihood_library_pdip_scalar": 19060.20267912919, + "rel_diff_vmap_vs_library_pdip": 0.0, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 3.421118890400976e-07, + "rel_diff": 1.7949016324716636e-11, + "rel_diff_scalar_vs_library_pdip": 1.7949016324394468e-11, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 3.421118890400976e-07, + "rel_diff_library_pdip_vmap_vs_scalar": 1.7949016324716636e-11, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 9, + "draw_name": "call00015_lane09", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.004569070502203608, + "centre_1": -0.0008437281377326854, + "ell_comps_0": 0.016330335737132294, + "ell_comps_1": 0.007271610957481866, + "einstein_radius": -0.0644363448871137 + }, + "log_likelihood_vmap": 12782.703321755558, + "log_likelihood_scalar": 12782.70332143049, + "log_likelihood_library_pdip": 12782.703321755558, + "log_likelihood_library_pdip_scalar": 12782.70332143049, + "rel_diff_vmap_vs_library_pdip": 0.0, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 3.250679583288729e-07, + "rel_diff": 2.543029828314087e-11, + "rel_diff_scalar_vs_library_pdip": 2.543029828249417e-11, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 3.250679583288729e-07, + "rel_diff_library_pdip_vmap_vs_scalar": 2.543029828314087e-11, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 10, + "draw_name": "call00015_lane10", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.00041413552102611065, + "centre_1": -0.004015077828810355, + "ell_comps_0": 0.005329766760357603, + "ell_comps_1": 0.01667480963359283, + "einstein_radius": 0.011021193939315443 + }, + "log_likelihood_vmap": 25442.236800481285, + "log_likelihood_scalar": 25442.23680048131, + "log_likelihood_library_pdip": 25442.236800481292, + "log_likelihood_library_pdip_scalar": 25442.23680048131, + "rel_diff_vmap_vs_library_pdip": 2.8597947858286523e-16, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 2.546585164964199e-11, + "rel_diff": 1.0009281750400276e-15, + "rel_diff_scalar_vs_library_pdip": 7.149486964571631e-16, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 1.8189894035458565e-11, + "rel_diff_library_pdip_vmap_vs_scalar": 7.149486964571626e-16, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 11, + "draw_name": "call00015_lane11", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.00234856906735493, + "centre_1": -0.0005637310462631455, + "ell_comps_0": 0.002190699592912508, + "ell_comps_1": -0.01675931647125419, + "einstein_radius": -0.1186639473801736 + }, + "log_likelihood_vmap": -3234.481431636159, + "log_likelihood_scalar": -3234.481430921878, + "log_likelihood_library_pdip": -3234.481431636159, + "log_likelihood_library_pdip_scalar": -3234.481430921878, + "rel_diff_vmap_vs_library_pdip": 0.0, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 7.142807589843869e-07, + "rel_diff": 2.208331611230817e-10, + "rel_diff_scalar_vs_library_pdip": 2.208331610743144e-10, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 7.142807589843869e-07, + "rel_diff_library_pdip_vmap_vs_scalar": 2.208331611230817e-10, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 12, + "draw_name": "call00015_lane12", + "draw_kind": "captured", + "offsets": { + "centre_0": -9.326736988388313e-05, + "centre_1": -0.0013488200741109593, + "ell_comps_0": 0.00997667014421897, + "ell_comps_1": -0.014348588092779897, + "einstein_radius": -0.02126731799195114 + }, + "log_likelihood_vmap": 18883.933556142838, + "log_likelihood_scalar": 18883.93355609074, + "log_likelihood_library_pdip": 18883.933556142838, + "log_likelihood_library_pdip_scalar": 18883.93355609074, + "rel_diff_vmap_vs_library_pdip": 0.0, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 5.209949449636042e-08, + "rel_diff": 2.7589323136310487e-12, + "rel_diff_scalar_vs_library_pdip": 2.7589323136234372e-12, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 5.209949449636042e-08, + "rel_diff_library_pdip_vmap_vs_scalar": 2.7589323136310487e-12, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 13, + "draw_name": "call00015_lane13", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.007013568613743564, + "centre_1": 0.004528745612839986, + "ell_comps_0": -0.018496405934026655, + "ell_comps_1": 0.0014830576999261711, + "einstein_radius": -0.04673040108359361 + }, + "log_likelihood_vmap": 23869.4880678158, + "log_likelihood_scalar": 23869.4880678158, + "log_likelihood_library_pdip": 23869.488067815804, + "log_likelihood_library_pdip_scalar": 23869.4880678158, + "rel_diff_vmap_vs_library_pdip": 1.5241126230926363e-16, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 0.0, + "rel_diff": 0.0, + "rel_diff_scalar_vs_library_pdip": 1.5241126230926363e-16, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 3.637978807091713e-12, + "rel_diff_library_pdip_vmap_vs_scalar": 1.5241126230926365e-16, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 14, + "draw_name": "call00015_lane14", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.005108692197125562, + "centre_1": -0.010240010499870703, + "ell_comps_0": -0.00684600823433492, + "ell_comps_1": -0.002573928604858717, + "einstein_radius": -0.0214638151942923 + }, + "log_likelihood_vmap": -177847.9771108784, + "log_likelihood_scalar": -177848.6863012489, + "log_likelihood_library_pdip": -177847.87433380686, + "log_likelihood_library_pdip_scalar": NaN, + "rel_diff_vmap_vs_library_pdip": 5.778931680515601e-07, + "rel_diff_scalar_vs_library_pdip_scalar": NaN, + "abs_diff_nats": 0.7091903705149889, + "rel_diff": 3.9876053361098615e-06, + "rel_diff_scalar_vs_library_pdip": 4.565516709640215e-06, + "abs_diff_library_pdip_vmap_vs_scalar_nats": NaN, + "rel_diff_library_pdip_vmap_vs_scalar": NaN, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 15, + "draw_name": "call00015_lane15", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.0015375882948530809, + "centre_1": 0.00010861850037634777, + "ell_comps_0": 0.010624594413718456, + "ell_comps_1": -0.00030576693661378264, + "einstein_radius": 0.018140577124415858 + }, + "log_likelihood_vmap": 25794.985439570028, + "log_likelihood_scalar": 25794.98543952388, + "log_likelihood_library_pdip": 25794.985439582873, + "log_likelihood_library_pdip_scalar": 25794.98543952388, + "rel_diff_vmap_vs_library_pdip": 4.979922627957322e-13, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 4.614776116795838e-08, + "rel_diff": 1.7890206325625344e-12, + "rel_diff_scalar_vs_library_pdip": 2.2870128953541753e-12, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 5.899346433579922e-08, + "rel_diff_library_pdip_vmap_vs_scalar": 2.2870128953594057e-12, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + } + ], + "lane_pins": [ + { + "pin": "lane 0: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 18463.07897110663, + "reference_value": 18463.07897110663, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 0: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 18463.078970707007, + "reference_value": 18463.078970707007, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 0: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 18463.07897110663, + "reference_value": 18463.078970707007, + "rel_diff": 2.1644531588444352e-11, + "abs_diff_nats": 3.996246960014105e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 0: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 18463.07897110663, + "reference_value": 18463.078970707007, + "rel_diff": 2.1644531588444352e-11, + "abs_diff_nats": 3.996246960014105e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 1: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 15734.21749647698, + "reference_value": 15734.21749647698, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 1: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 15734.21749633948, + "reference_value": 15734.21749633948, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 1: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 15734.21749647698, + "reference_value": 15734.21749633948, + "rel_diff": 8.738982222968992e-12, + "abs_diff_nats": 1.3750104699283838e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 1: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 15734.21749647698, + "reference_value": 15734.21749633948, + "rel_diff": 8.738982222968992e-12, + "abs_diff_nats": 1.3750104699283838e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 2: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 18706.165986625834, + "reference_value": 18706.165986625834, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 2: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 18706.16598652238, + "reference_value": 18706.16598652238, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 2: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 18706.165986625834, + "reference_value": 18706.16598652238, + "rel_diff": 5.530433302676995e-12, + "abs_diff_nats": 1.0345320333726704e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 2: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 18706.165986625834, + "reference_value": 18706.16598652238, + "rel_diff": 5.530433302676995e-12, + "abs_diff_nats": 1.0345320333726704e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 3: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -22166.221752036443, + "reference_value": -22166.22174580778, + "rel_diff": 2.8099798073767275e-10, + "abs_diff_nats": 6.228663551155478e-06, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 3: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -22166.22175077076, + "reference_value": -22166.221750479657, + "rel_diff": 1.3132765315747392e-11, + "abs_diff_nats": 2.911037881858647e-07, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 3: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -22166.221752036443, + "reference_value": -22166.22175077076, + "rel_diff": 5.7099579037354596e-11, + "abs_diff_nats": 1.2656819308176637e-06, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 3: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -22166.22174580778, + "reference_value": -22166.221750479657, + "rel_diff": 2.107656363245962e-10, + "abs_diff_nats": 4.671877832151949e-06, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 4: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -194383.53464290412, + "reference_value": -194383.71431936364, + "rel_diff": 9.243390586977035e-07, + "abs_diff_nats": 0.1796764595201239, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 4: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": NaN, + "reference_value": NaN, + "rel_diff": NaN, + "abs_diff_nats": NaN, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 4: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -194383.53464290412, + "reference_value": NaN, + "rel_diff": NaN, + "abs_diff_nats": NaN, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 4: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -194383.71431936364, + "reference_value": NaN, + "rel_diff": NaN, + "abs_diff_nats": NaN, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 5: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 14761.660929764937, + "reference_value": 14761.660929764941, + "rel_diff": 2.4644779638287237e-16, + "abs_diff_nats": 3.637978807091713e-12, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 5: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 14761.660929764934, + "reference_value": 14761.66092976493, + "rel_diff": 2.4644779638287257e-16, + "abs_diff_nats": 3.637978807091713e-12, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 5: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 14761.660929764937, + "reference_value": 14761.660929764934, + "rel_diff": 2.464477963828725e-16, + "abs_diff_nats": 3.637978807091713e-12, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 5: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 14761.660929764941, + "reference_value": 14761.66092976493, + "rel_diff": 7.393433891486177e-16, + "abs_diff_nats": 1.0913936421275139e-11, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 6: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 21597.12687122062, + "reference_value": 21597.126871220295, + "rel_diff": 1.4991814224262508e-14, + "abs_diff_nats": 3.2378011383116245e-10, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 6: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 21597.126871230066, + "reference_value": 21597.126871229542, + "rel_diff": 2.4256418520144683e-14, + "abs_diff_nats": 5.238689482212067e-10, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 6: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 21597.12687122062, + "reference_value": 21597.126871230066, + "rel_diff": 4.3745777011676537e-13, + "abs_diff_nats": 9.447830962017179e-09, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 6: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 21597.126871220295, + "reference_value": 21597.126871229542, + "rel_diff": 4.281931658208874e-13, + "abs_diff_nats": 9.247742127627134e-09, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 7: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 7413.159095230236, + "reference_value": 7413.159095181654, + "rel_diff": 6.55342322566359e-12, + "abs_diff_nats": 4.8581568989902735e-08, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 7: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 7413.159096650659, + "reference_value": 7413.159096744621, + "rel_diff": 1.267498989342164e-11, + "abs_diff_nats": 9.396171662956476e-08, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 7: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 7413.159095230236, + "reference_value": 7413.159096650659, + "rel_diff": 1.9160837381988354e-10, + "abs_diff_nats": 1.4204233593773097e-06, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 7: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 7413.159095181654, + "reference_value": 7413.159096744621, + "rel_diff": 2.1083678693515843e-10, + "abs_diff_nats": 1.5629666449967772e-06, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 8: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 19060.202679471302, + "reference_value": 19060.202679471302, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 8: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 19060.20267912919, + "reference_value": 19060.20267912919, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 8: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 19060.202679471302, + "reference_value": 19060.20267912919, + "rel_diff": 1.7949016324716636e-11, + "abs_diff_nats": 3.421118890400976e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 8: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 19060.202679471302, + "reference_value": 19060.20267912919, + "rel_diff": 1.7949016324716636e-11, + "abs_diff_nats": 3.421118890400976e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 9: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 12782.703321755558, + "reference_value": 12782.703321755558, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 9: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 12782.70332143049, + "reference_value": 12782.70332143049, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 9: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 12782.703321755558, + "reference_value": 12782.70332143049, + "rel_diff": 2.543029828314087e-11, + "abs_diff_nats": 3.250679583288729e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 9: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 12782.703321755558, + "reference_value": 12782.70332143049, + "rel_diff": 2.543029828314087e-11, + "abs_diff_nats": 3.250679583288729e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 10: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 25442.236800481285, + "reference_value": 25442.236800481292, + "rel_diff": 2.8597947858286523e-16, + "abs_diff_nats": 7.275957614183426e-12, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 10: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 25442.23680048131, + "reference_value": 25442.23680048131, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 10: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 25442.236800481285, + "reference_value": 25442.23680048131, + "rel_diff": 1.0009281750400276e-15, + "abs_diff_nats": 2.546585164964199e-11, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 10: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 25442.236800481292, + "reference_value": 25442.23680048131, + "rel_diff": 7.149486964571626e-16, + "abs_diff_nats": 1.8189894035458565e-11, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 11: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -3234.481431636159, + "reference_value": -3234.481431636159, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 11: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -3234.481430921878, + "reference_value": -3234.481430921878, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 11: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -3234.481431636159, + "reference_value": -3234.481430921878, + "rel_diff": 2.208331611230817e-10, + "abs_diff_nats": 7.142807589843869e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 11: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -3234.481431636159, + "reference_value": -3234.481430921878, + "rel_diff": 2.208331611230817e-10, + "abs_diff_nats": 7.142807589843869e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 12: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 18883.933556142838, + "reference_value": 18883.933556142838, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 12: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 18883.93355609074, + "reference_value": 18883.93355609074, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 12: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 18883.933556142838, + "reference_value": 18883.93355609074, + "rel_diff": 2.7589323136310487e-12, + "abs_diff_nats": 5.209949449636042e-08, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 12: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 18883.933556142838, + "reference_value": 18883.93355609074, + "rel_diff": 2.7589323136310487e-12, + "abs_diff_nats": 5.209949449636042e-08, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 13: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 23869.4880678158, + "reference_value": 23869.488067815804, + "rel_diff": 1.5241126230926363e-16, + "abs_diff_nats": 3.637978807091713e-12, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 13: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 23869.4880678158, + "reference_value": 23869.4880678158, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 13: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 23869.4880678158, + "reference_value": 23869.4880678158, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 13: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 23869.488067815804, + "reference_value": 23869.4880678158, + "rel_diff": 1.5241126230926365e-16, + "abs_diff_nats": 3.637978807091713e-12, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 14: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -177847.9771108784, + "reference_value": -177847.87433380686, + "rel_diff": 5.778931680515601e-07, + "abs_diff_nats": 0.10277707152999938, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 14: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -177848.6863012489, + "reference_value": NaN, + "rel_diff": NaN, + "abs_diff_nats": NaN, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 14: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -177847.9771108784, + "reference_value": -177848.6863012489, + "rel_diff": 3.9876053361098615e-06, + "abs_diff_nats": 0.7091903705149889, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 14: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -177847.87433380686, + "reference_value": NaN, + "rel_diff": NaN, + "abs_diff_nats": NaN, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 15: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 25794.985439570028, + "reference_value": 25794.985439582873, + "rel_diff": 4.979922627957322e-13, + "abs_diff_nats": 1.2845703167840838e-08, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 15: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 25794.98543952388, + "reference_value": 25794.98543952388, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 15: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 25794.985439570028, + "reference_value": 25794.98543952388, + "rel_diff": 1.7890206325625344e-12, + "abs_diff_nats": 4.614776116795838e-08, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 15: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 25794.985439582873, + "reference_value": 25794.98543952388, + "rel_diff": 2.2870128953594057e-12, + "abs_diff_nats": 5.899346433579922e-08, + "within_rtol": true, + "status": "RECORDED" + } + ], + "lanes_failed": 2, + "arm_rows": { + "vmap": { + "arm": "vmap", + "program": "jax.jit(jax.vmap(fn))", + "stands_for": "Nautilus(use_jax_vmap=True) \u2014 Fitness._vmap", + "hlo_source": "jax.jit(jax.vmap(fn)).lower(batched_tree) \u2014 the exact current Fitness._vmap composition (PyAutoFit#1638)", + "batch_wall_ms": 531.6486784999142, + "wall_production_nesting_ms": 531.6486784999142, + "wall_aot_command_buffers_on_ms": 533.3338642001763, + "wall_aot_command_buffers_off_ms": 533.112578500004, + "command_buffer_delta_ms": -0.2212857001723023, + "production_nesting_vs_aot_on_delta_ms": -1.6851857002620818, + "production_nesting_vs_aot_on_delta_pct": -0.3159720042884021, + "wall_per_lane_ms": 33.22804240624464, + "wall_per_lane_command_buffers_off_ms": 33.31953615625025, + "traced_batch_wall_ms": 540.5738279001525, + "untraced_batch_wall_ms": 533.3607218999532, + "traced_wall_per_lane_ms": 33.785864243759534, + "callback_count_per_call": 0.0, + "callback_count_per_lane": 0.0, + "callback_expectation": "0 \u2014 the rectangular mesh has no qhull host callback (asserted)", + "host_qhull_ms": 0.0, + "host_tables_ms": 0.0, + "host_qhull_ms_per_lane": 0.0, + "host_tables_ms_per_lane": 0.0, + "host_callback_probe": { + "calls": 0, + "qhull_ms_total": 0.0, + "tables_ms_total": 0.0, + "total_ms_total": 0.0, + "qhull_ms_mean": 0.0, + "tables_ms_mean": 0.0, + "total_ms_mean": 0.0, + "non_finite_calls": 0, + "n_points": [] + }, + "host_callback_records_first": [], + "device_idle_ms": 17.97893190000002, + "device_idle_ms_per_lane": 1.1236832437500013, + "trace": { + "parser": "ProfileData.from_file(xplane) + as_text() + stack_frame_index(proto field 17)", + "stage_audit": { + "mesh_construction": [ + { + "instruction": "fusion.4", + "ms": 0.4744844, + "opcode": "fusion", + "shape": "(f64[16,15361,2]{2,1,0}, s64[16,15361,2]{2,1,0}, s32[16,15361,2]{2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:227", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:227 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_select_fusion", + "ms": 0.1759209, + "opcode": "fusion", + "shape": "(u32[16,2,15361]{2,1,0}, u32[16,2,15361]{2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69 (forward_interp)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:573 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/abstract.py:36 (AbstractInterpolator.mappings)" + ] + }, + { + "instruction": "loop_select_fusion.1", + "ms": 0.08313360000000002, + "opcode": "fusion", + "shape": "(u32[16,15361]{1,0}, u32[16,15361]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_select_fusion.4", + "ms": 0.0811367, + "opcode": "fusion", + "shape": "(u32[16,15361]{1,0}, u32[16,15361]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_subtract_transpose_fusion", + "ms": 0.0432785, + "opcode": "fusion", + "shape": "(f64[16,15361,2]{2,1,0}, f64[491552,1,1,1]{3,2,1,0}, f64[491552,1,1,1]{3,2,1,0}, f64[16,15361,2]{2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69 (forward_interp)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:573 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/abstract.py:36 (AbstractInterpolator.mappings)" + ] + }, + { + "instruction": "loop_add_fusion", + "ms": 0.02118979999999999, + "opcode": "fusion", + "shape": "s64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69 (forward_interp)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:573 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/abstract.py:36 (AbstractInterpolator.mappings)" + ] + } + ], + "mixed_fusion": [ + { + "instruction": "loop_divide_gather_fusion", + "ms": 17.1636349, + "opcode": "fusion", + "shape": "(f64[15361,16,1,1,1521]{4,3,2,1,0}, f64[15361,16,1,1,1521]{4,3,2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_add_multiply_fusion", + "ms": 2.0419973, + "opcode": "fusion", + "shape": "(f64[16,1369,1369]{2,1,0}, f64[16,1369,1369]{2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:61", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:61 (initialize)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:72 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:508 (reconstruction_positive_only_from)" + ] + }, + { + "instruction": "input_transpose_fusion.3", + "ms": 0.4832191, + "opcode": "fusion", + "shape": "f64[16,1521,1521]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1078 (AbstractInversion.log_det_curvature_reg_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:347 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "input_transpose_fusion.4", + "ms": 0.4601513, + "opcode": "fusion", + "shape": "f64[16,1521,1521]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1157 (AbstractInversion.log_det_regularization_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:348 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "input_transpose_fusion.5", + "ms": 0.3088397, + "opcode": "fusion", + "shape": "f64[16,1369,1369]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:62", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:62 (initialize)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:72 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:508 (reconstruction_positive_only_from)" + ] + }, + { + "instruction": "input_scatter_fusion.10", + "ms": 0.09576979999999999, + "opcode": "fusion", + "shape": "f64[15361,16,1521]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:353", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:353 (mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:283 (Mapper.mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:91 (AbstractInversionImaging._mapping_matrix_for_convolution_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:137 (AbstractInversionImaging.operated_mapping_matrix_list)" + ] + } + ], + "ray_trace_data_grid": [ + { + "instruction": "input_reduce_fusion.21", + "ms": 0.0027487, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:506", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:506 (FlatLambdaCDM._simpson_1d)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:644 (FlatLambdaCDM.angular_diameter_distance_kpc_z1z2)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:133 (LensingCosmology.angular_diameter_distance_to_earth_in_kpc_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:362 (LensingCosmology.scaling_factor_between_redshifts_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer_util.py:252 (traced_grid_2d_list_from)" + ] + }, + { + "instruction": "input_reduce_fusion.23", + "ms": 0.0027134000000000004, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:506", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:506 (FlatLambdaCDM._simpson_1d)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:644 (FlatLambdaCDM.angular_diameter_distance_kpc_z1z2)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:151 (LensingCosmology.angular_diameter_distance_between_redshifts_in_kpc_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:355 (LensingCosmology.scaling_factor_between_redshifts_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer_util.py:252 (traced_grid_2d_list_from)" + ] + }, + { + "instruction": "input_reduce_fusion.24", + "ms": 0.0025888000000000005, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:503", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:503 (FlatLambdaCDM._simpson_1d)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:644 (FlatLambdaCDM.angular_diameter_distance_kpc_z1z2)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:151 (LensingCosmology.angular_diameter_distance_between_redshifts_in_kpc_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:355 (LensingCosmology.scaling_factor_between_redshifts_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer_util.py:252 (traced_grid_2d_list_from)" + ] + }, + { + "instruction": "input_reduce_fusion.22", + "ms": 0.0025792000000000002, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:503", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:503 (FlatLambdaCDM._simpson_1d)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:644 (FlatLambdaCDM.angular_diameter_distance_kpc_z1z2)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:133 (LensingCosmology.angular_diameter_distance_to_earth_in_kpc_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:362 (LensingCosmology.scaling_factor_between_redshifts_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer_util.py:252 (traced_grid_2d_list_from)" + ] + }, + { + "instruction": "loop_divide_fusion.1", + "ms": 0.0021920000000000004, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:380", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:380 (LensingCosmology.scaling_factor_between_redshifts_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer_util.py:252 (traced_grid_2d_list_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer.py:632 (Tracer.traced_grid_2d_list_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/structures/decorators/abstract.py:93 (AbstractMaker.evaluate_func)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/structures/decorators/abstract.py:110 (AbstractMaker.result)" + ] + } + ], + "border_relocator": [ + { + "instruction": "custom-call.2", + "ms": 0.042398700000000004, + "opcode": "custom-call", + "shape": "(f64[16,2,2]{2,1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "eigh.0", + "ms": 0.014581900000000002, + "opcode": "custom-call", + "shape": "(f64[16,2,2]{1,2,0}, f64[16,2]{1,0}, s32[16]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_add_rsqrt_fusion", + "ms": 0.012953200000000002, + "opcode": "fusion", + "shape": "(f64[16,15361]{1,0}, f64[16,15361]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:311", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:311 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:423 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_concatenate_fusion.5", + "ms": 0.007647899999999999, + "opcode": "fusion", + "shape": "f64[16,2,15361]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:323", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:323 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:423 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_select_sine_fusion", + "ms": 0.0034046, + "opcode": "fusion", + "shape": "(f64[16]{0}, f64[16]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:301", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:301 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:423 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_abs_fusion", + "ms": 0.0032224999999999997, + "opcode": "fusion", + "shape": "(f64[16,392,1]{2,1,0}, f64[16,392,1]{2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:269", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:269 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + } + ], + "other": [ + { + "instruction": "copy.52", + "ms": 0.0805931, + "opcode": "copy", + "shape": "u32[16,2,15361]{2,1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.53", + "ms": 0.08042639999999997, + "opcode": "copy", + "shape": "u32[16,2,15361]{2,1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.71", + "ms": 0.03930800000000001, + "opcode": "copy", + "shape": "u32[16,15361]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.61", + "ms": 0.03908030000000002, + "opcode": "copy", + "shape": "u32[16,15361]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.70", + "ms": 0.03852670000000006, + "opcode": "copy", + "shape": "u32[16,15361]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.62", + "ms": 0.03852050000000004, + "opcode": "copy", + "shape": "u32[16,15361]{1,0}", + "source": "", + "stack": [] + } + ], + "mapping_matrix": [ + { + "instruction": "loop_broadcast_fusion", + "ms": 1.7234397, + "opcode": "fusion", + "shape": "f64[15361,16,1521]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:353", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:353 (mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:283 (Mapper.mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:91 (AbstractInversionImaging._mapping_matrix_for_convolution_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:137 (AbstractInversionImaging.operated_mapping_matrix_list)" + ] + }, + { + "instruction": "input_scatter_fusion.5", + "ms": 0.0578963, + "opcode": "fusion", + "shape": "f64[16,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:71", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:71 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:362 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + }, + { + "instruction": "input_reduce_fusion.31", + "ms": 0.0038015, + "opcode": "fusion", + "shape": "f64[16]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:362 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + }, + { + "instruction": "loop_divide_fusion", + "ms": 0.0027806000000000007, + "opcode": "fusion", + "shape": "f64[16,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:92", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:92 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:362 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + } + ], + "psf_convolution_mapping_matrix": [ + { + "instruction": "input_scatter_fusion", + "ms": 32.7325887, + "opcode": "fusion", + "shape": "f64[16,1521,180,180]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.29.0", + "ms": 28.659025499999995, + "opcode": "fft", + "shape": "f64[16,1521,180,180]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.25.0", + "ms": 21.865845500000006, + "opcode": "fft", + "shape": "c128[16,1521,180,91]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.27.0", + "ms": 15.735210499999999, + "opcode": "fft", + "shape": "c128[16,1521,91,180]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_transpose_fusion.2", + "ms": 8.554638299999999, + "opcode": "fusion", + "shape": "c128[16,1521,91,180]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "wrapped_transpose.2", + "ms": 8.0239261, + "opcode": "fusion", + "shape": "c128[16,1521,180,91]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + } + ], + "regularization_H": [ + { + "instruction": "wrapped_broadcast", + "ms": 0.49583639999999995, + "opcode": "fusion", + "shape": "f64[16,1521,1521]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:124", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:124 (weighted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:366 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_broadcast_fusion.3", + "ms": 0.015420600000000001, + "opcode": "fusion", + "shape": "f64[1521,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:111", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:111 (weighted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:366 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_scatter_fusion.7", + "ms": 0.0026271000000000003, + "opcode": "fusion", + "shape": "f64[1521,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:123 (weighted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:366 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "curvature_matrix_F": [ + { + "instruction": "cublas-lt-matmul.2", + "ms": 99.3760245, + "opcode": "custom-call", + "shape": "(f64[16,1521,1521]{2,1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "inversion_other": [ + { + "instruction": "cholesky.60", + "ms": 6.672817899999994, + "opcode": "custom-call", + "shape": "(f64[16,1521,1521]{1,2,0}, s32[16]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1078 (AbstractInversion.log_det_curvature_reg_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:347 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "cholesky.70", + "ms": 6.62534989999999, + "opcode": "custom-call", + "shape": "(f64[16,1521,1521]{1,2,0}, s32[16]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1157 (AbstractInversion.log_det_regularization_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:348 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "input_reduce_fusion.20", + "ms": 0.16793799999999998, + "opcode": "fusion", + "shape": "f64[16,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:946", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:946 (AbstractInversion.regularization_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:346 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)", + "/mnt/ral/jnightin/autolens_profiling_wt/certified-solver-phase-c1-lane-rate/scripts/imaging/likelihood_breakdown/fixed_light_trace.py:1195 (_captured_likelihood_fn.._likelihood)" + ] + }, + { + "instruction": "loop_reduce_window_fusion.3", + "ms": 0.0082655, + "opcode": "fusion", + "shape": "s64[6,16]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "input_reduce_fusion.14", + "ms": 0.0073471000000000005, + "opcode": "fusion", + "shape": "f64[16]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:985", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:985 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1157 (AbstractInversion.log_det_regularization_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:348 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "input_reduce_fusion.15", + "ms": 0.007279700000000001, + "opcode": "fusion", + "shape": "f64[16]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:985", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:985 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1078 (AbstractInversion.log_det_curvature_reg_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:347 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + } + ], + "data_vector_D": [ + { + "instruction": "input_reduce_fusion.13", + "ms": 2.1221712999999998, + "opcode": "fusion", + "shape": "f64[92,16,1521]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123 (data_vector_via_blurred_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:67 (InversionImagingMapping.data_vector)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:699 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_reduce_fusion.29", + "ms": 0.0179035, + "opcode": "fusion", + "shape": "f64[16,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123 (data_vector_via_blurred_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:67 (InversionImagingMapping.data_vector)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:699 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "pdip_solve": [ + { + "instruction": "cholesky.20", + "ms": 109.16174559999308, + "opcode": "custom-call", + "shape": "(f64[16,1369,1369]{1,2,0}, s32[16]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:106", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:106 (factorize_kkt)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:212 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve", + "ms": 33.435170099999944, + "opcode": "custom-call", + "shape": "(f64[16,1369,1]{1,2,0}, s8[256]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:213 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve.2", + "ms": 30.40919329999942, + "opcode": "custom-call", + "shape": "(f64[16,1369,1]{1,2,0}, s8[256]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:217 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve.3", + "ms": 29.96966349999982, + "opcode": "custom-call", + "shape": "(f64[16,1369,1]{1,2,0}, s8[256]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:217 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve.1", + "ms": 29.51333449999955, + "opcode": "custom-call", + "shape": "(f64[16,1369,1]{1,2,0}, s8[256]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:213 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "loop_add_fusion.2", + "ms": 8.285839300000001, + "opcode": "fusion", + "shape": "f64[16,1369,1369]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:107", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:107 (factorize_kkt)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:212 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + } + ], + "mapped_reconstruction": [ + { + "instruction": "input_reduce_fusion.16", + "ms": 1.7848587, + "opcode": "fusion", + "shape": "f64[15361,16]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163 (mapped_reconstructed_data_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:120 (InversionImagingMapping._mapped_reconstructed_data_dict_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:196 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + } + ], + "chi_squared_evidence": [ + { + "instruction": "input_reduce_fusion.12", + "ms": 0.0152602, + "opcode": "fusion", + "shape": "f64[92,16]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:90", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:90 (chi_squared_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:87 (AbstractFit.chi_squared)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:293 (FitDataset.chi_squared)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:345 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)" + ] + }, + { + "instruction": "input_reduce_fusion.28", + "ms": 0.003903899999999999, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:104", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:104 (noise_normalization_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:98 (AbstractFit.noise_normalization)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:306 (FitDataset.noise_normalization)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:349 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)" + ] + }, + { + "instruction": "input_reduce_fusion.30", + "ms": 0.0022431999999999994, + "opcode": "fusion", + "shape": "f64[16]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:90", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:90 (chi_squared_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:87 (AbstractFit.chi_squared)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:293 (FitDataset.chi_squared)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:345 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)" + ] + } + ] + }, + "stage_audit_note": "The HLO instructions that contributed most of each stage's milliseconds, with their full source stack. A stage row is only as good as the rules that built it; this is how a reader checks a row against the HLO instead of trusting it.", + "untraced_wall_ms": 533.3607218999532, + "reconciliation_vs_untraced_pct": 1.3271837818952847, + "wall_basis": "wall_ms is the TRACED run's wall, the run these kernel durations came from. untraced_wall_ms is the same executable without the profiler; the difference is the profiler's overhead and belongs in neither the stages nor the idle row.", + "calls": 10, + "call_split": "per-call (first-instruction recurrence)", + "call_blocks": 10, + "events": 140270, + "streams": [ + "Stream #14(MemcpyD2D,Compute,MemcpyD2H)" + ], + "per_stage_ms": { + "border_relocator": { + "median_ms": 0.09941999999999998, + "min_ms": 0.09871500000000001, + "max_ms": 0.099867 + }, + "chi_squared_evidence": { + "median_ms": 0.021376, + "min_ms": 0.021246, + "max_ms": 0.021632000000000002 + }, + "curvature_matrix_F": { + "median_ms": 99.41883949999999, + "min_ms": 98.499862, + "max_ms": 100.429725 + }, + "data_vector_D": { + "median_ms": 2.141598, + "min_ms": 2.126055, + "max_ms": 2.1504689999999997 + }, + "inversion_other": { + "median_ms": 13.503869500000015, + "min_ms": 13.476041000000013, + "max_ms": 13.565612999999997 + }, + "mapped_reconstruction": { + "median_ms": 1.784821, + "min_ms": 1.777043, + "max_ms": 1.790773 + }, + "mapping_matrix": { + "median_ms": 1.7850305, + "min_ms": 1.7835690000000002, + "max_ms": 1.799668 + }, + "mesh_construction": { + "median_ms": 1.0651349999999993, + "min_ms": 1.0590299999999995, + "max_ms": 1.0711849999999992 + }, + "mixed_fusion": { + "median_ms": 20.785621999999996, + "min_ms": 20.508640999999997, + "max_ms": 21.250945 + }, + "other": { + "median_ms": 0.3382115000000001, + "min_ms": 0.3360700000000001, + "max_ms": 0.3393160000000001 + }, + "pdip_solve": { + "median_ms": 261.39406800000893, + "min_ms": 260.38383400000833, + "max_ms": 262.5424380000079 + }, + "psf_convolution_mapping_matrix": { + "median_ms": 119.59696199999999, + "min_ms": 119.223334, + "max_ms": 120.15577399999998 + }, + "ray_trace_data_grid": { + "median_ms": 0.012815500000000002, + "min_ms": 0.012768000000000002, + "max_ms": 0.012928 + }, + "regularization_H": { + "median_ms": 0.5126985, + "min_ms": 0.508714, + "max_ms": 0.523115 + } + }, + "stage_order": [ + "ray_trace_data_grid", + "border_relocator", + "mesh_construction", + "mapping_matrix", + "psf_convolution_mapping_matrix", + "data_vector_D", + "curvature_matrix_F", + "regularization_H", + "pdip_solve", + "mapped_reconstruction", + "chi_squared_evidence", + "inversion_other", + "mixed_fusion", + "other" + ], + "mixed_fusion": { + "ms": 20.785621999999996, + "constituent_stage_sets": { + "curvature_matrix_F + psf_convolution_mapping_matrix": 17.1636349, + "inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": 2.0419973, + "inversion_other + regularization_H": 0.4881729999999999, + "curvature_reg_reduce_gather + inversion_other": 0.4832191, + "border_relocator + pdip_solve": 0.3108269, + "border_relocator + inversion_other + mapping_matrix + mesh_construction": 0.0986817, + "inversion_other + mapping_matrix + mesh_construction": 0.063816, + "grids_and_structures + mass_profile_deflections + ray_trace_data_grid": 0.0456147, + "inversion_other + mesh_construction": 0.028533600000000003, + "inversion_other + mapped_reconstruction + reconstruction_scatter": 0.022831500000000005, + "border_relocator + mesh_construction": 0.022808799999999997, + "inversion_other + mapping_matrix": 0.011378899999999999, + "inversion_other + mapped_reconstruction": 0.009654000000000001, + "border_relocator + inversion_other": 0.0086716, + "border_relocator + inversion_other + mesh_construction": 0.006118300000000001, + "inversion_other + ray_trace_data_grid": 0.004780799999999999, + "grids_and_structures + mass_profile_deflections": 0.0042303, + "mapping_matrix + regularization_H": 0.0040414, + "chi_squared_evidence + inversion_other": 0.0019550999999999995 + }, + "example_kernels": { + "curvature_matrix_F + psf_convolution_mapping_matrix": [ + "loop_divide_gather_fusion" + ], + "inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": [ + "loop_add_multiply_fusion" + ], + "inversion_other + regularization_H": [ + "input_scatter_fusion.3", + "input_scatter_fusion.4", + "input_scatter_fusion.1", + "input_scatter_fusion.2" + ], + "curvature_reg_reduce_gather + inversion_other": [ + "input_transpose_fusion.3" + ], + "border_relocator + pdip_solve": [ + "loop_compare_fusion.4", + "input_transpose_fusion.5" + ], + "border_relocator + inversion_other + mapping_matrix + mesh_construction": [ + "input_scatter_fusion.10", + "loop_select_fusion.6" + ], + "inversion_other + mapping_matrix + mesh_construction": [ + "input_scatter_fusion.6" + ], + "grids_and_structures + mass_profile_deflections + ray_trace_data_grid": [ + "loop_sqrt_fusion", + "loop_slice_fusion", + "loop_subtract_fusion.1" + ], + "inversion_other + mesh_construction": [ + "loop_add_fusion.4", + "input_concatenate_fusion.4" + ], + "inversion_other + mapped_reconstruction + reconstruction_scatter": [ + "loop_rsqrt_fusion", + "loop_multiply_fusion.2" + ] + }, + "prorated_estimate_ms": { + "curvature_matrix_F": 8.58181745, + "psf_convolution_mapping_matrix": 8.58181745, + "inversion_other": 1.0842747333333334, + "pdip_solve": 0.665912775, + "mapped_reconstruction": 0.5229368249999999, + "reconstruction_scatter": 0.5181098249999999, + "regularization_H": 0.24610719999999994, + "curvature_reg_reduce_gather": 0.24160955, + "border_relocator": 0.19786350833333333, + "mesh_construction": 0.07365305833333333, + "mapping_matrix": 0.053652574999999994, + "ray_trace_data_grid": 0.0175953, + "grids_and_structures": 0.01732005, + "mass_profile_deflections": 0.01732005, + "chi_squared_evidence": 0.0009775499999999998 + }, + "prorated_note": "ESTIMATE ONLY \u2014 a mixed fusion's time split equally across the stages its constituents span. Never summed into the measured table, never reconciled." + }, + "other_sources_ms": { + "copy.52": 0.0805931, + "copy.53": 0.08042639999999997, + "copy.71": 0.03930800000000001, + "copy.61": 0.03908030000000002, + "copy.70": 0.03852670000000006, + "copy.62": 0.03852050000000004, + "loop_reduce_window_fusion.1": 0.005942199999999999, + "loop_slice_fusion.1": 0.0049053000000000005, + "loop_reduce_window_fusion": 0.0033921, + "loop_broadcast_fusion.1": 0.0022528, + "copy.109": 0.0017919999999999998, + "copy.63": 0.0015488000000000001, + "copy.54": 0.0015488 + }, + "device_span_ms": 540.5016544, + "device_busy_ms": 522.5227225, + "device_idle_ms": 17.97893190000002, + "largest_idle_gaps": [ + { + "gap_ms": 0.065341, + "after": "input_concatenate_fusion.8", + "before": "custom-call.2" + }, + { + "gap_ms": 0.057086, + "after": "loop_broadcast_fusion.7", + "before": "loop_broadcast_fusion.9" + }, + { + "gap_ms": 0.030334, + "after": "loop_multiply_fusion.3", + "before": "eigh.0" + }, + { + "gap_ms": 0.025887, + "after": "while.52", + "before": "input_reduce_fusion.1" + }, + { + "gap_ms": 0.023423, + "after": "while.52", + "before": "input_transpose_fusion.1" + }, + { + "gap_ms": 0.020543, + "after": "while.52", + "before": "input_reduce_fusion.1" + }, + { + "gap_ms": 0.019935, + "after": "while.52", + "before": "input_reduce_fusion.1" + }, + { + "gap_ms": 0.018463, + "after": "fusion.431", + "before": "fusion.4" + } + ], + "kernel_ms": 522.460467000009, + "sum_ms": 540.439398900009, + "wall_ms": 540.5738279001525, + "host_outside_span_ms": 0.07217350015253032, + "reconciliation_pct": -0.024867833625191894, + "unjoined_ms": 0.0, + "unjoined_pct": 0.0, + "other_ms": 0.3382115000000001, + "other_pct": 0.06256527462932777, + "note": "Stage rows attribute the command-buffers-OFF program (see the module docstring): kernel times are the same, the launch overhead the CUDA graphs remove is not. sum_ms = kernel rows + device_idle_ms; the residual against wall_ms is host_outside_span_ms (dispatch before the first kernel, teardown after the last).", + "per_stage_ms_per_lane": { + "border_relocator": 0.006213749999999999, + "chi_squared_evidence": 0.001336, + "curvature_matrix_F": 6.213677468749999, + "data_vector_D": 0.133849875, + "inversion_other": 0.8439918437500009, + "mapped_reconstruction": 0.1115513125, + "mapping_matrix": 0.11156440625, + "mesh_construction": 0.06657093749999995, + "mixed_fusion": 1.2991013749999998, + "other": 0.021138218750000007, + "pdip_solve": 16.337129250000558, + "psf_convolution_mapping_matrix": 7.474810124999999, + "ray_trace_data_grid": 0.0008009687500000001, + "regularization_H": 0.03204365625 + }, + "per_lane_divisor": 16, + "host_callback": { + "pure_callback_span_ms": 0, + "qhull_ms": 0.0, + "callback_body_ms_note": "the OUTERMOST matching body event, not a sum: under the probe the body appears twice (the wrapper and the timed re-implementation it calls) and summing them would count the same work twice", + "events_by_name": { + "ThenExecuteCallback:GetEventForComputeStreamSyncPoint": { + "count": 10, + "ms": 0.02179 + } + }, + "note": "HOST milliseconds per traced BATCH (the whole invocation), aggregated by name because the events nest. Not a row of the device table: the device pays for them as the idle gaps largest_idle_gaps names." + }, + "host_callback_ms": 0 + }, + "hlo_census": { + "status": "excluded", + "reason": "The legacy census anchors PyAutoArray source line numbers that moved after the phase-1 run. No batched attribution is published from unsupported anchors; the device-event table and wall reconciliation remain valid." + }, + "trace_split": { + "expected_calls": 10, + "executions_per_invocation": 1, + "method": "per-call (first-instruction recurrence)", + "note": "DECIDED IN CODE: the scalar arm's trace is split by trace_calls * B, so every lane's execution is its own block and the per-stage median is taken over all of them. The vmap arm's is split by trace_calls, one block per batched execution, and per_stage_ms_per_lane divides those rows by B." + } + }, + "scalar": { + "arm": "scalar", + "program": "jax.jit(fn), called B times", + "stands_for": "Nautilus(use_jax_vmap=False, use_jax_jit=True). Plain use_jax_vmap=False is UNJITTED and is NOT this arm", + "hlo_source": "jax.jit(fn).lower(lane_trees[0]) \u2014 the same program phase 1 traced", + "batch_wall_ms": 661.9231335000222, + "wall_production_nesting_ms": 661.9231335000222, + "wall_aot_command_buffers_on_ms": 661.7818452999927, + "wall_aot_command_buffers_off_ms": 667.6247766001325, + "command_buffer_delta_ms": 5.842931300139753, + "production_nesting_vs_aot_on_delta_ms": 0.14128820002952125, + "production_nesting_vs_aot_on_delta_pct": 0.021349663946352865, + "wall_per_lane_ms": 41.37019584375139, + "wall_per_lane_command_buffers_off_ms": 41.72654853750828, + "traced_batch_wall_ms": 684.6893992998957, + "untraced_batch_wall_ms": 667.5470351001422, + "traced_wall_per_lane_ms": 42.793087456243484, + "callback_count_per_call": 0.0, + "callback_count_per_lane": 0.0, + "callback_expectation": "0 \u2014 the rectangular mesh has no qhull host callback (asserted)", + "host_qhull_ms": 0.0, + "host_tables_ms": 0.0, + "host_qhull_ms_per_lane": 0.0, + "host_tables_ms_per_lane": 0.0, + "host_callback_probe": { + "calls": 0, + "qhull_ms_total": 0.0, + "tables_ms_total": 0.0, + "total_ms_total": 0.0, + "qhull_ms_mean": 0.0, + "tables_ms_mean": 0.0, + "total_ms_mean": 0.0, + "non_finite_calls": 0, + "n_points": [] + }, + "host_callback_records_first": [], + "device_idle_ms": 2.2511298937499973, + "device_idle_ms_per_lane": 2.2511298937499973, + "trace": { + "parser": "ProfileData.from_file(xplane) + as_text() + stack_frame_index(proto field 17)", + "stage_audit": { + "mesh_construction": [ + { + "instruction": "fusion.2", + "ms": 0.14868716250000005, + "opcode": "fusion", + "shape": "(f64[15361,2]{1,0}, s64[15361,2]{1,0}, s32[15361,2]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:227", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:227 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_select_fusion", + "ms": 0.039655062499999845, + "opcode": "fusion", + "shape": "(u32[2,15361]{1,0}, u32[2,15361]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69 (forward_interp)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:573 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/abstract.py:36 (AbstractInterpolator.mappings)" + ] + }, + { + "instruction": "loop_select_fusion.1", + "ms": 0.03491270624999978, + "opcode": "fusion", + "shape": "(u32[15361]{0}, u32[15361]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_select_fusion.4", + "ms": 0.034876706249999403, + "opcode": "fusion", + "shape": "(u32[15361]{0}, u32[15361]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_add_fusion", + "ms": 0.020992356249999514, + "opcode": "fusion", + "shape": "s64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69 (forward_interp)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:573 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/abstract.py:36 (AbstractInterpolator.mappings)" + ] + }, + { + "instruction": "loop_add_fusion.1", + "ms": 0.02043442499999958, + "opcode": "fusion", + "shape": "s64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "mixed_fusion": [ + { + "instruction": "loop_divide_gather_fusion", + "ms": 0.69834855, + "opcode": "fusion", + "shape": "(f64[15361,1,1,1521]{3,2,1,0}, f64[15361,1,1,1521]{3,2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_add_multiply_fusion", + "ms": 0.08985887499999999, + "opcode": "fusion", + "shape": "(f64[1369,1369]{1,0}, f64[1369,1369]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:61", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:61 (initialize)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:72 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:508 (reconstruction_positive_only_from)" + ] + }, + { + "instruction": "input_transpose_fusion.3", + "ms": 0.03090203125, + "opcode": "fusion", + "shape": "f64[1521,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1157 (AbstractInversion.log_det_regularization_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:348 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "loop_reduce_fusion.1", + "ms": 0.02713931875000001, + "opcode": "fusion", + "shape": "f64[92,2]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:556", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:556 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/abstract.py:36 (AbstractInterpolator.mappings)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:167 (Mapper.pix_indexes_for_sub_slim_index)" + ] + }, + { + "instruction": "input_transpose_fusion.2", + "ms": 0.02566110000000001, + "opcode": "fusion", + "shape": "f64[1521,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1078 (AbstractInversion.log_det_curvature_reg_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:347 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "input_transpose_fusion.4", + "ms": 0.016269693750000005, + "opcode": "fusion", + "shape": "f64[1369,1369]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:62", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:62 (initialize)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:72 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:508 (reconstruction_positive_only_from)" + ] + } + ], + "ray_trace_data_grid": [ + { + "instruction": "input_reduce_fusion.16", + "ms": 0.0028033562499999998, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:506", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:506 (FlatLambdaCDM._simpson_1d)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:644 (FlatLambdaCDM.angular_diameter_distance_kpc_z1z2)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:151 (LensingCosmology.angular_diameter_distance_between_redshifts_in_kpc_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:355 (LensingCosmology.scaling_factor_between_redshifts_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer_util.py:252 (traced_grid_2d_list_from)" + ] + }, + { + "instruction": "input_reduce_fusion.14", + "ms": 0.0027743375, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:506", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:506 (FlatLambdaCDM._simpson_1d)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:644 (FlatLambdaCDM.angular_diameter_distance_kpc_z1z2)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:133 (LensingCosmology.angular_diameter_distance_to_earth_in_kpc_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:362 (LensingCosmology.scaling_factor_between_redshifts_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer_util.py:252 (traced_grid_2d_list_from)" + ] + }, + { + "instruction": "input_reduce_fusion.15", + "ms": 0.0026159812500000054, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:503", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:503 (FlatLambdaCDM._simpson_1d)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:644 (FlatLambdaCDM.angular_diameter_distance_kpc_z1z2)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:133 (LensingCosmology.angular_diameter_distance_to_earth_in_kpc_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:362 (LensingCosmology.scaling_factor_between_redshifts_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer_util.py:252 (traced_grid_2d_list_from)" + ] + }, + { + "instruction": "input_reduce_fusion.17", + "ms": 0.00257735, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:503", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:503 (FlatLambdaCDM._simpson_1d)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:644 (FlatLambdaCDM.angular_diameter_distance_kpc_z1z2)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:151 (LensingCosmology.angular_diameter_distance_between_redshifts_in_kpc_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:355 (LensingCosmology.scaling_factor_between_redshifts_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer_util.py:252 (traced_grid_2d_list_from)" + ] + }, + { + "instruction": "loop_divide_fusion.2", + "ms": 0.002070731250000002, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:380", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:380 (LensingCosmology.scaling_factor_between_redshifts_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer_util.py:252 (traced_grid_2d_list_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer.py:632 (Tracer.traced_grid_2d_list_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/structures/decorators/abstract.py:93 (AbstractMaker.evaluate_func)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/structures/decorators/abstract.py:110 (AbstractMaker.result)" + ] + } + ], + "border_relocator": [ + { + "instruction": "eigh.0", + "ms": 0.07508699374999986, + "opcode": "custom-call", + "shape": "(f64[2,2]{0,1}, f64[2]{0}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "custom-call.2", + "ms": 0.007893050000000006, + "opcode": "custom-call", + "shape": "(f64[2,2]{1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_reduce_fusion.11", + "ms": 0.005195931249999998, + "opcode": "fusion", + "shape": "(f64[], f64[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:270", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:270 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_add_fusion.7", + "ms": 0.00361134374999999, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:423 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_concatenate_fusion.1", + "ms": 0.0035696999999999973, + "opcode": "fusion", + "shape": "f64[15361,2]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:323", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:323 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:423 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_select_sine_fusion", + "ms": 0.0033085562499999993, + "opcode": "fusion", + "shape": "(f64[], f64[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:301", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:301 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:423 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + } + ], + "other": [ + { + "instruction": "copy.31", + "ms": 0.030478974999999475, + "opcode": "copy", + "shape": "u32[2,15361]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.32", + "ms": 0.0303792312499996, + "opcode": "copy", + "shape": "u32[2,15361]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.49", + "ms": 0.02871175000000049, + "opcode": "copy", + "shape": "u32[15361]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.41", + "ms": 0.02867093750000055, + "opcode": "copy", + "shape": "u32[15361]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.50", + "ms": 0.028484112500000856, + "opcode": "copy", + "shape": "u32[15361]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.40", + "ms": 0.028408175000000962, + "opcode": "copy", + "shape": "u32[15361]{0}", + "source": "", + "stack": [] + } + ], + "mapping_matrix": [ + { + "instruction": "loop_broadcast_fusion.1", + "ms": 0.13644355, + "opcode": "fusion", + "shape": "f64[15361,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:342", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:342 (mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:283 (Mapper.mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:91 (AbstractInversionImaging._mapping_matrix_for_convolution_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:137 (AbstractInversionImaging.operated_mapping_matrix_list)" + ] + }, + { + "instruction": "input_reduce_fusion.25", + "ms": 0.0028621500000000004, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:362 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + }, + { + "instruction": "loop_divide_fusion.1", + "ms": 0.002349793750000001, + "opcode": "fusion", + "shape": "f64[1521]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:92", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:92 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:362 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + } + ], + "regularization_H": [ + { + "instruction": "loop_broadcast_fusion.2", + "ms": 0.019296431249999992, + "opcode": "fusion", + "shape": "(f64[1521,1521]{1,0}, f64[1521,1521]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:111", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:111 (weighted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:366 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_scatter_fusion.8", + "ms": 0.0028075500000000024, + "opcode": "fusion", + "shape": "f64[1521,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:123 (weighted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:366 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "psf_convolution_mapping_matrix": [ + { + "instruction": "fft.19.0", + "ms": 1.78361086875, + "opcode": "fft", + "shape": "f64[1521,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_scatter_fusion", + "ms": 1.5050567187499995, + "opcode": "fusion", + "shape": "f64[1521,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.15.0", + "ms": 1.3871463687500003, + "opcode": "fft", + "shape": "c128[1521,180,91]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.17.0", + "ms": 0.9924331812499999, + "opcode": "fft", + "shape": "c128[1521,91,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_transpose_fusion.1", + "ms": 0.5220780812500002, + "opcode": "fusion", + "shape": "c128[1521,91,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "wrapped_transpose.2", + "ms": 0.5072184624999998, + "opcode": "fusion", + "shape": "c128[1521,180,91]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + } + ], + "curvature_matrix_F": [ + { + "instruction": "cublas-lt-matmul.2", + "ms": 4.378591162499999, + "opcode": "custom-call", + "shape": "(f64[1521,1521]{1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "data_vector_D": [ + { + "instruction": "input_reduce_fusion.7", + "ms": 0.1137388000000001, + "opcode": "fusion", + "shape": "f64[92,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123 (data_vector_via_blurred_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:67 (InversionImagingMapping.data_vector)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:699 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_reduce_fusion.23", + "ms": 0.003733112499999998, + "opcode": "fusion", + "shape": "f64[1521]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123 (data_vector_via_blurred_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:67 (InversionImagingMapping.data_vector)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:699 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "inversion_other": [ + { + "instruction": "cholesky.60", + "ms": 0.9182304375000017, + "opcode": "custom-call", + "shape": "(f64[1521,1521]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1078 (AbstractInversion.log_det_curvature_reg_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:347 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "cholesky.70", + "ms": 0.900068837500001, + "opcode": "custom-call", + "shape": "(f64[1521,1521]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1157 (AbstractInversion.log_det_regularization_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:348 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "input_reduce_fusion.13", + "ms": 0.018974237499999998, + "opcode": "fusion", + "shape": "f64[1521]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:946", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:946 (AbstractInversion.regularization_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:346 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)", + "/mnt/ral/jnightin/autolens_profiling_wt/certified-solver-phase-c1-lane-rate/scripts/imaging/likelihood_breakdown/fixed_light_trace.py:1195 (_captured_likelihood_fn.._likelihood)" + ] + }, + { + "instruction": "loop_reduce_window_fusion.3", + "ms": 0.0057904937499999925, + "opcode": "fusion", + "shape": "s64[6,16]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "input_scatter_fusion.11", + "ms": 0.003821343750000001, + "opcode": "fusion", + "shape": "pred[1521]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:526", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:526 (AbstractInversion.zeroed_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:567 (AbstractInversion.solve_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:684 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_reduce_window_fusion.2", + "ms": 0.003105518750000003, + "opcode": "fusion", + "shape": "s64[86,16]{1,0}", + "source": "", + "stack": [] + } + ], + "pdip_solve": [ + { + "instruction": "cholesky.20", + "ms": 14.245732850000072, + "opcode": "custom-call", + "shape": "(f64[1369,1369]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:106", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:106 (factorize_kkt)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:212 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve", + "ms": 2.1669083187500173, + "opcode": "custom-call", + "shape": "(f64[1369,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:213 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve.2", + "ms": 2.078144474999935, + "opcode": "custom-call", + "shape": "(f64[1369,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:217 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve.3", + "ms": 2.0590597437499127, + "opcode": "custom-call", + "shape": "(f64[1369,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:217 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve.1", + "ms": 2.004522081249921, + "opcode": "custom-call", + "shape": "(f64[1369,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:213 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "cholesky.40", + "ms": 0.8455922750000019, + "opcode": "custom-call", + "shape": "(f64[1369,1369]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:62", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:62 (initialize)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:72 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:508 (reconstruction_positive_only_from)" + ] + } + ], + "mapped_reconstruction": [ + { + "instruction": "input_reduce_fusion.10", + "ms": 0.11175244374999993, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163 (mapped_reconstructed_data_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:120 (InversionImagingMapping._mapped_reconstructed_data_dict_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:196 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + } + ], + "chi_squared_evidence": [ + { + "instruction": "input_reduce_fusion.22", + "ms": 0.0038462874999999975, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:104", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:104 (noise_normalization_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:98 (AbstractFit.noise_normalization)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:306 (FitDataset.noise_normalization)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:349 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)" + ] + }, + { + "instruction": "input_reduce_fusion.24", + "ms": 0.003808350000000001, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:90", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:90 (chi_squared_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:87 (AbstractFit.chi_squared)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:293 (FitDataset.chi_squared)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:345 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)" + ] + }, + { + "instruction": "loop_multiply_fusion.2", + "ms": 0.0029753624999999955, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:300", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:300 (AbstractNDArray.__pow__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:60 (unwrap_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:35 (to_new_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:78 (chi_squared_map_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:78 (AbstractFit.chi_squared_map)" + ] + } + ] + }, + "stage_audit_note": "The HLO instructions that contributed most of each stage's milliseconds, with their full source stack. A stage row is only as good as the rules that built it; this is how a reader checks a row against the HLO instead of trusting it.", + "untraced_wall_ms": 41.72168969375889, + "reconciliation_vs_untraced_pct": 2.5323308038244132, + "wall_basis": "wall_ms is the TRACED run's wall, the run these kernel durations came from. untraced_wall_ms is the same executable without the profiler; the difference is the profiler's overhead and belongs in neither the stages nor the idle row.", + "calls": 160, + "call_split": "per-call (first-instruction recurrence)", + "call_blocks": 160, + "events": 149920, + "streams": [ + "Stream #14(MemcpyD2H,Compute,MemcpyH2D,Memset,MemcpyD2D)" + ], + "per_stage_ms": { + "border_relocator": { + "median_ms": 0.10588700000000002, + "min_ms": 0.10514500000000002, + "max_ms": 0.26473800000000003 + }, + "chi_squared_evidence": { + "median_ms": 0.010608, + "min_ms": 0.010303, + "max_ms": 0.011040000000000001 + }, + "curvature_matrix_F": { + "median_ms": 4.3614075, + "min_ms": 4.336079, + "max_ms": 4.532242 + }, + "data_vector_D": { + "median_ms": 0.11744149999999999, + "min_ms": 0.11657200000000001, + "max_ms": 0.118588 + }, + "inversion_other": { + "median_ms": 1.8648995000000002, + "min_ms": 1.8517009999999998, + "max_ms": 1.8848850000000001 + }, + "mapped_reconstruction": { + "median_ms": 0.1117135, + "min_ms": 0.111073, + "max_ms": 0.112604 + }, + "mapping_matrix": { + "median_ms": 0.141658, + "min_ms": 0.141593, + "max_ms": 0.141786 + }, + "memset": { + "median_ms": 0.05356750000000002, + "min_ms": 0.038175, + "max_ms": 0.06268900000000001 + }, + "mesh_construction": { + "median_ms": 0.38247850000000005, + "min_ms": 0.37994000000000033, + "max_ms": 0.38427200000000006 + }, + "mixed_fusion": { + "median_ms": 0.9923545000000001, + "min_ms": 0.989497, + "max_ms": 0.9949700000000001 + }, + "other": { + "median_ms": 0.19586199999999968, + "min_ms": 0.19480499999999976, + "max_ms": 0.1963349999999997 + }, + "pdip_solve": { + "median_ms": 25.223602499999984, + "min_ms": 18.133828999999995, + "max_ms": 29.62129000000002 + }, + "psf_convolution_mapping_matrix": { + "median_ms": 6.9307155, + "min_ms": 6.907947, + "max_ms": 6.949066999999999 + }, + "ray_trace_data_grid": { + "median_ms": 0.012832000000000001, + "min_ms": 0.012735, + "max_ms": 0.013056000000000002 + }, + "regularization_H": { + "median_ms": 0.0220635, + "min_ms": 0.021505, + "max_ms": 0.023230999999999998 + } + }, + "stage_order": [ + "ray_trace_data_grid", + "border_relocator", + "mesh_construction", + "mapping_matrix", + "psf_convolution_mapping_matrix", + "data_vector_D", + "curvature_matrix_F", + "regularization_H", + "pdip_solve", + "mapped_reconstruction", + "chi_squared_evidence", + "inversion_other", + "mixed_fusion", + "other", + "memset" + ], + "mixed_fusion": { + "ms": 0.9923545000000001, + "constituent_stage_sets": { + "curvature_matrix_F + psf_convolution_mapping_matrix": 0.69834855, + "inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": 0.08985887499999999, + "inversion_other + regularization_H": 0.03090203125, + "border_relocator + mesh_construction": 0.030603243750000016, + "curvature_reg_reduce_gather + inversion_other": 0.02566110000000001, + "border_relocator + inversion_other + mapping_matrix + mesh_construction": 0.02049218125000001, + "border_relocator + pdip_solve": 0.016269693750000005, + "inversion_other + mapping_matrix + regularization_H": 0.015486306249999976, + "inversion_other + mapping_matrix + mesh_construction": 0.012841743749999999, + "grids_and_structures + mass_profile_deflections": 0.010084231249999995, + "inversion_other + mapped_reconstruction + reconstruction_scatter": 0.009653781250000002, + "inversion_other + mapped_reconstruction": 0.00894964375, + "inversion_other + mesh_construction": 0.005592074999999995, + "grids_and_structures + mass_profile_deflections + ray_trace_data_grid": 0.005271243749999998, + "inversion_other + ray_trace_data_grid": 0.004773912499999996, + "border_relocator + inversion_other": 0.0033671562500000017, + "border_relocator + inversion_other + mesh_construction": 0.0024583437500000044, + "chi_squared_evidence + inversion_other": 0.0017903500000000007 + }, + "example_kernels": { + "curvature_matrix_F + psf_convolution_mapping_matrix": [ + "loop_divide_gather_fusion" + ], + "inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": [ + "loop_add_multiply_fusion" + ], + "inversion_other + regularization_H": [ + "input_transpose_fusion.3" + ], + "border_relocator + mesh_construction": [ + "loop_reduce_fusion.1", + "loop_select_fusion.5" + ], + "curvature_reg_reduce_gather + inversion_other": [ + "input_transpose_fusion.2" + ], + "border_relocator + inversion_other + mapping_matrix + mesh_construction": [ + "input_scatter_fusion.6", + "input_scatter_fusion.10" + ], + "border_relocator + pdip_solve": [ + "input_transpose_fusion.4" + ], + "inversion_other + mapping_matrix + regularization_H": [ + "input_scatter_fusion.4", + "input_scatter_fusion.5", + "input_scatter_fusion.2", + "input_scatter_fusion.3" + ], + "inversion_other + mapping_matrix + mesh_construction": [ + "input_scatter_fusion.7" + ], + "grids_and_structures + mass_profile_deflections": [ + "loop_divide_minimum_multiply_sine_sqrt_fusion", + "loop_slice_fusion" + ] + }, + "prorated_estimate_ms": { + "curvature_matrix_F": 0.349174275, + "psf_convolution_mapping_matrix": 0.349174275, + "inversion_other": 0.08158595677083331, + "border_relocator": 0.031062540104166682, + "pdip_solve": 0.030599565625, + "mapped_reconstruction": 0.03015746770833333, + "mesh_construction": 0.028320733854166672, + "reconstruction_scatter": 0.02568264583333333, + "regularization_H": 0.020613117708333326, + "mapping_matrix": 0.014565728645833328, + "curvature_reg_reduce_gather": 0.012830550000000005, + "grids_and_structures": 0.006799196874999997, + "mass_profile_deflections": 0.006799196874999997, + "ray_trace_data_grid": 0.004144037499999998, + "chi_squared_evidence": 0.0008951750000000003 + }, + "prorated_note": "ESTIMATE ONLY \u2014 a mixed fusion's time split equally across the stages its constituents span. Never summed into the measured table, never reconciled." + }, + "other_sources_ms": { + "copy.31": 0.030478974999999475, + "copy.32": 0.0303792312499996, + "copy.49": 0.02871175000000049, + "copy.41": 0.02867093750000055, + "copy.50": 0.028484112500000856, + "copy.40": 0.028408175000000962, + "loop_reduce_window_fusion": 0.006472906250000008, + "loop_reduce_window_fusion.1": 0.004344731249999991, + "copy.69": 0.0017843499999999992, + "loop_broadcast_fusion.3": 0.001777775, + "copy.90": 0.0016805625000000017, + "copy.33": 0.0015455687499999983, + "copy.42": 0.0015387749999999985, + "copy.24": 0.001530781249999998 + }, + "device_span_ms": 42.78826123125, + "device_busy_ms": 40.5371313375, + "device_idle_ms": 2.2511298937499973, + "largest_idle_gaps": [ + { + "gap_ms": 0.052894, + "after": "while.28", + "before": "input_scatter_fusion.1" + }, + { + "gap_ms": 0.04707, + "after": "input_concatenate_fusion.4", + "before": "custom-call.2" + }, + { + "gap_ms": 0.036286, + "after": "loop_multiply_fusion.3", + "before": "eigh.0" + }, + { + "gap_ms": 0.033407, + "after": "loop_add_fusion.5", + "before": "loop_select_fusion.4" + }, + { + "gap_ms": 0.032767, + "after": "eigh.0", + "before": "eigh.0" + }, + { + "gap_ms": 0.025247, + "after": "eigh.0", + "before": "eigh.0" + }, + { + "gap_ms": 0.022911, + "after": "loop_add_fusion.1", + "before": "loop_select_fusion.1" + }, + { + "gap_ms": 0.020639, + "after": "loop_broadcast_fusion.6", + "before": "loop_broadcast_fusion.8" + } + ], + "kernel_ms": 40.527090999999984, + "sum_ms": 42.77822089374998, + "wall_ms": 42.793087456243484, + "host_outside_span_ms": 0.004826224993486505, + "reconciliation_pct": -0.034740569978044485, + "unjoined_ms": 0.0, + "unjoined_pct": 0.0, + "other_ms": 0.19586199999999968, + "other_pct": 0.457695416812987, + "note": "Stage rows attribute the command-buffers-OFF program (see the module docstring): kernel times are the same, the launch overhead the CUDA graphs remove is not. sum_ms = kernel rows + device_idle_ms; the residual against wall_ms is host_outside_span_ms (dispatch before the first kernel, teardown after the last).", + "per_stage_ms_per_lane": { + "border_relocator": 0.10588700000000002, + "chi_squared_evidence": 0.010608, + "curvature_matrix_F": 4.3614075, + "data_vector_D": 0.11744149999999999, + "inversion_other": 1.8648995000000002, + "mapped_reconstruction": 0.1117135, + "mapping_matrix": 0.141658, + "memset": 0.05356750000000002, + "mesh_construction": 0.38247850000000005, + "mixed_fusion": 0.9923545000000001, + "other": 0.19586199999999968, + "pdip_solve": 25.223602499999984, + "psf_convolution_mapping_matrix": 6.9307155, + "ray_trace_data_grid": 0.012832000000000001, + "regularization_H": 0.0220635 + }, + "per_lane_divisor": 1, + "host_callback": { + "pure_callback_span_ms": 0, + "qhull_ms": 0.0, + "callback_body_ms_note": "the OUTERMOST matching body event, not a sum: under the probe the body appears twice (the wrapper and the timed re-implementation it calls) and summing them would count the same work twice", + "events_by_name": { + "ThenExecuteCallback:GetEventForComputeStreamSyncPoint": { + "count": 160, + "ms": 0.2949737000000001 + } + }, + "note": "HOST milliseconds per traced BATCH (the whole invocation), aggregated by name because the events nest. Not a row of the device table: the device pays for them as the idle gaps largest_idle_gaps names." + }, + "host_callback_ms": 0 + }, + "hlo_census": { + "status": "excluded", + "reason": "The legacy census anchors PyAutoArray source line numbers that moved after the phase-1 run. No batched attribution is published from unsupported anchors; the device-event table and wall reconciliation remain valid." + }, + "trace_split": { + "expected_calls": 160, + "executions_per_invocation": 16, + "method": "per-call (first-instruction recurrence)", + "note": "DECIDED IN CODE: the scalar arm's trace is split by trace_calls * B, so every lane's execution is its own block and the per-stage median is taken over all of them. The vmap arm's is split by trace_calls, one block per batched execution, and per_stage_ms_per_lane divides those rows by B." + } + } + }, + "certification_report": { + "source": "vmap arm, library solve observed through its stats= out-dict (PyAutoArray #566) and jax.debug.callback(..., ordered=True); ordered because the unordered batching rule returns the lanes permuted. Untimed, separately compiled; max rel diff of its log likelihoods vs the timed arm's: 7.085e-07", + "rows": 0, + "pdip_iter": "NOT AVAILABLE per lane without changing library numerics. The fallback branch calls the library's own reconstruction_positive_only_from, which returns the solution alone \u2014 jax_nnls.solve_nnls' iteration count is discarded inside the library's custom_vjp primal. The PDIP while_loop's cost is in the pdip_solve stage row of each arm's device table instead, which is a max-over-lanes quantity under vmap because every lane runs the same fixed kernel sequence.", + "passes_semantics": "library `passes`: restricted active-set passes run (jax_active_set.solve_certified)" + }, + "lane_construction": { + "draws_sha256": "6bdc2dd94a49d4d0c9095b0fbaa94aad0f0243aedd8fc4dad1391ab796f19d33", + "lane_rows": [ + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315 + ], + "calls": [ + 15 + ], + "stage": "pix1", + "regularization_range": { + "galaxies.source.pixelization.regularization.inner_coefficient": { + "min": 1.5395402868893563e-06, + "max": 631.3270846999916 + }, + "galaxies.source.pixelization.regularization.outer_coefficient": { + "min": 1.585514819488347e-06, + "max": 4.102561528173602 + }, + "galaxies.source.pixelization.regularization.signal_scale": { + "min": 0.06623313471893155, + "max": 0.9779334025364208 + } + }, + "phases": [ + "exploration" + ], + "window_rule": "nautilus_batches.timed_window: consecutive captured calls, in call order, from the FIRST call that is not a prior batch, concatenated and truncated to B; at B == n_batch exactly one real Nautilus batch. Falls back to the latest B lanes if the post-prior lanes run out; never repeats a lane.", + "note": "Lane k is captured lane lane_rows[k]: the mass AND shear of a real Nautilus proposal (nautilus_batch_capture.py), lens light fixed at S3, the S3 light-subtracted dataset shared by every lane. `offsets` in the lane table are the mass offsets from the fiducial; the shear is in the capture file." + }, + "captured": { + "batches_path": "/mnt/ral/jnightin/autolens_profiling_wt/certified-solver-phase-c1-lane-rate/results/breakdown/imaging/nautilus_batches_rectangular_pix1.npz", + "batches_sha256": "c0b62fba544cb62c8a273c19837cf364127f5af7fdaa110f3a2c8a973e0b6cc0", + "schema_version": 2, + "n_calls": 972, + "n_lanes": 19440, + "call_sizes_seen": [ + 20 + ], + "calls_by_phase": { + "prior": 15, + "exploration": 957 + }, + "parameter_paths": [ + "galaxies.source.pixelization.regularization.inner_coefficient", + "galaxies.source.pixelization.regularization.outer_coefficient", + "galaxies.source.pixelization.regularization.signal_scale", + "galaxies.lens.mass.centre.centre_0", + "galaxies.lens.mass.centre.centre_1", + "galaxies.lens.mass.einstein_radius", + "galaxies.lens.mass.ell_comps.ell_comps_0", + "galaxies.lens.mass.ell_comps.ell_comps_1", + "galaxies.lens.shear.gamma_1", + "galaxies.lens.shear.gamma_2" + ], + "stage": "pix1", + "regularization": { + "class": "Adapt", + "free": true, + "priors": { + "inner_coefficient": [ + "LogUniform", + 1e-06, + 1000000.0 + ], + "outer_coefficient": [ + "LogUniform", + 1e-06, + 1000000.0 + ], + "signal_scale": [ + "Uniform", + 0.0, + 1.0 + ] + }, + "priors_source": "PyAutoGalaxy packaged config/priors/regularization (adapt_split.yaml / adapt.yaml / constant.yaml); adapt_split.yaml and adapt.yaml are identical to euclid_strong_lens_modeling_pipeline/config/priors/regularization/'s copies" + }, + "nautilus": { + "departures_from_production": [ + "mass/shear priors are the phase-B cell's Gaussians, not chained from source_lp", + "no positions likelihood", + "the cell's mesh (39x39 RectangularBilinearAdaptImage, weight_power 1, weight_floor 0) fixed in both stages; source_pix_1 uses RectangularBilinearAdaptDensity, source_pix_2 frees weight_power / weight_floor", + "seeded (production passes no seed)", + "quick updates disabled (iterations_per_quick_update=1e12; render-only)", + "NullPaths: no output directory, so no checkpoint and one Sampler.run call", + "post-fit perform_update skipped (samples / latent variables never built)" + ], + "n_batch": 20, + "n_like_max": 40000, + "n_live": 150, + "number_of_cores": 1, + "production_reference": "euclid_strong_lens_modeling_pipeline/scripts/full_model.py source_pix_1 (n_live=150) / source_pix_2 (n_live=75): af.Nautilus(n_batch=20, **SettingsSearch.search_dict) with use_jax_vmap=True and number_of_cores=1 (SettingsSearch defaults)", + "production_stage": "source_pix_1", + "seed": 1, + "stage": "pix1", + "use_jax_vmap": true, + "version": "1.0.5" + }, + "capture_fit_status": "sampling complete (n_like_max or convergence); post-fit result skipped", + "capture_library_revisions": { + "PyAutoArray": { + "head": "3de624b5b91a4efa130dc3cb0a3a0f06f85025a3", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoArray" + }, + "PyAutoFit": { + "head": "dd9fbe0aab60c4a57702b1444ca031b317c91331", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoFit" + }, + "PyAutoGalaxy": { + "head": "70a61e26cd715cefe7012a38285698091246a8a4", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy" + }, + "PyAutoLens": { + "head": "86054bbc19baa2f710a12e04a94fa27ab37cc354", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoLens" + }, + "PyAutoNerves": { + "head": "1fa613aa8d89a79613009fb66f5b4e2d21deb57a", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoNerves" + } + }, + "fingerprint_check": { + "fields": [ + "mesh", + "source_pixels", + "dataset_sha256", + "regularization_class", + "regularization_s0_fiducial", + "border_relocator", + "use_mixed_precision", + "log_evidence_s3_library" + ], + "not_identity": "the regularization coefficients: free per lane since the capture frees them", + "log_evidence_s3_library_rel_diff": 0.0, + "passed": true + }, + "timed_window_vs_capture_pdip": { + "reference": "the capture's own figure of merit (library PDIP, Fitness.call_wrap jax.jit(jax.vmap(call)) over parameter vectors) for the same lanes", + "compared_against": "this cell's jit(vmap) library-PDIP reference", + "n_compared": 16, + "max_rel_diff": 8.124809709918645e-07, + "max_abs_diff_nats": 0.1579329406376928, + "gated": false, + "note": "RECORDED, NOT GATED: proves the lane trees rebuilt here are the models the sampler evaluated (a wrong parameter mapping shows up as nats, not 1e-10)." + } + }, + "matched": { + "vmap_wall_per_lane_ms": 33.22804240624464, + "scalar_wall_per_lane_ms": 41.37019584375139, + "speedup_vmap_over_scalar": 1.2450386134085518, + "note": "Both walls are the PRODUCTION nesting of their arm, measured in one process on the same B lanes with the SAME library Settings (no injection). A speedup below 1 means the batch is slower per lane than B sequential jitted calls." + }, + "solver_source": "library", + "solver": "pdip", + "certified_fallback": "pdip", + "certified_pass_budget": 16, + "certified_pass_budget_basis": "config default (Settings().certified_pass_budget)", + "certified_tau_rel": 1e-09, + "solver_used": "pdip", + "solver_check": { + "solver_used": "pdip", + "solver_used_source": "AbstractInversion.positive_only_solver_used on the fiducial S3 inversion, built eagerly on the JAX backend (AnalysisImaging(use_jax=True).fit_from) with the arms' Settings", + "reference_solver_used": "pdip", + "traced_solver_kwargs_jax": [ + "pdip" + ], + "observed_calls_jax": 1, + "report_rows": 0, + "report_vs_timed_arm_max_rel_diff": 7.085220240320927e-07 + }, + "lanes_certified": [ + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null + ], + "lanes_passes": [ + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null + ], + "uncertified_lanes": null, + "per_lane_certification_note": "Not applicable: a library-PDIP row has no certificate or pass count.", + "gate": { + "pre_registered": true, + "gated": [ + "per lane: jit(vmap) arm vs jit(vmap) library PDIP <= lane_rtol relative", + "per lane: scalar jit arm vs scalar jit library PDIP <= lane_rtol relative" + ], + "recorded_not_gated": [ + "per lane: jit(vmap) arm vs scalar jit arm (rel_diff, abs_diff_nats)", + "per lane: jit(vmap) library PDIP vs scalar jit library PDIP", + "uncertified_lanes (certified_fallback=none rows)" + ], + "lanes_failed": 2, + "passed": false, + "policy_eligible": false, + "note": "Pre-registered before submission (module docstring; submit header). Phase 3 (results/notes/hst_gpu_residue_phase3_psf_2026_09.md) placed phase 2's ~2.5e-9 certified-vs-PDIP residual BETWEEN the jit(vmap) and scalar-jit compositions, not in the solver \u2014 so each arm is gated against the library-PDIP reference of its OWN composition, and the cross-composition difference is recorded with its nats. A certified_fallback=none row is policy-eligible only if every lane certifies AND passes the gate. Timing is never gated." + }, + "library_revisions": { + "PyAutoArray": { + "head": "3de624b5b91a4efa130dc3cb0a3a0f06f85025a3", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoArray", + "module_file": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/__init__.py" + }, + "PyAutoFit": { + "head": "dd9fbe0aab60c4a57702b1444ca031b317c91331", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoFit", + "module_file": "/mnt/ral/jnightin/PyAuto/PyAutoFit/autofit/__init__.py" + }, + "PyAutoGalaxy": { + "head": "70a61e26cd715cefe7012a38285698091246a8a4", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy", + "module_file": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/__init__.py" + }, + "PyAutoLens": { + "head": "86054bbc19baa2f710a12e04a94fa27ab37cc354", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoLens", + "module_file": "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/__init__.py" + }, + "autoarray_file": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/__init__.py" + } + }, + "headline_arm_note": "`trace`, `hlo_census`, `command_buffers` and `trace_timing` above describe the scalar arm \u2014 the program phase 1 traced. Both arms' full blocks, the lane table and the matched comparison are under `vmap`." +} \ No newline at end of file diff --git a/results/breakdown/imaging/fixed_light_trace_rectangular_jitvmap16_captured_pix1_libpdip_fbon_b16_hpc_a100_fp64_fixed_light_trace.png b/results/breakdown/imaging/fixed_light_trace_rectangular_jitvmap16_captured_pix1_libpdip_fbon_b16_hpc_a100_fp64_fixed_light_trace.png new file mode 100644 index 000000000..4a5cb1a78 Binary files /dev/null and b/results/breakdown/imaging/fixed_light_trace_rectangular_jitvmap16_captured_pix1_libpdip_fbon_b16_hpc_a100_fp64_fixed_light_trace.png differ diff --git a/results/breakdown/imaging/fixed_light_trace_rectangular_jitvmap20_captured_pix1_libcertified_fboff_b16_hpc_a100_fp64_fixed_light_trace.json b/results/breakdown/imaging/fixed_light_trace_rectangular_jitvmap20_captured_pix1_libcertified_fboff_b16_hpc_a100_fp64_fixed_light_trace.json new file mode 100644 index 000000000..ae3cdac7e --- /dev/null +++ b/results/breakdown/imaging/fixed_light_trace_rectangular_jitvmap20_captured_pix1_libcertified_fboff_b16_hpc_a100_fp64_fixed_light_trace.json @@ -0,0 +1,5391 @@ +{ + "device": { + "backend": "gpu", + "device": "cuda:0", + "hostname": "euclid-ral-gpu-2", + "xla_flags": "--xla_disable_hlo_passes=constant_folding --xla_gpu_autotune_level=0 --xla_gpu_enable_triton_gemm=false", + "omp_num_threads": null, + "cpu_count": 124, + "jax_compilation_cache_dir": "/mnt/ral/jnightin/autolens_profiling_wt/certified-solver-phase-c1-lane-rate/output/jax_cache/fixed_light_lanerate_rectangular_pix1_time_20_certified_off_350768_25", + "autotune_cache_entries_at_start": 0, + "cache_fresh": true, + "nvidia_smi": "NVIDIA A100 80GB PCIe, 35453 MiB, 81920 MiB" + }, + "machine": { + "cpu_model": "AMD EPYC 7702 64-Core Processor", + "cpu_count_os": 124, + "nproc": 4, + "nproc_all": 124, + "nproc_note": "GNU nproc honours OMP_NUM_THREADS, so `nproc` can print 1 on a multi-core host; `nproc_all` is the core count.", + "ram_total": "928298204 kB", + "kernel": "5.14.0-687.50.1.el9_8.x86_64", + "platform": "Linux-5.14.0-687.50.1.el9_8.x86_64-x86_64-with-glibc2.34", + "python": "3.12.4", + "jax_thread_env": { + "NPROC": null + }, + "blas_thread_env": { + "OMP_NUM_THREADS": null, + "OPENBLAS_NUM_THREADS": null, + "MKL_NUM_THREADS": null, + "VECLIB_MAXIMUM_THREADS": null, + "NUMEXPR_NUM_THREADS": null + }, + "thread_env_note": "NPROC sizes XLA's CPU intra-op pool (the JAX rows); the BLAS knobs pin OpenBLAS/MKL/OpenMP (the numpy/scipy rows) and do not touch JAX. Two disjoint families; both are recorded on every CPU timing.", + "gpu": "NVIDIA A100 80GB PCIe, 81920 MiB, 610.57.04" + }, + "precision": "fp64", + "configuration": { + "pixel_scale_arcsec": 0.05, + "mask_radius_arcsec": 3.5, + "image_pixels_masked": 15361, + "over_sampled_pixels": 62752, + "mesh": "rectangular", + "mesh_shape": [ + 39, + 39 + ], + "source_pixels": 1521, + "source_pixels_requested": null, + "dataset": "hst", + "dataset_sha256": { + "data.fits": "e4e833a28e9c6f6fb023cd85c0d3dde74068720256bc77a240633500e5b04fac", + "noise_map.fits": "315c6266a0acd3ac9c8da82fcd2b45a08697362481fd7a35072bab1658530ba3", + "psf.fits": "8389ba0e8bf4a09b4a561cfc246181a2fb944ed396754cd0ff76fdd22910d303" + }, + "cell_source_sha256": "06a162fcdae6b329384ec33322f443df07215d86e56f0505ac15b3d3473eb432", + "inversion_path": "dense", + "pass_budget": 11, + "pass_budget_basis": "phase 3 (autolens_profiling#255): the smallest ZERO-fallback budget per mesh, the budget a production run fixes. NOT phase 0's certifying budget (2 for Delaunay), which falls back on 67.5 % of a graded draw set and is not a production cost.", + "border_relocator_mode": "cell", + "border_relocator": true, + "border_relocator_note": "'cell' is use_border_relocator=True, which every profiling cell in this family forces; 'library' passes None and takes the shipped config default, which is what production runs. The resolved boolean is what this leg actually ran.", + "routes_selected": [ + "b", + "d" + ], + "trace_calls": 10, + "command_buffers_traced": "off", + "use_mixed_precision": false, + "tau_rel": 1e-09, + "regularization": { + "scheme": "constant", + "coefficient": 1.0 + }, + "thread_env": { + "n_threads": null, + "vars": [ + "OPENBLAS_NUM_THREADS", + "MKL_NUM_THREADS", + "OMP_NUM_THREADS", + "VECLIB_MAXIMUM_THREADS", + "NUMEXPR_NUM_THREADS" + ], + "set_to": null, + "preexisting": {}, + "overridden": {}, + "note": "Not pinned (legacy variant): recorded as found." + }, + "over_sample_size_lp_rule": { + "sub_size_list": [ + 4, + 2, + 2 + ], + "radial_list": [ + 0.3, + 0.6 + ], + "centre": [ + 0.0, + 0.0 + ] + }, + "vmap_batch": 20, + "lanes": "captured", + "arms": [ + "vmap", + "scalar" + ], + "fallback": "off", + "draw_seed": 0, + "vmap_composition": "jax.jit(jax.vmap(fn))", + "lane_rtol": 1e-09, + "vmap_flags_note": "Strict ProfileCLI.parse_cell_args rejects unknown flags. These keys record the exact batching program and prevent historical vmap(jit) artifacts from being mistaken for current jit(vmap) measurements.", + "solver_source": "library", + "solver": "certified", + "certified_fallback": "none", + "certified_pass_budget": 16, + "captured_pass": "time", + "batches": "/mnt/ral/jnightin/autolens_profiling_wt/certified-solver-phase-c1-lane-rate/results/breakdown/imaging/nautilus_batches_rectangular_pix1.npz" + }, + "solver_injection": { + "patched": null, + "part_v": "none \u2014 library mode selects the solver through al.Settings", + "part_b_route_d": { + "patched": "autoarray.inversion.inversion.inversion_util.reconstruction_positive_only_from", + "pass_budget": 11, + "fallback": true + }, + "note": "Library mode (phase B, #300): PART V's arms and references run the library's own positive-only solve, selected by Settings(positive_only_solver, certified_fallback, certified_pass_budget); nothing is injected. PART B's single-call route d (the fiducial d == b pin) still uses the phase-1 harness injection at the phase-3 budget and is not a phase-B row. The untimed certification report observes the library solve (library_solver_observed) without changing it." + }, + "routes": { + "b_s3_pdip": { + "label": "S3 PDIP (source-only)", + "status": "ok", + "solver": "library", + "ms": 38.844548699853476, + "log_likelihood": 28622.39485118912 + }, + "d_s3_certified_fallback": { + "label": "S3 certified active set, budget 11, PDIP fallback", + "status": "ok", + "solver": "harness-injected certified active set", + "pass_budget": 11, + "fallback": true, + "injected_solver_calls_jax": 1, + "injected_solver_calls_numpy": 0, + "ms": 30.167572700156597, + "log_likelihood": 28622.394851189252 + } + }, + "equivalence_pins": [ + { + "pin": "route d (certified, fallback) == route b (library PDIP)", + "route": "d_s3_certified_fallback", + "reference": "b_s3_pdip", + "expectation": "the certified active set returns the library's own positive solution", + "rtol": 1e-09, + "got": 28622.394851189252, + "reference_value": 28622.39485118912, + "rel_diff": 4.575691088611358e-15, + "status": "PASS" + } + ], + "equivalence_rtol": 1e-09, + "reference": { + "log_evidence_s0_library": 28622.394851199875, + "log_evidence_s3_library": 28622.39485119987, + "s3": { + "n_params": 1521, + "n_mapper": 1521, + "n_funcs": 0, + "edge_zeroed_pixels": 152, + "subtracted_light_flux": 5253.476646922047 + } + }, + "command_buffers": { + "wall_on_ms": 625.4916029996821, + "wall_off_ms": 629.4270720001805, + "command_buffer_delta_ms": 3.935469000498415, + "command_buffer_delta_pct": 0.6291801491219084, + "traced": "off", + "compiler_option": "xla_gpu_enable_command_buffer", + "probe": { + "note": "Not taken in --vmap-batch mode: the CUPTI-inside-a-CUDA-graph probe is a phase-1 diagnostic about the JOIN, and this mode already compiles and times both the command-buffers ON and OFF executable of every arm." + }, + "note": "ONE lowering, TWO compilations, one process. wall_on_ms is the PRODUCTION program (CUDA graphs as XLA ships them) and is the number comparable to phase 5's row; wall_off_ms is the graph-less program the stage rows attribute. The delta is the launch overhead the graphs remove \u2014 it lands in device_idle and host_outside_span, not in any stage. Reconciliation is computed against wall_off_ms." + }, + "trace": { + "parser": "ProfileData.from_file(xplane) + as_text() + stack_frame_index(proto field 17)", + "stage_audit": { + "mesh_construction": [ + { + "instruction": "fusion.2", + "ms": 0.14791941999999886, + "opcode": "fusion", + "shape": "(f64[15361,2]{1,0}, s64[15361,2]{1,0}, s32[15361,2]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:227", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:227 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_select_fusion", + "ms": 0.03917319999999952, + "opcode": "fusion", + "shape": "(u32[2,15361]{1,0}, u32[2,15361]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69 (forward_interp)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:573 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/abstract.py:36 (AbstractInterpolator.mappings)" + ] + }, + { + "instruction": "loop_select_fusion.3", + "ms": 0.03453038500000075, + "opcode": "fusion", + "shape": "(u32[15361]{0}, u32[15361]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_select_fusion.1", + "ms": 0.034339810000000706, + "opcode": "fusion", + "shape": "(u32[15361]{0}, u32[15361]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_add_fusion", + "ms": 0.020984455000000447, + "opcode": "fusion", + "shape": "s64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69 (forward_interp)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:573 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/abstract.py:36 (AbstractInterpolator.mappings)" + ] + }, + { + "instruction": "loop_add_fusion.3", + "ms": 0.020345205000000262, + "opcode": "fusion", + "shape": "s64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "mixed_fusion": [ + { + "instruction": "loop_divide_gather_fusion", + "ms": 0.6957924149999994, + "opcode": "fusion", + "shape": "(f64[15361,1,1,1521]{3,2,1,0}, f64[15361,1,1,1521]{3,2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_broadcast_fusion.3", + "ms": 0.23343745999999976, + "opcode": "fusion", + "shape": "f64[1521,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_multiply_transpose_fusion", + "ms": 0.18456236000000004, + "opcode": "fusion", + "shape": "(f64[1369,1369]{1,0}, f64[1369,1369]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:237 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:274 (_certified_positive_only_from)" + ] + }, + { + "instruction": "loop_broadcast_fusion", + "ms": 0.1363833950000001, + "opcode": "fusion", + "shape": "f64[15361,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:342", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:342 (mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:283 (Mapper.mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:91 (AbstractInversionImaging._mapping_matrix_for_convolution_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:137 (AbstractInversionImaging.operated_mapping_matrix_list)" + ] + }, + { + "instruction": "input_reduce_fusion.3", + "ms": 0.11353913499999997, + "opcode": "fusion", + "shape": "f64[92,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123 (data_vector_via_blurred_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:67 (InversionImagingMapping.data_vector)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:699 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_reduce_fusion.6", + "ms": 0.11184050999999992, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163 (mapped_reconstructed_data_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:120 (InversionImagingMapping._mapped_reconstructed_data_dict_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:196 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + } + ], + "border_relocator": [ + { + "instruction": "eigh.0", + "ms": 0.07397104999999984, + "opcode": "custom-call", + "shape": "(f64[2,2]{0,1}, f64[2]{0}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "custom-call.2", + "ms": 0.007906175, + "opcode": "custom-call", + "shape": "(f64[2,2]{1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_reduce_fusion.7", + "ms": 0.005313780000000003, + "opcode": "fusion", + "shape": "(f64[], f64[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:270", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:270 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_add_fusion.5", + "ms": 0.0035868199999999923, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:423 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_concatenate_fusion.4", + "ms": 0.0023776849999999966, + "opcode": "fusion", + "shape": "f64[392,2]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:238", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:238 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_multiply_fusion.1", + "ms": 0.0015503599999999982, + "opcode": "fusion", + "shape": "f64[2,2]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + } + ], + "other": [ + { + "instruction": "copy.41", + "ms": 0.030097644999999295, + "opcode": "copy", + "shape": "u32[2,15361]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.42", + "ms": 0.02979979499999904, + "opcode": "copy", + "shape": "u32[2,15361]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.59", + "ms": 0.028553500000001345, + "opcode": "copy", + "shape": "u32[15361]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.51", + "ms": 0.028486760000000933, + "opcode": "copy", + "shape": "u32[15361]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.60", + "ms": 0.028346345000000193, + "opcode": "copy", + "shape": "u32[15361]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.50", + "ms": 0.02822736499999981, + "opcode": "copy", + "shape": "u32[15361]{0}", + "source": "", + "stack": [] + } + ], + "pdip_solve": [ + { + "instruction": "cholesky.40", + "ms": 9.184048324999997, + "opcode": "custom-call", + "shape": "(f64[1369,1369]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "triangular-solve.1", + "ms": 1.6106283850000624, + "opcode": "custom-call", + "shape": "(f64[1369,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "triangular-solve", + "ms": 1.3639690900000043, + "opcode": "custom-call", + "shape": "(f64[1369,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "cholesky.60", + "ms": 0.8410301000000001, + "opcode": "custom-call", + "shape": "(f64[1369,1369]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:237 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:274 (_certified_positive_only_from)" + ] + }, + { + "instruction": "cholesky.70", + "ms": 0.8337424149999996, + "opcode": "custom-call", + "shape": "(f64[1369,1369]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:297 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:274 (_certified_positive_only_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:496 (reconstruction_positive_only_from)" + ] + }, + { + "instruction": "input_transpose_fusion.1", + "ms": 0.32416548500000025, + "opcode": "fusion", + "shape": "f64[1369,1369]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + } + ], + "mapping_matrix": [ + { + "instruction": "input_reduce_fusion.20", + "ms": 0.0028160800000000077, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:362 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + } + ], + "regularization_H": [ + { + "instruction": "input_scatter_fusion.8", + "ms": 0.002785044999999994, + "opcode": "fusion", + "shape": "f64[1521,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:123 (weighted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:366 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "psf_convolution_mapping_matrix": [ + { + "instruction": "fft.19.0", + "ms": 1.7801854650000009, + "opcode": "fft", + "shape": "f64[1521,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_scatter_fusion", + "ms": 1.4222081299999996, + "opcode": "fusion", + "shape": "f64[1521,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.15.0", + "ms": 1.383124279999999, + "opcode": "fft", + "shape": "c128[1521,180,91]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.17.0", + "ms": 0.9921843850000003, + "opcode": "fft", + "shape": "c128[1521,91,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_transpose_fusion.2", + "ms": 0.522208855, + "opcode": "fusion", + "shape": "c128[1521,91,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "wrapped_transpose.2", + "ms": 0.5077285800000001, + "opcode": "fusion", + "shape": "c128[1521,180,91]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + } + ], + "curvature_matrix_F": [ + { + "instruction": "cublas-lt-matmul.2", + "ms": 4.364650199999999, + "opcode": "custom-call", + "shape": "(f64[1521,1521]{1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "inversion_other": [ + { + "instruction": "cholesky.80", + "ms": 0.9170773750000003, + "opcode": "custom-call", + "shape": "(f64[1521,1521]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1078 (AbstractInversion.log_det_curvature_reg_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:347 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "cholesky.90", + "ms": 0.9005514800000001, + "opcode": "custom-call", + "shape": "(f64[1521,1521]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1157 (AbstractInversion.log_det_regularization_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:348 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "loop_reduce_window_fusion.3", + "ms": 0.0057904199999999845, + "opcode": "fusion", + "shape": "s64[6,16]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "loop_reduce_window_fusion.2", + "ms": 0.003016255, + "opcode": "fusion", + "shape": "s64[86,16]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "input_scatter_fusion.9", + "ms": 0.002541684999999997, + "opcode": "fusion", + "shape": "s64[1369]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527 (AbstractInversion.zeroed_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:567 (AbstractInversion.solve_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:684 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_broadcast_fusion.4", + "ms": 0.001903655000000006, + "opcode": "fusion", + "shape": "(s64[1369]{0}, s64[1369]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527 (AbstractInversion.zeroed_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:567 (AbstractInversion.solve_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:684 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "chi_squared_evidence": [ + { + "instruction": "loop_multiply_fusion", + "ms": 0.002980560000000002, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:300", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:300 (AbstractNDArray.__pow__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:60 (unwrap_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:35 (to_new_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:78 (chi_squared_map_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:78 (AbstractFit.chi_squared_map)" + ] + } + ] + }, + "stage_audit_note": "The HLO instructions that contributed most of each stage's milliseconds, with their full source stack. A stage row is only as good as the rules that built it; this is how a reader checks a row against the HLO instead of trusting it.", + "untraced_wall_ms": 31.47432227999161, + "reconciliation_vs_untraced_pct": 18.350516569120963, + "wall_basis": "wall_ms is the TRACED run's wall, the run these kernel durations came from. untraced_wall_ms is the same executable without the profiler; the difference is the profiler's overhead and belongs in neither the stages nor the idle row.", + "calls": 200, + "call_split": "per-call (first-instruction recurrence)", + "call_blocks": 200, + "events": 113200, + "streams": [ + "Stream #14(Memset,MemcpyH2D,Compute,MemcpyD2H,MemcpyD2D)" + ], + "per_stage_ms": { + "border_relocator": { + "median_ms": 0.0962385, + "min_ms": 0.09548400000000003, + "max_ms": 0.09789 + }, + "chi_squared_evidence": { + "median_ms": 0.002944, + "min_ms": 0.002848, + "max_ms": 0.003296 + }, + "curvature_matrix_F": { + "median_ms": 4.34344, + "min_ms": 4.319585, + "max_ms": 4.52188 + }, + "inversion_other": { + "median_ms": 1.8337585, + "min_ms": 1.8192139999999999, + "max_ms": 1.859725 + }, + "mapping_matrix": { + "median_ms": 0.002816, + "min_ms": 0.002783, + "max_ms": 0.002848 + }, + "memset": { + "median_ms": 0.04875100000000002, + "min_ms": 0.014592, + "max_ms": 0.055646 + }, + "mesh_construction": { + "median_ms": 0.34155349999999973, + "min_ms": 0.33909100000000003, + "max_ms": 0.3460510000000002 + }, + "mixed_fusion": { + "median_ms": 1.8479525000000003, + "min_ms": 1.8414889999999997, + "max_ms": 1.8674680000000003 + }, + "other": { + "median_ms": 0.17961899999999983, + "min_ms": 0.17915699999999982, + "max_ms": 0.1817609999999997 + }, + "pdip_solve": { + "median_ms": 20.248789000000006, + "min_ms": 4.648289, + "max_ms": 21.445342000000025 + }, + "psf_convolution_mapping_matrix": { + "median_ms": 6.6073010000000005, + "min_ms": 6.584796, + "max_ms": 6.641968 + }, + "regularization_H": { + "median_ms": 0.002752, + "min_ms": 0.002432, + "max_ms": 0.003104 + } + }, + "stage_order": [ + "border_relocator", + "mesh_construction", + "mapping_matrix", + "psf_convolution_mapping_matrix", + "curvature_matrix_F", + "regularization_H", + "pdip_solve", + "chi_squared_evidence", + "inversion_other", + "mixed_fusion", + "other", + "memset" + ], + "mixed_fusion": { + "ms": 1.8479525000000003, + "constituent_stage_sets": { + "curvature_matrix_F + psf_convolution_mapping_matrix": 0.6957924149999994, + "pdip_solve + psf_convolution_mapping_matrix": 0.23343745999999976, + "inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": 0.18456236000000004, + "mapping_matrix + pdip_solve": 0.1387204599999999, + "data_vector_D + pdip_solve": 0.11724944500000006, + "mapped_reconstruction + pdip_solve": 0.11184050999999992, + "border_relocator + pdip_solve": 0.0706898250000001, + "mesh_construction + pdip_solve": 0.038459690000000005, + "inversion_other + regularization_H": 0.030986109999999997, + "inversion_other + pdip_solve": 0.030264850000000027, + "border_relocator + mesh_construction + pdip_solve": 0.02706815499999997, + "curvature_reg_reduce_gather + inversion_other": 0.02572516500000001, + "border_relocator + inversion_other + mapping_matrix + mesh_construction + pdip_solve": 0.020582390000000002, + "pdip_solve + regularization_H": 0.019288659999999985, + "inversion_other + mapping_matrix + pdip_solve + regularization_H": 0.015457549999999943, + "inversion_other + mapping_matrix + mesh_construction": 0.012928505000000003, + "pdip_solve + ray_trace_data_grid": 0.012831525000000012, + "grids_and_structures + mass_profile_deflections + pdip_solve": 0.009833185000000001, + "inversion_other + mapped_reconstruction + reconstruction_scatter": 0.00966247, + "inversion_other + mapped_reconstruction + pdip_solve": 0.00884491, + "chi_squared_evidence + pdip_solve": 0.0076077999999999806, + "inversion_other + mesh_construction + pdip_solve": 0.005448964999999991, + "grids_and_structures + mass_profile_deflections + ray_trace_data_grid": 0.005233799999999997, + "inversion_other + pdip_solve + ray_trace_data_grid": 0.004809619999999999, + "border_relocator + mesh_construction": 0.0034309399999999973, + "border_relocator + inversion_other": 0.0033405599999999994, + "border_relocator + inversion_other + mesh_construction + pdip_solve": 0.0024160699999999976, + "chi_squared_evidence + inversion_other": 0.0017815449999999979 + }, + "example_kernels": { + "curvature_matrix_F + psf_convolution_mapping_matrix": [ + "loop_divide_gather_fusion" + ], + "pdip_solve + psf_convolution_mapping_matrix": [ + "loop_broadcast_fusion.3" + ], + "inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": [ + "input_multiply_transpose_fusion" + ], + "mapping_matrix + pdip_solve": [ + "loop_divide_fusion.1", + "loop_broadcast_fusion" + ], + "data_vector_D + pdip_solve": [ + "input_reduce_fusion.3", + "input_reduce_fusion.18" + ], + "mapped_reconstruction + pdip_solve": [ + "input_reduce_fusion.6" + ], + "border_relocator + pdip_solve": [ + "input_reduce_fusion.8", + "loop_select_sine_fusion", + "input_concatenate_fusion.1", + "input_transpose_fusion.6" + ], + "mesh_construction + pdip_solve": [ + "loop_multiply_fusion.2", + "loop_pad_fusion", + "loop_reduce_fusion", + "triton_softmax.1" + ], + "inversion_other + regularization_H": [ + "input_transpose_fusion.4" + ], + "inversion_other + pdip_solve": [ + "input_scatter_fusion.11", + "input_reduce_fusion.9", + "input_reduce_fusion.16", + "input_reduce_fusion.4" + ] + }, + "prorated_estimate_ms": { + "psf_convolution_mapping_matrix": 0.4646149374999996, + "pdip_solve": 0.46358886383333325, + "curvature_matrix_F": 0.3478962074999997, + "inversion_other": 0.11467274466666669, + "mapped_reconstruction": 0.10822997166666663, + "mapping_matrix": 0.0816505971666666, + "data_vector_D": 0.05862472250000003, + "border_relocator": 0.052473876333333364, + "reconstruction_scatter": 0.04936141333333334, + "mesh_construction": 0.04081435216666666, + "regularization_H": 0.029001772499999978, + "curvature_reg_reduce_gather": 0.012862582500000006, + "ray_trace_data_grid": 0.009763569166666672, + "grids_and_structures": 0.005022328333333333, + "mass_profile_deflections": 0.005022328333333333, + "chi_squared_evidence": 0.004694672499999989 + }, + "prorated_note": "ESTIMATE ONLY \u2014 a mixed fusion's time split equally across the stages its constituents span. Never summed into the measured table, never reconciled." + }, + "other_sources_ms": { + "copy.41": 0.030097644999999295, + "copy.42": 0.02979979499999904, + "copy.59": 0.028553500000001345, + "copy.51": 0.028486760000000933, + "copy.60": 0.028346345000000193, + "copy.50": 0.02822736499999981, + "copy.96": 0.0016406200000000004, + "copy.95": 0.0016316450000000008, + "copy.34": 0.00146092, + "copy.52": 0.0014163049999999986 + }, + "device_span_ms": 32.41873322, + "device_busy_ms": 30.724625215, + "device_idle_ms": 1.6941080050000004, + "largest_idle_gaps": [ + { + "gap_ms": 0.052638, + "after": "input_concatenate_fusion.4", + "before": "custom-call.2" + }, + { + "gap_ms": 0.038142, + "after": "loop_add_fusion.3", + "before": "loop_select_fusion.3" + }, + { + "gap_ms": 0.035487, + "after": "loop_multiply_fusion.1", + "before": "eigh.0" + }, + { + "gap_ms": 0.027423, + "after": "loop_divide_minimum_multiply_sine_sqrt_fusion", + "before": "loop_slice_fusion" + }, + { + "gap_ms": 0.023263, + "after": "loop_add_fusion.3", + "before": "loop_select_fusion.3" + }, + { + "gap_ms": 0.022655, + "after": "loop_select_fusion", + "before": "copy.41" + }, + { + "gap_ms": 0.020159, + "after": "eigh.0", + "before": "eigh.0" + }, + { + "gap_ms": 0.020063, + "after": "loop_broadcast_fusion.6", + "before": "loop_broadcast_fusion.8" + } + ], + "kernel_ms": 35.555915000000006, + "sum_ms": 37.250023005, + "wall_ms": 32.42277608498625, + "host_outside_span_ms": 0.004042864986253392, + "reconciliation_pct": 14.888444183066307, + "unjoined_ms": 0.0, + "unjoined_pct": 0.0, + "other_ms": 0.17961899999999983, + "other_pct": 0.5539901935885574, + "note": "Stage rows attribute the command-buffers-OFF program (see the module docstring): kernel times are the same, the launch overhead the CUDA graphs remove is not. sum_ms = kernel rows + device_idle_ms; the residual against wall_ms is host_outside_span_ms (dispatch before the first kernel, teardown after the last).", + "per_stage_ms_per_lane": { + "border_relocator": 0.0962385, + "chi_squared_evidence": 0.002944, + "curvature_matrix_F": 4.34344, + "inversion_other": 1.8337585, + "mapping_matrix": 0.002816, + "memset": 0.04875100000000002, + "mesh_construction": 0.34155349999999973, + "mixed_fusion": 1.8479525000000003, + "other": 0.17961899999999983, + "pdip_solve": 20.248789000000006, + "psf_convolution_mapping_matrix": 6.6073010000000005, + "regularization_H": 0.002752 + }, + "per_lane_divisor": 1, + "host_callback": { + "pure_callback_span_ms": 0, + "qhull_ms": 0.0, + "callback_body_ms_note": "the OUTERMOST matching body event, not a sum: under the probe the body appears twice (the wrapper and the timed re-implementation it calls) and summing them would count the same work twice", + "events_by_name": { + "ThenExecuteCallback:GetEventForComputeStreamSyncPoint": { + "count": 200, + "ms": 0.36591979999999985 + } + }, + "note": "HOST milliseconds per traced BATCH (the whole invocation), aggregated by name because the events nest. Not a row of the device table: the device pays for them as the idle gaps largest_idle_gaps names." + }, + "host_callback_ms": 0 + }, + "hlo_census": { + "status": "excluded", + "reason": "The legacy census anchors PyAutoArray source line numbers that moved after the phase-1 run. No batched attribution is published from unsupported anchors; the device-event table and wall reconciliation remain valid." + }, + "stage_map_provenance": [ + { + "label": "log_det_curvature_reg", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 850, + 882 + ], + "requires": { + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 884, + 896 + ] + }, + "function": null + }, + { + "label": "log_det_regularization", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 850, + 882 + ], + "requires": { + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 897, + 943 + ] + }, + "function": null + }, + { + "label": "curvature_reg_add", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 359, + 372 + ], + "requires": null, + "function": null + }, + { + "label": "curvature_reg_reduce_gather", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 374, + 398 + ], + "requires": null, + "function": null + }, + { + "label": "edge_subset_gather", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 606, + 614 + ], + "requires": null, + "function": null + }, + { + "label": "regularization_term", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 786, + 849 + ], + "requires": null, + "function": null + }, + { + "label": "mapped_reconstruction", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 722, + 785 + ], + "requires": null, + "function": null + }, + { + "label": "reconstruction_scatter", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 583, + 605 + ], + "requires": null, + "function": null + }, + { + "label": "reconstruction_scatter", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 615, + 721 + ], + "requires": null, + "function": null + }, + { + "label": "certified_active_set_solve", + "path": "likelihood_breakdown/active_set_steps.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "certified_active_set_solve", + "path": "likelihood_breakdown/library_solver_injection.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "pdip_solve", + "path": "PyAutoArray/autoarray/util/jax_nnls.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "pdip_solve", + "path": "PyAutoArray/autoarray/inversion/inversion/inversion_util.py", + "lines": [ + 256, + 488 + ], + "requires": null, + "function": null + }, + { + "label": "mapped_reconstruction", + "path": "PyAutoArray/autoarray/inversion/inversion/inversion_util.py", + "lines": [ + 156, + 200 + ], + "requires": null, + "function": null + }, + { + "label": "curvature_matrix_F", + "path": "PyAutoArray/autoarray/inversion/inversion/inversion_util.py", + "lines": [ + 12, + 155 + ], + "requires": null, + "function": null + }, + { + "label": "reconstruction_scatter", + "path": "PyAutoArray/autoarray/inversion/inversion/inversion_util.py", + "lines": [ + 201, + 255 + ], + "requires": null, + "function": null + }, + { + "label": "data_vector_D", + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py", + "lines": [ + 54, + 73 + ], + "requires": null, + "function": null + }, + { + "label": "curvature_matrix_F", + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py", + "lines": [ + 74, + 110 + ], + "requires": null, + "function": null + }, + { + "label": "data_vector_D", + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py", + "lines": null, + "requires": null, + "function": "data_vector_via_blurred_mapping_matrix_from" + }, + { + "label": "curvature_matrix_F", + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "likelihood_breakdown/psf_cube_injection.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": [ + 1086, + 1300 + ], + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": [ + 632, + 642 + ], + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": [ + 670, + 691 + ], + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": null, + "requires": { + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": [ + 1086, + 1300 + ] + }, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": null, + "requires": { + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py", + "lines": [ + 119, + 150 + ] + }, + "function": null + }, + { + "label": "psf_convolution_image", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py", + "lines": [ + 119, + 150 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_qhull_callback", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 139, + 172 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_seed_argmin", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 173, + 207 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_locate_walk", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 208, + 372 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_dual_areas", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 373, + 396 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_dual_areas", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 437, + 494 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_dual_areas", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 605, + 615 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_interpolation_weights", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 616, + 695 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_interpolation_weights", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 896, + 1000 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_construction", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "border_relocator", + "path": "PyAutoArray/autoarray/inversion/mesh/border_relocator.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "mesh_construction", + "path": "PyAutoArray/autoarray/inversion/mesh/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "mapping_matrix", + "path": "PyAutoArray/autoarray/inversion/mappers/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "mapping_matrix", + "path": "PyAutoArray/autoarray/inversion/mappings/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "mapping_matrix", + "path": "PyAutoArray/autoarray/inversion/linear_obj/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "regularization_H", + "path": "PyAutoArray/autoarray/inversion/regularization/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "chi_squared_evidence", + "path": "PyAutoArray/autoarray/fit/fit_util.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "chi_squared_evidence", + "path": "PyAutoArray/autoarray/fit/fit_dataset.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "ray_trace_mesh_grid", + "path": "PyAutoLens/autolens/lens/to_inversion.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "ray_trace_mesh_grid", + "path": "PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "mass_profile_deflections", + "path": "PyAutoGalaxy/autogalaxy/profiles/mass/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "light_profile_image", + "path": "PyAutoGalaxy/autogalaxy/profiles/light/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "light_profile_image", + "path": "PyAutoGalaxy/autogalaxy/operate/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "ray_trace_data_grid", + "path": "PyAutoLens/autolens/lens/tracer.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "ray_trace_data_grid", + "path": "PyAutoLens/autolens/lens/tracer_util.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "grids_and_structures", + "path": "PyAutoArray/autoarray/structures/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "grids_and_structures", + "path": "PyAutoArray/autoarray/operators/over_sampling/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "grids_and_structures", + "path": "PyAutoArray/autoarray/geometry/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "inversion_other", + "path": "PyAutoArray/autoarray/inversion/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "fit_imaging_other", + "path": "PyAutoLens/autolens/imaging/fit_imaging.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "fit_imaging_other", + "path": "PyAutoGalaxy/autogalaxy/imaging/fit_imaging.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "fit_imaging_other", + "path": "PyAutoArray/autoarray/fit/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "analysis_other", + "path": "PyAutoLens/autolens/analysis/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "analysis_other", + "path": "PyAutoGalaxy/autogalaxy/analysis/", + "lines": null, + "requires": null, + "function": null + } + ], + "trace_timing": { + "traced_wall_ms": 32.42277608498625, + "untraced_wall_ms": 31.47432227999161, + "profiler_overhead_ms": 0.9484538049946423, + "profiler_overhead_pct": 3.013420897699771 + }, + "jit_phases": { + "b_s3_pdip_library_likelihood_jit": { + "lower_s": 1.2749184700005571, + "compile_s": 3.3846504880020802, + "first_call_s": 0.11273022199748084, + "steady_per_call_s": 0.03884454869985347 + }, + "d_s3_certified_fallback_library_likelihood_jit": { + "lower_s": 0.4719663750001928, + "compile_s": 3.7857160179992206, + "first_call_s": 0.04785819799872115, + "steady_per_call_s": 0.030167572700156596 + } + }, + "peak_bytes": { + "after_setup": 85616640, + "after_routes": 1197479168, + "after_all": 23941737984, + "note": "jax.devices()[0].memory_stats()['peak_bytes_in_use']; None on a backend that does not report it (CPU). Process-wide high-water marks." + }, + "note": "Every stage row is a MEASURED sum of GPU kernel durations joined to library source through the optimized HLO of ONE program \u2014 not arithmetic across compilations. The rows attribute the command-buffers-OFF program: kernel time is the same as production, the launch overhead the CUDA graphs remove is not, and command_buffers.* carries both walls and their delta. sum_ms = kernel rows + measured device_idle_ms; the residual against the wall is host_outside_span_ms and is reported, not absorbed. mixed_fusion.prorated_estimate_ms is an ESTIMATE and is never part of the table. No row may be quoted if reconciliation_pct is outside 5 % or unjoined_ms is non-zero.", + "vmap": { + "batch": 20, + "lanes_mode": "captured", + "arms": [ + "vmap", + "scalar" + ], + "draw_seed": 0, + "fallback": false, + "composition": "jax.jit(jax.vmap(fn))", + "composition_provenance": "Current Fitness._vmap after PyAutoFit#1638. Array 343376 used the retired jax.vmap(jax.jit(fn)) composition and is historical evidence only.", + "headline_arm": "scalar", + "lane_rtol": 1e-09, + "lanes": [ + { + "lane": 0, + "draw_name": "call00015_lane00", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.0017002711605432041, + "centre_1": -0.009377257327484623, + "ell_comps_0": -0.002548851608736212, + "ell_comps_1": -0.004262475027349674, + "einstein_radius": -0.0230617600435421 + }, + "log_likelihood_vmap": 18463.288067231657, + "log_likelihood_scalar": 18463.28806683203, + "log_likelihood_library_pdip": 18463.07897110663, + "log_likelihood_library_pdip_scalar": 18463.078970707007, + "rel_diff_vmap_vs_library_pdip": 1.1325095091253122e-05, + "rel_diff_scalar_vs_library_pdip_scalar": 1.1325095091301208e-05, + "abs_diff_nats": 3.996283339802176e-07, + "rel_diff": 2.1644483503353945e-11, + "rel_diff_scalar_vs_library_pdip": 1.1325073446524493e-05, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 3.996246960014105e-07, + "rel_diff_library_pdip_vmap_vs_scalar": 2.1644531588444352e-11, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 1, + "draw_name": "call00015_lane01", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.00044835385344320865, + "centre_1": -0.003464237160596487, + "ell_comps_0": -0.0010036884316776545, + "ell_comps_1": 0.0020035511501456356, + "einstein_radius": -0.05761540720338343 + }, + "log_likelihood_vmap": 15734.704790642205, + "log_likelihood_scalar": 15734.7047905047, + "log_likelihood_library_pdip": 15734.21749647698, + "log_likelihood_library_pdip_scalar": 15734.21749633948, + "rel_diff_vmap_vs_library_pdip": 3.0970346338090744e-05, + "rel_diff_scalar_vs_library_pdip_scalar": 3.0970346338130175e-05, + "abs_diff_nats": 1.3750468497164547e-07, + "rel_diff": 8.738942789357215e-12, + "rel_diff_scalar_vs_library_pdip": 3.09703375988773e-05, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 1.3750104699283838e-07, + "rel_diff_library_pdip_vmap_vs_scalar": 8.738982222968992e-12, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 2, + "draw_name": "call00015_lane02", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.0017572218110215735, + "centre_1": 0.0022774942133795186, + "ell_comps_0": 0.0023932647815035485, + "ell_comps_1": -0.011727950927316913, + "einstein_radius": -0.027234805142873908 + }, + "log_likelihood_vmap": 18704.474460443, + "log_likelihood_scalar": 18704.474460339556, + "log_likelihood_library_pdip": 18706.16598662583, + "log_likelihood_library_pdip_scalar": 18706.16598652238, + "rel_diff_vmap_vs_library_pdip": 9.042612922596433e-05, + "rel_diff_scalar_vs_library_pdip_scalar": 9.042612922626992e-05, + "abs_diff_nats": 1.0344592737965286e-07, + "rel_diff": 5.530544448014121e-12, + "rel_diff_scalar_vs_library_pdip": 9.042613475600867e-05, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 1.0344956535845995e-07, + "rel_diff_library_pdip_vmap_vs_scalar": 5.530238822482085e-12, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 3, + "draw_name": "call00015_lane03", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.002862791114730316, + "centre_1": 0.0038524808804676603, + "ell_comps_0": 0.006111415425061918, + "ell_comps_1": -0.022191169695991525, + "einstein_radius": -0.03531000166767062 + }, + "log_likelihood_vmap": -22166.22174406823, + "log_likelihood_scalar": -22166.221751749792, + "log_likelihood_library_pdip": -22166.221743469505, + "log_likelihood_library_pdip_scalar": -22166.221751660152, + "rel_diff_vmap_vs_library_pdip": 2.701064742043008e-11, + "rel_diff_scalar_vs_library_pdip_scalar": 4.043981821125027e-12, + "abs_diff_nats": 7.681563147343695e-06, + "rel_diff": 3.465436389373537e-10, + "rel_diff_scalar_vs_library_pdip": 3.735542864872366e-10, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 8.190647349692881e-06, + "rel_diff_library_pdip_vmap_vs_scalar": 3.695103045280794e-10, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 4, + "pdip_iter": null + }, + { + "lane": 4, + "draw_name": "call00015_lane04", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.0017545152650242774, + "centre_1": 0.005096768299803747, + "ell_comps_0": 0.00015519416981613077, + "ell_comps_1": 0.007279341501820333, + "einstein_radius": -0.03249658545615719 + }, + "log_likelihood_vmap": -194384.1644596323, + "log_likelihood_scalar": NaN, + "log_likelihood_library_pdip": -194384.86841303803, + "log_likelihood_library_pdip_scalar": NaN, + "rel_diff_vmap_vs_library_pdip": 3.621441377988212e-06, + "rel_diff_scalar_vs_library_pdip_scalar": NaN, + "abs_diff_nats": NaN, + "rel_diff": NaN, + "rel_diff_scalar_vs_library_pdip": NaN, + "abs_diff_library_pdip_vmap_vs_scalar_nats": NaN, + "rel_diff_library_pdip_vmap_vs_scalar": NaN, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": true, + "passes": 2, + "pdip_iter": null + }, + { + "lane": 5, + "draw_name": "call00015_lane05", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.0009851407640018856, + "centre_1": 0.002274591191563648, + "ell_comps_0": 0.006006903437417319, + "ell_comps_1": 0.008497457839948512, + "einstein_radius": -0.07242218866013372 + }, + "log_likelihood_vmap": 14761.660929765763, + "log_likelihood_scalar": 14761.660929765752, + "log_likelihood_library_pdip": 14761.660929764937, + "log_likelihood_library_pdip_scalar": 14761.66092976493, + "rel_diff_vmap_vs_library_pdip": 5.594364977891205e-14, + "rel_diff_scalar_vs_library_pdip_scalar": 5.56972019825292e-14, + "abs_diff_nats": 1.0913936421275139e-11, + "rel_diff": 7.393433891485766e-16, + "rel_diff_scalar_vs_library_pdip": 5.520430638976343e-14, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 7.275957614183426e-12, + "rel_diff_library_pdip_vmap_vs_scalar": 4.928955927657451e-16, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 14, + "pdip_iter": null + }, + { + "lane": 6, + "draw_name": "call00015_lane06", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.002713857824416392, + "centre_1": 0.00891817739575143, + "ell_comps_0": 0.001298959041684998, + "ell_comps_1": -0.0098959428603974, + "einstein_radius": 0.04379561090121875 + }, + "log_likelihood_vmap": 21597.126871220386, + "log_likelihood_scalar": 21597.12687123053, + "log_likelihood_library_pdip": 21597.126871221408, + "log_likelihood_library_pdip_scalar": 21597.126871230605, + "rel_diff_vmap_vs_library_pdip": 4.733370558446683e-14, + "rel_diff_scalar_vs_library_pdip_scalar": 3.5373943675209258e-15, + "abs_diff_nats": 1.0142684914171696e-08, + "rel_diff": 4.696312141261132e-13, + "rel_diff_scalar_vs_library_pdip": 4.222975085418446e-13, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 9.19681042432785e-09, + "rel_diff_library_pdip_vmap_vs_scalar": 4.258349029091857e-13, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 6, + "pdip_iter": null + }, + { + "lane": 7, + "draw_name": "call00015_lane07", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.01063269420288399, + "centre_1": -0.0015469073410711704, + "ell_comps_0": -0.012689283848227026, + "ell_comps_1": 0.0004952469855790744, + "einstein_radius": 0.02732727396499479 + }, + "log_likelihood_vmap": 7413.159095088224, + "log_likelihood_scalar": 7413.159096700969, + "log_likelihood_library_pdip": 7413.1590952377155, + "log_likelihood_library_pdip_scalar": 7413.159096788277, + "rel_diff_vmap_vs_library_pdip": 2.016573814489529e-11, + "rel_diff_scalar_vs_library_pdip_scalar": 1.1777415303176189e-11, + "abs_diff_nats": 1.612745109014213e-06, + "rel_diff": 2.1755166562281428e-10, + "rel_diff_scalar_vs_library_pdip": 1.9738592752086062e-10, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 1.5505611372645944e-06, + "rel_diff_library_pdip_vmap_vs_scalar": 2.0916334278275091e-10, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 6, + "pdip_iter": null + }, + { + "lane": 8, + "draw_name": "call00015_lane08", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.003586333218755102, + "centre_1": 0.0002442650473125539, + "ell_comps_0": -0.0025095685188555317, + "ell_comps_1": 0.008402687166147546, + "einstein_radius": 0.003809182535237543 + }, + "log_likelihood_vmap": 19066.421358553263, + "log_likelihood_scalar": 19066.42135821115, + "log_likelihood_library_pdip": 19060.202679471306, + "log_likelihood_library_pdip_scalar": 19060.20267912919, + "rel_diff_vmap_vs_library_pdip": 0.000326265107802637, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0003262651078086841, + "abs_diff_nats": 3.421118890400976e-07, + "rel_diff": 1.7943162097000628e-11, + "rel_diff_scalar_vs_library_pdip": 0.0003262650898536207, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 3.421155270189047e-07, + "rel_diff_library_pdip_vmap_vs_scalar": 1.7949207192508986e-11, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 9, + "draw_name": "call00015_lane09", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.004569070502203608, + "centre_1": -0.0008437281377326854, + "ell_comps_0": 0.016330335737132294, + "ell_comps_1": 0.007271610957481866, + "einstein_radius": -0.0644363448871137 + }, + "log_likelihood_vmap": 12781.02635455443, + "log_likelihood_scalar": 12781.026354229361, + "log_likelihood_library_pdip": 12782.703321755558, + "log_likelihood_library_pdip_scalar": 12782.70332143049, + "rel_diff_vmap_vs_library_pdip": 0.00013119034048725823, + "rel_diff_scalar_vs_library_pdip_scalar": 0.00013119034049059443, + "abs_diff_nats": 3.250679583288729e-07, + "rel_diff": 2.54336349303673e-11, + "rel_diff_scalar_vs_library_pdip": 0.0001311903659175565, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 3.250679583288729e-07, + "rel_diff_library_pdip_vmap_vs_scalar": 2.543029828314087e-11, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 10, + "draw_name": "call00015_lane10", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.00041413552102611065, + "centre_1": -0.004015077828810355, + "ell_comps_0": 0.005329766760357603, + "ell_comps_1": 0.01667480963359283, + "einstein_radius": 0.011021193939315443 + }, + "log_likelihood_vmap": 25442.23680048245, + "log_likelihood_scalar": 25442.236800482457, + "log_likelihood_library_pdip": 25442.23680048129, + "log_likelihood_library_pdip_scalar": 25442.236800481307, + "rel_diff_vmap_vs_library_pdip": 4.561372683396701e-14, + "rel_diff_scalar_vs_library_pdip_scalar": 4.5184757616092685e-14, + "abs_diff_nats": 7.275957614183426e-12, + "rel_diff": 2.8597947858285217e-16, + "rel_diff_scalar_vs_library_pdip": 4.589970631254988e-14, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 1.8189894035458565e-11, + "rel_diff_library_pdip_vmap_vs_scalar": 7.149486964571627e-16, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 6, + "pdip_iter": null + }, + { + "lane": 11, + "draw_name": "call00015_lane11", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.00234856906735493, + "centre_1": -0.0005637310462631455, + "ell_comps_0": 0.002190699592912508, + "ell_comps_1": -0.01675931647125419, + "einstein_radius": -0.1186639473801736 + }, + "log_likelihood_vmap": -3234.471614889735, + "log_likelihood_scalar": -3234.4716141754543, + "log_likelihood_library_pdip": -3234.481431636159, + "log_likelihood_library_pdip_scalar": -3234.481430921878, + "rel_diff_vmap_vs_library_pdip": 3.035029457234597e-06, + "rel_diff_scalar_vs_library_pdip_scalar": 3.035029457904832e-06, + "abs_diff_nats": 7.142807589843869e-07, + "rel_diff": 2.2083383136026517e-10, + "rel_diff_scalar_vs_library_pdip": 3.0352502903956714e-06, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 7.142807589843869e-07, + "rel_diff_library_pdip_vmap_vs_scalar": 2.208331611230817e-10, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 12, + "draw_name": "call00015_lane12", + "draw_kind": "captured", + "offsets": { + "centre_0": -9.326736988388313e-05, + "centre_1": -0.0013488200741109593, + "ell_comps_0": 0.00997667014421897, + "ell_comps_1": -0.014348588092779897, + "einstein_radius": -0.02126731799195114 + }, + "log_likelihood_vmap": 18887.307347644703, + "log_likelihood_scalar": 18887.3073475926, + "log_likelihood_library_pdip": 18883.933556142838, + "log_likelihood_library_pdip_scalar": 18883.93355609074, + "rel_diff_vmap_vs_library_pdip": 0.00017865936097657688, + "rel_diff_scalar_vs_library_pdip_scalar": 0.00017865936097687714, + "abs_diff_nats": 5.210313247516751e-08, + "rel_diff": 2.758632107599427e-12, + "rel_diff_scalar_vs_library_pdip": 0.00017865935821745192, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 5.209949449636042e-08, + "rel_diff_library_pdip_vmap_vs_scalar": 2.7589323136310487e-12, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 13, + "draw_name": "call00015_lane13", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.007013568613743564, + "centre_1": 0.004528745612839986, + "ell_comps_0": -0.018496405934026655, + "ell_comps_1": 0.0014830576999261711, + "einstein_radius": -0.04673040108359361 + }, + "log_likelihood_vmap": 23869.488067817772, + "log_likelihood_scalar": 23869.488067817765, + "log_likelihood_library_pdip": 23869.488067815808, + "log_likelihood_library_pdip_scalar": 23869.4880678158, + "rel_diff_vmap_vs_library_pdip": 8.230208164700236e-14, + "rel_diff_scalar_vs_library_pdip_scalar": 8.230208164700238e-14, + "abs_diff_nats": 7.275957614183426e-12, + "rel_diff": 3.048225246185022e-16, + "rel_diff_scalar_vs_library_pdip": 8.199725912238383e-14, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 7.275957614183426e-12, + "rel_diff_library_pdip_vmap_vs_scalar": 3.048225246185273e-16, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 9, + "pdip_iter": null + }, + { + "lane": 14, + "draw_name": "call00015_lane14", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.005108692197125562, + "centre_1": -0.010240010499870703, + "ell_comps_0": -0.00684600823433492, + "ell_comps_1": -0.002573928604858717, + "einstein_radius": -0.0214638151942923 + }, + "log_likelihood_vmap": -177847.93751601427, + "log_likelihood_scalar": NaN, + "log_likelihood_library_pdip": -177848.23960593628, + "log_likelihood_library_pdip_scalar": NaN, + "rel_diff_vmap_vs_library_pdip": 1.6985825818857827e-06, + "rel_diff_scalar_vs_library_pdip_scalar": NaN, + "abs_diff_nats": NaN, + "rel_diff": NaN, + "rel_diff_scalar_vs_library_pdip": NaN, + "abs_diff_library_pdip_vmap_vs_scalar_nats": NaN, + "rel_diff_library_pdip_vmap_vs_scalar": NaN, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": true, + "passes": 2, + "pdip_iter": null + }, + { + "lane": 15, + "draw_name": "call00015_lane15", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.0015375882948530809, + "centre_1": 0.00010861850037634777, + "ell_comps_0": 0.010624594413718456, + "ell_comps_1": -0.00030576693661378264, + "einstein_radius": 0.018140577124415858 + }, + "log_likelihood_vmap": 25794.9854395605, + "log_likelihood_scalar": 25794.985439518343, + "log_likelihood_library_pdip": 25794.98543959175, + "log_likelihood_library_pdip_scalar": 25794.985439519085, + "rel_diff_vmap_vs_library_pdip": 1.2114850006836214e-12, + "rel_diff_scalar_vs_library_pdip_scalar": 2.877100583703783e-14, + "abs_diff_nats": 4.215689841657877e-08, + "rel_diff": 1.6343059590176666e-12, + "rel_diff_scalar_vs_library_pdip": 2.845790959696637e-12, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 7.266498869284987e-08, + "rel_diff_library_pdip_vmap_vs_scalar": 2.817019953867616e-12, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 8, + "pdip_iter": null + }, + { + "lane": 16, + "draw_name": "call00015_lane16", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.001227759218702405, + "centre_1": 0.016003430753678986, + "ell_comps_0": 0.012636219938870381, + "ell_comps_1": -0.00698902153230205, + "einstein_radius": -0.05127757912787545 + }, + "log_likelihood_vmap": 16093.515739414663, + "log_likelihood_scalar": 16093.515739269482, + "log_likelihood_library_pdip": 16088.259041843845, + "log_likelihood_library_pdip_scalar": 16088.259041698664, + "rel_diff_vmap_vs_library_pdip": 0.0003267412314250826, + "rel_diff_scalar_vs_library_pdip_scalar": 0.00032674123142803117, + "abs_diff_nats": 1.45180820254609e-07, + "rel_diff": 9.021075481994033e-12, + "rel_diff_scalar_vs_library_pdip": 0.0003267412224010596, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 1.45180820254609e-07, + "rel_diff_library_pdip_vmap_vs_scalar": 9.024023039305824e-12, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 17, + "draw_name": "call00015_lane17", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.005083750984013619, + "centre_1": 0.0010204202759534836, + "ell_comps_0": -0.00849477917205129, + "ell_comps_1": 0.011231146696452643, + "einstein_radius": 0.01601143147676365 + }, + "log_likelihood_vmap": NaN, + "log_likelihood_scalar": NaN, + "log_likelihood_library_pdip": NaN, + "log_likelihood_library_pdip_scalar": NaN, + "rel_diff_vmap_vs_library_pdip": NaN, + "rel_diff_scalar_vs_library_pdip_scalar": NaN, + "abs_diff_nats": NaN, + "rel_diff": NaN, + "rel_diff_scalar_vs_library_pdip": NaN, + "abs_diff_library_pdip_vmap_vs_scalar_nats": NaN, + "rel_diff_library_pdip_vmap_vs_scalar": NaN, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": true, + "passes": 3, + "pdip_iter": null + }, + { + "lane": 18, + "draw_name": "call00015_lane18", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.0024988577690690035, + "centre_1": -0.001222125045613948, + "ell_comps_0": -0.01895695410631662, + "ell_comps_1": -0.0031279904204321676, + "einstein_radius": 0.01799244839027403 + }, + "log_likelihood_vmap": 18622.433656659538, + "log_likelihood_scalar": 18622.43365615711, + "log_likelihood_library_pdip": 18620.968710658402, + "log_likelihood_library_pdip_scalar": 18620.968710155976, + "rel_diff_vmap_vs_library_pdip": 7.867184698595126e-05, + "rel_diff_scalar_vs_library_pdip_scalar": 7.867184698807396e-05, + "abs_diff_nats": 5.024267011322081e-07, + "rel_diff": 2.6979647795179092e-11, + "rel_diff_scalar_vs_library_pdip": 7.867182000418092e-05, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 5.024267011322081e-07, + "rel_diff_library_pdip_vmap_vs_scalar": 2.6981770333902228e-11, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 19, + "draw_name": "call00015_lane19", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.010541543200940506, + "centre_1": -0.008441200101276233, + "ell_comps_0": 0.007996538161425107, + "ell_comps_1": 0.0034133978687523603, + "einstein_radius": -0.09425697178670522 + }, + "log_likelihood_vmap": 7274.769367446595, + "log_likelihood_scalar": 7274.7693668941465, + "log_likelihood_library_pdip": 7217.440786725896, + "log_likelihood_library_pdip_scalar": 7217.440786173451, + "rel_diff_vmap_vs_library_pdip": 0.007943062148308363, + "rel_diff_scalar_vs_library_pdip_scalar": 0.007943062148915846, + "abs_diff_nats": 5.524489097297192e-07, + "rel_diff": 7.594040193821002e-11, + "rel_diff_scalar_vs_library_pdip": 0.007943062071764762, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 5.524452717509121e-07, + "rel_diff_library_pdip_vmap_vs_scalar": 7.654309721657004e-11, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": false, + "passes": 16, + "pdip_iter": null + } + ], + "lane_pins": [ + { + "pin": "lane 0: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 18463.288067231657, + "reference_value": 18463.07897110663, + "rel_diff": 1.1325095091253122e-05, + "abs_diff_nats": 0.20909612502509844, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 0: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 18463.28806683203, + "reference_value": 18463.078970707007, + "rel_diff": 1.1325095091301208e-05, + "abs_diff_nats": 0.20909612502146047, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 0: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 18463.288067231657, + "reference_value": 18463.28806683203, + "rel_diff": 2.1644483503353945e-11, + "abs_diff_nats": 3.996283339802176e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 0: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 18463.07897110663, + "reference_value": 18463.078970707007, + "rel_diff": 2.1644531588444352e-11, + "abs_diff_nats": 3.996246960014105e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 1: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 15734.704790642205, + "reference_value": 15734.21749647698, + "rel_diff": 3.0970346338090744e-05, + "abs_diff_nats": 0.4872941652247391, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 1: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 15734.7047905047, + "reference_value": 15734.21749633948, + "rel_diff": 3.0970346338130175e-05, + "abs_diff_nats": 0.48729416522110114, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 1: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 15734.704790642205, + "reference_value": 15734.7047905047, + "rel_diff": 8.738942789357215e-12, + "abs_diff_nats": 1.3750468497164547e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 1: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 15734.21749647698, + "reference_value": 15734.21749633948, + "rel_diff": 8.738982222968992e-12, + "abs_diff_nats": 1.3750104699283838e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 2: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 18704.474460443, + "reference_value": 18706.16598662583, + "rel_diff": 9.042612922596433e-05, + "abs_diff_nats": 1.6915261828289658, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 2: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 18704.474460339556, + "reference_value": 18706.16598652238, + "rel_diff": 9.042612922626992e-05, + "abs_diff_nats": 1.6915261828253279, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 2: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 18704.474460443, + "reference_value": 18704.474460339556, + "rel_diff": 5.530544448014121e-12, + "abs_diff_nats": 1.0344592737965286e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 2: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 18706.16598662583, + "reference_value": 18706.16598652238, + "rel_diff": 5.530238822482085e-12, + "abs_diff_nats": 1.0344956535845995e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 3: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -22166.22174406823, + "reference_value": -22166.221743469505, + "rel_diff": 2.701064742043008e-11, + "abs_diff_nats": 5.987240001559258e-07, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 3: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -22166.221751749792, + "reference_value": -22166.221751660152, + "rel_diff": 4.043981821125027e-12, + "abs_diff_nats": 8.963979780673981e-08, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 3: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -22166.22174406823, + "reference_value": -22166.221751749792, + "rel_diff": 3.465436389373537e-10, + "abs_diff_nats": 7.681563147343695e-06, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 3: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -22166.221743469505, + "reference_value": -22166.221751660152, + "rel_diff": 3.695103045280794e-10, + "abs_diff_nats": 8.190647349692881e-06, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 4: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -194384.1644596323, + "reference_value": -194384.86841303803, + "rel_diff": 3.621441377988212e-06, + "abs_diff_nats": 0.7039534057257697, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 4: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": NaN, + "reference_value": NaN, + "rel_diff": NaN, + "abs_diff_nats": NaN, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 4: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -194384.1644596323, + "reference_value": NaN, + "rel_diff": NaN, + "abs_diff_nats": NaN, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 4: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -194384.86841303803, + "reference_value": NaN, + "rel_diff": NaN, + "abs_diff_nats": NaN, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 5: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 14761.660929765763, + "reference_value": 14761.660929764937, + "rel_diff": 5.594364977891205e-14, + "abs_diff_nats": 8.258211892098188e-10, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 5: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 14761.660929765752, + "reference_value": 14761.66092976493, + "rel_diff": 5.56972019825292e-14, + "abs_diff_nats": 8.221832104027271e-10, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 5: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 14761.660929765763, + "reference_value": 14761.660929765752, + "rel_diff": 7.393433891485766e-16, + "abs_diff_nats": 1.0913936421275139e-11, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 5: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 14761.660929764937, + "reference_value": 14761.66092976493, + "rel_diff": 4.928955927657451e-16, + "abs_diff_nats": 7.275957614183426e-12, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 6: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 21597.126871220386, + "reference_value": 21597.126871221408, + "rel_diff": 4.733370558446683e-14, + "abs_diff_nats": 1.0222720447927713e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 6: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 21597.12687123053, + "reference_value": 21597.126871230605, + "rel_diff": 3.5373943675209258e-15, + "abs_diff_nats": 7.639755494892597e-11, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 6: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 21597.126871220386, + "reference_value": 21597.12687123053, + "rel_diff": 4.696312141261132e-13, + "abs_diff_nats": 1.0142684914171696e-08, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 6: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 21597.126871221408, + "reference_value": 21597.126871230605, + "rel_diff": 4.258349029091857e-13, + "abs_diff_nats": 9.19681042432785e-09, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 7: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 7413.159095088224, + "reference_value": 7413.1590952377155, + "rel_diff": 2.016573814489529e-11, + "abs_diff_nats": 1.4949182514101267e-07, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 7: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 7413.159096700969, + "reference_value": 7413.159096788277, + "rel_diff": 1.1777415303176189e-11, + "abs_diff_nats": 8.730785339139402e-08, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 7: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 7413.159095088224, + "reference_value": 7413.159096700969, + "rel_diff": 2.1755166562281428e-10, + "abs_diff_nats": 1.612745109014213e-06, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 7: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 7413.1590952377155, + "reference_value": 7413.159096788277, + "rel_diff": 2.0916334278275091e-10, + "abs_diff_nats": 1.5505611372645944e-06, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 8: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 19066.421358553263, + "reference_value": 19060.202679471306, + "rel_diff": 0.000326265107802637, + "abs_diff_nats": 6.218679081957816, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 8: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 19066.42135821115, + "reference_value": 19060.20267912919, + "rel_diff": 0.0003262651078086841, + "abs_diff_nats": 6.218679081961454, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 8: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 19066.421358553263, + "reference_value": 19066.42135821115, + "rel_diff": 1.7943162097000628e-11, + "abs_diff_nats": 3.421118890400976e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 8: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 19060.202679471306, + "reference_value": 19060.20267912919, + "rel_diff": 1.7949207192508986e-11, + "abs_diff_nats": 3.421155270189047e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 9: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 12781.02635455443, + "reference_value": 12782.703321755558, + "rel_diff": 0.00013119034048725823, + "abs_diff_nats": 1.6769672011287184, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 9: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 12781.026354229361, + "reference_value": 12782.70332143049, + "rel_diff": 0.00013119034049059443, + "abs_diff_nats": 1.6769672011287184, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 9: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 12781.02635455443, + "reference_value": 12781.026354229361, + "rel_diff": 2.54336349303673e-11, + "abs_diff_nats": 3.250679583288729e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 9: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 12782.703321755558, + "reference_value": 12782.70332143049, + "rel_diff": 2.543029828314087e-11, + "abs_diff_nats": 3.250679583288729e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 10: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 25442.23680048245, + "reference_value": 25442.23680048129, + "rel_diff": 4.561372683396701e-14, + "abs_diff_nats": 1.1605152394622564e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 10: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 25442.236800482457, + "reference_value": 25442.236800481307, + "rel_diff": 4.5184757616092685e-14, + "abs_diff_nats": 1.1496013030409813e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 10: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 25442.23680048245, + "reference_value": 25442.236800482457, + "rel_diff": 2.8597947858285217e-16, + "abs_diff_nats": 7.275957614183426e-12, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 10: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 25442.23680048129, + "reference_value": 25442.236800481307, + "rel_diff": 7.149486964571627e-16, + "abs_diff_nats": 1.8189894035458565e-11, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 11: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -3234.471614889735, + "reference_value": -3234.481431636159, + "rel_diff": 3.035029457234597e-06, + "abs_diff_nats": 0.009816746423894074, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 11: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -3234.4716141754543, + "reference_value": -3234.481430921878, + "rel_diff": 3.035029457904832e-06, + "abs_diff_nats": 0.009816746423894074, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 11: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -3234.471614889735, + "reference_value": -3234.4716141754543, + "rel_diff": 2.2083383136026517e-10, + "abs_diff_nats": 7.142807589843869e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 11: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -3234.481431636159, + "reference_value": -3234.481430921878, + "rel_diff": 2.208331611230817e-10, + "abs_diff_nats": 7.142807589843869e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 12: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 18887.307347644703, + "reference_value": 18883.933556142838, + "rel_diff": 0.00017865936097657688, + "abs_diff_nats": 3.3737915018646163, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 12: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 18887.3073475926, + "reference_value": 18883.93355609074, + "rel_diff": 0.00017865936097687714, + "abs_diff_nats": 3.3737915018609783, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 12: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 18887.307347644703, + "reference_value": 18887.3073475926, + "rel_diff": 2.758632107599427e-12, + "abs_diff_nats": 5.210313247516751e-08, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 12: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 18883.933556142838, + "reference_value": 18883.93355609074, + "rel_diff": 2.7589323136310487e-12, + "abs_diff_nats": 5.209949449636042e-08, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 13: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 23869.488067817772, + "reference_value": 23869.488067815808, + "rel_diff": 8.230208164700236e-14, + "abs_diff_nats": 1.964508555829525e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 13: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 23869.488067817765, + "reference_value": 23869.4880678158, + "rel_diff": 8.230208164700238e-14, + "abs_diff_nats": 1.964508555829525e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 13: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 23869.488067817772, + "reference_value": 23869.488067817765, + "rel_diff": 3.048225246185022e-16, + "abs_diff_nats": 7.275957614183426e-12, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 13: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 23869.488067815808, + "reference_value": 23869.4880678158, + "rel_diff": 3.048225246185273e-16, + "abs_diff_nats": 7.275957614183426e-12, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 14: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -177847.93751601427, + "reference_value": -177848.23960593628, + "rel_diff": 1.6985825818857827e-06, + "abs_diff_nats": 0.30208992201369256, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 14: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": NaN, + "reference_value": NaN, + "rel_diff": NaN, + "abs_diff_nats": NaN, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 14: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -177847.93751601427, + "reference_value": NaN, + "rel_diff": NaN, + "abs_diff_nats": NaN, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 14: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -177848.23960593628, + "reference_value": NaN, + "rel_diff": NaN, + "abs_diff_nats": NaN, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 15: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 25794.9854395605, + "reference_value": 25794.98543959175, + "rel_diff": 1.2114850006836214e-12, + "abs_diff_nats": 3.1250237952917814e-08, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 15: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 25794.985439518343, + "reference_value": 25794.985439519085, + "rel_diff": 2.877100583703783e-14, + "abs_diff_nats": 7.421476766467094e-10, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 15: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 25794.9854395605, + "reference_value": 25794.985439518343, + "rel_diff": 1.6343059590176666e-12, + "abs_diff_nats": 4.215689841657877e-08, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 15: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 25794.98543959175, + "reference_value": 25794.985439519085, + "rel_diff": 2.817019953867616e-12, + "abs_diff_nats": 7.266498869284987e-08, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 16: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 16093.515739414663, + "reference_value": 16088.259041843845, + "rel_diff": 0.0003267412314250826, + "abs_diff_nats": 5.256697570817778, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 16: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 16093.515739269482, + "reference_value": 16088.259041698664, + "rel_diff": 0.00032674123142803117, + "abs_diff_nats": 5.256697570817778, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 16: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 16093.515739414663, + "reference_value": 16093.515739269482, + "rel_diff": 9.021075481994033e-12, + "abs_diff_nats": 1.45180820254609e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 16: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 16088.259041843845, + "reference_value": 16088.259041698664, + "rel_diff": 9.024023039305824e-12, + "abs_diff_nats": 1.45180820254609e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 17: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": NaN, + "reference_value": NaN, + "rel_diff": NaN, + "abs_diff_nats": NaN, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 17: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": NaN, + "reference_value": NaN, + "rel_diff": NaN, + "abs_diff_nats": NaN, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 17: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": NaN, + "reference_value": NaN, + "rel_diff": NaN, + "abs_diff_nats": NaN, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 17: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": NaN, + "reference_value": NaN, + "rel_diff": NaN, + "abs_diff_nats": NaN, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 18: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 18622.433656659538, + "reference_value": 18620.968710658402, + "rel_diff": 7.867184698595126e-05, + "abs_diff_nats": 1.4649460011351039, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 18: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 18622.43365615711, + "reference_value": 18620.968710155976, + "rel_diff": 7.867184698807396e-05, + "abs_diff_nats": 1.4649460011351039, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 18: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 18622.433656659538, + "reference_value": 18622.43365615711, + "rel_diff": 2.6979647795179092e-11, + "abs_diff_nats": 5.024267011322081e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 18: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 18620.968710658402, + "reference_value": 18620.968710155976, + "rel_diff": 2.6981770333902228e-11, + "abs_diff_nats": 5.024267011322081e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 19: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 7274.769367446595, + "reference_value": 7217.440786725896, + "rel_diff": 0.007943062148308363, + "abs_diff_nats": 57.32858072069939, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 19: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 7274.7693668941465, + "reference_value": 7217.440786173451, + "rel_diff": 0.007943062148915846, + "abs_diff_nats": 57.328580720695754, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 19: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 7274.769367446595, + "reference_value": 7274.7693668941465, + "rel_diff": 7.594040193821002e-11, + "abs_diff_nats": 5.524489097297192e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 19: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 7217.440786725896, + "reference_value": 7217.440786173451, + "rel_diff": 7.654309721657004e-11, + "abs_diff_nats": 5.524452717509121e-07, + "within_rtol": true, + "status": "RECORDED" + } + ], + "lanes_failed": 13, + "arm_rows": { + "vmap": { + "arm": "vmap", + "program": "jax.jit(jax.vmap(fn))", + "stands_for": "Nautilus(use_jax_vmap=True) \u2014 Fitness._vmap", + "hlo_source": "jax.jit(jax.vmap(fn)).lower(batched_tree) \u2014 the exact current Fitness._vmap composition (PyAutoFit#1638)", + "batch_wall_ms": 529.6629085001769, + "wall_production_nesting_ms": 529.6629085001769, + "wall_aot_command_buffers_on_ms": 530.0135853998654, + "wall_aot_command_buffers_off_ms": 531.1663243999647, + "command_buffer_delta_ms": 1.1527390000992455, + "production_nesting_vs_aot_on_delta_ms": -0.3506768996885512, + "production_nesting_vs_aot_on_delta_pct": -0.06616375680709867, + "wall_per_lane_ms": 26.483145425008843, + "wall_per_lane_command_buffers_off_ms": 26.558316219998233, + "traced_batch_wall_ms": 535.6660600002215, + "untraced_batch_wall_ms": 532.3608561000583, + "traced_wall_per_lane_ms": 26.783303000011074, + "callback_count_per_call": 0.0, + "callback_count_per_lane": 0.0, + "callback_expectation": "0 \u2014 the rectangular mesh has no qhull host callback (asserted)", + "host_qhull_ms": 0.0, + "host_tables_ms": 0.0, + "host_qhull_ms_per_lane": 0.0, + "host_tables_ms_per_lane": 0.0, + "host_callback_probe": { + "calls": 0, + "qhull_ms_total": 0.0, + "tables_ms_total": 0.0, + "total_ms_total": 0.0, + "qhull_ms_mean": 0.0, + "tables_ms_mean": 0.0, + "total_ms_mean": 0.0, + "non_finite_calls": 0, + "n_points": [] + }, + "host_callback_records_first": [], + "device_idle_ms": 11.87105680000002, + "device_idle_ms_per_lane": 0.593552840000001, + "trace": { + "parser": "ProfileData.from_file(xplane) + as_text() + stack_frame_index(proto field 17)", + "stage_audit": { + "mixed_fusion": [ + { + "instruction": "loop_divide_gather_fusion", + "ms": 21.329011, + "opcode": "fusion", + "shape": "(f64[15361,20,1,1,1521]{4,3,2,1,0}, f64[15361,20,1,1,1521]{4,3,2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_multiply_transpose_fusion", + "ms": 6.1979612, + "opcode": "fusion", + "shape": "(f64[20,1369,1369]{2,1,0}, f64[20,1369,1369]{2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:237 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:274 (_certified_positive_only_from)" + ] + }, + { + "instruction": "loop_broadcast_fusion", + "ms": 5.009775500000001, + "opcode": "fusion", + "shape": "f64[20,1521,180,180]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_reduce_fusion.2", + "ms": 2.5756107000000004, + "opcode": "fusion", + "shape": "f64[92,20,1521]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123 (data_vector_via_blurred_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:67 (InversionImagingMapping.data_vector)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:699 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_reduce_fusion.5", + "ms": 2.2242192000000003, + "opcode": "fusion", + "shape": "f64[15361,20]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163 (mapped_reconstructed_data_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:120 (InversionImagingMapping._mapped_reconstructed_data_dict_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:196 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "loop_broadcast_fusion.1", + "ms": 2.1761362, + "opcode": "fusion", + "shape": "f64[15361,20,1521]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:353", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:353 (mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:283 (Mapper.mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:91 (AbstractInversionImaging._mapping_matrix_for_convolution_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:137 (AbstractInversionImaging.operated_mapping_matrix_list)" + ] + } + ], + "other": [ + { + "instruction": "copy.60", + "ms": 0.08474270000000002, + "opcode": "copy", + "shape": "u32[20,2,15361]{2,1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.61", + "ms": 0.0836168, + "opcode": "copy", + "shape": "u32[20,2,15361]{2,1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.78", + "ms": 0.07697590000000003, + "opcode": "copy", + "shape": "u32[20,15361]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.69", + "ms": 0.07673700000000006, + "opcode": "copy", + "shape": "u32[20,15361]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.70", + "ms": 0.07649060000000002, + "opcode": "copy", + "shape": "u32[20,15361]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.79", + "ms": 0.07336190000000002, + "opcode": "copy", + "shape": "u32[20,15361]{1,0}", + "source": "", + "stack": [] + } + ], + "mesh_construction": [ + { + "instruction": "fusion.6", + "ms": 0.5154830999999999, + "opcode": "fusion", + "shape": "(f64[20,15361,2]{2,1,0}, s64[20,15361,2]{2,1,0}, s32[20,15361,2]{2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:227", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:227 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_select_fusion", + "ms": 0.21916030000000003, + "opcode": "fusion", + "shape": "(u32[20,2,15361]{2,1,0}, u32[20,2,15361]{2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69 (forward_interp)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:573 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/abstract.py:36 (AbstractInterpolator.mappings)" + ] + }, + { + "instruction": "loop_select_fusion.2", + "ms": 0.0923672999999999, + "opcode": "fusion", + "shape": "(u32[20,15361]{1,0}, u32[20,15361]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_select_fusion.1", + "ms": 0.08906190000000004, + "opcode": "fusion", + "shape": "(u32[20,15361]{1,0}, u32[20,15361]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_subtract_transpose_fusion", + "ms": 0.061060500000000004, + "opcode": "fusion", + "shape": "(f64[20,15361,2]{2,1,0}, f64[614440,1,1,1]{3,2,1,0}, f64[614440,1,1,1]{3,2,1,0}, f64[20,15361,2]{2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69 (forward_interp)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:573 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/abstract.py:36 (AbstractInterpolator.mappings)" + ] + }, + { + "instruction": "loop_gather_fusion", + "ms": 0.0303158, + "opcode": "fusion", + "shape": "(f64[614440,1,1,1]{3,2,1,0}, f64[614440,1,1,1]{3,2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69 (forward_interp)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:573 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/abstract.py:36 (AbstractInterpolator.mappings)" + ] + } + ], + "border_relocator": [ + { + "instruction": "custom-call.2", + "ms": 0.0421811, + "opcode": "custom-call", + "shape": "(f64[20,2,2]{2,1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_add_rsqrt_fusion", + "ms": 0.015240800000000002, + "opcode": "fusion", + "shape": "(f64[20,15361]{1,0}, f64[20,15361]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:311", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:311 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:423 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "eigh.0", + "ms": 0.014728999999999997, + "opcode": "custom-call", + "shape": "(f64[20,2,2]{1,2,0}, f64[20,2]{1,0}, s32[20]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_abs_fusion", + "ms": 0.003343899999999999, + "opcode": "fusion", + "shape": "(f64[20,392,1]{2,1,0}, f64[20,392,1]{2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:269", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:269 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_reduce_fusion.7", + "ms": 0.003334399999999999, + "opcode": "fusion", + "shape": "f64[20]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:269", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:269 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_reduce_fusion.6", + "ms": 0.0033213999999999995, + "opcode": "fusion", + "shape": "f64[20]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:270", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:270 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + } + ], + "pdip_solve": [ + { + "instruction": "cholesky.40", + "ms": 95.47643780000352, + "opcode": "custom-call", + "shape": "(f64[20,1369,1369]{1,2,0}, s32[20]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "triangular-solve", + "ms": 26.60249389999963, + "opcode": "custom-call", + "shape": "(f64[20,1369,1]{1,2,0}, s8[320]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "triangular-solve.1", + "ms": 24.434630899999586, + "opcode": "custom-call", + "shape": "(f64[20,1369,1]{1,2,0}, s8[320]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "input_transpose_fusion", + "ms": 13.135902099999997, + "opcode": "fusion", + "shape": "f64[20,1369,1369]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "input_transpose_fusion.1", + "ms": 7.746636000000003, + "opcode": "fusion", + "shape": "f64[20,1369,1369]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "cholesky.60", + "ms": 6.7328743999999565, + "opcode": "custom-call", + "shape": "(f64[20,1369,1369]{1,2,0}, s32[20]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:237 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:274 (_certified_positive_only_from)" + ] + } + ], + "psf_convolution_mapping_matrix": [ + { + "instruction": "input_scatter_fusion", + "ms": 40.861657199999996, + "opcode": "fusion", + "shape": "f64[20,1521,180,180]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.29.0", + "ms": 35.73501790000001, + "opcode": "fft", + "shape": "f64[20,1521,180,180]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.25.0", + "ms": 27.2992325, + "opcode": "fft", + "shape": "c128[20,1521,180,91]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.27.0", + "ms": 19.6710225, + "opcode": "fft", + "shape": "c128[20,1521,91,180]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_transpose_fusion.3", + "ms": 10.6949234, + "opcode": "fusion", + "shape": "c128[20,1521,91,180]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "wrapped_transpose.2", + "ms": 10.026044099999998, + "opcode": "fusion", + "shape": "c128[20,1521,180,91]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + } + ], + "regularization_H": [ + { + "instruction": "wrapped_broadcast", + "ms": 0.6165773, + "opcode": "fusion", + "shape": "f64[20,1521,1521]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:124", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:124 (weighted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:366 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_scatter_fusion.7", + "ms": 0.0027135, + "opcode": "fusion", + "shape": "f64[1521,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:123 (weighted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:366 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "mapping_matrix": [ + { + "instruction": "input_scatter_fusion.5", + "ms": 0.0702343, + "opcode": "fusion", + "shape": "f64[20,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:71", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:71 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:362 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + }, + { + "instruction": "input_reduce_fusion.19", + "ms": 0.0037470999999999997, + "opcode": "fusion", + "shape": "f64[20]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:362 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + }, + { + "instruction": "loop_compare_fusion.4", + "ms": 0.0018110000000000001, + "opcode": "fusion", + "shape": "pred[4]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:54", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:54 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:362 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + } + ], + "curvature_matrix_F": [ + { + "instruction": "cublas-lt-matmul.2", + "ms": 125.12156979999999, + "opcode": "custom-call", + "shape": "(f64[20,1521,1521]{2,1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "inversion_other": [ + { + "instruction": "cholesky.80", + "ms": 9.312193400000025, + "opcode": "custom-call", + "shape": "(f64[20,1521,1521]{1,2,0}, s32[20]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1078 (AbstractInversion.log_det_curvature_reg_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:347 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "cholesky.90", + "ms": 9.081469100000024, + "opcode": "custom-call", + "shape": "(f64[20,1521,1521]{1,2,0}, s32[20]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1157 (AbstractInversion.log_det_regularization_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:348 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "loop_reduce_window_fusion.3", + "ms": 0.0077918, + "opcode": "fusion", + "shape": "s64[6,16]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "loop_reduce_window_fusion.2", + "ms": 0.0036927, + "opcode": "fusion", + "shape": "s64[86,16]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "input_scatter_fusion.9", + "ms": 0.0031359, + "opcode": "fusion", + "shape": "s64[1369]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527 (AbstractInversion.zeroed_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:567 (AbstractInversion.solve_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:684 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_broadcast_fusion.5", + "ms": 0.0021855, + "opcode": "fusion", + "shape": "(s64[1369]{0}, s64[1369]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527 (AbstractInversion.zeroed_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:567 (AbstractInversion.solve_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:684 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "chi_squared_evidence": [ + { + "instruction": "loop_divide_fusion", + "ms": 0.0050558999999999995, + "opcode": "fusion", + "shape": "f64[15361,20]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:352", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:352 (AbstractNDArray.__truediv__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:57 (unwrap_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:35 (to_new_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:78 (chi_squared_map_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:78 (AbstractFit.chi_squared_map)" + ] + } + ] + }, + "stage_audit_note": "The HLO instructions that contributed most of each stage's milliseconds, with their full source stack. A stage row is only as good as the rules that built it; this is how a reader checks a row against the HLO instead of trusting it.", + "untraced_wall_ms": 532.3608561000583, + "reconciliation_vs_untraced_pct": 0.6276938211465525, + "wall_basis": "wall_ms is the TRACED run's wall, the run these kernel durations came from. untraced_wall_ms is the same executable without the profiler; the difference is the profiler's overhead and belongs in neither the stages nor the idle row.", + "calls": 10, + "call_split": "per-call (first-instruction recurrence)", + "call_blocks": 10, + "events": 89130, + "streams": [ + "Stream #14(MemcpyD2D,Compute,MemcpyD2H)" + ], + "per_stage_ms": { + "border_relocator": { + "median_ms": 0.0894835, + "min_ms": 0.08924300000000002, + "max_ms": 0.090139 + }, + "chi_squared_evidence": { + "median_ms": 0.005039999999999999, + "min_ms": 0.004959, + "max_ms": 0.005216 + }, + "curvature_matrix_F": { + "median_ms": 125.113493, + "min_ms": 123.884782, + "max_ms": 126.093803 + }, + "inversion_other": { + "median_ms": 18.42137300000001, + "min_ms": 18.26282199999998, + "max_ms": 18.551284 + }, + "mapping_matrix": { + "median_ms": 0.075549, + "min_ms": 0.074621, + "max_ms": 0.077564 + }, + "mesh_construction": { + "median_ms": 1.1783134999999996, + "min_ms": 1.1696789999999995, + "max_ms": 1.1819579999999996 + }, + "mixed_fusion": { + "median_ms": 43.30739149999999, + "min_ms": 42.71875999999999, + "max_ms": 43.50806599999999 + }, + "other": { + "median_ms": 0.5600315000000002, + "min_ms": 0.5590400000000005, + "max_ms": 0.5609800000000001 + }, + "pdip_solve": { + "median_ms": 190.1846805000013, + "min_ms": 189.838493000001, + "max_ms": 190.51357500000134 + }, + "psf_convolution_mapping_matrix": { + "median_ms": 144.277123, + "min_ms": 144.022279, + "max_ms": 144.610223 + }, + "regularization_H": { + "median_ms": 0.6189169999999999, + "min_ms": 0.6170279999999999, + "max_ms": 0.623172 + } + }, + "stage_order": [ + "border_relocator", + "mesh_construction", + "mapping_matrix", + "psf_convolution_mapping_matrix", + "curvature_matrix_F", + "regularization_H", + "pdip_solve", + "chi_squared_evidence", + "inversion_other", + "mixed_fusion", + "other" + ], + "mixed_fusion": { + "ms": 43.30739149999999, + "constituent_stage_sets": { + "curvature_matrix_F + psf_convolution_mapping_matrix": 21.329011, + "inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": 6.1979612, + "pdip_solve + psf_convolution_mapping_matrix": 5.009775500000001, + "data_vector_D + pdip_solve": 2.5944678, + "mapped_reconstruction + pdip_solve": 2.2242192000000003, + "mapping_matrix + pdip_solve": 2.1792176000000003, + "border_relocator + pdip_solve": 1.7020013999999999, + "inversion_other + regularization_H": 0.6038575, + "curvature_reg_reduce_gather + inversion_other": 0.6020079999999999, + "inversion_other + pdip_solve": 0.2445138, + "border_relocator + inversion_other + mapping_matrix + mesh_construction + pdip_solve": 0.1165399, + "inversion_other + mapping_matrix + mesh_construction + pdip_solve": 0.0856547, + "mesh_construction + pdip_solve": 0.0371634, + "inversion_other + mesh_construction + pdip_solve": 0.036165199999999995, + "grids_and_structures + mass_profile_deflections + ray_trace_data_grid": 0.03495219999999999, + "inversion_other + pdip_solve + regularization_H": 0.0333492, + "border_relocator + mesh_construction": 0.0277908, + "inversion_other + mapped_reconstruction + reconstruction_scatter": 0.0222392, + "grids_and_structures + mass_profile_deflections + pdip_solve + ray_trace_data_grid": 0.019250400000000004, + "pdip_solve + regularization_H": 0.0158013, + "inversion_other + mapping_matrix": 0.013743700000000001, + "pdip_solve + ray_trace_data_grid": 0.013180199999999994, + "inversion_other + mapped_reconstruction": 0.010105499999999998, + "chi_squared_evidence + pdip_solve": 0.0096893, + "border_relocator + inversion_other + pdip_solve": 0.0087135, + "border_relocator + inversion_other + mesh_construction + pdip_solve": 0.006169300000000002, + "inversion_other + pdip_solve + ray_trace_data_grid": 0.0047903999999999985, + "mapping_matrix + pdip_solve + regularization_H": 0.0043487000000000005, + "grids_and_structures + mass_profile_deflections + pdip_solve": 0.0043135000000000005, + "border_relocator + inversion_other + mapping_matrix + mesh_construction": 0.0029086, + "chi_squared_evidence + inversion_other": 0.0023326999999999996 + }, + "example_kernels": { + "curvature_matrix_F + psf_convolution_mapping_matrix": [ + "loop_divide_gather_fusion" + ], + "inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": [ + "input_multiply_transpose_fusion" + ], + "pdip_solve + psf_convolution_mapping_matrix": [ + "loop_broadcast_fusion" + ], + "data_vector_D + pdip_solve": [ + "input_reduce_fusion.2", + "input_reduce_fusion.17" + ], + "mapped_reconstruction + pdip_solve": [ + "input_reduce_fusion.5" + ], + "mapping_matrix + pdip_solve": [ + "loop_broadcast_fusion.1", + "loop_divide_fusion.1" + ], + "border_relocator + pdip_solve": [ + "input_reduce_fusion.8", + "loop_select_sine_fusion", + "input_concatenate_fusion.4", + "input_transpose_fusion.8" + ], + "inversion_other + regularization_H": [ + "input_transpose_fusion.5" + ], + "curvature_reg_reduce_gather + inversion_other": [ + "input_transpose_fusion.4" + ], + "inversion_other + pdip_solve": [ + "input_reduce_fusion.3", + "input_reduce_fusion.4", + "input_scatter_fusion.11", + "input_transpose_fusion.2" + ] + }, + "prorated_estimate_ms": { + "psf_convolution_mapping_matrix": 13.16939325, + "curvature_matrix_F": 10.6645055, + "pdip_solve": 8.646141796666667, + "mapped_reconstruction": 2.674065716666667, + "inversion_other": 2.3698478633333333, + "reconstruction_scatter": 1.5569033666666667, + "data_vector_D": 1.2972339, + "mapping_matrix": 1.1433790216666668, + "border_relocator": 0.8933780549999999, + "regularization_H": 0.3223953666666667, + "curvature_reg_reduce_gather": 0.30100399999999994, + "mesh_construction": 0.09152329666666667, + "ray_trace_data_grid": 0.024650233333333327, + "grids_and_structures": 0.017901166666666662, + "mass_profile_deflections": 0.017901166666666662, + "chi_squared_evidence": 0.006011 + }, + "prorated_note": "ESTIMATE ONLY \u2014 a mixed fusion's time split equally across the stages its constituents span. Never summed into the measured table, never reconciled." + }, + "other_sources_ms": { + "copy.60": 0.08474270000000002, + "copy.61": 0.0836168, + "copy.78": 0.07697590000000003, + "copy.69": 0.07673700000000006, + "copy.70": 0.07649060000000002, + "copy.79": 0.07336190000000002, + "copy.100": 0.03362160000000002, + "copy.99": 0.02541349999999998, + "copy.98": 0.02301719999999999, + "copy.113": 0.0023807, + "copy.53": 0.0019998999999999998, + "copy.62": 0.0016351000000000002 + }, + "device_span_ms": 535.5851436, + "device_busy_ms": 523.7140868, + "device_idle_ms": 11.87105680000002, + "largest_idle_gaps": [ + { + "gap_ms": 0.12969, + "after": "cholesky.40", + "before": "cholesky.40" + }, + { + "gap_ms": 0.091548, + "after": "cholesky.40", + "before": "cholesky.40" + }, + { + "gap_ms": 0.052894, + "after": "input_reduce_fusion.16", + "before": "loop_broadcast_fusion" + }, + { + "gap_ms": 0.04259, + "after": "while.42", + "before": "loop_not_select_fusion" + }, + { + "gap_ms": 0.023967, + "after": "while.42", + "before": "loop_not_select_fusion" + }, + { + "gap_ms": 0.023391, + "after": "while.42", + "before": "loop_not_select_fusion.1" + }, + { + "gap_ms": 0.022847, + "after": "while.42", + "before": "loop_not_select_fusion" + }, + { + "gap_ms": 0.021151, + "after": "while.42", + "before": "loop_not_select_fusion" + } + ], + "kernel_ms": 523.8313955000012, + "sum_ms": 535.7024523000013, + "wall_ms": 535.6660600002215, + "host_outside_span_ms": 0.0809164002214402, + "reconciliation_pct": 0.006793840882836997, + "unjoined_ms": 0.0, + "unjoined_pct": 0.0, + "other_ms": 0.5600315000000002, + "other_pct": 0.10454862493990541, + "note": "Stage rows attribute the command-buffers-OFF program (see the module docstring): kernel times are the same, the launch overhead the CUDA graphs remove is not. sum_ms = kernel rows + device_idle_ms; the residual against wall_ms is host_outside_span_ms (dispatch before the first kernel, teardown after the last).", + "per_stage_ms_per_lane": { + "border_relocator": 0.0044741749999999995, + "chi_squared_evidence": 0.00025199999999999995, + "curvature_matrix_F": 6.2556746500000004, + "inversion_other": 0.9210686500000005, + "mapping_matrix": 0.0037774500000000003, + "mesh_construction": 0.05891567499999998, + "mixed_fusion": 2.1653695749999993, + "other": 0.02800157500000001, + "pdip_solve": 9.509234025000065, + "psf_convolution_mapping_matrix": 7.21385615, + "regularization_H": 0.030945849999999997 + }, + "per_lane_divisor": 20, + "host_callback": { + "pure_callback_span_ms": 0, + "qhull_ms": 0.0, + "callback_body_ms_note": "the OUTERMOST matching body event, not a sum: under the probe the body appears twice (the wrapper and the timed re-implementation it calls) and summing them would count the same work twice", + "events_by_name": { + "ThenExecuteCallback:GetEventForComputeStreamSyncPoint": { + "count": 10, + "ms": 0.0200187 + } + }, + "note": "HOST milliseconds per traced BATCH (the whole invocation), aggregated by name because the events nest. Not a row of the device table: the device pays for them as the idle gaps largest_idle_gaps names." + }, + "host_callback_ms": 0 + }, + "hlo_census": { + "status": "excluded", + "reason": "The legacy census anchors PyAutoArray source line numbers that moved after the phase-1 run. No batched attribution is published from unsupported anchors; the device-event table and wall reconciliation remain valid." + }, + "trace_split": { + "expected_calls": 10, + "executions_per_invocation": 1, + "method": "per-call (first-instruction recurrence)", + "note": "DECIDED IN CODE: the scalar arm's trace is split by trace_calls * B, so every lane's execution is its own block and the per-stage median is taken over all of them. The vmap arm's is split by trace_calls, one block per batched execution, and per_stage_ms_per_lane divides those rows by B." + } + }, + "scalar": { + "arm": "scalar", + "program": "jax.jit(fn), called B times", + "stands_for": "Nautilus(use_jax_vmap=False, use_jax_jit=True). Plain use_jax_vmap=False is UNJITTED and is NOT this arm", + "hlo_source": "jax.jit(fn).lower(lane_trees[0]) \u2014 the same program phase 1 traced", + "batch_wall_ms": 625.857872800043, + "wall_production_nesting_ms": 625.857872800043, + "wall_aot_command_buffers_on_ms": 625.4916029996821, + "wall_aot_command_buffers_off_ms": 629.4270720001805, + "command_buffer_delta_ms": 3.935469000498415, + "production_nesting_vs_aot_on_delta_ms": 0.3662698003608966, + "production_nesting_vs_aot_on_delta_pct": 0.05855710909696781, + "wall_per_lane_ms": 31.29289364000215, + "wall_per_lane_command_buffers_off_ms": 31.471353600009024, + "traced_batch_wall_ms": 648.4555216997251, + "untraced_batch_wall_ms": 629.4864455998322, + "traced_wall_per_lane_ms": 32.42277608498625, + "callback_count_per_call": 0.0, + "callback_count_per_lane": 0.0, + "callback_expectation": "0 \u2014 the rectangular mesh has no qhull host callback (asserted)", + "host_qhull_ms": 0.0, + "host_tables_ms": 0.0, + "host_qhull_ms_per_lane": 0.0, + "host_tables_ms_per_lane": 0.0, + "host_callback_probe": { + "calls": 0, + "qhull_ms_total": 0.0, + "tables_ms_total": 0.0, + "total_ms_total": 0.0, + "qhull_ms_mean": 0.0, + "tables_ms_mean": 0.0, + "total_ms_mean": 0.0, + "non_finite_calls": 0, + "n_points": [] + }, + "host_callback_records_first": [], + "device_idle_ms": 1.6941080050000004, + "device_idle_ms_per_lane": 1.6941080050000004, + "trace": { + "parser": "ProfileData.from_file(xplane) + as_text() + stack_frame_index(proto field 17)", + "stage_audit": { + "mesh_construction": [ + { + "instruction": "fusion.2", + "ms": 0.14791941999999886, + "opcode": "fusion", + "shape": "(f64[15361,2]{1,0}, s64[15361,2]{1,0}, s32[15361,2]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:227", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:227 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_select_fusion", + "ms": 0.03917319999999952, + "opcode": "fusion", + "shape": "(u32[2,15361]{1,0}, u32[2,15361]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69 (forward_interp)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:573 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/abstract.py:36 (AbstractInterpolator.mappings)" + ] + }, + { + "instruction": "loop_select_fusion.3", + "ms": 0.03453038500000075, + "opcode": "fusion", + "shape": "(u32[15361]{0}, u32[15361]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_select_fusion.1", + "ms": 0.034339810000000706, + "opcode": "fusion", + "shape": "(u32[15361]{0}, u32[15361]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_add_fusion", + "ms": 0.020984455000000447, + "opcode": "fusion", + "shape": "s64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69 (forward_interp)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:573 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/abstract.py:36 (AbstractInterpolator.mappings)" + ] + }, + { + "instruction": "loop_add_fusion.3", + "ms": 0.020345205000000262, + "opcode": "fusion", + "shape": "s64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "mixed_fusion": [ + { + "instruction": "loop_divide_gather_fusion", + "ms": 0.6957924149999994, + "opcode": "fusion", + "shape": "(f64[15361,1,1,1521]{3,2,1,0}, f64[15361,1,1,1521]{3,2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_broadcast_fusion.3", + "ms": 0.23343745999999976, + "opcode": "fusion", + "shape": "f64[1521,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_multiply_transpose_fusion", + "ms": 0.18456236000000004, + "opcode": "fusion", + "shape": "(f64[1369,1369]{1,0}, f64[1369,1369]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:237 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:274 (_certified_positive_only_from)" + ] + }, + { + "instruction": "loop_broadcast_fusion", + "ms": 0.1363833950000001, + "opcode": "fusion", + "shape": "f64[15361,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:342", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:342 (mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:283 (Mapper.mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:91 (AbstractInversionImaging._mapping_matrix_for_convolution_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:137 (AbstractInversionImaging.operated_mapping_matrix_list)" + ] + }, + { + "instruction": "input_reduce_fusion.3", + "ms": 0.11353913499999997, + "opcode": "fusion", + "shape": "f64[92,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123 (data_vector_via_blurred_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:67 (InversionImagingMapping.data_vector)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:699 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_reduce_fusion.6", + "ms": 0.11184050999999992, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163 (mapped_reconstructed_data_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:120 (InversionImagingMapping._mapped_reconstructed_data_dict_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:196 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + } + ], + "border_relocator": [ + { + "instruction": "eigh.0", + "ms": 0.07397104999999984, + "opcode": "custom-call", + "shape": "(f64[2,2]{0,1}, f64[2]{0}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "custom-call.2", + "ms": 0.007906175, + "opcode": "custom-call", + "shape": "(f64[2,2]{1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_reduce_fusion.7", + "ms": 0.005313780000000003, + "opcode": "fusion", + "shape": "(f64[], f64[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:270", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:270 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_add_fusion.5", + "ms": 0.0035868199999999923, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:423 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_concatenate_fusion.4", + "ms": 0.0023776849999999966, + "opcode": "fusion", + "shape": "f64[392,2]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:238", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:238 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_multiply_fusion.1", + "ms": 0.0015503599999999982, + "opcode": "fusion", + "shape": "f64[2,2]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + } + ], + "other": [ + { + "instruction": "copy.41", + "ms": 0.030097644999999295, + "opcode": "copy", + "shape": "u32[2,15361]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.42", + "ms": 0.02979979499999904, + "opcode": "copy", + "shape": "u32[2,15361]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.59", + "ms": 0.028553500000001345, + "opcode": "copy", + "shape": "u32[15361]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.51", + "ms": 0.028486760000000933, + "opcode": "copy", + "shape": "u32[15361]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.60", + "ms": 0.028346345000000193, + "opcode": "copy", + "shape": "u32[15361]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.50", + "ms": 0.02822736499999981, + "opcode": "copy", + "shape": "u32[15361]{0}", + "source": "", + "stack": [] + } + ], + "pdip_solve": [ + { + "instruction": "cholesky.40", + "ms": 9.184048324999997, + "opcode": "custom-call", + "shape": "(f64[1369,1369]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "triangular-solve.1", + "ms": 1.6106283850000624, + "opcode": "custom-call", + "shape": "(f64[1369,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "triangular-solve", + "ms": 1.3639690900000043, + "opcode": "custom-call", + "shape": "(f64[1369,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "cholesky.60", + "ms": 0.8410301000000001, + "opcode": "custom-call", + "shape": "(f64[1369,1369]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:237 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:274 (_certified_positive_only_from)" + ] + }, + { + "instruction": "cholesky.70", + "ms": 0.8337424149999996, + "opcode": "custom-call", + "shape": "(f64[1369,1369]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:297 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:274 (_certified_positive_only_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:496 (reconstruction_positive_only_from)" + ] + }, + { + "instruction": "input_transpose_fusion.1", + "ms": 0.32416548500000025, + "opcode": "fusion", + "shape": "f64[1369,1369]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + } + ], + "mapping_matrix": [ + { + "instruction": "input_reduce_fusion.20", + "ms": 0.0028160800000000077, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:362 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + } + ], + "regularization_H": [ + { + "instruction": "input_scatter_fusion.8", + "ms": 0.002785044999999994, + "opcode": "fusion", + "shape": "f64[1521,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:123 (weighted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:366 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "psf_convolution_mapping_matrix": [ + { + "instruction": "fft.19.0", + "ms": 1.7801854650000009, + "opcode": "fft", + "shape": "f64[1521,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_scatter_fusion", + "ms": 1.4222081299999996, + "opcode": "fusion", + "shape": "f64[1521,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.15.0", + "ms": 1.383124279999999, + "opcode": "fft", + "shape": "c128[1521,180,91]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.17.0", + "ms": 0.9921843850000003, + "opcode": "fft", + "shape": "c128[1521,91,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_transpose_fusion.2", + "ms": 0.522208855, + "opcode": "fusion", + "shape": "c128[1521,91,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "wrapped_transpose.2", + "ms": 0.5077285800000001, + "opcode": "fusion", + "shape": "c128[1521,180,91]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + } + ], + "curvature_matrix_F": [ + { + "instruction": "cublas-lt-matmul.2", + "ms": 4.364650199999999, + "opcode": "custom-call", + "shape": "(f64[1521,1521]{1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "inversion_other": [ + { + "instruction": "cholesky.80", + "ms": 0.9170773750000003, + "opcode": "custom-call", + "shape": "(f64[1521,1521]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1078 (AbstractInversion.log_det_curvature_reg_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:347 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "cholesky.90", + "ms": 0.9005514800000001, + "opcode": "custom-call", + "shape": "(f64[1521,1521]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1157 (AbstractInversion.log_det_regularization_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:348 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "loop_reduce_window_fusion.3", + "ms": 0.0057904199999999845, + "opcode": "fusion", + "shape": "s64[6,16]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "loop_reduce_window_fusion.2", + "ms": 0.003016255, + "opcode": "fusion", + "shape": "s64[86,16]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "input_scatter_fusion.9", + "ms": 0.002541684999999997, + "opcode": "fusion", + "shape": "s64[1369]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527 (AbstractInversion.zeroed_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:567 (AbstractInversion.solve_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:684 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_broadcast_fusion.4", + "ms": 0.001903655000000006, + "opcode": "fusion", + "shape": "(s64[1369]{0}, s64[1369]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527 (AbstractInversion.zeroed_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:567 (AbstractInversion.solve_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:684 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "chi_squared_evidence": [ + { + "instruction": "loop_multiply_fusion", + "ms": 0.002980560000000002, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:300", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:300 (AbstractNDArray.__pow__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:60 (unwrap_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:35 (to_new_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:78 (chi_squared_map_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:78 (AbstractFit.chi_squared_map)" + ] + } + ] + }, + "stage_audit_note": "The HLO instructions that contributed most of each stage's milliseconds, with their full source stack. A stage row is only as good as the rules that built it; this is how a reader checks a row against the HLO instead of trusting it.", + "untraced_wall_ms": 31.47432227999161, + "reconciliation_vs_untraced_pct": 18.350516569120963, + "wall_basis": "wall_ms is the TRACED run's wall, the run these kernel durations came from. untraced_wall_ms is the same executable without the profiler; the difference is the profiler's overhead and belongs in neither the stages nor the idle row.", + "calls": 200, + "call_split": "per-call (first-instruction recurrence)", + "call_blocks": 200, + "events": 113200, + "streams": [ + "Stream #14(Memset,MemcpyH2D,Compute,MemcpyD2H,MemcpyD2D)" + ], + "per_stage_ms": { + "border_relocator": { + "median_ms": 0.0962385, + "min_ms": 0.09548400000000003, + "max_ms": 0.09789 + }, + "chi_squared_evidence": { + "median_ms": 0.002944, + "min_ms": 0.002848, + "max_ms": 0.003296 + }, + "curvature_matrix_F": { + "median_ms": 4.34344, + "min_ms": 4.319585, + "max_ms": 4.52188 + }, + "inversion_other": { + "median_ms": 1.8337585, + "min_ms": 1.8192139999999999, + "max_ms": 1.859725 + }, + "mapping_matrix": { + "median_ms": 0.002816, + "min_ms": 0.002783, + "max_ms": 0.002848 + }, + "memset": { + "median_ms": 0.04875100000000002, + "min_ms": 0.014592, + "max_ms": 0.055646 + }, + "mesh_construction": { + "median_ms": 0.34155349999999973, + "min_ms": 0.33909100000000003, + "max_ms": 0.3460510000000002 + }, + "mixed_fusion": { + "median_ms": 1.8479525000000003, + "min_ms": 1.8414889999999997, + "max_ms": 1.8674680000000003 + }, + "other": { + "median_ms": 0.17961899999999983, + "min_ms": 0.17915699999999982, + "max_ms": 0.1817609999999997 + }, + "pdip_solve": { + "median_ms": 20.248789000000006, + "min_ms": 4.648289, + "max_ms": 21.445342000000025 + }, + "psf_convolution_mapping_matrix": { + "median_ms": 6.6073010000000005, + "min_ms": 6.584796, + "max_ms": 6.641968 + }, + "regularization_H": { + "median_ms": 0.002752, + "min_ms": 0.002432, + "max_ms": 0.003104 + } + }, + "stage_order": [ + "border_relocator", + "mesh_construction", + "mapping_matrix", + "psf_convolution_mapping_matrix", + "curvature_matrix_F", + "regularization_H", + "pdip_solve", + "chi_squared_evidence", + "inversion_other", + "mixed_fusion", + "other", + "memset" + ], + "mixed_fusion": { + "ms": 1.8479525000000003, + "constituent_stage_sets": { + "curvature_matrix_F + psf_convolution_mapping_matrix": 0.6957924149999994, + "pdip_solve + psf_convolution_mapping_matrix": 0.23343745999999976, + "inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": 0.18456236000000004, + "mapping_matrix + pdip_solve": 0.1387204599999999, + "data_vector_D + pdip_solve": 0.11724944500000006, + "mapped_reconstruction + pdip_solve": 0.11184050999999992, + "border_relocator + pdip_solve": 0.0706898250000001, + "mesh_construction + pdip_solve": 0.038459690000000005, + "inversion_other + regularization_H": 0.030986109999999997, + "inversion_other + pdip_solve": 0.030264850000000027, + "border_relocator + mesh_construction + pdip_solve": 0.02706815499999997, + "curvature_reg_reduce_gather + inversion_other": 0.02572516500000001, + "border_relocator + inversion_other + mapping_matrix + mesh_construction + pdip_solve": 0.020582390000000002, + "pdip_solve + regularization_H": 0.019288659999999985, + "inversion_other + mapping_matrix + pdip_solve + regularization_H": 0.015457549999999943, + "inversion_other + mapping_matrix + mesh_construction": 0.012928505000000003, + "pdip_solve + ray_trace_data_grid": 0.012831525000000012, + "grids_and_structures + mass_profile_deflections + pdip_solve": 0.009833185000000001, + "inversion_other + mapped_reconstruction + reconstruction_scatter": 0.00966247, + "inversion_other + mapped_reconstruction + pdip_solve": 0.00884491, + "chi_squared_evidence + pdip_solve": 0.0076077999999999806, + "inversion_other + mesh_construction + pdip_solve": 0.005448964999999991, + "grids_and_structures + mass_profile_deflections + ray_trace_data_grid": 0.005233799999999997, + "inversion_other + pdip_solve + ray_trace_data_grid": 0.004809619999999999, + "border_relocator + mesh_construction": 0.0034309399999999973, + "border_relocator + inversion_other": 0.0033405599999999994, + "border_relocator + inversion_other + mesh_construction + pdip_solve": 0.0024160699999999976, + "chi_squared_evidence + inversion_other": 0.0017815449999999979 + }, + "example_kernels": { + "curvature_matrix_F + psf_convolution_mapping_matrix": [ + "loop_divide_gather_fusion" + ], + "pdip_solve + psf_convolution_mapping_matrix": [ + "loop_broadcast_fusion.3" + ], + "inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": [ + "input_multiply_transpose_fusion" + ], + "mapping_matrix + pdip_solve": [ + "loop_divide_fusion.1", + "loop_broadcast_fusion" + ], + "data_vector_D + pdip_solve": [ + "input_reduce_fusion.3", + "input_reduce_fusion.18" + ], + "mapped_reconstruction + pdip_solve": [ + "input_reduce_fusion.6" + ], + "border_relocator + pdip_solve": [ + "input_reduce_fusion.8", + "loop_select_sine_fusion", + "input_concatenate_fusion.1", + "input_transpose_fusion.6" + ], + "mesh_construction + pdip_solve": [ + "loop_multiply_fusion.2", + "loop_pad_fusion", + "loop_reduce_fusion", + "triton_softmax.1" + ], + "inversion_other + regularization_H": [ + "input_transpose_fusion.4" + ], + "inversion_other + pdip_solve": [ + "input_scatter_fusion.11", + "input_reduce_fusion.9", + "input_reduce_fusion.16", + "input_reduce_fusion.4" + ] + }, + "prorated_estimate_ms": { + "psf_convolution_mapping_matrix": 0.4646149374999996, + "pdip_solve": 0.46358886383333325, + "curvature_matrix_F": 0.3478962074999997, + "inversion_other": 0.11467274466666669, + "mapped_reconstruction": 0.10822997166666663, + "mapping_matrix": 0.0816505971666666, + "data_vector_D": 0.05862472250000003, + "border_relocator": 0.052473876333333364, + "reconstruction_scatter": 0.04936141333333334, + "mesh_construction": 0.04081435216666666, + "regularization_H": 0.029001772499999978, + "curvature_reg_reduce_gather": 0.012862582500000006, + "ray_trace_data_grid": 0.009763569166666672, + "grids_and_structures": 0.005022328333333333, + "mass_profile_deflections": 0.005022328333333333, + "chi_squared_evidence": 0.004694672499999989 + }, + "prorated_note": "ESTIMATE ONLY \u2014 a mixed fusion's time split equally across the stages its constituents span. Never summed into the measured table, never reconciled." + }, + "other_sources_ms": { + "copy.41": 0.030097644999999295, + "copy.42": 0.02979979499999904, + "copy.59": 0.028553500000001345, + "copy.51": 0.028486760000000933, + "copy.60": 0.028346345000000193, + "copy.50": 0.02822736499999981, + "copy.96": 0.0016406200000000004, + "copy.95": 0.0016316450000000008, + "copy.34": 0.00146092, + "copy.52": 0.0014163049999999986 + }, + "device_span_ms": 32.41873322, + "device_busy_ms": 30.724625215, + "device_idle_ms": 1.6941080050000004, + "largest_idle_gaps": [ + { + "gap_ms": 0.052638, + "after": "input_concatenate_fusion.4", + "before": "custom-call.2" + }, + { + "gap_ms": 0.038142, + "after": "loop_add_fusion.3", + "before": "loop_select_fusion.3" + }, + { + "gap_ms": 0.035487, + "after": "loop_multiply_fusion.1", + "before": "eigh.0" + }, + { + "gap_ms": 0.027423, + "after": "loop_divide_minimum_multiply_sine_sqrt_fusion", + "before": "loop_slice_fusion" + }, + { + "gap_ms": 0.023263, + "after": "loop_add_fusion.3", + "before": "loop_select_fusion.3" + }, + { + "gap_ms": 0.022655, + "after": "loop_select_fusion", + "before": "copy.41" + }, + { + "gap_ms": 0.020159, + "after": "eigh.0", + "before": "eigh.0" + }, + { + "gap_ms": 0.020063, + "after": "loop_broadcast_fusion.6", + "before": "loop_broadcast_fusion.8" + } + ], + "kernel_ms": 35.555915000000006, + "sum_ms": 37.250023005, + "wall_ms": 32.42277608498625, + "host_outside_span_ms": 0.004042864986253392, + "reconciliation_pct": 14.888444183066307, + "unjoined_ms": 0.0, + "unjoined_pct": 0.0, + "other_ms": 0.17961899999999983, + "other_pct": 0.5539901935885574, + "note": "Stage rows attribute the command-buffers-OFF program (see the module docstring): kernel times are the same, the launch overhead the CUDA graphs remove is not. sum_ms = kernel rows + device_idle_ms; the residual against wall_ms is host_outside_span_ms (dispatch before the first kernel, teardown after the last).", + "per_stage_ms_per_lane": { + "border_relocator": 0.0962385, + "chi_squared_evidence": 0.002944, + "curvature_matrix_F": 4.34344, + "inversion_other": 1.8337585, + "mapping_matrix": 0.002816, + "memset": 0.04875100000000002, + "mesh_construction": 0.34155349999999973, + "mixed_fusion": 1.8479525000000003, + "other": 0.17961899999999983, + "pdip_solve": 20.248789000000006, + "psf_convolution_mapping_matrix": 6.6073010000000005, + "regularization_H": 0.002752 + }, + "per_lane_divisor": 1, + "host_callback": { + "pure_callback_span_ms": 0, + "qhull_ms": 0.0, + "callback_body_ms_note": "the OUTERMOST matching body event, not a sum: under the probe the body appears twice (the wrapper and the timed re-implementation it calls) and summing them would count the same work twice", + "events_by_name": { + "ThenExecuteCallback:GetEventForComputeStreamSyncPoint": { + "count": 200, + "ms": 0.36591979999999985 + } + }, + "note": "HOST milliseconds per traced BATCH (the whole invocation), aggregated by name because the events nest. Not a row of the device table: the device pays for them as the idle gaps largest_idle_gaps names." + }, + "host_callback_ms": 0 + }, + "hlo_census": { + "status": "excluded", + "reason": "The legacy census anchors PyAutoArray source line numbers that moved after the phase-1 run. No batched attribution is published from unsupported anchors; the device-event table and wall reconciliation remain valid." + }, + "trace_split": { + "expected_calls": 200, + "executions_per_invocation": 20, + "method": "per-call (first-instruction recurrence)", + "note": "DECIDED IN CODE: the scalar arm's trace is split by trace_calls * B, so every lane's execution is its own block and the per-stage median is taken over all of them. The vmap arm's is split by trace_calls, one block per batched execution, and per_stage_ms_per_lane divides those rows by B." + } + } + }, + "certification_report": { + "source": "vmap arm, library solve observed through its stats= out-dict (PyAutoArray #566) and jax.debug.callback(..., ordered=True); ordered because the unordered batching rule returns the lanes permuted. Untimed, separately compiled; max rel diff of its log likelihoods vs the timed arm's: nan", + "rows": 20, + "pdip_iter": "NOT AVAILABLE per lane without changing library numerics. The fallback branch calls the library's own reconstruction_positive_only_from, which returns the solution alone \u2014 jax_nnls.solve_nnls' iteration count is discarded inside the library's custom_vjp primal. The PDIP while_loop's cost is in the pdip_solve stage row of each arm's device table instead, which is a max-over-lanes quantity under vmap because every lane runs the same fixed kernel sequence.", + "passes_semantics": "library `passes`: restricted active-set passes run (jax_active_set.solve_certified)" + }, + "lane_construction": { + "draws_sha256": "414c4581d327cf9f25278928cfce122a44af7f32110c4d2260c4622bb6110fbb", + "lane_rows": [ + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319 + ], + "calls": [ + 15 + ], + "stage": "pix1", + "regularization_range": { + "galaxies.source.pixelization.regularization.inner_coefficient": { + "min": 1.5395402868893563e-06, + "max": 631.3270846999916 + }, + "galaxies.source.pixelization.regularization.outer_coefficient": { + "min": 1.585514819488347e-06, + "max": 1082.4533276985048 + }, + "galaxies.source.pixelization.regularization.signal_scale": { + "min": 0.06623313471893155, + "max": 0.9779334025364208 + } + }, + "phases": [ + "exploration" + ], + "window_rule": "nautilus_batches.timed_window: consecutive captured calls, in call order, from the FIRST call that is not a prior batch, concatenated and truncated to B; at B == n_batch exactly one real Nautilus batch. Falls back to the latest B lanes if the post-prior lanes run out; never repeats a lane.", + "note": "Lane k is captured lane lane_rows[k]: the mass AND shear of a real Nautilus proposal (nautilus_batch_capture.py), lens light fixed at S3, the S3 light-subtracted dataset shared by every lane. `offsets` in the lane table are the mass offsets from the fiducial; the shear is in the capture file." + }, + "captured": { + "batches_path": "/mnt/ral/jnightin/autolens_profiling_wt/certified-solver-phase-c1-lane-rate/results/breakdown/imaging/nautilus_batches_rectangular_pix1.npz", + "batches_sha256": "c0b62fba544cb62c8a273c19837cf364127f5af7fdaa110f3a2c8a973e0b6cc0", + "schema_version": 2, + "n_calls": 972, + "n_lanes": 19440, + "call_sizes_seen": [ + 20 + ], + "calls_by_phase": { + "prior": 15, + "exploration": 957 + }, + "parameter_paths": [ + "galaxies.source.pixelization.regularization.inner_coefficient", + "galaxies.source.pixelization.regularization.outer_coefficient", + "galaxies.source.pixelization.regularization.signal_scale", + "galaxies.lens.mass.centre.centre_0", + "galaxies.lens.mass.centre.centre_1", + "galaxies.lens.mass.einstein_radius", + "galaxies.lens.mass.ell_comps.ell_comps_0", + "galaxies.lens.mass.ell_comps.ell_comps_1", + "galaxies.lens.shear.gamma_1", + "galaxies.lens.shear.gamma_2" + ], + "stage": "pix1", + "regularization": { + "class": "Adapt", + "free": true, + "priors": { + "inner_coefficient": [ + "LogUniform", + 1e-06, + 1000000.0 + ], + "outer_coefficient": [ + "LogUniform", + 1e-06, + 1000000.0 + ], + "signal_scale": [ + "Uniform", + 0.0, + 1.0 + ] + }, + "priors_source": "PyAutoGalaxy packaged config/priors/regularization (adapt_split.yaml / adapt.yaml / constant.yaml); adapt_split.yaml and adapt.yaml are identical to euclid_strong_lens_modeling_pipeline/config/priors/regularization/'s copies" + }, + "nautilus": { + "departures_from_production": [ + "mass/shear priors are the phase-B cell's Gaussians, not chained from source_lp", + "no positions likelihood", + "the cell's mesh (39x39 RectangularBilinearAdaptImage, weight_power 1, weight_floor 0) fixed in both stages; source_pix_1 uses RectangularBilinearAdaptDensity, source_pix_2 frees weight_power / weight_floor", + "seeded (production passes no seed)", + "quick updates disabled (iterations_per_quick_update=1e12; render-only)", + "NullPaths: no output directory, so no checkpoint and one Sampler.run call", + "post-fit perform_update skipped (samples / latent variables never built)" + ], + "n_batch": 20, + "n_like_max": 40000, + "n_live": 150, + "number_of_cores": 1, + "production_reference": "euclid_strong_lens_modeling_pipeline/scripts/full_model.py source_pix_1 (n_live=150) / source_pix_2 (n_live=75): af.Nautilus(n_batch=20, **SettingsSearch.search_dict) with use_jax_vmap=True and number_of_cores=1 (SettingsSearch defaults)", + "production_stage": "source_pix_1", + "seed": 1, + "stage": "pix1", + "use_jax_vmap": true, + "version": "1.0.5" + }, + "capture_fit_status": "sampling complete (n_like_max or convergence); post-fit result skipped", + "capture_library_revisions": { + "PyAutoArray": { + "head": "3de624b5b91a4efa130dc3cb0a3a0f06f85025a3", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoArray" + }, + "PyAutoFit": { + "head": "dd9fbe0aab60c4a57702b1444ca031b317c91331", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoFit" + }, + "PyAutoGalaxy": { + "head": "70a61e26cd715cefe7012a38285698091246a8a4", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy" + }, + "PyAutoLens": { + "head": "86054bbc19baa2f710a12e04a94fa27ab37cc354", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoLens" + }, + "PyAutoNerves": { + "head": "1fa613aa8d89a79613009fb66f5b4e2d21deb57a", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoNerves" + } + }, + "fingerprint_check": { + "fields": [ + "mesh", + "source_pixels", + "dataset_sha256", + "regularization_class", + "regularization_s0_fiducial", + "border_relocator", + "use_mixed_precision", + "log_evidence_s3_library" + ], + "not_identity": "the regularization coefficients: free per lane since the capture frees them", + "log_evidence_s3_library_rel_diff": 0.0, + "passed": true + }, + "timed_window_vs_capture_pdip": { + "reference": "the capture's own figure of merit (library PDIP, Fitness.call_wrap jax.jit(jax.vmap(call)) over parameter vectors) for the same lanes", + "compared_against": "this cell's jit(vmap) library-PDIP reference", + "n_compared": 19, + "max_rel_diff": 6.749679033619074e-06, + "max_abs_diff_nats": 1.3120266150217503, + "gated": false, + "note": "RECORDED, NOT GATED: proves the lane trees rebuilt here are the models the sampler evaluated (a wrong parameter mapping shows up as nats, not 1e-10)." + } + }, + "matched": { + "vmap_wall_per_lane_ms": 26.483145425008843, + "scalar_wall_per_lane_ms": 31.29289364000215, + "speedup_vmap_over_scalar": 1.1816154440042954, + "note": "Both walls are the PRODUCTION nesting of their arm, measured in one process on the same B lanes with the SAME library Settings (no injection). A speedup below 1 means the batch is slower per lane than B sequential jitted calls." + }, + "solver_source": "library", + "solver": "certified", + "certified_fallback": "none", + "certified_pass_budget": 16, + "certified_pass_budget_basis": "config default (Settings().certified_pass_budget)", + "certified_tau_rel": 1e-09, + "solver_used": "certified", + "solver_check": { + "solver_used": "certified", + "solver_used_source": "AbstractInversion.positive_only_solver_used on the fiducial S3 inversion, built eagerly on the JAX backend (AnalysisImaging(use_jax=True).fit_from) with the arms' Settings", + "reference_solver_used": "pdip", + "traced_solver_kwargs_jax": [ + "certified" + ], + "observed_calls_jax": 1, + "report_rows": 20, + "report_vs_timed_arm_max_rel_diff": NaN + }, + "lanes_certified": [ + false, + false, + false, + true, + true, + true, + true, + true, + false, + false, + true, + false, + false, + true, + true, + true, + false, + true, + false, + false + ], + "lanes_passes": [ + 16, + 16, + 16, + 4, + 2, + 14, + 6, + 6, + 16, + 16, + 6, + 16, + 16, + 9, + 2, + 8, + 16, + 3, + 16, + 16 + ], + "uncertified_lanes": 10, + "per_lane_certification_note": "certified / passes come from the library's own solve through its stats= out-dict (PyAutoArray #566): passes is the number of restricted active-set passes the library ran (0 when the unconstrained solve was already non-negative), certified is its KKT certificate. With certified_fallback=pdip a False lane returned the PDIP solution; with none it returned the last uncertified iterate. null for a library-PDIP row (no certificate).", + "gate": { + "pre_registered": true, + "gated": [ + "per lane: jit(vmap) arm vs jit(vmap) library PDIP <= lane_rtol relative", + "per lane: scalar jit arm vs scalar jit library PDIP <= lane_rtol relative" + ], + "recorded_not_gated": [ + "per lane: jit(vmap) arm vs scalar jit arm (rel_diff, abs_diff_nats)", + "per lane: jit(vmap) library PDIP vs scalar jit library PDIP", + "uncertified_lanes (certified_fallback=none rows)" + ], + "lanes_failed": 13, + "passed": false, + "policy_eligible": false, + "note": "Pre-registered before submission (module docstring; submit header). Phase 3 (results/notes/hst_gpu_residue_phase3_psf_2026_09.md) placed phase 2's ~2.5e-9 certified-vs-PDIP residual BETWEEN the jit(vmap) and scalar-jit compositions, not in the solver \u2014 so each arm is gated against the library-PDIP reference of its OWN composition, and the cross-composition difference is recorded with its nats. A certified_fallback=none row is policy-eligible only if every lane certifies AND passes the gate. Timing is never gated." + }, + "library_revisions": { + "PyAutoArray": { + "head": "3de624b5b91a4efa130dc3cb0a3a0f06f85025a3", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoArray", + "module_file": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/__init__.py" + }, + "PyAutoFit": { + "head": "dd9fbe0aab60c4a57702b1444ca031b317c91331", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoFit", + "module_file": "/mnt/ral/jnightin/PyAuto/PyAutoFit/autofit/__init__.py" + }, + "PyAutoGalaxy": { + "head": "70a61e26cd715cefe7012a38285698091246a8a4", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy", + "module_file": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/__init__.py" + }, + "PyAutoLens": { + "head": "86054bbc19baa2f710a12e04a94fa27ab37cc354", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoLens", + "module_file": "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/__init__.py" + }, + "autoarray_file": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/__init__.py" + } + }, + "headline_arm_note": "`trace`, `hlo_census`, `command_buffers` and `trace_timing` above describe the scalar arm \u2014 the program phase 1 traced. Both arms' full blocks, the lane table and the matched comparison are under `vmap`." +} \ No newline at end of file diff --git a/results/breakdown/imaging/fixed_light_trace_rectangular_jitvmap20_captured_pix1_libcertified_fboff_b16_hpc_a100_fp64_fixed_light_trace.png b/results/breakdown/imaging/fixed_light_trace_rectangular_jitvmap20_captured_pix1_libcertified_fboff_b16_hpc_a100_fp64_fixed_light_trace.png new file mode 100644 index 000000000..c459ba333 Binary files /dev/null and b/results/breakdown/imaging/fixed_light_trace_rectangular_jitvmap20_captured_pix1_libcertified_fboff_b16_hpc_a100_fp64_fixed_light_trace.png differ diff --git a/results/breakdown/imaging/fixed_light_trace_rectangular_jitvmap20_captured_pix1_libcertified_fbon_b16_hpc_a100_fp64_fixed_light_trace.json b/results/breakdown/imaging/fixed_light_trace_rectangular_jitvmap20_captured_pix1_libcertified_fbon_b16_hpc_a100_fp64_fixed_light_trace.json new file mode 100644 index 000000000..32d8d8280 --- /dev/null +++ b/results/breakdown/imaging/fixed_light_trace_rectangular_jitvmap20_captured_pix1_libcertified_fbon_b16_hpc_a100_fp64_fixed_light_trace.json @@ -0,0 +1,5395 @@ +{ + "device": { + "backend": "gpu", + "device": "cuda:0", + "hostname": "euclid-ral-gpu-1", + "xla_flags": "--xla_disable_hlo_passes=constant_folding --xla_gpu_autotune_level=0 --xla_gpu_enable_triton_gemm=false", + "omp_num_threads": null, + "cpu_count": 124, + "jax_compilation_cache_dir": "/mnt/ral/jnightin/autolens_profiling_wt/certified-solver-phase-c1-lane-rate/output/jax_cache/fixed_light_lanerate_rectangular_pix1_time_20_certified_on_350768_24", + "autotune_cache_entries_at_start": 0, + "cache_fresh": true, + "nvidia_smi": "NVIDIA A100 80GB PCIe, 35455 MiB, 81920 MiB" + }, + "machine": { + "cpu_model": "AMD EPYC 7702 64-Core Processor", + "cpu_count_os": 124, + "nproc": 4, + "nproc_all": 124, + "nproc_note": "GNU nproc honours OMP_NUM_THREADS, so `nproc` can print 1 on a multi-core host; `nproc_all` is the core count.", + "ram_total": "928298200 kB", + "kernel": "5.14.0-687.50.1.el9_8.x86_64", + "platform": "Linux-5.14.0-687.50.1.el9_8.x86_64-x86_64-with-glibc2.34", + "python": "3.12.4", + "jax_thread_env": { + "NPROC": null + }, + "blas_thread_env": { + "OMP_NUM_THREADS": null, + "OPENBLAS_NUM_THREADS": null, + "MKL_NUM_THREADS": null, + "VECLIB_MAXIMUM_THREADS": null, + "NUMEXPR_NUM_THREADS": null + }, + "thread_env_note": "NPROC sizes XLA's CPU intra-op pool (the JAX rows); the BLAS knobs pin OpenBLAS/MKL/OpenMP (the numpy/scipy rows) and do not touch JAX. Two disjoint families; both are recorded on every CPU timing.", + "gpu": "NVIDIA A100 80GB PCIe, 81920 MiB, 610.57.04" + }, + "precision": "fp64", + "configuration": { + "pixel_scale_arcsec": 0.05, + "mask_radius_arcsec": 3.5, + "image_pixels_masked": 15361, + "over_sampled_pixels": 62752, + "mesh": "rectangular", + "mesh_shape": [ + 39, + 39 + ], + "source_pixels": 1521, + "source_pixels_requested": null, + "dataset": "hst", + "dataset_sha256": { + "data.fits": "e4e833a28e9c6f6fb023cd85c0d3dde74068720256bc77a240633500e5b04fac", + "noise_map.fits": "315c6266a0acd3ac9c8da82fcd2b45a08697362481fd7a35072bab1658530ba3", + "psf.fits": "8389ba0e8bf4a09b4a561cfc246181a2fb944ed396754cd0ff76fdd22910d303" + }, + "cell_source_sha256": "06a162fcdae6b329384ec33322f443df07215d86e56f0505ac15b3d3473eb432", + "inversion_path": "dense", + "pass_budget": 11, + "pass_budget_basis": "phase 3 (autolens_profiling#255): the smallest ZERO-fallback budget per mesh, the budget a production run fixes. NOT phase 0's certifying budget (2 for Delaunay), which falls back on 67.5 % of a graded draw set and is not a production cost.", + "border_relocator_mode": "cell", + "border_relocator": true, + "border_relocator_note": "'cell' is use_border_relocator=True, which every profiling cell in this family forces; 'library' passes None and takes the shipped config default, which is what production runs. The resolved boolean is what this leg actually ran.", + "routes_selected": [ + "b", + "d" + ], + "trace_calls": 10, + "command_buffers_traced": "off", + "use_mixed_precision": false, + "tau_rel": 1e-09, + "regularization": { + "scheme": "constant", + "coefficient": 1.0 + }, + "thread_env": { + "n_threads": null, + "vars": [ + "OPENBLAS_NUM_THREADS", + "MKL_NUM_THREADS", + "OMP_NUM_THREADS", + "VECLIB_MAXIMUM_THREADS", + "NUMEXPR_NUM_THREADS" + ], + "set_to": null, + "preexisting": {}, + "overridden": {}, + "note": "Not pinned (legacy variant): recorded as found." + }, + "over_sample_size_lp_rule": { + "sub_size_list": [ + 4, + 2, + 2 + ], + "radial_list": [ + 0.3, + 0.6 + ], + "centre": [ + 0.0, + 0.0 + ] + }, + "vmap_batch": 20, + "lanes": "captured", + "arms": [ + "vmap", + "scalar" + ], + "fallback": "on", + "draw_seed": 0, + "vmap_composition": "jax.jit(jax.vmap(fn))", + "lane_rtol": 1e-09, + "vmap_flags_note": "Strict ProfileCLI.parse_cell_args rejects unknown flags. These keys record the exact batching program and prevent historical vmap(jit) artifacts from being mistaken for current jit(vmap) measurements.", + "solver_source": "library", + "solver": "certified", + "certified_fallback": "pdip", + "certified_pass_budget": 16, + "captured_pass": "time", + "batches": "/mnt/ral/jnightin/autolens_profiling_wt/certified-solver-phase-c1-lane-rate/results/breakdown/imaging/nautilus_batches_rectangular_pix1.npz" + }, + "solver_injection": { + "patched": null, + "part_v": "none \u2014 library mode selects the solver through al.Settings", + "part_b_route_d": { + "patched": "autoarray.inversion.inversion.inversion_util.reconstruction_positive_only_from", + "pass_budget": 11, + "fallback": true + }, + "note": "Library mode (phase B, #300): PART V's arms and references run the library's own positive-only solve, selected by Settings(positive_only_solver, certified_fallback, certified_pass_budget); nothing is injected. PART B's single-call route d (the fiducial d == b pin) still uses the phase-1 harness injection at the phase-3 budget and is not a phase-B row. The untimed certification report observes the library solve (library_solver_observed) without changing it." + }, + "routes": { + "b_s3_pdip": { + "label": "S3 PDIP (source-only)", + "status": "ok", + "solver": "library", + "ms": 38.90902909988654, + "log_likelihood": 28622.39485118912 + }, + "d_s3_certified_fallback": { + "label": "S3 certified active set, budget 11, PDIP fallback", + "status": "ok", + "solver": "harness-injected certified active set", + "pass_budget": 11, + "fallback": true, + "injected_solver_calls_jax": 1, + "injected_solver_calls_numpy": 0, + "ms": 30.24379559974477, + "log_likelihood": 28622.394851189252 + } + }, + "equivalence_pins": [ + { + "pin": "route d (certified, fallback) == route b (library PDIP)", + "route": "d_s3_certified_fallback", + "reference": "b_s3_pdip", + "expectation": "the certified active set returns the library's own positive solution", + "rtol": 1e-09, + "got": 28622.394851189252, + "reference_value": 28622.39485118912, + "rel_diff": 4.575691088611358e-15, + "status": "PASS" + } + ], + "equivalence_rtol": 1e-09, + "reference": { + "log_evidence_s0_library": 28622.394851199875, + "log_evidence_s3_library": 28622.39485119987, + "s3": { + "n_params": 1521, + "n_mapper": 1521, + "n_funcs": 0, + "edge_zeroed_pixels": 152, + "subtracted_light_flux": 5253.476646922047 + } + }, + "command_buffers": { + "wall_on_ms": 892.8463865002414, + "wall_off_ms": 899.0667205998761, + "command_buffer_delta_ms": 6.220334099634783, + "command_buffer_delta_pct": 0.6966858122164895, + "traced": "off", + "compiler_option": "xla_gpu_enable_command_buffer", + "probe": { + "note": "Not taken in --vmap-batch mode: the CUPTI-inside-a-CUDA-graph probe is a phase-1 diagnostic about the JOIN, and this mode already compiles and times both the command-buffers ON and OFF executable of every arm." + }, + "note": "ONE lowering, TWO compilations, one process. wall_on_ms is the PRODUCTION program (CUDA graphs as XLA ships them) and is the number comparable to phase 5's row; wall_off_ms is the graph-less program the stage rows attribute. The delta is the launch overhead the graphs remove \u2014 it lands in device_idle and host_outside_span, not in any stage. Reconciliation is computed against wall_off_ms." + }, + "trace": { + "parser": "ProfileData.from_file(xplane) + as_text() + stack_frame_index(proto field 17)", + "stage_audit": { + "mesh_construction": [ + { + "instruction": "fusion.2", + "ms": 0.1487964949999985, + "opcode": "fusion", + "shape": "(f64[15361,2]{1,0}, s64[15361,2]{1,0}, s32[15361,2]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:227", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:227 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_select_fusion", + "ms": 0.03959672000000021, + "opcode": "fusion", + "shape": "(u32[2,15361]{1,0}, u32[2,15361]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69 (forward_interp)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:573 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/abstract.py:36 (AbstractInterpolator.mappings)" + ] + }, + { + "instruction": "loop_select_fusion.6", + "ms": 0.03486210500000037, + "opcode": "fusion", + "shape": "(u32[15361]{0}, u32[15361]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_select_fusion.1", + "ms": 0.034722005000000465, + "opcode": "fusion", + "shape": "(u32[15361]{0}, u32[15361]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_add_fusion", + "ms": 0.02122797500000014, + "opcode": "fusion", + "shape": "s64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69 (forward_interp)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:573 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/abstract.py:36 (AbstractInterpolator.mappings)" + ] + }, + { + "instruction": "loop_add_fusion.1", + "ms": 0.020509104999999913, + "opcode": "fusion", + "shape": "s64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "mixed_fusion": [ + { + "instruction": "loop_divide_gather_fusion", + "ms": 0.7005787399999999, + "opcode": "fusion", + "shape": "(f64[15361,1,1,1521]{3,2,1,0}, f64[15361,1,1,1521]{3,2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_broadcast_fusion.3", + "ms": 0.23254130999999997, + "opcode": "fusion", + "shape": "f64[1521,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_multiply_transpose_fusion", + "ms": 0.1858056649999999, + "opcode": "fusion", + "shape": "(f64[1369,1369]{1,0}, f64[1369,1369]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:237 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:274 (_certified_positive_only_from)" + ] + }, + { + "instruction": "loop_broadcast_fusion", + "ms": 0.13651621999999972, + "opcode": "fusion", + "shape": "f64[15361,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:342", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:342 (mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:283 (Mapper.mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:91 (AbstractInversionImaging._mapping_matrix_for_convolution_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:137 (AbstractInversionImaging.operated_mapping_matrix_list)" + ] + }, + { + "instruction": "input_reduce_fusion.11", + "ms": 0.11360074500000002, + "opcode": "fusion", + "shape": "f64[92,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123 (data_vector_via_blurred_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:67 (InversionImagingMapping.data_vector)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:699 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_reduce_fusion.14", + "ms": 0.11173211499999999, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163 (mapped_reconstructed_data_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:120 (InversionImagingMapping._mapped_reconstructed_data_dict_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:196 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + } + ], + "border_relocator": [ + { + "instruction": "eigh.0", + "ms": 0.07430803999999994, + "opcode": "custom-call", + "shape": "(f64[2,2]{0,1}, f64[2]{0}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "custom-call.2", + "ms": 0.007918805000000008, + "opcode": "custom-call", + "shape": "(f64[2,2]{1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_reduce_fusion.15", + "ms": 0.005385045000000002, + "opcode": "fusion", + "shape": "(f64[], f64[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:270", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:270 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_add_fusion.9", + "ms": 0.003638050000000004, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:423 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_concatenate_fusion.4", + "ms": 0.0023778849999999967, + "opcode": "fusion", + "shape": "f64[392,2]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:238", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:238 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_reduce_fusion.22", + "ms": 0.0015722999999999963, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:256", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:256 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + } + ], + "other": [ + { + "instruction": "copy.63", + "ms": 0.030340555000000234, + "opcode": "copy", + "shape": "u32[2,15361]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.64", + "ms": 0.030041924999998977, + "opcode": "copy", + "shape": "u32[2,15361]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.81", + "ms": 0.0285733650000014, + "opcode": "copy", + "shape": "u32[15361]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.73", + "ms": 0.02850582000000104, + "opcode": "copy", + "shape": "u32[15361]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.72", + "ms": 0.028449395000000703, + "opcode": "copy", + "shape": "u32[15361]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.82", + "ms": 0.028441230000000668, + "opcode": "copy", + "shape": "u32[15361]{0}", + "source": "", + "stack": [] + } + ], + "pdip_solve": [ + { + "instruction": "cholesky.40", + "ms": 9.213927429999982, + "opcode": "custom-call", + "shape": "(f64[1369,1369]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "cholesky.60", + "ms": 7.3288890150000086, + "opcode": "custom-call", + "shape": "(f64[1369,1369]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:106", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:106 (factorize_kkt)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:212 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve.7", + "ms": 1.616699080000069, + "opcode": "custom-call", + "shape": "(f64[1369,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "triangular-solve.6", + "ms": 1.3687013200000047, + "opcode": "custom-call", + "shape": "(f64[1369,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "triangular-solve", + "ms": 1.1211926049999894, + "opcode": "custom-call", + "shape": "(f64[1369,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:213 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve.2", + "ms": 1.0726608249999972, + "opcode": "custom-call", + "shape": "(f64[1369,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:217 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + } + ], + "mapping_matrix": [ + { + "instruction": "input_reduce_fusion.28", + "ms": 0.0028116750000000083, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:362 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + } + ], + "regularization_H": [ + { + "instruction": "input_scatter_fusion.8", + "ms": 0.0028132750000000005, + "opcode": "fusion", + "shape": "f64[1521,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:123 (weighted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:366 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "psf_convolution_mapping_matrix": [ + { + "instruction": "fft.19.0", + "ms": 1.7863046099999997, + "opcode": "fft", + "shape": "f64[1521,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_scatter_fusion", + "ms": 1.426768445, + "opcode": "fusion", + "shape": "f64[1521,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.15.0", + "ms": 1.3959086399999991, + "opcode": "fft", + "shape": "c128[1521,180,91]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.17.0", + "ms": 0.9925668750000003, + "opcode": "fft", + "shape": "c128[1521,91,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_transpose_fusion.4", + "ms": 0.52130505, + "opcode": "fusion", + "shape": "c128[1521,91,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "wrapped_transpose.2", + "ms": 0.50512148, + "opcode": "fusion", + "shape": "c128[1521,180,91]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + } + ], + "curvature_matrix_F": [ + { + "instruction": "cublas-lt-matmul.2", + "ms": 4.370076099999999, + "opcode": "custom-call", + "shape": "(f64[1521,1521]{1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "inversion_other": [ + { + "instruction": "cholesky.120", + "ms": 0.9200623250000001, + "opcode": "custom-call", + "shape": "(f64[1521,1521]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1078 (AbstractInversion.log_det_curvature_reg_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:347 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "cholesky.130", + "ms": 0.9032163750000003, + "opcode": "custom-call", + "shape": "(f64[1521,1521]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1157 (AbstractInversion.log_det_regularization_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:348 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "loop_reduce_window_fusion.3", + "ms": 0.005834959999999999, + "opcode": "fusion", + "shape": "s64[6,16]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "loop_reduce_window_fusion.2", + "ms": 0.003036144999999994, + "opcode": "fusion", + "shape": "s64[86,16]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "input_scatter_fusion.9", + "ms": 0.0025572399999999997, + "opcode": "fusion", + "shape": "s64[1369]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527 (AbstractInversion.zeroed_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:567 (AbstractInversion.solve_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:684 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_broadcast_fusion.4", + "ms": 0.0019103600000000066, + "opcode": "fusion", + "shape": "(s64[1369]{0}, s64[1369]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527 (AbstractInversion.zeroed_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:567 (AbstractInversion.solve_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:684 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "chi_squared_evidence": [ + { + "instruction": "loop_multiply_fusion.2", + "ms": 0.002972470000000004, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:300", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:300 (AbstractNDArray.__pow__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:60 (unwrap_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:35 (to_new_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:78 (chi_squared_map_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:78 (AbstractFit.chi_squared_map)" + ] + } + ] + }, + "stage_audit_note": "The HLO instructions that contributed most of each stage's milliseconds, with their full source stack. A stage row is only as good as the rules that built it; this is how a reader checks a row against the HLO instead of trusting it.", + "untraced_wall_ms": 44.935685794989695, + "reconciliation_vs_untraced_pct": 12.387739480390767, + "wall_basis": "wall_ms is the TRACED run's wall, the run these kernel durations came from. untraced_wall_ms is the same executable without the profiler; the difference is the profiler's overhead and belongs in neither the stages nor the idle row.", + "calls": 200, + "call_split": "per-call (first-instruction recurrence)", + "call_blocks": 200, + "events": 178300, + "streams": [ + "Stream #14(MemcpyD2D,MemcpyD2H,Compute,MemcpyH2D,Memset)" + ], + "per_stage_ms": { + "border_relocator": { + "median_ms": 0.09683150000000001, + "min_ms": 0.09577099999999998, + "max_ms": 0.09782099999999999 + }, + "chi_squared_evidence": { + "median_ms": 0.002944, + "min_ms": 0.002816, + "max_ms": 0.003232 + }, + "curvature_matrix_F": { + "median_ms": 4.3483225, + "min_ms": 4.324689, + "max_ms": 4.515191 + }, + "inversion_other": { + "median_ms": 1.839874, + "min_ms": 1.821604, + "max_ms": 1.862455 + }, + "mapping_matrix": { + "median_ms": 0.002816, + "min_ms": 0.002784, + "max_ms": 0.002848 + }, + "memset": { + "median_ms": 0.0700325, + "min_ms": 0.014208, + "max_ms": 0.10437699999999997 + }, + "mesh_construction": { + "median_ms": 0.3441575000000003, + "min_ms": 0.34194300000000016, + "max_ms": 0.34670900000000027 + }, + "mixed_fusion": { + "median_ms": 1.8536985000000001, + "min_ms": 1.8478430000000001, + "max_ms": 1.861923 + }, + "other": { + "median_ms": 0.18196499999999977, + "min_ms": 0.18009699999999973, + "max_ms": 0.18453299999999978 + }, + "pdip_solve": { + "median_ms": 32.84626749999999, + "min_ms": 4.654487999999999, + "max_ms": 48.37692199999996 + }, + "psf_convolution_mapping_matrix": { + "median_ms": 6.6271205, + "min_ms": 6.603718000000001, + "max_ms": 6.651364 + }, + "regularization_H": { + "median_ms": 0.002784, + "min_ms": 0.002431, + "max_ms": 0.003232 + } + }, + "stage_order": [ + "border_relocator", + "mesh_construction", + "mapping_matrix", + "psf_convolution_mapping_matrix", + "curvature_matrix_F", + "regularization_H", + "pdip_solve", + "chi_squared_evidence", + "inversion_other", + "mixed_fusion", + "other", + "memset" + ], + "mixed_fusion": { + "ms": 1.8536985000000001, + "constituent_stage_sets": { + "curvature_matrix_F + psf_convolution_mapping_matrix": 0.7005787399999999, + "pdip_solve + psf_convolution_mapping_matrix": 0.23254130999999997, + "inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": 0.1858056649999999, + "mapping_matrix + pdip_solve": 0.13885781999999952, + "data_vector_D + pdip_solve": 0.11730664500000008, + "mapped_reconstruction + pdip_solve": 0.11173211499999999, + "border_relocator + pdip_solve": 0.0710107000000003, + "mesh_construction + pdip_solve": 0.03882804500000003, + "inversion_other + regularization_H": 0.030755309999999984, + "inversion_other + pdip_solve": 0.030256290000000106, + "border_relocator + mesh_construction + pdip_solve": 0.026869700000000045, + "curvature_reg_reduce_gather + inversion_other": 0.025538999999999996, + "border_relocator + inversion_other + mapping_matrix + mesh_construction + pdip_solve": 0.020500980000000002, + "pdip_solve + regularization_H": 0.019199010000000002, + "inversion_other + mapping_matrix + pdip_solve + regularization_H": 0.01548104500000001, + "inversion_other + mapping_matrix + mesh_construction": 0.012929634999999998, + "pdip_solve + ray_trace_data_grid": 0.012819884999999991, + "grids_and_structures + mass_profile_deflections + pdip_solve": 0.009833220000000002, + "inversion_other + mapped_reconstruction + reconstruction_scatter": 0.009587425000000005, + "inversion_other + mapped_reconstruction": 0.009015114999999999, + "chi_squared_evidence + pdip_solve": 0.007625669999999979, + "inversion_other + mesh_construction + pdip_solve": 0.005486369999999985, + "grids_and_structures + mass_profile_deflections + ray_trace_data_grid": 0.0052505299999999954, + "inversion_other + pdip_solve + ray_trace_data_grid": 0.004904769999999985, + "border_relocator + mesh_construction": 0.003444625000000001, + "border_relocator + inversion_other": 0.0033646000000000006, + "border_relocator + inversion_other + mesh_construction + pdip_solve": 0.002455980000000002, + "chi_squared_evidence + inversion_other": 0.0017916649999999963 + }, + "example_kernels": { + "curvature_matrix_F + psf_convolution_mapping_matrix": [ + "loop_divide_gather_fusion" + ], + "pdip_solve + psf_convolution_mapping_matrix": [ + "loop_broadcast_fusion.3" + ], + "inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": [ + "input_multiply_transpose_fusion" + ], + "mapping_matrix + pdip_solve": [ + "loop_divide_fusion.1", + "loop_broadcast_fusion" + ], + "data_vector_D + pdip_solve": [ + "input_reduce_fusion.11", + "input_reduce_fusion.26" + ], + "mapped_reconstruction + pdip_solve": [ + "input_reduce_fusion.14" + ], + "border_relocator + pdip_solve": [ + "input_reduce_fusion.16", + "loop_select_sine_fusion", + "input_concatenate_fusion.1", + "input_transpose_fusion.8" + ], + "mesh_construction + pdip_solve": [ + "loop_multiply_fusion.4", + "loop_pad_fusion", + "loop_reduce_fusion", + "triton_softmax.1" + ], + "inversion_other + regularization_H": [ + "input_transpose_fusion.6" + ], + "inversion_other + pdip_solve": [ + "input_scatter_fusion.11", + "input_reduce_fusion.17", + "input_reduce_fusion.24", + "input_reduce_fusion.12" + ] + }, + "prorated_estimate_ms": { + "psf_convolution_mapping_matrix": 0.46656002499999993, + "pdip_solve": 0.4608226335, + "curvature_matrix_F": 0.35028936999999993, + "inversion_other": 0.11636625850000001, + "mapped_reconstruction": 0.11002083958333331, + "mapping_matrix": 0.0817092455833331, + "data_vector_D": 0.05865332250000004, + "border_relocator": 0.05258072016666683, + "reconstruction_scatter": 0.04964722458333331, + "mesh_construction": 0.040945761000000025, + "regularization_H": 0.028847421249999998, + "curvature_reg_reduce_gather": 0.012769499999999998, + "ray_trace_data_grid": 0.00979504249999999, + "grids_and_structures": 0.005027916666666666, + "mass_profile_deflections": 0.005027916666666666, + "chi_squared_evidence": 0.004708667499999988 + }, + "prorated_note": "ESTIMATE ONLY \u2014 a mixed fusion's time split equally across the stages its constituents span. Never summed into the measured table, never reconciled." + }, + "other_sources_ms": { + "copy.63": 0.030340555000000234, + "copy.64": 0.030041924999998977, + "copy.81": 0.0285733650000014, + "copy.73": 0.02850582000000104, + "copy.72": 0.028449395000000703, + "copy.82": 0.028441230000000668, + "copy.121": 0.0016393449999999995, + "copy.122": 0.0016343899999999999, + "copy.56": 0.0014728000000000037, + "copy.74": 0.0014249449999999995, + "copy.120": 0.0008321549999999996, + "copy.43": 0.0007379249999999991 + }, + "device_span_ms": 46.102795699999994, + "device_busy_ms": 43.817407715, + "device_idle_ms": 2.2853879849999927, + "largest_idle_gaps": [ + { + "gap_ms": 0.049663, + "after": "while.33", + "before": "input_scatter_fusion.1" + }, + { + "gap_ms": 0.043743, + "after": "input_concatenate_fusion.4", + "before": "custom-call.2" + }, + { + "gap_ms": 0.034879, + "after": "loop_multiply_fusion.3", + "before": "eigh.0" + }, + { + "gap_ms": 0.028256, + "after": "loop_add_fusion.7", + "before": "loop_select_fusion.6" + }, + { + "gap_ms": 0.026847, + "after": "loop_broadcast_fusion.6", + "before": "loop_broadcast_fusion.8" + }, + { + "gap_ms": 0.025568, + "after": "loop_add_fusion.7", + "before": "loop_select_fusion.6" + }, + { + "gap_ms": 0.022079, + "after": "eigh.0", + "before": "eigh.0" + }, + { + "gap_ms": 0.02192, + "after": "loop_add_fusion", + "before": "loop_select_fusion" + } + ], + "kernel_ms": 48.21681349999999, + "sum_ms": 50.50220148499998, + "wall_ms": 46.10649796499274, + "host_outside_span_ms": 0.0037022649927465068, + "reconciliation_pct": 9.533804808477889, + "unjoined_ms": 0.0, + "unjoined_pct": 0.0, + "other_ms": 0.18196499999999977, + "other_pct": 0.39466237522129793, + "note": "Stage rows attribute the command-buffers-OFF program (see the module docstring): kernel times are the same, the launch overhead the CUDA graphs remove is not. sum_ms = kernel rows + device_idle_ms; the residual against wall_ms is host_outside_span_ms (dispatch before the first kernel, teardown after the last).", + "per_stage_ms_per_lane": { + "border_relocator": 0.09683150000000001, + "chi_squared_evidence": 0.002944, + "curvature_matrix_F": 4.3483225, + "inversion_other": 1.839874, + "mapping_matrix": 0.002816, + "memset": 0.0700325, + "mesh_construction": 0.3441575000000003, + "mixed_fusion": 1.8536985000000001, + "other": 0.18196499999999977, + "pdip_solve": 32.84626749999999, + "psf_convolution_mapping_matrix": 6.6271205, + "regularization_H": 0.002784 + }, + "per_lane_divisor": 1, + "host_callback": { + "pure_callback_span_ms": 0, + "qhull_ms": 0.0, + "callback_body_ms_note": "the OUTERMOST matching body event, not a sum: under the probe the body appears twice (the wrapper and the timed re-implementation it calls) and summing them would count the same work twice", + "events_by_name": { + "ThenExecuteCallback:GetEventForComputeStreamSyncPoint": { + "count": 200, + "ms": 0.3564086 + } + }, + "note": "HOST milliseconds per traced BATCH (the whole invocation), aggregated by name because the events nest. Not a row of the device table: the device pays for them as the idle gaps largest_idle_gaps names." + }, + "host_callback_ms": 0 + }, + "hlo_census": { + "status": "excluded", + "reason": "The legacy census anchors PyAutoArray source line numbers that moved after the phase-1 run. No batched attribution is published from unsupported anchors; the device-event table and wall reconciliation remain valid." + }, + "stage_map_provenance": [ + { + "label": "log_det_curvature_reg", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 850, + 882 + ], + "requires": { + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 884, + 896 + ] + }, + "function": null + }, + { + "label": "log_det_regularization", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 850, + 882 + ], + "requires": { + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 897, + 943 + ] + }, + "function": null + }, + { + "label": "curvature_reg_add", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 359, + 372 + ], + "requires": null, + "function": null + }, + { + "label": "curvature_reg_reduce_gather", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 374, + 398 + ], + "requires": null, + "function": null + }, + { + "label": "edge_subset_gather", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 606, + 614 + ], + "requires": null, + "function": null + }, + { + "label": "regularization_term", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 786, + 849 + ], + "requires": null, + "function": null + }, + { + "label": "mapped_reconstruction", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 722, + 785 + ], + "requires": null, + "function": null + }, + { + "label": "reconstruction_scatter", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 583, + 605 + ], + "requires": null, + "function": null + }, + { + "label": "reconstruction_scatter", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 615, + 721 + ], + "requires": null, + "function": null + }, + { + "label": "certified_active_set_solve", + "path": "likelihood_breakdown/active_set_steps.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "certified_active_set_solve", + "path": "likelihood_breakdown/library_solver_injection.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "pdip_solve", + "path": "PyAutoArray/autoarray/util/jax_nnls.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "pdip_solve", + "path": "PyAutoArray/autoarray/inversion/inversion/inversion_util.py", + "lines": [ + 256, + 488 + ], + "requires": null, + "function": null + }, + { + "label": "mapped_reconstruction", + "path": "PyAutoArray/autoarray/inversion/inversion/inversion_util.py", + "lines": [ + 156, + 200 + ], + "requires": null, + "function": null + }, + { + "label": "curvature_matrix_F", + "path": "PyAutoArray/autoarray/inversion/inversion/inversion_util.py", + "lines": [ + 12, + 155 + ], + "requires": null, + "function": null + }, + { + "label": "reconstruction_scatter", + "path": "PyAutoArray/autoarray/inversion/inversion/inversion_util.py", + "lines": [ + 201, + 255 + ], + "requires": null, + "function": null + }, + { + "label": "data_vector_D", + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py", + "lines": [ + 54, + 73 + ], + "requires": null, + "function": null + }, + { + "label": "curvature_matrix_F", + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py", + "lines": [ + 74, + 110 + ], + "requires": null, + "function": null + }, + { + "label": "data_vector_D", + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py", + "lines": null, + "requires": null, + "function": "data_vector_via_blurred_mapping_matrix_from" + }, + { + "label": "curvature_matrix_F", + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "likelihood_breakdown/psf_cube_injection.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": [ + 1086, + 1300 + ], + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": [ + 632, + 642 + ], + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": [ + 670, + 691 + ], + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": null, + "requires": { + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": [ + 1086, + 1300 + ] + }, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": null, + "requires": { + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py", + "lines": [ + 119, + 150 + ] + }, + "function": null + }, + { + "label": "psf_convolution_image", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py", + "lines": [ + 119, + 150 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_qhull_callback", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 139, + 172 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_seed_argmin", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 173, + 207 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_locate_walk", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 208, + 372 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_dual_areas", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 373, + 396 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_dual_areas", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 437, + 494 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_dual_areas", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 605, + 615 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_interpolation_weights", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 616, + 695 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_interpolation_weights", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 896, + 1000 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_construction", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "border_relocator", + "path": "PyAutoArray/autoarray/inversion/mesh/border_relocator.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "mesh_construction", + "path": "PyAutoArray/autoarray/inversion/mesh/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "mapping_matrix", + "path": "PyAutoArray/autoarray/inversion/mappers/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "mapping_matrix", + "path": "PyAutoArray/autoarray/inversion/mappings/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "mapping_matrix", + "path": "PyAutoArray/autoarray/inversion/linear_obj/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "regularization_H", + "path": "PyAutoArray/autoarray/inversion/regularization/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "chi_squared_evidence", + "path": "PyAutoArray/autoarray/fit/fit_util.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "chi_squared_evidence", + "path": "PyAutoArray/autoarray/fit/fit_dataset.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "ray_trace_mesh_grid", + "path": "PyAutoLens/autolens/lens/to_inversion.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "ray_trace_mesh_grid", + "path": "PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "mass_profile_deflections", + "path": "PyAutoGalaxy/autogalaxy/profiles/mass/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "light_profile_image", + "path": "PyAutoGalaxy/autogalaxy/profiles/light/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "light_profile_image", + "path": "PyAutoGalaxy/autogalaxy/operate/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "ray_trace_data_grid", + "path": "PyAutoLens/autolens/lens/tracer.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "ray_trace_data_grid", + "path": "PyAutoLens/autolens/lens/tracer_util.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "grids_and_structures", + "path": "PyAutoArray/autoarray/structures/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "grids_and_structures", + "path": "PyAutoArray/autoarray/operators/over_sampling/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "grids_and_structures", + "path": "PyAutoArray/autoarray/geometry/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "inversion_other", + "path": "PyAutoArray/autoarray/inversion/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "fit_imaging_other", + "path": "PyAutoLens/autolens/imaging/fit_imaging.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "fit_imaging_other", + "path": "PyAutoGalaxy/autogalaxy/imaging/fit_imaging.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "fit_imaging_other", + "path": "PyAutoArray/autoarray/fit/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "analysis_other", + "path": "PyAutoLens/autolens/analysis/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "analysis_other", + "path": "PyAutoGalaxy/autogalaxy/analysis/", + "lines": null, + "requires": null, + "function": null + } + ], + "trace_timing": { + "traced_wall_ms": 46.10649796499274, + "untraced_wall_ms": 44.935685794989695, + "profiler_overhead_ms": 1.170812170003046, + "profiler_overhead_pct": 2.605528655653879 + }, + "jit_phases": { + "b_s3_pdip_library_likelihood_jit": { + "lower_s": 1.274424369999906, + "compile_s": 3.4470787469981587, + "first_call_s": 0.11196375299914507, + "steady_per_call_s": 0.03890902909988654 + }, + "d_s3_certified_fallback_library_likelihood_jit": { + "lower_s": 0.47453160700024455, + "compile_s": 3.6194977140003175, + "first_call_s": 0.05152803999953903, + "steady_per_call_s": 0.03024379559974477 + } + }, + "peak_bytes": { + "after_setup": 85616640, + "after_routes": 1197479168, + "after_all": 23941742080, + "note": "jax.devices()[0].memory_stats()['peak_bytes_in_use']; None on a backend that does not report it (CPU). Process-wide high-water marks." + }, + "note": "Every stage row is a MEASURED sum of GPU kernel durations joined to library source through the optimized HLO of ONE program \u2014 not arithmetic across compilations. The rows attribute the command-buffers-OFF program: kernel time is the same as production, the launch overhead the CUDA graphs remove is not, and command_buffers.* carries both walls and their delta. sum_ms = kernel rows + measured device_idle_ms; the residual against the wall is host_outside_span_ms and is reported, not absorbed. mixed_fusion.prorated_estimate_ms is an ESTIMATE and is never part of the table. No row may be quoted if reconciliation_pct is outside 5 % or unjoined_ms is non-zero.", + "vmap": { + "batch": 20, + "lanes_mode": "captured", + "arms": [ + "vmap", + "scalar" + ], + "draw_seed": 0, + "fallback": true, + "composition": "jax.jit(jax.vmap(fn))", + "composition_provenance": "Current Fitness._vmap after PyAutoFit#1638. Array 343376 used the retired jax.vmap(jax.jit(fn)) composition and is historical evidence only.", + "headline_arm": "scalar", + "lane_rtol": 1e-09, + "lanes": [ + { + "lane": 0, + "draw_name": "call00015_lane00", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.0017002711605432041, + "centre_1": -0.009377257327484623, + "ell_comps_0": -0.002548851608736212, + "ell_comps_1": -0.004262475027349674, + "einstein_radius": -0.0230617600435421 + }, + "log_likelihood_vmap": 18463.07897110663, + "log_likelihood_scalar": 18463.078970707007, + "log_likelihood_library_pdip": 18463.07897110663, + "log_likelihood_library_pdip_scalar": 18463.078970707007, + "rel_diff_vmap_vs_library_pdip": 0.0, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 3.996246960014105e-07, + "rel_diff": 2.1644531588444352e-11, + "rel_diff_scalar_vs_library_pdip": 2.1644531587975868e-11, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 3.996246960014105e-07, + "rel_diff_library_pdip_vmap_vs_scalar": 2.1644531588444352e-11, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 1, + "draw_name": "call00015_lane01", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.00044835385344320865, + "centre_1": -0.003464237160596487, + "ell_comps_0": -0.0010036884316776545, + "ell_comps_1": 0.0020035511501456356, + "einstein_radius": -0.05761540720338343 + }, + "log_likelihood_vmap": 15734.21749647698, + "log_likelihood_scalar": 15734.21749633948, + "log_likelihood_library_pdip": 15734.21749647698, + "log_likelihood_library_pdip_scalar": 15734.21749633948, + "rel_diff_vmap_vs_library_pdip": 0.0, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 1.3750104699283838e-07, + "rel_diff": 8.738982222968992e-12, + "rel_diff_scalar_vs_library_pdip": 8.738982222892622e-12, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 1.3750104699283838e-07, + "rel_diff_library_pdip_vmap_vs_scalar": 8.738982222968992e-12, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 2, + "draw_name": "call00015_lane02", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.0017572218110215735, + "centre_1": 0.0022774942133795186, + "ell_comps_0": 0.0023932647815035485, + "ell_comps_1": -0.011727950927316913, + "einstein_radius": -0.027234805142873908 + }, + "log_likelihood_vmap": 18706.16598662583, + "log_likelihood_scalar": 18706.16598652238, + "log_likelihood_library_pdip": 18706.16598662583, + "log_likelihood_library_pdip_scalar": 18706.16598652238, + "rel_diff_vmap_vs_library_pdip": 0.0, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 1.0344956535845995e-07, + "rel_diff": 5.530238822482085e-12, + "rel_diff_scalar_vs_library_pdip": 5.530238822451501e-12, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 1.0344956535845995e-07, + "rel_diff_library_pdip_vmap_vs_scalar": 5.530238822482085e-12, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 3, + "draw_name": "call00015_lane03", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.002862791114730316, + "centre_1": 0.0038524808804676603, + "ell_comps_0": 0.006111415425061918, + "ell_comps_1": -0.022191169695991525, + "einstein_radius": -0.03531000166767062 + }, + "log_likelihood_vmap": -22166.22175660773, + "log_likelihood_scalar": -22166.22175124265, + "log_likelihood_library_pdip": -22166.22174309096, + "log_likelihood_library_pdip_scalar": -22166.221753681122, + "rel_diff_vmap_vs_library_pdip": 6.09791428201681e-10, + "rel_diff_scalar_vs_library_pdip_scalar": 1.1000845059984538e-10, + "abs_diff_nats": 5.365080141928047e-06, + "rel_diff": 2.4203854865916776e-10, + "rel_diff_scalar_vs_library_pdip": 3.6775287945350287e-10, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 1.059016358340159e-05, + "rel_diff_library_pdip_vmap_vs_scalar": 4.777613298776501e-10, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 4, + "pdip_iter": null + }, + { + "lane": 4, + "draw_name": "call00015_lane04", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.0017545152650242774, + "centre_1": 0.005096768299803747, + "ell_comps_0": 0.00015519416981613077, + "ell_comps_1": 0.007279341501820333, + "einstein_radius": -0.03249658545615719 + }, + "log_likelihood_vmap": -194384.09859196248, + "log_likelihood_scalar": NaN, + "log_likelihood_library_pdip": -194384.21520918986, + "log_likelihood_library_pdip_scalar": NaN, + "rel_diff_vmap_vs_library_pdip": 5.999315698300401e-07, + "rel_diff_scalar_vs_library_pdip_scalar": NaN, + "abs_diff_nats": NaN, + "rel_diff": NaN, + "rel_diff_scalar_vs_library_pdip": NaN, + "abs_diff_library_pdip_vmap_vs_scalar_nats": NaN, + "rel_diff_library_pdip_vmap_vs_scalar": NaN, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": true, + "passes": 2, + "pdip_iter": null + }, + { + "lane": 5, + "draw_name": "call00015_lane05", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.0009851407640018856, + "centre_1": 0.002274591191563648, + "ell_comps_0": 0.006006903437417319, + "ell_comps_1": 0.008497457839948512, + "einstein_radius": -0.07242218866013372 + }, + "log_likelihood_vmap": 14761.660929765763, + "log_likelihood_scalar": 14761.660929765752, + "log_likelihood_library_pdip": 14761.660929764937, + "log_likelihood_library_pdip_scalar": 14761.660929764927, + "rel_diff_vmap_vs_library_pdip": 5.594364977891205e-14, + "rel_diff_scalar_vs_library_pdip_scalar": 5.594364977891209e-14, + "abs_diff_nats": 1.0913936421275139e-11, + "rel_diff": 7.393433891485766e-16, + "rel_diff_scalar_vs_library_pdip": 5.520430638976343e-14, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 1.0913936421275139e-11, + "rel_diff_library_pdip_vmap_vs_scalar": 7.393433891486179e-16, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 14, + "pdip_iter": null + }, + { + "lane": 6, + "draw_name": "call00015_lane06", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.002713857824416392, + "centre_1": 0.00891817739575143, + "ell_comps_0": 0.001298959041684998, + "ell_comps_1": -0.0098959428603974, + "einstein_radius": 0.04379561090121875 + }, + "log_likelihood_vmap": 21597.126871220647, + "log_likelihood_scalar": 21597.126871230605, + "log_likelihood_library_pdip": 21597.12687122056, + "log_likelihood_library_pdip_scalar": 21597.126871231176, + "rel_diff_vmap_vs_library_pdip": 4.0427364200257955e-15, + "rel_diff_scalar_vs_library_pdip_scalar": 2.6446234080989077e-14, + "abs_diff_nats": 9.957147995010018e-09, + "rel_diff": 4.610403992335607e-13, + "rel_diff_scalar_vs_library_pdip": 4.650831356538009e-13, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 1.0615622159093618e-08, + "rel_diff_library_pdip_vmap_vs_scalar": 4.915293697345614e-13, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 6, + "pdip_iter": null + }, + { + "lane": 7, + "draw_name": "call00015_lane07", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.01063269420288399, + "centre_1": -0.0015469073410711704, + "ell_comps_0": -0.012689283848227026, + "ell_comps_1": 0.0004952469855790744, + "einstein_radius": 0.02732727396499479 + }, + "log_likelihood_vmap": 7413.159095181665, + "log_likelihood_scalar": 7413.159096633615, + "log_likelihood_library_pdip": 7413.159095361043, + "log_likelihood_library_pdip_scalar": 7413.159096707619, + "rel_diff_vmap_vs_library_pdip": 2.4197217236781136e-11, + "rel_diff_scalar_vs_library_pdip_scalar": 9.982756869028572e-12, + "abs_diff_nats": 1.4519500837195665e-06, + "rel_diff": 1.95861179396367e-10, + "rel_diff_scalar_vs_library_pdip": 1.7166396219320817e-10, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 1.346576027572155e-06, + "rel_diff_library_pdip_vmap_vs_scalar": 1.8164671903105454e-10, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 6, + "pdip_iter": null + }, + { + "lane": 8, + "draw_name": "call00015_lane08", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.003586333218755102, + "centre_1": 0.0002442650473125539, + "ell_comps_0": -0.0025095685188555317, + "ell_comps_1": 0.008402687166147546, + "einstein_radius": 0.003809182535237543 + }, + "log_likelihood_vmap": 19060.202679471306, + "log_likelihood_scalar": 19060.20267912919, + "log_likelihood_library_pdip": 19060.202679471306, + "log_likelihood_library_pdip_scalar": 19060.20267912919, + "rel_diff_vmap_vs_library_pdip": 0.0, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 3.421155270189047e-07, + "rel_diff": 1.7949207192508986e-11, + "rel_diff_scalar_vs_library_pdip": 1.7949207192186812e-11, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 3.421155270189047e-07, + "rel_diff_library_pdip_vmap_vs_scalar": 1.7949207192508986e-11, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 9, + "draw_name": "call00015_lane09", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.004569070502203608, + "centre_1": -0.0008437281377326854, + "ell_comps_0": 0.016330335737132294, + "ell_comps_1": 0.007271610957481866, + "einstein_radius": -0.0644363448871137 + }, + "log_likelihood_vmap": 12782.703321755558, + "log_likelihood_scalar": 12782.70332143049, + "log_likelihood_library_pdip": 12782.703321755558, + "log_likelihood_library_pdip_scalar": 12782.70332143049, + "rel_diff_vmap_vs_library_pdip": 0.0, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 3.250679583288729e-07, + "rel_diff": 2.543029828314087e-11, + "rel_diff_scalar_vs_library_pdip": 2.543029828249417e-11, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 3.250679583288729e-07, + "rel_diff_library_pdip_vmap_vs_scalar": 2.543029828314087e-11, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 10, + "draw_name": "call00015_lane10", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.00041413552102611065, + "centre_1": -0.004015077828810355, + "ell_comps_0": 0.005329766760357603, + "ell_comps_1": 0.01667480963359283, + "einstein_radius": 0.011021193939315443 + }, + "log_likelihood_vmap": 25442.236800482446, + "log_likelihood_scalar": 25442.236800482457, + "log_likelihood_library_pdip": 25442.236800481296, + "log_likelihood_library_pdip_scalar": 25442.23680048131, + "rel_diff_vmap_vs_library_pdip": 4.5184757616092704e-14, + "rel_diff_scalar_vs_library_pdip_scalar": 4.5041767876801245e-14, + "abs_diff_nats": 1.0913936421275139e-11, + "rel_diff": 4.2896921787427825e-16, + "rel_diff_scalar_vs_library_pdip": 4.5613726833967e-14, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 1.4551915228366852e-11, + "rel_diff_library_pdip_vmap_vs_scalar": 5.719589571657301e-16, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 6, + "pdip_iter": null + }, + { + "lane": 11, + "draw_name": "call00015_lane11", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.00234856906735493, + "centre_1": -0.0005637310462631455, + "ell_comps_0": 0.002190699592912508, + "ell_comps_1": -0.01675931647125419, + "einstein_radius": -0.1186639473801736 + }, + "log_likelihood_vmap": -3234.481431636159, + "log_likelihood_scalar": -3234.481430921878, + "log_likelihood_library_pdip": -3234.481431636159, + "log_likelihood_library_pdip_scalar": -3234.481430921878, + "rel_diff_vmap_vs_library_pdip": 0.0, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 7.142807589843869e-07, + "rel_diff": 2.208331611230817e-10, + "rel_diff_scalar_vs_library_pdip": 2.208331610743144e-10, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 7.142807589843869e-07, + "rel_diff_library_pdip_vmap_vs_scalar": 2.208331611230817e-10, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 12, + "draw_name": "call00015_lane12", + "draw_kind": "captured", + "offsets": { + "centre_0": -9.326736988388313e-05, + "centre_1": -0.0013488200741109593, + "ell_comps_0": 0.00997667014421897, + "ell_comps_1": -0.014348588092779897, + "einstein_radius": -0.02126731799195114 + }, + "log_likelihood_vmap": 18883.933556142838, + "log_likelihood_scalar": 18883.93355609074, + "log_likelihood_library_pdip": 18883.933556142838, + "log_likelihood_library_pdip_scalar": 18883.93355609074, + "rel_diff_vmap_vs_library_pdip": 0.0, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 5.209949449636042e-08, + "rel_diff": 2.7589323136310487e-12, + "rel_diff_scalar_vs_library_pdip": 2.7589323136234372e-12, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 5.209949449636042e-08, + "rel_diff_library_pdip_vmap_vs_scalar": 2.7589323136310487e-12, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 13, + "draw_name": "call00015_lane13", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.007013568613743564, + "centre_1": 0.004528745612839986, + "ell_comps_0": -0.018496405934026655, + "ell_comps_1": 0.0014830576999261711, + "einstein_radius": -0.04673040108359361 + }, + "log_likelihood_vmap": 23869.488067817772, + "log_likelihood_scalar": 23869.488067817765, + "log_likelihood_library_pdip": 23869.488067815808, + "log_likelihood_library_pdip_scalar": 23869.4880678158, + "rel_diff_vmap_vs_library_pdip": 8.230208164700236e-14, + "rel_diff_scalar_vs_library_pdip_scalar": 8.230208164700238e-14, + "abs_diff_nats": 7.275957614183426e-12, + "rel_diff": 3.048225246185022e-16, + "rel_diff_scalar_vs_library_pdip": 8.199725912238383e-14, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 7.275957614183426e-12, + "rel_diff_library_pdip_vmap_vs_scalar": 3.048225246185273e-16, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 9, + "pdip_iter": null + }, + { + "lane": 14, + "draw_name": "call00015_lane14", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.005108692197125562, + "centre_1": -0.010240010499870703, + "ell_comps_0": -0.00684600823433492, + "ell_comps_1": -0.002573928604858717, + "einstein_radius": -0.0214638151942923 + }, + "log_likelihood_vmap": -177848.22538663878, + "log_likelihood_scalar": NaN, + "log_likelihood_library_pdip": -177848.04275174416, + "log_likelihood_library_pdip_scalar": NaN, + "rel_diff_vmap_vs_library_pdip": 1.0269154037001891e-06, + "rel_diff_scalar_vs_library_pdip_scalar": NaN, + "abs_diff_nats": NaN, + "rel_diff": NaN, + "rel_diff_scalar_vs_library_pdip": NaN, + "abs_diff_library_pdip_vmap_vs_scalar_nats": NaN, + "rel_diff_library_pdip_vmap_vs_scalar": NaN, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": true, + "passes": 2, + "pdip_iter": null + }, + { + "lane": 15, + "draw_name": "call00015_lane15", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.0015375882948530809, + "centre_1": 0.00010861850037634777, + "ell_comps_0": 0.010624594413718456, + "ell_comps_1": -0.00030576693661378264, + "einstein_radius": 0.018140577124415858 + }, + "log_likelihood_vmap": 25794.985439576383, + "log_likelihood_scalar": 25794.98543951976, + "log_likelihood_library_pdip": 25794.98543957306, + "log_likelihood_library_pdip_scalar": 25794.98543952034, + "rel_diff_vmap_vs_library_pdip": 1.287643545547087e-13, + "rel_diff_scalar_vs_library_pdip_scalar": 2.2424460431807805e-14, + "abs_diff_nats": 5.662150215357542e-08, + "rel_diff": 2.195058504155123e-12, + "rel_diff_scalar_vs_library_pdip": 2.0662941495958783e-12, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 5.2721588872373104e-08, + "rel_diff_library_pdip_vmap_vs_scalar": 2.0438696891682937e-12, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 8, + "pdip_iter": null + }, + { + "lane": 16, + "draw_name": "call00015_lane16", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.001227759218702405, + "centre_1": 0.016003430753678986, + "ell_comps_0": 0.012636219938870381, + "ell_comps_1": -0.00698902153230205, + "einstein_radius": -0.05127757912787545 + }, + "log_likelihood_vmap": 16088.259041843845, + "log_likelihood_scalar": 16088.259041698664, + "log_likelihood_library_pdip": 16088.259041843845, + "log_likelihood_library_pdip_scalar": 16088.259041698664, + "rel_diff_vmap_vs_library_pdip": 0.0, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 1.45180820254609e-07, + "rel_diff": 9.024023039305824e-12, + "rel_diff_scalar_vs_library_pdip": 9.024023039224392e-12, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 1.45180820254609e-07, + "rel_diff_library_pdip_vmap_vs_scalar": 9.024023039305824e-12, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 17, + "draw_name": "call00015_lane17", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.005083750984013619, + "centre_1": 0.0010204202759534836, + "ell_comps_0": -0.00849477917205129, + "ell_comps_1": 0.011231146696452643, + "einstein_radius": 0.01601143147676365 + }, + "log_likelihood_vmap": NaN, + "log_likelihood_scalar": NaN, + "log_likelihood_library_pdip": NaN, + "log_likelihood_library_pdip_scalar": NaN, + "rel_diff_vmap_vs_library_pdip": NaN, + "rel_diff_scalar_vs_library_pdip_scalar": NaN, + "abs_diff_nats": NaN, + "rel_diff": NaN, + "rel_diff_scalar_vs_library_pdip": NaN, + "abs_diff_library_pdip_vmap_vs_scalar_nats": NaN, + "rel_diff_library_pdip_vmap_vs_scalar": NaN, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": true, + "passes": 3, + "pdip_iter": null + }, + { + "lane": 18, + "draw_name": "call00015_lane18", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.0024988577690690035, + "centre_1": -0.001222125045613948, + "ell_comps_0": -0.01895695410631662, + "ell_comps_1": -0.0031279904204321676, + "einstein_radius": 0.01799244839027403 + }, + "log_likelihood_vmap": 18620.968710658402, + "log_likelihood_scalar": 18620.968710155976, + "log_likelihood_library_pdip": 18620.968710658402, + "log_likelihood_library_pdip_scalar": 18620.968710155976, + "rel_diff_vmap_vs_library_pdip": 0.0, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 5.024267011322081e-07, + "rel_diff": 2.6981770333902228e-11, + "rel_diff_scalar_vs_library_pdip": 2.6981770333174212e-11, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 5.024267011322081e-07, + "rel_diff_library_pdip_vmap_vs_scalar": 2.6981770333902228e-11, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 19, + "draw_name": "call00015_lane19", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.010541543200940506, + "centre_1": -0.008441200101276233, + "ell_comps_0": 0.007996538161425107, + "ell_comps_1": 0.0034133978687523603, + "einstein_radius": -0.09425697178670522 + }, + "log_likelihood_vmap": 7217.440786725896, + "log_likelihood_scalar": 7217.440786173451, + "log_likelihood_library_pdip": 7217.440786725896, + "log_likelihood_library_pdip_scalar": 7217.440786173451, + "rel_diff_vmap_vs_library_pdip": 0.0, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 5.524452717509121e-07, + "rel_diff": 7.654309721657004e-11, + "rel_diff_scalar_vs_library_pdip": 7.654309721071118e-11, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 5.524452717509121e-07, + "rel_diff_library_pdip_vmap_vs_scalar": 7.654309721657004e-11, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": false, + "passes": 16, + "pdip_iter": null + } + ], + "lane_pins": [ + { + "pin": "lane 0: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 18463.07897110663, + "reference_value": 18463.07897110663, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 0: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 18463.078970707007, + "reference_value": 18463.078970707007, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 0: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 18463.07897110663, + "reference_value": 18463.078970707007, + "rel_diff": 2.1644531588444352e-11, + "abs_diff_nats": 3.996246960014105e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 0: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 18463.07897110663, + "reference_value": 18463.078970707007, + "rel_diff": 2.1644531588444352e-11, + "abs_diff_nats": 3.996246960014105e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 1: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 15734.21749647698, + "reference_value": 15734.21749647698, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 1: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 15734.21749633948, + "reference_value": 15734.21749633948, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 1: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 15734.21749647698, + "reference_value": 15734.21749633948, + "rel_diff": 8.738982222968992e-12, + "abs_diff_nats": 1.3750104699283838e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 1: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 15734.21749647698, + "reference_value": 15734.21749633948, + "rel_diff": 8.738982222968992e-12, + "abs_diff_nats": 1.3750104699283838e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 2: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 18706.16598662583, + "reference_value": 18706.16598662583, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 2: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 18706.16598652238, + "reference_value": 18706.16598652238, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 2: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 18706.16598662583, + "reference_value": 18706.16598652238, + "rel_diff": 5.530238822482085e-12, + "abs_diff_nats": 1.0344956535845995e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 2: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 18706.16598662583, + "reference_value": 18706.16598652238, + "rel_diff": 5.530238822482085e-12, + "abs_diff_nats": 1.0344956535845995e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 3: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -22166.22175660773, + "reference_value": -22166.22174309096, + "rel_diff": 6.09791428201681e-10, + "abs_diff_nats": 1.351677201455459e-05, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 3: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -22166.22175124265, + "reference_value": -22166.221753681122, + "rel_diff": 1.1000845059984538e-10, + "abs_diff_nats": 2.4384717107750475e-06, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 3: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -22166.22175660773, + "reference_value": -22166.22175124265, + "rel_diff": 2.4203854865916776e-10, + "abs_diff_nats": 5.365080141928047e-06, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 3: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -22166.22174309096, + "reference_value": -22166.221753681122, + "rel_diff": 4.777613298776501e-10, + "abs_diff_nats": 1.059016358340159e-05, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 4: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -194384.09859196248, + "reference_value": -194384.21520918986, + "rel_diff": 5.999315698300401e-07, + "abs_diff_nats": 0.11661722738062963, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 4: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": NaN, + "reference_value": NaN, + "rel_diff": NaN, + "abs_diff_nats": NaN, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 4: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -194384.09859196248, + "reference_value": NaN, + "rel_diff": NaN, + "abs_diff_nats": NaN, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 4: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -194384.21520918986, + "reference_value": NaN, + "rel_diff": NaN, + "abs_diff_nats": NaN, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 5: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 14761.660929765763, + "reference_value": 14761.660929764937, + "rel_diff": 5.594364977891205e-14, + "abs_diff_nats": 8.258211892098188e-10, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 5: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 14761.660929765752, + "reference_value": 14761.660929764927, + "rel_diff": 5.594364977891209e-14, + "abs_diff_nats": 8.258211892098188e-10, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 5: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 14761.660929765763, + "reference_value": 14761.660929765752, + "rel_diff": 7.393433891485766e-16, + "abs_diff_nats": 1.0913936421275139e-11, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 5: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 14761.660929764937, + "reference_value": 14761.660929764927, + "rel_diff": 7.393433891486179e-16, + "abs_diff_nats": 1.0913936421275139e-11, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 6: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 21597.126871220647, + "reference_value": 21597.12687122056, + "rel_diff": 4.0427364200257955e-15, + "abs_diff_nats": 8.731149137020111e-11, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 6: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 21597.126871230605, + "reference_value": 21597.126871231176, + "rel_diff": 2.6446234080989077e-14, + "abs_diff_nats": 5.711626727133989e-10, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 6: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 21597.126871220647, + "reference_value": 21597.126871230605, + "rel_diff": 4.610403992335607e-13, + "abs_diff_nats": 9.957147995010018e-09, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 6: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 21597.12687122056, + "reference_value": 21597.126871231176, + "rel_diff": 4.915293697345614e-13, + "abs_diff_nats": 1.0615622159093618e-08, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 7: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 7413.159095181665, + "reference_value": 7413.159095361043, + "rel_diff": 2.4197217236781136e-11, + "abs_diff_nats": 1.793778210412711e-07, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 7: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 7413.159096633615, + "reference_value": 7413.159096707619, + "rel_diff": 9.982756869028572e-12, + "abs_diff_nats": 7.400376489385962e-08, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 7: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 7413.159095181665, + "reference_value": 7413.159096633615, + "rel_diff": 1.95861179396367e-10, + "abs_diff_nats": 1.4519500837195665e-06, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 7: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 7413.159095361043, + "reference_value": 7413.159096707619, + "rel_diff": 1.8164671903105454e-10, + "abs_diff_nats": 1.346576027572155e-06, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 8: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 19060.202679471306, + "reference_value": 19060.202679471306, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 8: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 19060.20267912919, + "reference_value": 19060.20267912919, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 8: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 19060.202679471306, + "reference_value": 19060.20267912919, + "rel_diff": 1.7949207192508986e-11, + "abs_diff_nats": 3.421155270189047e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 8: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 19060.202679471306, + "reference_value": 19060.20267912919, + "rel_diff": 1.7949207192508986e-11, + "abs_diff_nats": 3.421155270189047e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 9: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 12782.703321755558, + "reference_value": 12782.703321755558, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 9: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 12782.70332143049, + "reference_value": 12782.70332143049, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 9: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 12782.703321755558, + "reference_value": 12782.70332143049, + "rel_diff": 2.543029828314087e-11, + "abs_diff_nats": 3.250679583288729e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 9: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 12782.703321755558, + "reference_value": 12782.70332143049, + "rel_diff": 2.543029828314087e-11, + "abs_diff_nats": 3.250679583288729e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 10: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 25442.236800482446, + "reference_value": 25442.236800481296, + "rel_diff": 4.5184757616092704e-14, + "abs_diff_nats": 1.1496013030409813e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 10: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 25442.236800482457, + "reference_value": 25442.23680048131, + "rel_diff": 4.5041767876801245e-14, + "abs_diff_nats": 1.1459633242338896e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 10: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 25442.236800482446, + "reference_value": 25442.236800482457, + "rel_diff": 4.2896921787427825e-16, + "abs_diff_nats": 1.0913936421275139e-11, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 10: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 25442.236800481296, + "reference_value": 25442.23680048131, + "rel_diff": 5.719589571657301e-16, + "abs_diff_nats": 1.4551915228366852e-11, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 11: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -3234.481431636159, + "reference_value": -3234.481431636159, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 11: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -3234.481430921878, + "reference_value": -3234.481430921878, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 11: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -3234.481431636159, + "reference_value": -3234.481430921878, + "rel_diff": 2.208331611230817e-10, + "abs_diff_nats": 7.142807589843869e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 11: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -3234.481431636159, + "reference_value": -3234.481430921878, + "rel_diff": 2.208331611230817e-10, + "abs_diff_nats": 7.142807589843869e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 12: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 18883.933556142838, + "reference_value": 18883.933556142838, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 12: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 18883.93355609074, + "reference_value": 18883.93355609074, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 12: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 18883.933556142838, + "reference_value": 18883.93355609074, + "rel_diff": 2.7589323136310487e-12, + "abs_diff_nats": 5.209949449636042e-08, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 12: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 18883.933556142838, + "reference_value": 18883.93355609074, + "rel_diff": 2.7589323136310487e-12, + "abs_diff_nats": 5.209949449636042e-08, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 13: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 23869.488067817772, + "reference_value": 23869.488067815808, + "rel_diff": 8.230208164700236e-14, + "abs_diff_nats": 1.964508555829525e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 13: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 23869.488067817765, + "reference_value": 23869.4880678158, + "rel_diff": 8.230208164700238e-14, + "abs_diff_nats": 1.964508555829525e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 13: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 23869.488067817772, + "reference_value": 23869.488067817765, + "rel_diff": 3.048225246185022e-16, + "abs_diff_nats": 7.275957614183426e-12, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 13: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 23869.488067815808, + "reference_value": 23869.4880678158, + "rel_diff": 3.048225246185273e-16, + "abs_diff_nats": 7.275957614183426e-12, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 14: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -177848.22538663878, + "reference_value": -177848.04275174416, + "rel_diff": 1.0269154037001891e-06, + "abs_diff_nats": 0.18263489461969584, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 14: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": NaN, + "reference_value": NaN, + "rel_diff": NaN, + "abs_diff_nats": NaN, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 14: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -177848.22538663878, + "reference_value": NaN, + "rel_diff": NaN, + "abs_diff_nats": NaN, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 14: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -177848.04275174416, + "reference_value": NaN, + "rel_diff": NaN, + "abs_diff_nats": NaN, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 15: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 25794.985439576383, + "reference_value": 25794.98543957306, + "rel_diff": 1.287643545547087e-13, + "abs_diff_nats": 3.321474650874734e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 15: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 25794.98543951976, + "reference_value": 25794.98543952034, + "rel_diff": 2.2424460431807805e-14, + "abs_diff_nats": 5.784386303275824e-10, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 15: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 25794.985439576383, + "reference_value": 25794.98543951976, + "rel_diff": 2.195058504155123e-12, + "abs_diff_nats": 5.662150215357542e-08, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 15: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 25794.98543957306, + "reference_value": 25794.98543952034, + "rel_diff": 2.0438696891682937e-12, + "abs_diff_nats": 5.2721588872373104e-08, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 16: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 16088.259041843845, + "reference_value": 16088.259041843845, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 16: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 16088.259041698664, + "reference_value": 16088.259041698664, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 16: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 16088.259041843845, + "reference_value": 16088.259041698664, + "rel_diff": 9.024023039305824e-12, + "abs_diff_nats": 1.45180820254609e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 16: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 16088.259041843845, + "reference_value": 16088.259041698664, + "rel_diff": 9.024023039305824e-12, + "abs_diff_nats": 1.45180820254609e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 17: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": NaN, + "reference_value": NaN, + "rel_diff": NaN, + "abs_diff_nats": NaN, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 17: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": NaN, + "reference_value": NaN, + "rel_diff": NaN, + "abs_diff_nats": NaN, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 17: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": NaN, + "reference_value": NaN, + "rel_diff": NaN, + "abs_diff_nats": NaN, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 17: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": NaN, + "reference_value": NaN, + "rel_diff": NaN, + "abs_diff_nats": NaN, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 18: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 18620.968710658402, + "reference_value": 18620.968710658402, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 18: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 18620.968710155976, + "reference_value": 18620.968710155976, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 18: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 18620.968710658402, + "reference_value": 18620.968710155976, + "rel_diff": 2.6981770333902228e-11, + "abs_diff_nats": 5.024267011322081e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 18: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 18620.968710658402, + "reference_value": 18620.968710155976, + "rel_diff": 2.6981770333902228e-11, + "abs_diff_nats": 5.024267011322081e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 19: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 7217.440786725896, + "reference_value": 7217.440786725896, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 19: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 7217.440786173451, + "reference_value": 7217.440786173451, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 19: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 7217.440786725896, + "reference_value": 7217.440786173451, + "rel_diff": 7.654309721657004e-11, + "abs_diff_nats": 5.524452717509121e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 19: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 7217.440786725896, + "reference_value": 7217.440786173451, + "rel_diff": 7.654309721657004e-11, + "abs_diff_nats": 5.524452717509121e-07, + "within_rtol": true, + "status": "RECORDED" + } + ], + "lanes_failed": 3, + "arm_rows": { + "vmap": { + "arm": "vmap", + "program": "jax.jit(jax.vmap(fn))", + "stands_for": "Nautilus(use_jax_vmap=True) \u2014 Fitness._vmap", + "hlo_source": "jax.jit(jax.vmap(fn)).lower(batched_tree) \u2014 the exact current Fitness._vmap composition (PyAutoFit#1638)", + "batch_wall_ms": 808.8755155000399, + "wall_production_nesting_ms": 808.8755155000399, + "wall_aot_command_buffers_on_ms": 811.0703178001131, + "wall_aot_command_buffers_off_ms": 812.8892756001733, + "command_buffer_delta_ms": 1.8189578000601614, + "production_nesting_vs_aot_on_delta_ms": -2.1948023000732064, + "production_nesting_vs_aot_on_delta_pct": -0.270605673997074, + "wall_per_lane_ms": 40.443775775001995, + "wall_per_lane_command_buffers_off_ms": 40.644463780008664, + "traced_batch_wall_ms": 821.4900956001657, + "untraced_batch_wall_ms": 812.4069994999445, + "traced_wall_per_lane_ms": 41.07450478000828, + "callback_count_per_call": 0.0, + "callback_count_per_lane": 0.0, + "callback_expectation": "0 \u2014 the rectangular mesh has no qhull host callback (asserted)", + "host_qhull_ms": 0.0, + "host_tables_ms": 0.0, + "host_qhull_ms_per_lane": 0.0, + "host_tables_ms_per_lane": 0.0, + "host_callback_probe": { + "calls": 0, + "qhull_ms_total": 0.0, + "tables_ms_total": 0.0, + "total_ms_total": 0.0, + "qhull_ms_mean": 0.0, + "tables_ms_mean": 0.0, + "total_ms_mean": 0.0, + "non_finite_calls": 0, + "n_points": [] + }, + "host_callback_records_first": [], + "device_idle_ms": 28.038478799999893, + "device_idle_ms_per_lane": 1.4019239399999948, + "trace": { + "parser": "ProfileData.from_file(xplane) + as_text() + stack_frame_index(proto field 17)", + "stage_audit": { + "mixed_fusion": [ + { + "instruction": "loop_divide_gather_fusion", + "ms": 21.2669906, + "opcode": "fusion", + "shape": "(f64[15361,20,1,1,1521]{4,3,2,1,0}, f64[15361,20,1,1,1521]{4,3,2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_add_multiply_transpose_fusion", + "ms": 6.3222098, + "opcode": "fusion", + "shape": "(f64[20,1369,1369]{2,1,0}, f64[20,1369,1369]{2,1,0}, f64[20,1369,1369]{2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:237 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:274 (_certified_positive_only_from)" + ] + }, + { + "instruction": "loop_broadcast_fusion", + "ms": 4.9935679, + "opcode": "fusion", + "shape": "f64[20,1521,180,180]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:303 (AbstractInversion.operated_mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:68 (InversionImagingMapping.data_vector)" + ] + }, + { + "instruction": "input_reduce_fusion.13", + "ms": 2.5943601000000003, + "opcode": "fusion", + "shape": "f64[92,20,1521]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123 (data_vector_via_blurred_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:67 (InversionImagingMapping.data_vector)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:699 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_reduce_fusion.16", + "ms": 2.2234542999999998, + "opcode": "fusion", + "shape": "f64[15361,20]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163 (mapped_reconstructed_data_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:120 (InversionImagingMapping._mapped_reconstructed_data_dict_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:196 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "loop_broadcast_fusion.1", + "ms": 2.1661513, + "opcode": "fusion", + "shape": "f64[15361,20,1521]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:353", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:353 (mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:283 (Mapper.mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:91 (AbstractInversionImaging._mapping_matrix_for_convolution_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:137 (AbstractInversionImaging.operated_mapping_matrix_list)" + ] + } + ], + "other": [ + { + "instruction": "copy.68", + "ms": 0.08447619999999995, + "opcode": "copy", + "shape": "u32[20,2,15361]{2,1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.69", + "ms": 0.08399219999999996, + "opcode": "copy", + "shape": "u32[20,2,15361]{2,1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.78", + "ms": 0.07736520000000015, + "opcode": "copy", + "shape": "u32[20,15361]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.77", + "ms": 0.07709710000000003, + "opcode": "copy", + "shape": "u32[20,15361]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.86", + "ms": 0.07683400000000008, + "opcode": "copy", + "shape": "u32[20,15361]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.87", + "ms": 0.07365689999999997, + "opcode": "copy", + "shape": "u32[20,15361]{1,0}", + "source": "", + "stack": [] + } + ], + "mesh_construction": [ + { + "instruction": "fusion.6", + "ms": 0.5158076, + "opcode": "fusion", + "shape": "(f64[20,15361,2]{2,1,0}, s64[20,15361,2]{2,1,0}, s32[20,15361,2]{2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:227", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:227 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_select_fusion", + "ms": 0.21875770000000005, + "opcode": "fusion", + "shape": "(u32[20,2,15361]{2,1,0}, u32[20,2,15361]{2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69 (forward_interp)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:573 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/abstract.py:36 (AbstractInterpolator.mappings)" + ] + }, + { + "instruction": "loop_select_fusion.4", + "ms": 0.09229970000000005, + "opcode": "fusion", + "shape": "(u32[20,15361]{1,0}, u32[20,15361]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_select_fusion.1", + "ms": 0.08935890000000003, + "opcode": "fusion", + "shape": "(u32[20,15361]{1,0}, u32[20,15361]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_subtract_transpose_fusion", + "ms": 0.05363140000000001, + "opcode": "fusion", + "shape": "(f64[20,15361,2]{2,1,0}, f64[614440,1,1,1]{3,2,1,0}, f64[614440,1,1,1]{3,2,1,0}, f64[20,15361,2]{2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69 (forward_interp)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:573 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/abstract.py:36 (AbstractInterpolator.mappings)" + ] + }, + { + "instruction": "loop_gather_fusion", + "ms": 0.0303548, + "opcode": "fusion", + "shape": "(f64[614440,1,1,1]{3,2,1,0}, f64[614440,1,1,1]{3,2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69 (forward_interp)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:573 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/abstract.py:36 (AbstractInterpolator.mappings)" + ] + } + ], + "border_relocator": [ + { + "instruction": "custom-call.2", + "ms": 0.042306800000000006, + "opcode": "custom-call", + "shape": "(f64[20,2,2]{2,1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_add_rsqrt_fusion", + "ms": 0.0151932, + "opcode": "fusion", + "shape": "(f64[20,15361]{1,0}, f64[20,15361]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:311", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:311 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:423 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "eigh.0", + "ms": 0.014828699999999997, + "opcode": "custom-call", + "shape": "(f64[20,2,2]{1,2,0}, f64[20,2]{1,0}, s32[20]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_abs_fusion", + "ms": 0.0033631999999999993, + "opcode": "fusion", + "shape": "(f64[20,392,1]{2,1,0}, f64[20,392,1]{2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:269", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:269 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_reduce_fusion.17", + "ms": 0.0033537999999999997, + "opcode": "fusion", + "shape": "f64[20]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:270", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:270 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_reduce_fusion.18", + "ms": 0.003347099999999999, + "opcode": "fusion", + "shape": "f64[20]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:269", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:269 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + } + ], + "pdip_solve": [ + { + "instruction": "cholesky.60", + "ms": 119.17557869999952, + "opcode": "custom-call", + "shape": "(f64[20,1369,1369]{1,2,0}, s32[20]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:106", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:106 (factorize_kkt)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:212 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "cholesky.40", + "ms": 93.83092389999574, + "opcode": "custom-call", + "shape": "(f64[20,1369,1369]{1,2,0}, s32[20]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "triangular-solve", + "ms": 33.49046470000075, + "opcode": "custom-call", + "shape": "(f64[20,1369,1]{1,2,0}, s8[320]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:213 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve.2", + "ms": 31.088572299999566, + "opcode": "custom-call", + "shape": "(f64[20,1369,1]{1,2,0}, s8[320]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:217 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve.3", + "ms": 30.172506400000326, + "opcode": "custom-call", + "shape": "(f64[20,1369,1]{1,2,0}, s8[320]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:217 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve.1", + "ms": 30.040781100000157, + "opcode": "custom-call", + "shape": "(f64[20,1369,1]{1,2,0}, s8[320]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:213 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + } + ], + "psf_convolution_mapping_matrix": [ + { + "instruction": "input_scatter_fusion", + "ms": 40.934860400000005, + "opcode": "fusion", + "shape": "f64[20,1521,180,180]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:303 (AbstractInversion.operated_mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:68 (InversionImagingMapping.data_vector)" + ] + }, + { + "instruction": "fft.24.0", + "ms": 35.6723581, + "opcode": "fft", + "shape": "f64[20,1521,180,180]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:303 (AbstractInversion.operated_mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:68 (InversionImagingMapping.data_vector)" + ] + }, + { + "instruction": "fft.20.0", + "ms": 27.334884199999998, + "opcode": "fft", + "shape": "c128[20,1521,180,91]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:303 (AbstractInversion.operated_mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:68 (InversionImagingMapping.data_vector)" + ] + }, + { + "instruction": "fft.22.0", + "ms": 19.669279699999997, + "opcode": "fft", + "shape": "c128[20,1521,91,180]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:303 (AbstractInversion.operated_mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:68 (InversionImagingMapping.data_vector)" + ] + }, + { + "instruction": "input_transpose_fusion.4", + "ms": 10.692224099999997, + "opcode": "fusion", + "shape": "c128[20,1521,91,180]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:303 (AbstractInversion.operated_mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:68 (InversionImagingMapping.data_vector)" + ] + }, + { + "instruction": "wrapped_transpose.2", + "ms": 9.9821308, + "opcode": "fusion", + "shape": "c128[20,1521,180,91]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:303 (AbstractInversion.operated_mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:68 (InversionImagingMapping.data_vector)" + ] + } + ], + "regularization_H": [ + { + "instruction": "wrapped_broadcast", + "ms": 0.6094194, + "opcode": "fusion", + "shape": "f64[20,1521,1521]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:124", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:124 (weighted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:366 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_scatter_fusion.7", + "ms": 0.0026846999999999995, + "opcode": "fusion", + "shape": "f64[1521,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:123 (weighted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:366 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "mapping_matrix": [ + { + "instruction": "input_scatter_fusion.5", + "ms": 0.0694358, + "opcode": "fusion", + "shape": "f64[20,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:71", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:71 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:362 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + }, + { + "instruction": "input_reduce_fusion.31", + "ms": 0.003744, + "opcode": "fusion", + "shape": "f64[20]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:362 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + }, + { + "instruction": "loop_compare_fusion.5", + "ms": 0.0018272000000000002, + "opcode": "fusion", + "shape": "pred[4]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:54", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:54 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:362 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + } + ], + "curvature_matrix_F": [ + { + "instruction": "cublas-lt-matmul.2", + "ms": 124.1668287, + "opcode": "custom-call", + "shape": "(f64[20,1521,1521]{2,1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "inversion_other": [ + { + "instruction": "cholesky.120", + "ms": 9.307000600000015, + "opcode": "custom-call", + "shape": "(f64[20,1521,1521]{1,2,0}, s32[20]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1078 (AbstractInversion.log_det_curvature_reg_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:347 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "cholesky.130", + "ms": 9.092466699999997, + "opcode": "custom-call", + "shape": "(f64[20,1521,1521]{1,2,0}, s32[20]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1157 (AbstractInversion.log_det_regularization_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:348 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "loop_reduce_window_fusion.3", + "ms": 0.0078463, + "opcode": "fusion", + "shape": "s64[6,16]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "loop_reduce_window_fusion.2", + "ms": 0.0037025, + "opcode": "fusion", + "shape": "s64[86,16]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "input_scatter_fusion.9", + "ms": 0.0031581999999999995, + "opcode": "fusion", + "shape": "s64[1369]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527 (AbstractInversion.zeroed_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:567 (AbstractInversion.solve_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:684 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_broadcast_fusion.5", + "ms": 0.0021920000000000004, + "opcode": "fusion", + "shape": "(s64[1369]{0}, s64[1369]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527 (AbstractInversion.zeroed_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:567 (AbstractInversion.solve_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:684 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "chi_squared_evidence": [ + { + "instruction": "loop_divide_fusion", + "ms": 0.005228700000000001, + "opcode": "fusion", + "shape": "f64[15361,20]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:352", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:352 (AbstractNDArray.__truediv__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:57 (unwrap_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:35 (to_new_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:78 (chi_squared_map_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:78 (AbstractFit.chi_squared_map)" + ] + } + ] + }, + "stage_audit_note": "The HLO instructions that contributed most of each stage's milliseconds, with their full source stack. A stage row is only as good as the rules that built it; this is how a reader checks a row against the HLO instead of trusting it.", + "untraced_wall_ms": 812.4069994999445, + "reconciliation_vs_untraced_pct": 1.1780047815861525, + "wall_basis": "wall_ms is the TRACED run's wall, the run these kernel durations came from. untraced_wall_ms is the same executable without the profiler; the difference is the profiler's overhead and belongs in neither the stages nor the idle row.", + "calls": 10, + "call_split": "per-call (first-instruction recurrence)", + "call_blocks": 10, + "events": 220760, + "streams": [ + "Stream #14(MemcpyD2H,Compute,MemcpyD2D)" + ], + "per_stage_ms": { + "border_relocator": { + "median_ms": 0.08983849999999999, + "min_ms": 0.089566, + "max_ms": 0.09008100000000001 + }, + "chi_squared_evidence": { + "median_ms": 0.0051045, + "min_ms": 0.004992, + "max_ms": 0.005536 + }, + "curvature_matrix_F": { + "median_ms": 124.3219875, + "min_ms": 121.385668, + "max_ms": 125.302839 + }, + "inversion_other": { + "median_ms": 18.426111000000013, + "min_ms": 18.095102000000015, + "max_ms": 18.726381000000003 + }, + "mapping_matrix": { + "median_ms": 0.07502349999999999, + "min_ms": 0.07334500000000001, + "max_ms": 0.07657699999999999 + }, + "mesh_construction": { + "median_ms": 1.1697409999999993, + "min_ms": 1.1647869999999985, + "max_ms": 1.173815999999999 + }, + "mixed_fusion": { + "median_ms": 43.574994499999995, + "min_ms": 42.93408299999999, + "max_ms": 44.01055499999999 + }, + "other": { + "median_ms": 0.560158000000001, + "min_ms": 0.5582220000000007, + "max_ms": 0.5608030000000008 + }, + "pdip_solve": { + "median_ms": 460.7988504999945, + "min_ms": 459.32838499999394, + "max_ms": 461.1660559999974 + }, + "psf_convolution_mapping_matrix": { + "median_ms": 144.3035365, + "min_ms": 144.023995, + "max_ms": 144.547314 + }, + "regularization_H": { + "median_ms": 0.6133685, + "min_ms": 0.605638, + "max_ms": 0.618025 + } + }, + "stage_order": [ + "border_relocator", + "mesh_construction", + "mapping_matrix", + "psf_convolution_mapping_matrix", + "curvature_matrix_F", + "regularization_H", + "pdip_solve", + "chi_squared_evidence", + "inversion_other", + "mixed_fusion", + "other" + ], + "mixed_fusion": { + "ms": 43.574994499999995, + "constituent_stage_sets": { + "curvature_matrix_F + psf_convolution_mapping_matrix": 21.2669906, + "inversion_other + pdip_solve + reconstruction_scatter": 6.3222098, + "pdip_solve + psf_convolution_mapping_matrix": 4.9935679, + "data_vector_D + pdip_solve": 2.6143632, + "mapped_reconstruction + pdip_solve": 2.2234542999999998, + "mapping_matrix + pdip_solve": 2.169217, + "border_relocator + pdip_solve": 1.995907599999999, + "inversion_other + regularization_H": 0.5992371, + "curvature_reg_reduce_gather + inversion_other": 0.5959412000000001, + "inversion_other + pdip_solve": 0.24550210000000003, + "border_relocator + inversion_other + mapping_matrix + mesh_construction + pdip_solve": 0.11635369999999999, + "inversion_other + mapping_matrix + mesh_construction + pdip_solve": 0.08548689999999999, + "mesh_construction + pdip_solve": 0.0370486, + "inversion_other + mesh_construction + pdip_solve": 0.035797899999999994, + "grids_and_structures + mass_profile_deflections + ray_trace_data_grid": 0.0352507, + "inversion_other + pdip_solve + regularization_H": 0.033426700000000004, + "border_relocator + mesh_construction": 0.027823799999999996, + "inversion_other + reconstruction_scatter": 0.0222331, + "grids_and_structures + mass_profile_deflections + pdip_solve + ray_trace_data_grid": 0.0192765, + "pdip_solve + regularization_H": 0.0157343, + "inversion_other + mapping_matrix": 0.0134398, + "pdip_solve + ray_trace_data_grid": 0.013180399999999995, + "inversion_other + mapped_reconstruction + reconstruction_scatter": 0.010115, + "chi_squared_evidence + pdip_solve": 0.009507100000000001, + "border_relocator + inversion_other + pdip_solve": 0.0087679, + "border_relocator + inversion_other + mesh_construction + pdip_solve": 0.006156800000000001, + "inversion_other + pdip_solve + ray_trace_data_grid": 0.004812899999999998, + "mapping_matrix + pdip_solve + regularization_H": 0.0042655, + "grids_and_structures + mass_profile_deflections + pdip_solve": 0.0042016, + "border_relocator + inversion_other + mapping_matrix + mesh_construction": 0.0028576, + "chi_squared_evidence + inversion_other": 0.0024001000000000005 + }, + "example_kernels": { + "curvature_matrix_F + psf_convolution_mapping_matrix": [ + "loop_divide_gather_fusion" + ], + "inversion_other + pdip_solve + reconstruction_scatter": [ + "input_add_multiply_transpose_fusion" + ], + "pdip_solve + psf_convolution_mapping_matrix": [ + "loop_broadcast_fusion" + ], + "data_vector_D + pdip_solve": [ + "input_reduce_fusion.13", + "input_reduce_fusion.29" + ], + "mapped_reconstruction + pdip_solve": [ + "input_reduce_fusion.16" + ], + "mapping_matrix + pdip_solve": [ + "loop_broadcast_fusion.1", + "loop_divide_fusion.1" + ], + "border_relocator + pdip_solve": [ + "input_reduce_fusion.19", + "loop_select_sine_fusion", + "input_concatenate_fusion.5", + "input_transpose_fusion.5" + ], + "inversion_other + regularization_H": [ + "input_transpose_fusion.7" + ], + "curvature_reg_reduce_gather + inversion_other": [ + "input_transpose_fusion.6" + ], + "inversion_other + pdip_solve": [ + "input_reduce_fusion.14", + "input_reduce_fusion.15", + "input_scatter_fusion.11", + "input_transpose_fusion.3" + ] + }, + "prorated_estimate_ms": { + "psf_convolution_mapping_matrix": 13.130279250000001, + "curvature_matrix_F": 10.6334953, + "pdip_solve": 9.347569473333333, + "inversion_other": 2.9246494983333333, + "reconstruction_scatter": 2.1218914833333336, + "data_vector_D": 1.3071816, + "mapping_matrix": 1.1381070983333335, + "mapped_reconstruction": 1.1150988166666667, + "border_relocator": 1.0403126733333328, + "regularization_H": 0.3200497666666666, + "curvature_reg_reduce_gather": 0.29797060000000003, + "mesh_construction": 0.09126489833333333, + "ray_trace_data_grid": 0.024763858333333333, + "grids_and_structures": 0.017969891666666668, + "mass_profile_deflections": 0.017969891666666668, + "chi_squared_evidence": 0.005953600000000001 + }, + "prorated_note": "ESTIMATE ONLY \u2014 a mixed fusion's time split equally across the stages its constituents span. Never summed into the measured table, never reconciled." + }, + "other_sources_ms": { + "copy.68": 0.08447619999999995, + "copy.69": 0.08399219999999996, + "copy.78": 0.07736520000000015, + "copy.77": 0.07709710000000003, + "copy.86": 0.07683400000000008, + "copy.87": 0.07365689999999997, + "copy.124": 0.03272610000000007, + "copy.123": 0.025064999999999976, + "copy.122": 0.022614200000000015, + "copy.138": 0.0023999, + "copy.61": 0.0020927999999999997, + "copy.70": 0.0016353000000000003 + }, + "device_span_ms": 821.4117174999999, + "device_busy_ms": 793.3732387, + "device_idle_ms": 28.038478799999893, + "largest_idle_gaps": [ + { + "gap_ms": 0.052894, + "after": "input_reduce_fusion.28", + "before": "loop_broadcast_fusion" + }, + { + "gap_ms": 0.024927, + "after": "while.73", + "before": "loop_not_select_fusion" + }, + { + "gap_ms": 0.023743, + "after": "while.73", + "before": "loop_not_select_fusion" + }, + { + "gap_ms": 0.022879, + "after": "while.78", + "before": "cholesky.80" + }, + { + "gap_ms": 0.022079, + "after": "while.73", + "before": "loop_not_select_fusion.1" + }, + { + "gap_ms": 0.020383, + "after": "while.78", + "before": "input_reduce_fusion" + }, + { + "gap_ms": 0.018495, + "after": "while.73", + "before": "loop_not_select_fusion" + }, + { + "gap_ms": 0.018464, + "after": "while.78", + "before": "input_reduce_fusion" + } + ], + "kernel_ms": 793.9387139999945, + "sum_ms": 821.9771927999944, + "wall_ms": 821.4900956001657, + "host_outside_span_ms": 0.07837810016576441, + "reconciliation_pct": 0.05929434845747192, + "unjoined_ms": 0.0, + "unjoined_pct": 0.0, + "other_ms": 0.560158000000001, + "other_pct": 0.06818804061061258, + "note": "Stage rows attribute the command-buffers-OFF program (see the module docstring): kernel times are the same, the launch overhead the CUDA graphs remove is not. sum_ms = kernel rows + device_idle_ms; the residual against wall_ms is host_outside_span_ms (dispatch before the first kernel, teardown after the last).", + "per_stage_ms_per_lane": { + "border_relocator": 0.004491924999999999, + "chi_squared_evidence": 0.000255225, + "curvature_matrix_F": 6.216099375000001, + "inversion_other": 0.9213055500000007, + "mapping_matrix": 0.003751175, + "mesh_construction": 0.058487049999999964, + "mixed_fusion": 2.178749725, + "other": 0.02800790000000005, + "pdip_solve": 23.039942524999724, + "psf_convolution_mapping_matrix": 7.215176825, + "regularization_H": 0.030668425 + }, + "per_lane_divisor": 20, + "host_callback": { + "pure_callback_span_ms": 0, + "qhull_ms": 0.0, + "callback_body_ms_note": "the OUTERMOST matching body event, not a sum: under the probe the body appears twice (the wrapper and the timed re-implementation it calls) and summing them would count the same work twice", + "events_by_name": { + "ThenExecuteCallback:GetEventForComputeStreamSyncPoint": { + "count": 10, + "ms": 0.0277227 + } + }, + "note": "HOST milliseconds per traced BATCH (the whole invocation), aggregated by name because the events nest. Not a row of the device table: the device pays for them as the idle gaps largest_idle_gaps names." + }, + "host_callback_ms": 0 + }, + "hlo_census": { + "status": "excluded", + "reason": "The legacy census anchors PyAutoArray source line numbers that moved after the phase-1 run. No batched attribution is published from unsupported anchors; the device-event table and wall reconciliation remain valid." + }, + "trace_split": { + "expected_calls": 10, + "executions_per_invocation": 1, + "method": "per-call (first-instruction recurrence)", + "note": "DECIDED IN CODE: the scalar arm's trace is split by trace_calls * B, so every lane's execution is its own block and the per-stage median is taken over all of them. The vmap arm's is split by trace_calls, one block per batched execution, and per_stage_ms_per_lane divides those rows by B." + } + }, + "scalar": { + "arm": "scalar", + "program": "jax.jit(fn), called B times", + "stands_for": "Nautilus(use_jax_vmap=False, use_jax_jit=True). Plain use_jax_vmap=False is UNJITTED and is NOT this arm", + "hlo_source": "jax.jit(fn).lower(lane_trees[0]) \u2014 the same program phase 1 traced", + "batch_wall_ms": 893.4698788001697, + "wall_production_nesting_ms": 893.4698788001697, + "wall_aot_command_buffers_on_ms": 892.8463865002414, + "wall_aot_command_buffers_off_ms": 899.0667205998761, + "command_buffer_delta_ms": 6.220334099634783, + "production_nesting_vs_aot_on_delta_ms": 0.6234922999283299, + "production_nesting_vs_aot_on_delta_pct": 0.06983197886618331, + "wall_per_lane_ms": 44.673493940008484, + "wall_per_lane_command_buffers_off_ms": 44.95333602999381, + "traced_batch_wall_ms": 922.1299592998548, + "untraced_batch_wall_ms": 898.7137158997939, + "traced_wall_per_lane_ms": 46.10649796499274, + "callback_count_per_call": 0.0, + "callback_count_per_lane": 0.0, + "callback_expectation": "0 \u2014 the rectangular mesh has no qhull host callback (asserted)", + "host_qhull_ms": 0.0, + "host_tables_ms": 0.0, + "host_qhull_ms_per_lane": 0.0, + "host_tables_ms_per_lane": 0.0, + "host_callback_probe": { + "calls": 0, + "qhull_ms_total": 0.0, + "tables_ms_total": 0.0, + "total_ms_total": 0.0, + "qhull_ms_mean": 0.0, + "tables_ms_mean": 0.0, + "total_ms_mean": 0.0, + "non_finite_calls": 0, + "n_points": [] + }, + "host_callback_records_first": [], + "device_idle_ms": 2.2853879849999927, + "device_idle_ms_per_lane": 2.2853879849999927, + "trace": { + "parser": "ProfileData.from_file(xplane) + as_text() + stack_frame_index(proto field 17)", + "stage_audit": { + "mesh_construction": [ + { + "instruction": "fusion.2", + "ms": 0.1487964949999985, + "opcode": "fusion", + "shape": "(f64[15361,2]{1,0}, s64[15361,2]{1,0}, s32[15361,2]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:227", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:227 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_select_fusion", + "ms": 0.03959672000000021, + "opcode": "fusion", + "shape": "(u32[2,15361]{1,0}, u32[2,15361]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69 (forward_interp)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:573 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/abstract.py:36 (AbstractInterpolator.mappings)" + ] + }, + { + "instruction": "loop_select_fusion.6", + "ms": 0.03486210500000037, + "opcode": "fusion", + "shape": "(u32[15361]{0}, u32[15361]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_select_fusion.1", + "ms": 0.034722005000000465, + "opcode": "fusion", + "shape": "(u32[15361]{0}, u32[15361]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_add_fusion", + "ms": 0.02122797500000014, + "opcode": "fusion", + "shape": "s64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69 (forward_interp)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:573 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/abstract.py:36 (AbstractInterpolator.mappings)" + ] + }, + { + "instruction": "loop_add_fusion.1", + "ms": 0.020509104999999913, + "opcode": "fusion", + "shape": "s64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "mixed_fusion": [ + { + "instruction": "loop_divide_gather_fusion", + "ms": 0.7005787399999999, + "opcode": "fusion", + "shape": "(f64[15361,1,1,1521]{3,2,1,0}, f64[15361,1,1,1521]{3,2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_broadcast_fusion.3", + "ms": 0.23254130999999997, + "opcode": "fusion", + "shape": "f64[1521,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_multiply_transpose_fusion", + "ms": 0.1858056649999999, + "opcode": "fusion", + "shape": "(f64[1369,1369]{1,0}, f64[1369,1369]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:237 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:274 (_certified_positive_only_from)" + ] + }, + { + "instruction": "loop_broadcast_fusion", + "ms": 0.13651621999999972, + "opcode": "fusion", + "shape": "f64[15361,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:342", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:342 (mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:283 (Mapper.mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:91 (AbstractInversionImaging._mapping_matrix_for_convolution_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:137 (AbstractInversionImaging.operated_mapping_matrix_list)" + ] + }, + { + "instruction": "input_reduce_fusion.11", + "ms": 0.11360074500000002, + "opcode": "fusion", + "shape": "f64[92,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123 (data_vector_via_blurred_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:67 (InversionImagingMapping.data_vector)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:699 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_reduce_fusion.14", + "ms": 0.11173211499999999, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163 (mapped_reconstructed_data_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:120 (InversionImagingMapping._mapped_reconstructed_data_dict_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:196 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + } + ], + "border_relocator": [ + { + "instruction": "eigh.0", + "ms": 0.07430803999999994, + "opcode": "custom-call", + "shape": "(f64[2,2]{0,1}, f64[2]{0}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "custom-call.2", + "ms": 0.007918805000000008, + "opcode": "custom-call", + "shape": "(f64[2,2]{1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_reduce_fusion.15", + "ms": 0.005385045000000002, + "opcode": "fusion", + "shape": "(f64[], f64[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:270", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:270 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_add_fusion.9", + "ms": 0.003638050000000004, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:423 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_concatenate_fusion.4", + "ms": 0.0023778849999999967, + "opcode": "fusion", + "shape": "f64[392,2]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:238", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:238 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_reduce_fusion.22", + "ms": 0.0015722999999999963, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:256", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:256 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + } + ], + "other": [ + { + "instruction": "copy.63", + "ms": 0.030340555000000234, + "opcode": "copy", + "shape": "u32[2,15361]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.64", + "ms": 0.030041924999998977, + "opcode": "copy", + "shape": "u32[2,15361]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.81", + "ms": 0.0285733650000014, + "opcode": "copy", + "shape": "u32[15361]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.73", + "ms": 0.02850582000000104, + "opcode": "copy", + "shape": "u32[15361]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.72", + "ms": 0.028449395000000703, + "opcode": "copy", + "shape": "u32[15361]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.82", + "ms": 0.028441230000000668, + "opcode": "copy", + "shape": "u32[15361]{0}", + "source": "", + "stack": [] + } + ], + "pdip_solve": [ + { + "instruction": "cholesky.40", + "ms": 9.213927429999982, + "opcode": "custom-call", + "shape": "(f64[1369,1369]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "cholesky.60", + "ms": 7.3288890150000086, + "opcode": "custom-call", + "shape": "(f64[1369,1369]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:106", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:106 (factorize_kkt)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:212 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve.7", + "ms": 1.616699080000069, + "opcode": "custom-call", + "shape": "(f64[1369,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "triangular-solve.6", + "ms": 1.3687013200000047, + "opcode": "custom-call", + "shape": "(f64[1369,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "triangular-solve", + "ms": 1.1211926049999894, + "opcode": "custom-call", + "shape": "(f64[1369,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:213 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve.2", + "ms": 1.0726608249999972, + "opcode": "custom-call", + "shape": "(f64[1369,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:217 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + } + ], + "mapping_matrix": [ + { + "instruction": "input_reduce_fusion.28", + "ms": 0.0028116750000000083, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:362 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + } + ], + "regularization_H": [ + { + "instruction": "input_scatter_fusion.8", + "ms": 0.0028132750000000005, + "opcode": "fusion", + "shape": "f64[1521,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:123 (weighted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:366 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "psf_convolution_mapping_matrix": [ + { + "instruction": "fft.19.0", + "ms": 1.7863046099999997, + "opcode": "fft", + "shape": "f64[1521,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_scatter_fusion", + "ms": 1.426768445, + "opcode": "fusion", + "shape": "f64[1521,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.15.0", + "ms": 1.3959086399999991, + "opcode": "fft", + "shape": "c128[1521,180,91]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.17.0", + "ms": 0.9925668750000003, + "opcode": "fft", + "shape": "c128[1521,91,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_transpose_fusion.4", + "ms": 0.52130505, + "opcode": "fusion", + "shape": "c128[1521,91,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "wrapped_transpose.2", + "ms": 0.50512148, + "opcode": "fusion", + "shape": "c128[1521,180,91]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + } + ], + "curvature_matrix_F": [ + { + "instruction": "cublas-lt-matmul.2", + "ms": 4.370076099999999, + "opcode": "custom-call", + "shape": "(f64[1521,1521]{1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "inversion_other": [ + { + "instruction": "cholesky.120", + "ms": 0.9200623250000001, + "opcode": "custom-call", + "shape": "(f64[1521,1521]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1078 (AbstractInversion.log_det_curvature_reg_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:347 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "cholesky.130", + "ms": 0.9032163750000003, + "opcode": "custom-call", + "shape": "(f64[1521,1521]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1157 (AbstractInversion.log_det_regularization_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:348 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "loop_reduce_window_fusion.3", + "ms": 0.005834959999999999, + "opcode": "fusion", + "shape": "s64[6,16]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "loop_reduce_window_fusion.2", + "ms": 0.003036144999999994, + "opcode": "fusion", + "shape": "s64[86,16]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "input_scatter_fusion.9", + "ms": 0.0025572399999999997, + "opcode": "fusion", + "shape": "s64[1369]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527 (AbstractInversion.zeroed_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:567 (AbstractInversion.solve_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:684 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_broadcast_fusion.4", + "ms": 0.0019103600000000066, + "opcode": "fusion", + "shape": "(s64[1369]{0}, s64[1369]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527 (AbstractInversion.zeroed_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:567 (AbstractInversion.solve_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:684 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "chi_squared_evidence": [ + { + "instruction": "loop_multiply_fusion.2", + "ms": 0.002972470000000004, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:300", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:300 (AbstractNDArray.__pow__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:60 (unwrap_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:35 (to_new_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:78 (chi_squared_map_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:78 (AbstractFit.chi_squared_map)" + ] + } + ] + }, + "stage_audit_note": "The HLO instructions that contributed most of each stage's milliseconds, with their full source stack. A stage row is only as good as the rules that built it; this is how a reader checks a row against the HLO instead of trusting it.", + "untraced_wall_ms": 44.935685794989695, + "reconciliation_vs_untraced_pct": 12.387739480390767, + "wall_basis": "wall_ms is the TRACED run's wall, the run these kernel durations came from. untraced_wall_ms is the same executable without the profiler; the difference is the profiler's overhead and belongs in neither the stages nor the idle row.", + "calls": 200, + "call_split": "per-call (first-instruction recurrence)", + "call_blocks": 200, + "events": 178300, + "streams": [ + "Stream #14(MemcpyD2D,MemcpyD2H,Compute,MemcpyH2D,Memset)" + ], + "per_stage_ms": { + "border_relocator": { + "median_ms": 0.09683150000000001, + "min_ms": 0.09577099999999998, + "max_ms": 0.09782099999999999 + }, + "chi_squared_evidence": { + "median_ms": 0.002944, + "min_ms": 0.002816, + "max_ms": 0.003232 + }, + "curvature_matrix_F": { + "median_ms": 4.3483225, + "min_ms": 4.324689, + "max_ms": 4.515191 + }, + "inversion_other": { + "median_ms": 1.839874, + "min_ms": 1.821604, + "max_ms": 1.862455 + }, + "mapping_matrix": { + "median_ms": 0.002816, + "min_ms": 0.002784, + "max_ms": 0.002848 + }, + "memset": { + "median_ms": 0.0700325, + "min_ms": 0.014208, + "max_ms": 0.10437699999999997 + }, + "mesh_construction": { + "median_ms": 0.3441575000000003, + "min_ms": 0.34194300000000016, + "max_ms": 0.34670900000000027 + }, + "mixed_fusion": { + "median_ms": 1.8536985000000001, + "min_ms": 1.8478430000000001, + "max_ms": 1.861923 + }, + "other": { + "median_ms": 0.18196499999999977, + "min_ms": 0.18009699999999973, + "max_ms": 0.18453299999999978 + }, + "pdip_solve": { + "median_ms": 32.84626749999999, + "min_ms": 4.654487999999999, + "max_ms": 48.37692199999996 + }, + "psf_convolution_mapping_matrix": { + "median_ms": 6.6271205, + "min_ms": 6.603718000000001, + "max_ms": 6.651364 + }, + "regularization_H": { + "median_ms": 0.002784, + "min_ms": 0.002431, + "max_ms": 0.003232 + } + }, + "stage_order": [ + "border_relocator", + "mesh_construction", + "mapping_matrix", + "psf_convolution_mapping_matrix", + "curvature_matrix_F", + "regularization_H", + "pdip_solve", + "chi_squared_evidence", + "inversion_other", + "mixed_fusion", + "other", + "memset" + ], + "mixed_fusion": { + "ms": 1.8536985000000001, + "constituent_stage_sets": { + "curvature_matrix_F + psf_convolution_mapping_matrix": 0.7005787399999999, + "pdip_solve + psf_convolution_mapping_matrix": 0.23254130999999997, + "inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": 0.1858056649999999, + "mapping_matrix + pdip_solve": 0.13885781999999952, + "data_vector_D + pdip_solve": 0.11730664500000008, + "mapped_reconstruction + pdip_solve": 0.11173211499999999, + "border_relocator + pdip_solve": 0.0710107000000003, + "mesh_construction + pdip_solve": 0.03882804500000003, + "inversion_other + regularization_H": 0.030755309999999984, + "inversion_other + pdip_solve": 0.030256290000000106, + "border_relocator + mesh_construction + pdip_solve": 0.026869700000000045, + "curvature_reg_reduce_gather + inversion_other": 0.025538999999999996, + "border_relocator + inversion_other + mapping_matrix + mesh_construction + pdip_solve": 0.020500980000000002, + "pdip_solve + regularization_H": 0.019199010000000002, + "inversion_other + mapping_matrix + pdip_solve + regularization_H": 0.01548104500000001, + "inversion_other + mapping_matrix + mesh_construction": 0.012929634999999998, + "pdip_solve + ray_trace_data_grid": 0.012819884999999991, + "grids_and_structures + mass_profile_deflections + pdip_solve": 0.009833220000000002, + "inversion_other + mapped_reconstruction + reconstruction_scatter": 0.009587425000000005, + "inversion_other + mapped_reconstruction": 0.009015114999999999, + "chi_squared_evidence + pdip_solve": 0.007625669999999979, + "inversion_other + mesh_construction + pdip_solve": 0.005486369999999985, + "grids_and_structures + mass_profile_deflections + ray_trace_data_grid": 0.0052505299999999954, + "inversion_other + pdip_solve + ray_trace_data_grid": 0.004904769999999985, + "border_relocator + mesh_construction": 0.003444625000000001, + "border_relocator + inversion_other": 0.0033646000000000006, + "border_relocator + inversion_other + mesh_construction + pdip_solve": 0.002455980000000002, + "chi_squared_evidence + inversion_other": 0.0017916649999999963 + }, + "example_kernels": { + "curvature_matrix_F + psf_convolution_mapping_matrix": [ + "loop_divide_gather_fusion" + ], + "pdip_solve + psf_convolution_mapping_matrix": [ + "loop_broadcast_fusion.3" + ], + "inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": [ + "input_multiply_transpose_fusion" + ], + "mapping_matrix + pdip_solve": [ + "loop_divide_fusion.1", + "loop_broadcast_fusion" + ], + "data_vector_D + pdip_solve": [ + "input_reduce_fusion.11", + "input_reduce_fusion.26" + ], + "mapped_reconstruction + pdip_solve": [ + "input_reduce_fusion.14" + ], + "border_relocator + pdip_solve": [ + "input_reduce_fusion.16", + "loop_select_sine_fusion", + "input_concatenate_fusion.1", + "input_transpose_fusion.8" + ], + "mesh_construction + pdip_solve": [ + "loop_multiply_fusion.4", + "loop_pad_fusion", + "loop_reduce_fusion", + "triton_softmax.1" + ], + "inversion_other + regularization_H": [ + "input_transpose_fusion.6" + ], + "inversion_other + pdip_solve": [ + "input_scatter_fusion.11", + "input_reduce_fusion.17", + "input_reduce_fusion.24", + "input_reduce_fusion.12" + ] + }, + "prorated_estimate_ms": { + "psf_convolution_mapping_matrix": 0.46656002499999993, + "pdip_solve": 0.4608226335, + "curvature_matrix_F": 0.35028936999999993, + "inversion_other": 0.11636625850000001, + "mapped_reconstruction": 0.11002083958333331, + "mapping_matrix": 0.0817092455833331, + "data_vector_D": 0.05865332250000004, + "border_relocator": 0.05258072016666683, + "reconstruction_scatter": 0.04964722458333331, + "mesh_construction": 0.040945761000000025, + "regularization_H": 0.028847421249999998, + "curvature_reg_reduce_gather": 0.012769499999999998, + "ray_trace_data_grid": 0.00979504249999999, + "grids_and_structures": 0.005027916666666666, + "mass_profile_deflections": 0.005027916666666666, + "chi_squared_evidence": 0.004708667499999988 + }, + "prorated_note": "ESTIMATE ONLY \u2014 a mixed fusion's time split equally across the stages its constituents span. Never summed into the measured table, never reconciled." + }, + "other_sources_ms": { + "copy.63": 0.030340555000000234, + "copy.64": 0.030041924999998977, + "copy.81": 0.0285733650000014, + "copy.73": 0.02850582000000104, + "copy.72": 0.028449395000000703, + "copy.82": 0.028441230000000668, + "copy.121": 0.0016393449999999995, + "copy.122": 0.0016343899999999999, + "copy.56": 0.0014728000000000037, + "copy.74": 0.0014249449999999995, + "copy.120": 0.0008321549999999996, + "copy.43": 0.0007379249999999991 + }, + "device_span_ms": 46.102795699999994, + "device_busy_ms": 43.817407715, + "device_idle_ms": 2.2853879849999927, + "largest_idle_gaps": [ + { + "gap_ms": 0.049663, + "after": "while.33", + "before": "input_scatter_fusion.1" + }, + { + "gap_ms": 0.043743, + "after": "input_concatenate_fusion.4", + "before": "custom-call.2" + }, + { + "gap_ms": 0.034879, + "after": "loop_multiply_fusion.3", + "before": "eigh.0" + }, + { + "gap_ms": 0.028256, + "after": "loop_add_fusion.7", + "before": "loop_select_fusion.6" + }, + { + "gap_ms": 0.026847, + "after": "loop_broadcast_fusion.6", + "before": "loop_broadcast_fusion.8" + }, + { + "gap_ms": 0.025568, + "after": "loop_add_fusion.7", + "before": "loop_select_fusion.6" + }, + { + "gap_ms": 0.022079, + "after": "eigh.0", + "before": "eigh.0" + }, + { + "gap_ms": 0.02192, + "after": "loop_add_fusion", + "before": "loop_select_fusion" + } + ], + "kernel_ms": 48.21681349999999, + "sum_ms": 50.50220148499998, + "wall_ms": 46.10649796499274, + "host_outside_span_ms": 0.0037022649927465068, + "reconciliation_pct": 9.533804808477889, + "unjoined_ms": 0.0, + "unjoined_pct": 0.0, + "other_ms": 0.18196499999999977, + "other_pct": 0.39466237522129793, + "note": "Stage rows attribute the command-buffers-OFF program (see the module docstring): kernel times are the same, the launch overhead the CUDA graphs remove is not. sum_ms = kernel rows + device_idle_ms; the residual against wall_ms is host_outside_span_ms (dispatch before the first kernel, teardown after the last).", + "per_stage_ms_per_lane": { + "border_relocator": 0.09683150000000001, + "chi_squared_evidence": 0.002944, + "curvature_matrix_F": 4.3483225, + "inversion_other": 1.839874, + "mapping_matrix": 0.002816, + "memset": 0.0700325, + "mesh_construction": 0.3441575000000003, + "mixed_fusion": 1.8536985000000001, + "other": 0.18196499999999977, + "pdip_solve": 32.84626749999999, + "psf_convolution_mapping_matrix": 6.6271205, + "regularization_H": 0.002784 + }, + "per_lane_divisor": 1, + "host_callback": { + "pure_callback_span_ms": 0, + "qhull_ms": 0.0, + "callback_body_ms_note": "the OUTERMOST matching body event, not a sum: under the probe the body appears twice (the wrapper and the timed re-implementation it calls) and summing them would count the same work twice", + "events_by_name": { + "ThenExecuteCallback:GetEventForComputeStreamSyncPoint": { + "count": 200, + "ms": 0.3564086 + } + }, + "note": "HOST milliseconds per traced BATCH (the whole invocation), aggregated by name because the events nest. Not a row of the device table: the device pays for them as the idle gaps largest_idle_gaps names." + }, + "host_callback_ms": 0 + }, + "hlo_census": { + "status": "excluded", + "reason": "The legacy census anchors PyAutoArray source line numbers that moved after the phase-1 run. No batched attribution is published from unsupported anchors; the device-event table and wall reconciliation remain valid." + }, + "trace_split": { + "expected_calls": 200, + "executions_per_invocation": 20, + "method": "per-call (first-instruction recurrence)", + "note": "DECIDED IN CODE: the scalar arm's trace is split by trace_calls * B, so every lane's execution is its own block and the per-stage median is taken over all of them. The vmap arm's is split by trace_calls, one block per batched execution, and per_stage_ms_per_lane divides those rows by B." + } + } + }, + "certification_report": { + "source": "vmap arm, library solve observed through its stats= out-dict (PyAutoArray #566) and jax.debug.callback(..., ordered=True); ordered because the unordered batching rule returns the lanes permuted. Untimed, separately compiled; max rel diff of its log likelihoods vs the timed arm's: nan", + "rows": 20, + "pdip_iter": "NOT AVAILABLE per lane without changing library numerics. The fallback branch calls the library's own reconstruction_positive_only_from, which returns the solution alone \u2014 jax_nnls.solve_nnls' iteration count is discarded inside the library's custom_vjp primal. The PDIP while_loop's cost is in the pdip_solve stage row of each arm's device table instead, which is a max-over-lanes quantity under vmap because every lane runs the same fixed kernel sequence.", + "passes_semantics": "library `passes`: restricted active-set passes run (jax_active_set.solve_certified)" + }, + "lane_construction": { + "draws_sha256": "414c4581d327cf9f25278928cfce122a44af7f32110c4d2260c4622bb6110fbb", + "lane_rows": [ + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319 + ], + "calls": [ + 15 + ], + "stage": "pix1", + "regularization_range": { + "galaxies.source.pixelization.regularization.inner_coefficient": { + "min": 1.5395402868893563e-06, + "max": 631.3270846999916 + }, + "galaxies.source.pixelization.regularization.outer_coefficient": { + "min": 1.585514819488347e-06, + "max": 1082.4533276985048 + }, + "galaxies.source.pixelization.regularization.signal_scale": { + "min": 0.06623313471893155, + "max": 0.9779334025364208 + } + }, + "phases": [ + "exploration" + ], + "window_rule": "nautilus_batches.timed_window: consecutive captured calls, in call order, from the FIRST call that is not a prior batch, concatenated and truncated to B; at B == n_batch exactly one real Nautilus batch. Falls back to the latest B lanes if the post-prior lanes run out; never repeats a lane.", + "note": "Lane k is captured lane lane_rows[k]: the mass AND shear of a real Nautilus proposal (nautilus_batch_capture.py), lens light fixed at S3, the S3 light-subtracted dataset shared by every lane. `offsets` in the lane table are the mass offsets from the fiducial; the shear is in the capture file." + }, + "captured": { + "batches_path": "/mnt/ral/jnightin/autolens_profiling_wt/certified-solver-phase-c1-lane-rate/results/breakdown/imaging/nautilus_batches_rectangular_pix1.npz", + "batches_sha256": "c0b62fba544cb62c8a273c19837cf364127f5af7fdaa110f3a2c8a973e0b6cc0", + "schema_version": 2, + "n_calls": 972, + "n_lanes": 19440, + "call_sizes_seen": [ + 20 + ], + "calls_by_phase": { + "prior": 15, + "exploration": 957 + }, + "parameter_paths": [ + "galaxies.source.pixelization.regularization.inner_coefficient", + "galaxies.source.pixelization.regularization.outer_coefficient", + "galaxies.source.pixelization.regularization.signal_scale", + "galaxies.lens.mass.centre.centre_0", + "galaxies.lens.mass.centre.centre_1", + "galaxies.lens.mass.einstein_radius", + "galaxies.lens.mass.ell_comps.ell_comps_0", + "galaxies.lens.mass.ell_comps.ell_comps_1", + "galaxies.lens.shear.gamma_1", + "galaxies.lens.shear.gamma_2" + ], + "stage": "pix1", + "regularization": { + "class": "Adapt", + "free": true, + "priors": { + "inner_coefficient": [ + "LogUniform", + 1e-06, + 1000000.0 + ], + "outer_coefficient": [ + "LogUniform", + 1e-06, + 1000000.0 + ], + "signal_scale": [ + "Uniform", + 0.0, + 1.0 + ] + }, + "priors_source": "PyAutoGalaxy packaged config/priors/regularization (adapt_split.yaml / adapt.yaml / constant.yaml); adapt_split.yaml and adapt.yaml are identical to euclid_strong_lens_modeling_pipeline/config/priors/regularization/'s copies" + }, + "nautilus": { + "departures_from_production": [ + "mass/shear priors are the phase-B cell's Gaussians, not chained from source_lp", + "no positions likelihood", + "the cell's mesh (39x39 RectangularBilinearAdaptImage, weight_power 1, weight_floor 0) fixed in both stages; source_pix_1 uses RectangularBilinearAdaptDensity, source_pix_2 frees weight_power / weight_floor", + "seeded (production passes no seed)", + "quick updates disabled (iterations_per_quick_update=1e12; render-only)", + "NullPaths: no output directory, so no checkpoint and one Sampler.run call", + "post-fit perform_update skipped (samples / latent variables never built)" + ], + "n_batch": 20, + "n_like_max": 40000, + "n_live": 150, + "number_of_cores": 1, + "production_reference": "euclid_strong_lens_modeling_pipeline/scripts/full_model.py source_pix_1 (n_live=150) / source_pix_2 (n_live=75): af.Nautilus(n_batch=20, **SettingsSearch.search_dict) with use_jax_vmap=True and number_of_cores=1 (SettingsSearch defaults)", + "production_stage": "source_pix_1", + "seed": 1, + "stage": "pix1", + "use_jax_vmap": true, + "version": "1.0.5" + }, + "capture_fit_status": "sampling complete (n_like_max or convergence); post-fit result skipped", + "capture_library_revisions": { + "PyAutoArray": { + "head": "3de624b5b91a4efa130dc3cb0a3a0f06f85025a3", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoArray" + }, + "PyAutoFit": { + "head": "dd9fbe0aab60c4a57702b1444ca031b317c91331", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoFit" + }, + "PyAutoGalaxy": { + "head": "70a61e26cd715cefe7012a38285698091246a8a4", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy" + }, + "PyAutoLens": { + "head": "86054bbc19baa2f710a12e04a94fa27ab37cc354", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoLens" + }, + "PyAutoNerves": { + "head": "1fa613aa8d89a79613009fb66f5b4e2d21deb57a", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoNerves" + } + }, + "fingerprint_check": { + "fields": [ + "mesh", + "source_pixels", + "dataset_sha256", + "regularization_class", + "regularization_s0_fiducial", + "border_relocator", + "use_mixed_precision", + "log_evidence_s3_library" + ], + "not_identity": "the regularization coefficients: free per lane since the capture frees them", + "log_evidence_s3_library_rel_diff": 0.0, + "passed": true + }, + "timed_window_vs_capture_pdip": { + "reference": "the capture's own figure of merit (library PDIP, Fitness.call_wrap jax.jit(jax.vmap(call)) over parameter vectors) for the same lanes", + "compared_against": "this cell's jit(vmap) library-PDIP reference", + "n_compared": 19, + "max_rel_diff": 3.3892926907085035e-06, + "max_abs_diff_nats": 0.6588227668544278, + "gated": false, + "note": "RECORDED, NOT GATED: proves the lane trees rebuilt here are the models the sampler evaluated (a wrong parameter mapping shows up as nats, not 1e-10)." + } + }, + "matched": { + "vmap_wall_per_lane_ms": 40.443775775001995, + "scalar_wall_per_lane_ms": 44.673493940008484, + "speedup_vmap_over_scalar": 1.1045826727093282, + "note": "Both walls are the PRODUCTION nesting of their arm, measured in one process on the same B lanes with the SAME library Settings (no injection). A speedup below 1 means the batch is slower per lane than B sequential jitted calls." + }, + "solver_source": "library", + "solver": "certified", + "certified_fallback": "pdip", + "certified_pass_budget": 16, + "certified_pass_budget_basis": "config default (Settings().certified_pass_budget)", + "certified_tau_rel": 1e-09, + "solver_used": "certified", + "solver_check": { + "solver_used": "certified", + "solver_used_source": "AbstractInversion.positive_only_solver_used on the fiducial S3 inversion, built eagerly on the JAX backend (AnalysisImaging(use_jax=True).fit_from) with the arms' Settings", + "reference_solver_used": "pdip", + "traced_solver_kwargs_jax": [ + "certified" + ], + "observed_calls_jax": 1, + "report_rows": 20, + "report_vs_timed_arm_max_rel_diff": NaN + }, + "lanes_certified": [ + false, + false, + false, + true, + true, + true, + true, + true, + false, + false, + true, + false, + false, + true, + true, + true, + false, + true, + false, + false + ], + "lanes_passes": [ + 16, + 16, + 16, + 4, + 2, + 14, + 6, + 6, + 16, + 16, + 6, + 16, + 16, + 9, + 2, + 8, + 16, + 3, + 16, + 16 + ], + "uncertified_lanes": 10, + "per_lane_certification_note": "certified / passes come from the library's own solve through its stats= out-dict (PyAutoArray #566): passes is the number of restricted active-set passes the library ran (0 when the unconstrained solve was already non-negative), certified is its KKT certificate. With certified_fallback=pdip a False lane returned the PDIP solution; with none it returned the last uncertified iterate. null for a library-PDIP row (no certificate).", + "gate": { + "pre_registered": true, + "gated": [ + "per lane: jit(vmap) arm vs jit(vmap) library PDIP <= lane_rtol relative", + "per lane: scalar jit arm vs scalar jit library PDIP <= lane_rtol relative" + ], + "recorded_not_gated": [ + "per lane: jit(vmap) arm vs scalar jit arm (rel_diff, abs_diff_nats)", + "per lane: jit(vmap) library PDIP vs scalar jit library PDIP", + "uncertified_lanes (certified_fallback=none rows)" + ], + "lanes_failed": 3, + "passed": false, + "policy_eligible": false, + "note": "Pre-registered before submission (module docstring; submit header). Phase 3 (results/notes/hst_gpu_residue_phase3_psf_2026_09.md) placed phase 2's ~2.5e-9 certified-vs-PDIP residual BETWEEN the jit(vmap) and scalar-jit compositions, not in the solver \u2014 so each arm is gated against the library-PDIP reference of its OWN composition, and the cross-composition difference is recorded with its nats. A certified_fallback=none row is policy-eligible only if every lane certifies AND passes the gate. Timing is never gated." + }, + "library_revisions": { + "PyAutoArray": { + "head": "3de624b5b91a4efa130dc3cb0a3a0f06f85025a3", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoArray", + "module_file": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/__init__.py" + }, + "PyAutoFit": { + "head": "dd9fbe0aab60c4a57702b1444ca031b317c91331", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoFit", + "module_file": "/mnt/ral/jnightin/PyAuto/PyAutoFit/autofit/__init__.py" + }, + "PyAutoGalaxy": { + "head": "70a61e26cd715cefe7012a38285698091246a8a4", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy", + "module_file": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/__init__.py" + }, + "PyAutoLens": { + "head": "86054bbc19baa2f710a12e04a94fa27ab37cc354", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoLens", + "module_file": "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/__init__.py" + }, + "autoarray_file": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/__init__.py" + } + }, + "headline_arm_note": "`trace`, `hlo_census`, `command_buffers` and `trace_timing` above describe the scalar arm \u2014 the program phase 1 traced. Both arms' full blocks, the lane table and the matched comparison are under `vmap`." +} \ No newline at end of file diff --git a/results/breakdown/imaging/fixed_light_trace_rectangular_jitvmap20_captured_pix1_libcertified_fbon_b16_hpc_a100_fp64_fixed_light_trace.png b/results/breakdown/imaging/fixed_light_trace_rectangular_jitvmap20_captured_pix1_libcertified_fbon_b16_hpc_a100_fp64_fixed_light_trace.png new file mode 100644 index 000000000..d67c7adf8 Binary files /dev/null and b/results/breakdown/imaging/fixed_light_trace_rectangular_jitvmap20_captured_pix1_libcertified_fbon_b16_hpc_a100_fp64_fixed_light_trace.png differ diff --git a/results/breakdown/imaging/fixed_light_trace_rectangular_jitvmap20_captured_pix1_libpdip_fbon_b16_hpc_a100_fp64_fixed_light_trace.json b/results/breakdown/imaging/fixed_light_trace_rectangular_jitvmap20_captured_pix1_libpdip_fbon_b16_hpc_a100_fp64_fixed_light_trace.json new file mode 100644 index 000000000..d944e810c --- /dev/null +++ b/results/breakdown/imaging/fixed_light_trace_rectangular_jitvmap20_captured_pix1_libpdip_fbon_b16_hpc_a100_fp64_fixed_light_trace.json @@ -0,0 +1,6002 @@ +{ + "device": { + "backend": "gpu", + "device": "cuda:0", + "hostname": "euclid-ral-gpu-2", + "xla_flags": "--xla_disable_hlo_passes=constant_folding --xla_gpu_autotune_level=0 --xla_gpu_enable_triton_gemm=false", + "omp_num_threads": null, + "cpu_count": 124, + "jax_compilation_cache_dir": "/mnt/ral/jnightin/autolens_profiling_wt/certified-solver-phase-c1-lane-rate/output/jax_cache/fixed_light_lanerate_rectangular_pix1_time_20_pdip_on_350768_23", + "autotune_cache_entries_at_start": 0, + "cache_fresh": true, + "nvidia_smi": "NVIDIA A100 80GB PCIe, 35453 MiB, 81920 MiB" + }, + "machine": { + "cpu_model": "AMD EPYC 7702 64-Core Processor", + "cpu_count_os": 124, + "nproc": 4, + "nproc_all": 124, + "nproc_note": "GNU nproc honours OMP_NUM_THREADS, so `nproc` can print 1 on a multi-core host; `nproc_all` is the core count.", + "ram_total": "928298204 kB", + "kernel": "5.14.0-687.50.1.el9_8.x86_64", + "platform": "Linux-5.14.0-687.50.1.el9_8.x86_64-x86_64-with-glibc2.34", + "python": "3.12.4", + "jax_thread_env": { + "NPROC": null + }, + "blas_thread_env": { + "OMP_NUM_THREADS": null, + "OPENBLAS_NUM_THREADS": null, + "MKL_NUM_THREADS": null, + "VECLIB_MAXIMUM_THREADS": null, + "NUMEXPR_NUM_THREADS": null + }, + "thread_env_note": "NPROC sizes XLA's CPU intra-op pool (the JAX rows); the BLAS knobs pin OpenBLAS/MKL/OpenMP (the numpy/scipy rows) and do not touch JAX. Two disjoint families; both are recorded on every CPU timing.", + "gpu": "NVIDIA A100 80GB PCIe, 81920 MiB, 610.57.04" + }, + "precision": "fp64", + "configuration": { + "pixel_scale_arcsec": 0.05, + "mask_radius_arcsec": 3.5, + "image_pixels_masked": 15361, + "over_sampled_pixels": 62752, + "mesh": "rectangular", + "mesh_shape": [ + 39, + 39 + ], + "source_pixels": 1521, + "source_pixels_requested": null, + "dataset": "hst", + "dataset_sha256": { + "data.fits": "e4e833a28e9c6f6fb023cd85c0d3dde74068720256bc77a240633500e5b04fac", + "noise_map.fits": "315c6266a0acd3ac9c8da82fcd2b45a08697362481fd7a35072bab1658530ba3", + "psf.fits": "8389ba0e8bf4a09b4a561cfc246181a2fb944ed396754cd0ff76fdd22910d303" + }, + "cell_source_sha256": "06a162fcdae6b329384ec33322f443df07215d86e56f0505ac15b3d3473eb432", + "inversion_path": "dense", + "pass_budget": 11, + "pass_budget_basis": "phase 3 (autolens_profiling#255): the smallest ZERO-fallback budget per mesh, the budget a production run fixes. NOT phase 0's certifying budget (2 for Delaunay), which falls back on 67.5 % of a graded draw set and is not a production cost.", + "border_relocator_mode": "cell", + "border_relocator": true, + "border_relocator_note": "'cell' is use_border_relocator=True, which every profiling cell in this family forces; 'library' passes None and takes the shipped config default, which is what production runs. The resolved boolean is what this leg actually ran.", + "routes_selected": [ + "b", + "d" + ], + "trace_calls": 10, + "command_buffers_traced": "off", + "use_mixed_precision": false, + "tau_rel": 1e-09, + "regularization": { + "scheme": "constant", + "coefficient": 1.0 + }, + "thread_env": { + "n_threads": null, + "vars": [ + "OPENBLAS_NUM_THREADS", + "MKL_NUM_THREADS", + "OMP_NUM_THREADS", + "VECLIB_MAXIMUM_THREADS", + "NUMEXPR_NUM_THREADS" + ], + "set_to": null, + "preexisting": {}, + "overridden": {}, + "note": "Not pinned (legacy variant): recorded as found." + }, + "over_sample_size_lp_rule": { + "sub_size_list": [ + 4, + 2, + 2 + ], + "radial_list": [ + 0.3, + 0.6 + ], + "centre": [ + 0.0, + 0.0 + ] + }, + "vmap_batch": 20, + "lanes": "captured", + "arms": [ + "vmap", + "scalar" + ], + "fallback": "on", + "draw_seed": 0, + "vmap_composition": "jax.jit(jax.vmap(fn))", + "lane_rtol": 1e-09, + "vmap_flags_note": "Strict ProfileCLI.parse_cell_args rejects unknown flags. These keys record the exact batching program and prevent historical vmap(jit) artifacts from being mistaken for current jit(vmap) measurements.", + "solver_source": "library", + "solver": "pdip", + "certified_fallback": "pdip", + "certified_pass_budget": 16, + "captured_pass": "time", + "batches": "/mnt/ral/jnightin/autolens_profiling_wt/certified-solver-phase-c1-lane-rate/results/breakdown/imaging/nautilus_batches_rectangular_pix1.npz" + }, + "solver_injection": { + "patched": null, + "part_v": "none \u2014 library mode selects the solver through al.Settings", + "part_b_route_d": { + "patched": "autoarray.inversion.inversion.inversion_util.reconstruction_positive_only_from", + "pass_budget": 11, + "fallback": true + }, + "note": "Library mode (phase B, #300): PART V's arms and references run the library's own positive-only solve, selected by Settings(positive_only_solver, certified_fallback, certified_pass_budget); nothing is injected. PART B's single-call route d (the fiducial d == b pin) still uses the phase-1 harness injection at the phase-3 budget and is not a phase-B row. The untimed certification report observes the library solve (library_solver_observed) without changing it." + }, + "routes": { + "b_s3_pdip": { + "label": "S3 PDIP (source-only)", + "status": "ok", + "solver": "library", + "ms": 38.98790880011802, + "log_likelihood": 28622.39485118912 + }, + "d_s3_certified_fallback": { + "label": "S3 certified active set, budget 11, PDIP fallback", + "status": "ok", + "solver": "harness-injected certified active set", + "pass_budget": 11, + "fallback": true, + "injected_solver_calls_jax": 1, + "injected_solver_calls_numpy": 0, + "ms": 30.30649190004624, + "log_likelihood": 28622.394851189252 + } + }, + "equivalence_pins": [ + { + "pin": "route d (certified, fallback) == route b (library PDIP)", + "route": "d_s3_certified_fallback", + "reference": "b_s3_pdip", + "expectation": "the certified active set returns the library's own positive solution", + "rtol": 1e-09, + "got": 28622.394851189252, + "reference_value": 28622.39485118912, + "rel_diff": 4.575691088611358e-15, + "status": "PASS" + } + ], + "equivalence_rtol": 1e-09, + "reference": { + "log_evidence_s0_library": 28622.394851199875, + "log_evidence_s3_library": 28622.39485119987, + "s3": { + "n_params": 1521, + "n_mapper": 1521, + "n_funcs": 0, + "edge_zeroed_pixels": 152, + "subtracted_light_flux": 5253.476646922047 + } + }, + "command_buffers": { + "wall_on_ms": 821.1695773999963, + "wall_off_ms": 828.3706322999933, + "command_buffer_delta_ms": 7.2010548999969615, + "command_buffer_delta_pct": 0.8769266541506672, + "traced": "off", + "compiler_option": "xla_gpu_enable_command_buffer", + "probe": { + "note": "Not taken in --vmap-batch mode: the CUPTI-inside-a-CUDA-graph probe is a phase-1 diagnostic about the JOIN, and this mode already compiles and times both the command-buffers ON and OFF executable of every arm." + }, + "note": "ONE lowering, TWO compilations, one process. wall_on_ms is the PRODUCTION program (CUDA graphs as XLA ships them) and is the number comparable to phase 5's row; wall_off_ms is the graph-less program the stage rows attribute. The delta is the launch overhead the graphs remove \u2014 it lands in device_idle and host_outside_span, not in any stage. Reconciliation is computed against wall_off_ms." + }, + "trace": { + "parser": "ProfileData.from_file(xplane) + as_text() + stack_frame_index(proto field 17)", + "stage_audit": { + "mesh_construction": [ + { + "instruction": "fusion.2", + "ms": 0.1485403199999988, + "opcode": "fusion", + "shape": "(f64[15361,2]{1,0}, s64[15361,2]{1,0}, s32[15361,2]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:227", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:227 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_select_fusion", + "ms": 0.03961204000000024, + "opcode": "fusion", + "shape": "(u32[2,15361]{1,0}, u32[2,15361]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69 (forward_interp)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:573 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/abstract.py:36 (AbstractInterpolator.mappings)" + ] + }, + { + "instruction": "loop_select_fusion.1", + "ms": 0.03489680500000051, + "opcode": "fusion", + "shape": "(u32[15361]{0}, u32[15361]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_select_fusion.4", + "ms": 0.03485500000000027, + "opcode": "fusion", + "shape": "(u32[15361]{0}, u32[15361]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_add_fusion", + "ms": 0.020980280000000465, + "opcode": "fusion", + "shape": "s64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69 (forward_interp)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:573 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/abstract.py:36 (AbstractInterpolator.mappings)" + ] + }, + { + "instruction": "loop_add_fusion.5", + "ms": 0.02033793500000018, + "opcode": "fusion", + "shape": "s64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "mixed_fusion": [ + { + "instruction": "loop_divide_gather_fusion", + "ms": 0.6977891849999998, + "opcode": "fusion", + "shape": "(f64[15361,1,1,1521]{3,2,1,0}, f64[15361,1,1,1521]{3,2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_add_multiply_fusion", + "ms": 0.08984078999999998, + "opcode": "fusion", + "shape": "(f64[1369,1369]{1,0}, f64[1369,1369]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:61", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:61 (initialize)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:72 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:508 (reconstruction_positive_only_from)" + ] + }, + { + "instruction": "input_transpose_fusion.3", + "ms": 0.030864404999999994, + "opcode": "fusion", + "shape": "f64[1521,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1157 (AbstractInversion.log_det_regularization_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:348 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "loop_reduce_fusion.1", + "ms": 0.027141555000000015, + "opcode": "fusion", + "shape": "f64[92,2]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:556", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:556 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/abstract.py:36 (AbstractInterpolator.mappings)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:167 (Mapper.pix_indexes_for_sub_slim_index)" + ] + }, + { + "instruction": "input_transpose_fusion.2", + "ms": 0.025618074999999997, + "opcode": "fusion", + "shape": "f64[1521,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1078 (AbstractInversion.log_det_curvature_reg_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:347 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "input_transpose_fusion.4", + "ms": 0.016372880000000006, + "opcode": "fusion", + "shape": "f64[1369,1369]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:62", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:62 (initialize)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:72 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:508 (reconstruction_positive_only_from)" + ] + } + ], + "ray_trace_data_grid": [ + { + "instruction": "input_reduce_fusion.16", + "ms": 0.0028044450000000074, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:506", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:506 (FlatLambdaCDM._simpson_1d)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:644 (FlatLambdaCDM.angular_diameter_distance_kpc_z1z2)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:151 (LensingCosmology.angular_diameter_distance_between_redshifts_in_kpc_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:355 (LensingCosmology.scaling_factor_between_redshifts_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer_util.py:252 (traced_grid_2d_list_from)" + ] + }, + { + "instruction": "input_reduce_fusion.14", + "ms": 0.002773230000000002, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:506", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:506 (FlatLambdaCDM._simpson_1d)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:644 (FlatLambdaCDM.angular_diameter_distance_kpc_z1z2)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:133 (LensingCosmology.angular_diameter_distance_to_earth_in_kpc_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:362 (LensingCosmology.scaling_factor_between_redshifts_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer_util.py:252 (traced_grid_2d_list_from)" + ] + }, + { + "instruction": "input_reduce_fusion.15", + "ms": 0.0026174000000000006, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:503", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:503 (FlatLambdaCDM._simpson_1d)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:644 (FlatLambdaCDM.angular_diameter_distance_kpc_z1z2)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:133 (LensingCosmology.angular_diameter_distance_to_earth_in_kpc_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:362 (LensingCosmology.scaling_factor_between_redshifts_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer_util.py:252 (traced_grid_2d_list_from)" + ] + }, + { + "instruction": "input_reduce_fusion.17", + "ms": 0.0025793049999999944, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:503", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:503 (FlatLambdaCDM._simpson_1d)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:644 (FlatLambdaCDM.angular_diameter_distance_kpc_z1z2)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:151 (LensingCosmology.angular_diameter_distance_between_redshifts_in_kpc_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:355 (LensingCosmology.scaling_factor_between_redshifts_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer_util.py:252 (traced_grid_2d_list_from)" + ] + }, + { + "instruction": "loop_divide_fusion.2", + "ms": 0.002077249999999996, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:380", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:380 (LensingCosmology.scaling_factor_between_redshifts_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer_util.py:252 (traced_grid_2d_list_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer.py:632 (Tracer.traced_grid_2d_list_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/structures/decorators/abstract.py:93 (AbstractMaker.evaluate_func)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/structures/decorators/abstract.py:110 (AbstractMaker.result)" + ] + } + ], + "border_relocator": [ + { + "instruction": "eigh.0", + "ms": 0.0739232749999999, + "opcode": "custom-call", + "shape": "(f64[2,2]{0,1}, f64[2]{0}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "custom-call.2", + "ms": 0.007890920000000001, + "opcode": "custom-call", + "shape": "(f64[2,2]{1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_reduce_fusion.11", + "ms": 0.005175274999999998, + "opcode": "fusion", + "shape": "(f64[], f64[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:270", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:270 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_add_fusion.7", + "ms": 0.003613570000000007, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:423 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_concatenate_fusion.1", + "ms": 0.0035650399999999963, + "opcode": "fusion", + "shape": "f64[15361,2]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:323", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:323 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:423 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_select_sine_fusion", + "ms": 0.0032901699999999916, + "opcode": "fusion", + "shape": "(f64[], f64[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:301", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:301 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:423 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + } + ], + "other": [ + { + "instruction": "copy.31", + "ms": 0.030478270000001178, + "opcode": "copy", + "shape": "u32[2,15361]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.32", + "ms": 0.03035719000000064, + "opcode": "copy", + "shape": "u32[2,15361]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.49", + "ms": 0.028687710000001757, + "opcode": "copy", + "shape": "u32[15361]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.41", + "ms": 0.02866302500000174, + "opcode": "copy", + "shape": "u32[15361]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.50", + "ms": 0.028468630000000817, + "opcode": "copy", + "shape": "u32[15361]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.40", + "ms": 0.028398770000000552, + "opcode": "copy", + "shape": "u32[15361]{0}", + "source": "", + "stack": [] + } + ], + "mapping_matrix": [ + { + "instruction": "loop_broadcast_fusion.1", + "ms": 0.13640899999999978, + "opcode": "fusion", + "shape": "f64[15361,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:342", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:342 (mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:283 (Mapper.mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:91 (AbstractInversionImaging._mapping_matrix_for_convolution_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:137 (AbstractInversionImaging.operated_mapping_matrix_list)" + ] + }, + { + "instruction": "input_reduce_fusion.25", + "ms": 0.002863969999999995, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:362 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + }, + { + "instruction": "loop_divide_fusion.1", + "ms": 0.00234958, + "opcode": "fusion", + "shape": "f64[1521]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:92", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:92 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:362 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + } + ], + "regularization_H": [ + { + "instruction": "loop_broadcast_fusion.2", + "ms": 0.019258510000000006, + "opcode": "fusion", + "shape": "(f64[1521,1521]{1,0}, f64[1521,1521]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:111", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:111 (weighted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:366 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_scatter_fusion.8", + "ms": 0.0028127399999999985, + "opcode": "fusion", + "shape": "f64[1521,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:123 (weighted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:366 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "psf_convolution_mapping_matrix": [ + { + "instruction": "fft.19.0", + "ms": 1.7828272349999998, + "opcode": "fft", + "shape": "f64[1521,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_scatter_fusion", + "ms": 1.5036786850000001, + "opcode": "fusion", + "shape": "f64[1521,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.15.0", + "ms": 1.3864055050000004, + "opcode": "fft", + "shape": "c128[1521,180,91]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.17.0", + "ms": 0.9927867100000007, + "opcode": "fft", + "shape": "c128[1521,91,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_transpose_fusion.1", + "ms": 0.5220636699999999, + "opcode": "fusion", + "shape": "c128[1521,91,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "wrapped_transpose.2", + "ms": 0.5071845050000002, + "opcode": "fusion", + "shape": "c128[1521,180,91]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + } + ], + "curvature_matrix_F": [ + { + "instruction": "cublas-lt-matmul.2", + "ms": 4.38780185, + "opcode": "custom-call", + "shape": "(f64[1521,1521]{1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "data_vector_D": [ + { + "instruction": "input_reduce_fusion.7", + "ms": 0.11374234000000003, + "opcode": "fusion", + "shape": "f64[92,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123 (data_vector_via_blurred_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:67 (InversionImagingMapping.data_vector)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:699 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_reduce_fusion.23", + "ms": 0.0037307950000000016, + "opcode": "fusion", + "shape": "f64[1521]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123 (data_vector_via_blurred_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:67 (InversionImagingMapping.data_vector)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:699 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "inversion_other": [ + { + "instruction": "cholesky.60", + "ms": 0.9178175300000002, + "opcode": "custom-call", + "shape": "(f64[1521,1521]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1078 (AbstractInversion.log_det_curvature_reg_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:347 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "cholesky.70", + "ms": 0.89939234, + "opcode": "custom-call", + "shape": "(f64[1521,1521]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1157 (AbstractInversion.log_det_regularization_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:348 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "input_reduce_fusion.13", + "ms": 0.018972599999999996, + "opcode": "fusion", + "shape": "f64[1521]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:946", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:946 (AbstractInversion.regularization_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:346 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)", + "/mnt/ral/jnightin/autolens_profiling_wt/certified-solver-phase-c1-lane-rate/scripts/imaging/likelihood_breakdown/fixed_light_trace.py:1195 (_captured_likelihood_fn.._likelihood)" + ] + }, + { + "instruction": "loop_reduce_window_fusion.3", + "ms": 0.005791649999999985, + "opcode": "fusion", + "shape": "s64[6,16]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "input_scatter_fusion.11", + "ms": 0.0038190150000000076, + "opcode": "fusion", + "shape": "pred[1521]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:526", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:526 (AbstractInversion.zeroed_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:567 (AbstractInversion.solve_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:684 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_reduce_window_fusion.2", + "ms": 0.003105690000000011, + "opcode": "fusion", + "shape": "s64[86,16]{1,0}", + "source": "", + "stack": [] + } + ], + "pdip_solve": [ + { + "instruction": "cholesky.20", + "ms": 14.070144085000209, + "opcode": "custom-call", + "shape": "(f64[1369,1369]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:106", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:106 (factorize_kkt)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:212 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve", + "ms": 2.1470052899999867, + "opcode": "custom-call", + "shape": "(f64[1369,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:213 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve.2", + "ms": 2.059719799999959, + "opcode": "custom-call", + "shape": "(f64[1369,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:217 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve.3", + "ms": 2.039387555000112, + "opcode": "custom-call", + "shape": "(f64[1369,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:217 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve.1", + "ms": 1.9864238500000981, + "opcode": "custom-call", + "shape": "(f64[1369,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:213 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "cholesky.40", + "ms": 0.8427822950000018, + "opcode": "custom-call", + "shape": "(f64[1369,1369]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:62", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:62 (initialize)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:72 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:508 (reconstruction_positive_only_from)" + ] + } + ], + "mapped_reconstruction": [ + { + "instruction": "input_reduce_fusion.10", + "ms": 0.11178793000000001, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163 (mapped_reconstructed_data_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:120 (InversionImagingMapping._mapped_reconstructed_data_dict_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:196 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + } + ], + "chi_squared_evidence": [ + { + "instruction": "input_reduce_fusion.22", + "ms": 0.0038382150000000033, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:104", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:104 (noise_normalization_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:98 (AbstractFit.noise_normalization)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:306 (FitDataset.noise_normalization)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:349 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)" + ] + }, + { + "instruction": "input_reduce_fusion.24", + "ms": 0.0038127600000000066, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:90", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:90 (chi_squared_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:87 (AbstractFit.chi_squared)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:293 (FitDataset.chi_squared)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:345 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)" + ] + }, + { + "instruction": "loop_multiply_fusion.2", + "ms": 0.0029820550000000012, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:300", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:300 (AbstractNDArray.__pow__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:60 (unwrap_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:35 (to_new_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:78 (chi_squared_map_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:78 (AbstractFit.chi_squared_map)" + ] + } + ] + }, + "stage_audit_note": "The HLO instructions that contributed most of each stage's milliseconds, with their full source stack. A stage row is only as good as the rules that built it; this is how a reader checks a row against the HLO instead of trusting it.", + "untraced_wall_ms": 41.42465203000029, + "reconciliation_vs_untraced_pct": 3.1264296053996277, + "wall_basis": "wall_ms is the TRACED run's wall, the run these kernel durations came from. untraced_wall_ms is the same executable without the profiler; the difference is the profiler's overhead and belongs in neither the stages nor the idle row.", + "calls": 200, + "call_split": "per-call (first-instruction recurrence)", + "call_blocks": 200, + "events": 186320, + "streams": [ + "Stream #14(Memset,MemcpyD2H,Compute,MemcpyH2D,MemcpyD2D)" + ], + "per_stage_ms": { + "border_relocator": { + "median_ms": 0.10549999999999998, + "min_ms": 0.10467000000000001, + "max_ms": 0.10668400000000001 + }, + "chi_squared_evidence": { + "median_ms": 0.010623, + "min_ms": 0.010303, + "max_ms": 0.011264 + }, + "curvature_matrix_F": { + "median_ms": 4.3684835, + "min_ms": 4.342805, + "max_ms": 4.571605 + }, + "data_vector_D": { + "median_ms": 0.117409, + "min_ms": 0.11645, + "max_ms": 0.118588 + }, + "inversion_other": { + "median_ms": 1.8640055000000002, + "min_ms": 1.84703, + "max_ms": 1.883893 + }, + "mapped_reconstruction": { + "median_ms": 0.111777, + "min_ms": 0.111137, + "max_ms": 0.112667 + }, + "mapping_matrix": { + "median_ms": 0.141627, + "min_ms": 0.14153, + "max_ms": 0.141793 + }, + "memset": { + "median_ms": 0.052029500000000006, + "min_ms": 0.037439999999999994, + "max_ms": 0.06035100000000001 + }, + "mesh_construction": { + "median_ms": 0.3816715000000001, + "min_ms": 0.37930100000000005, + "max_ms": 0.38384500000000005 + }, + "mixed_fusion": { + "median_ms": 0.991841, + "min_ms": 0.9883780000000001, + "max_ms": 0.9940410000000001 + }, + "other": { + "median_ms": 0.19523599999999963, + "min_ms": 0.19474399999999972, + "max_ms": 0.1960679999999997 + }, + "pdip_solve": { + "median_ms": 25.179315000000003, + "min_ms": 18.048658999999997, + "max_ms": 29.37148000000002 + }, + "psf_convolution_mapping_matrix": { + "median_ms": 6.928319, + "min_ms": 6.903121000000001, + "max_ms": 6.946574 + }, + "ray_trace_data_grid": { + "median_ms": 0.012832000000000001, + "min_ms": 0.012766999999999999, + "max_ms": 0.013087999999999999 + }, + "regularization_H": { + "median_ms": 0.022047999999999998, + "min_ms": 0.021471, + "max_ms": 0.022944 + } + }, + "stage_order": [ + "ray_trace_data_grid", + "border_relocator", + "mesh_construction", + "mapping_matrix", + "psf_convolution_mapping_matrix", + "data_vector_D", + "curvature_matrix_F", + "regularization_H", + "pdip_solve", + "mapped_reconstruction", + "chi_squared_evidence", + "inversion_other", + "mixed_fusion", + "other", + "memset" + ], + "mixed_fusion": { + "ms": 0.991841, + "constituent_stage_sets": { + "curvature_matrix_F + psf_convolution_mapping_matrix": 0.6977891849999998, + "inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": 0.08984078999999998, + "inversion_other + regularization_H": 0.030864404999999994, + "border_relocator + mesh_construction": 0.030598155000000054, + "curvature_reg_reduce_gather + inversion_other": 0.025618074999999997, + "border_relocator + inversion_other + mapping_matrix + mesh_construction": 0.020481725000000006, + "border_relocator + pdip_solve": 0.016372880000000006, + "inversion_other + mapping_matrix + regularization_H": 0.015515319999999996, + "inversion_other + mapping_matrix + mesh_construction": 0.012837594999999995, + "grids_and_structures + mass_profile_deflections": 0.01000758, + "inversion_other + mapped_reconstruction + reconstruction_scatter": 0.009636884999999994, + "inversion_other + mapped_reconstruction": 0.008931665000000004, + "inversion_other + mesh_construction": 0.005589354999999988, + "grids_and_structures + mass_profile_deflections + ray_trace_data_grid": 0.005273854999999991, + "inversion_other + ray_trace_data_grid": 0.004779764999999983, + "border_relocator + inversion_other": 0.0033756249999999976, + "border_relocator + inversion_other + mesh_construction": 0.0024176899999999975, + "chi_squared_evidence + inversion_other": 0.0017919749999999982 + }, + "example_kernels": { + "curvature_matrix_F + psf_convolution_mapping_matrix": [ + "loop_divide_gather_fusion" + ], + "inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": [ + "loop_add_multiply_fusion" + ], + "inversion_other + regularization_H": [ + "input_transpose_fusion.3" + ], + "border_relocator + mesh_construction": [ + "loop_reduce_fusion.1", + "loop_select_fusion.5" + ], + "curvature_reg_reduce_gather + inversion_other": [ + "input_transpose_fusion.2" + ], + "border_relocator + inversion_other + mapping_matrix + mesh_construction": [ + "input_scatter_fusion.6", + "input_scatter_fusion.10" + ], + "border_relocator + pdip_solve": [ + "input_transpose_fusion.4" + ], + "inversion_other + mapping_matrix + regularization_H": [ + "input_scatter_fusion.4", + "input_scatter_fusion.5", + "input_scatter_fusion.2", + "input_scatter_fusion.3" + ], + "inversion_other + mapping_matrix + mesh_construction": [ + "input_scatter_fusion.7" + ], + "grids_and_structures + mass_profile_deflections": [ + "loop_divide_minimum_multiply_sine_sqrt_fusion", + "loop_slice_fusion" + ] + }, + "prorated_estimate_ms": { + "curvature_matrix_F": 0.3488945924999999, + "psf_convolution_mapping_matrix": 0.3488945924999999, + "inversion_other": 0.08152522458333329, + "border_relocator": 0.031099657916666697, + "pdip_solve": 0.030646637499999997, + "mapped_reconstruction": 0.030138324999999994, + "mesh_construction": 0.02829928125000002, + "reconstruction_scatter": 0.02567249249999999, + "regularization_H": 0.02060397583333333, + "mapping_matrix": 0.014571402916666663, + "curvature_reg_reduce_gather": 0.012809037499999999, + "grids_and_structures": 0.006761741666666664, + "mass_profile_deflections": 0.006761741666666664, + "ray_trace_data_grid": 0.004147834166666655, + "chi_squared_evidence": 0.0008959874999999991 + }, + "prorated_note": "ESTIMATE ONLY \u2014 a mixed fusion's time split equally across the stages its constituents span. Never summed into the measured table, never reconciled." + }, + "other_sources_ms": { + "copy.31": 0.030478270000001178, + "copy.32": 0.03035719000000064, + "copy.49": 0.028687710000001757, + "copy.41": 0.02866302500000174, + "copy.50": 0.028468630000000817, + "copy.40": 0.028398770000000552, + "loop_reduce_window_fusion": 0.0064693399999999875, + "loop_reduce_window_fusion.1": 0.004341255000000005, + "loop_broadcast_fusion.3": 0.0017782049999999962, + "copy.69": 0.0016991699999999981, + "copy.90": 0.0016363100000000004, + "copy.24": 0.001463345000000002, + "copy.33": 0.0014167949999999985, + "copy.42": 0.0014159849999999983 + }, + "device_span_ms": 42.50396075, + "device_busy_ms": 40.266913135, + "device_idle_ms": 2.2370476149999945, + "largest_idle_gaps": [ + { + "gap_ms": 0.052766, + "after": "while.28", + "before": "input_scatter_fusion.1" + }, + { + "gap_ms": 0.044606, + "after": "input_concatenate_fusion.4", + "before": "custom-call.2" + }, + { + "gap_ms": 0.032223, + "after": "loop_multiply_fusion.3", + "before": "eigh.0" + }, + { + "gap_ms": 0.031487, + "after": "loop_add_fusion.5", + "before": "loop_select_fusion.4" + }, + { + "gap_ms": 0.026079, + "after": "loop_add_fusion.1", + "before": "loop_select_fusion.1" + }, + { + "gap_ms": 0.025631, + "after": "input_reduce_fusion.20", + "before": "loop_divide_fusion" + }, + { + "gap_ms": 0.023295, + "after": "while.28", + "before": "input_reduce_fusion" + }, + { + "gap_ms": 0.022592, + "after": "loop_broadcast_fusion.6", + "before": "loop_broadcast_fusion.8" + } + ], + "kernel_ms": 40.482717, + "sum_ms": 42.719764614999995, + "wall_ms": 42.50762151499657, + "host_outside_span_ms": 0.003660764996574528, + "reconciliation_pct": 0.4990707370643639, + "unjoined_ms": 0.0, + "unjoined_pct": 0.0, + "other_ms": 0.19523599999999963, + "other_pct": 0.4592964580037039, + "note": "Stage rows attribute the command-buffers-OFF program (see the module docstring): kernel times are the same, the launch overhead the CUDA graphs remove is not. sum_ms = kernel rows + device_idle_ms; the residual against wall_ms is host_outside_span_ms (dispatch before the first kernel, teardown after the last).", + "per_stage_ms_per_lane": { + "border_relocator": 0.10549999999999998, + "chi_squared_evidence": 0.010623, + "curvature_matrix_F": 4.3684835, + "data_vector_D": 0.117409, + "inversion_other": 1.8640055000000002, + "mapped_reconstruction": 0.111777, + "mapping_matrix": 0.141627, + "memset": 0.052029500000000006, + "mesh_construction": 0.3816715000000001, + "mixed_fusion": 0.991841, + "other": 0.19523599999999963, + "pdip_solve": 25.179315000000003, + "psf_convolution_mapping_matrix": 6.928319, + "ray_trace_data_grid": 0.012832000000000001, + "regularization_H": 0.022047999999999998 + }, + "per_lane_divisor": 1, + "host_callback": { + "pure_callback_span_ms": 0, + "qhull_ms": 0.0, + "callback_body_ms_note": "the OUTERMOST matching body event, not a sum: under the probe the body appears twice (the wrapper and the timed re-implementation it calls) and summing them would count the same work twice", + "events_by_name": { + "ThenExecuteCallback:GetEventForComputeStreamSyncPoint": { + "count": 200, + "ms": 0.38267579999999995 + } + }, + "note": "HOST milliseconds per traced BATCH (the whole invocation), aggregated by name because the events nest. Not a row of the device table: the device pays for them as the idle gaps largest_idle_gaps names." + }, + "host_callback_ms": 0 + }, + "hlo_census": { + "status": "excluded", + "reason": "The legacy census anchors PyAutoArray source line numbers that moved after the phase-1 run. No batched attribution is published from unsupported anchors; the device-event table and wall reconciliation remain valid." + }, + "stage_map_provenance": [ + { + "label": "log_det_curvature_reg", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 850, + 882 + ], + "requires": { + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 884, + 896 + ] + }, + "function": null + }, + { + "label": "log_det_regularization", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 850, + 882 + ], + "requires": { + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 897, + 943 + ] + }, + "function": null + }, + { + "label": "curvature_reg_add", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 359, + 372 + ], + "requires": null, + "function": null + }, + { + "label": "curvature_reg_reduce_gather", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 374, + 398 + ], + "requires": null, + "function": null + }, + { + "label": "edge_subset_gather", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 606, + 614 + ], + "requires": null, + "function": null + }, + { + "label": "regularization_term", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 786, + 849 + ], + "requires": null, + "function": null + }, + { + "label": "mapped_reconstruction", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 722, + 785 + ], + "requires": null, + "function": null + }, + { + "label": "reconstruction_scatter", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 583, + 605 + ], + "requires": null, + "function": null + }, + { + "label": "reconstruction_scatter", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 615, + 721 + ], + "requires": null, + "function": null + }, + { + "label": "certified_active_set_solve", + "path": "likelihood_breakdown/active_set_steps.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "certified_active_set_solve", + "path": "likelihood_breakdown/library_solver_injection.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "pdip_solve", + "path": "PyAutoArray/autoarray/util/jax_nnls.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "pdip_solve", + "path": "PyAutoArray/autoarray/inversion/inversion/inversion_util.py", + "lines": [ + 256, + 488 + ], + "requires": null, + "function": null + }, + { + "label": "mapped_reconstruction", + "path": "PyAutoArray/autoarray/inversion/inversion/inversion_util.py", + "lines": [ + 156, + 200 + ], + "requires": null, + "function": null + }, + { + "label": "curvature_matrix_F", + "path": "PyAutoArray/autoarray/inversion/inversion/inversion_util.py", + "lines": [ + 12, + 155 + ], + "requires": null, + "function": null + }, + { + "label": "reconstruction_scatter", + "path": "PyAutoArray/autoarray/inversion/inversion/inversion_util.py", + "lines": [ + 201, + 255 + ], + "requires": null, + "function": null + }, + { + "label": "data_vector_D", + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py", + "lines": [ + 54, + 73 + ], + "requires": null, + "function": null + }, + { + "label": "curvature_matrix_F", + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py", + "lines": [ + 74, + 110 + ], + "requires": null, + "function": null + }, + { + "label": "data_vector_D", + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py", + "lines": null, + "requires": null, + "function": "data_vector_via_blurred_mapping_matrix_from" + }, + { + "label": "curvature_matrix_F", + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "likelihood_breakdown/psf_cube_injection.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": [ + 1086, + 1300 + ], + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": [ + 632, + 642 + ], + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": [ + 670, + 691 + ], + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": null, + "requires": { + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": [ + 1086, + 1300 + ] + }, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": null, + "requires": { + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py", + "lines": [ + 119, + 150 + ] + }, + "function": null + }, + { + "label": "psf_convolution_image", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py", + "lines": [ + 119, + 150 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_qhull_callback", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 139, + 172 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_seed_argmin", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 173, + 207 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_locate_walk", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 208, + 372 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_dual_areas", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 373, + 396 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_dual_areas", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 437, + 494 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_dual_areas", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 605, + 615 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_interpolation_weights", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 616, + 695 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_interpolation_weights", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 896, + 1000 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_construction", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "border_relocator", + "path": "PyAutoArray/autoarray/inversion/mesh/border_relocator.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "mesh_construction", + "path": "PyAutoArray/autoarray/inversion/mesh/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "mapping_matrix", + "path": "PyAutoArray/autoarray/inversion/mappers/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "mapping_matrix", + "path": "PyAutoArray/autoarray/inversion/mappings/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "mapping_matrix", + "path": "PyAutoArray/autoarray/inversion/linear_obj/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "regularization_H", + "path": "PyAutoArray/autoarray/inversion/regularization/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "chi_squared_evidence", + "path": "PyAutoArray/autoarray/fit/fit_util.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "chi_squared_evidence", + "path": "PyAutoArray/autoarray/fit/fit_dataset.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "ray_trace_mesh_grid", + "path": "PyAutoLens/autolens/lens/to_inversion.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "ray_trace_mesh_grid", + "path": "PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "mass_profile_deflections", + "path": "PyAutoGalaxy/autogalaxy/profiles/mass/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "light_profile_image", + "path": "PyAutoGalaxy/autogalaxy/profiles/light/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "light_profile_image", + "path": "PyAutoGalaxy/autogalaxy/operate/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "ray_trace_data_grid", + "path": "PyAutoLens/autolens/lens/tracer.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "ray_trace_data_grid", + "path": "PyAutoLens/autolens/lens/tracer_util.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "grids_and_structures", + "path": "PyAutoArray/autoarray/structures/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "grids_and_structures", + "path": "PyAutoArray/autoarray/operators/over_sampling/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "grids_and_structures", + "path": "PyAutoArray/autoarray/geometry/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "inversion_other", + "path": "PyAutoArray/autoarray/inversion/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "fit_imaging_other", + "path": "PyAutoLens/autolens/imaging/fit_imaging.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "fit_imaging_other", + "path": "PyAutoGalaxy/autogalaxy/imaging/fit_imaging.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "fit_imaging_other", + "path": "PyAutoArray/autoarray/fit/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "analysis_other", + "path": "PyAutoLens/autolens/analysis/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "analysis_other", + "path": "PyAutoGalaxy/autogalaxy/analysis/", + "lines": null, + "requires": null, + "function": null + } + ], + "trace_timing": { + "traced_wall_ms": 42.50762151499657, + "untraced_wall_ms": 41.42465203000029, + "profiler_overhead_ms": 1.0829694849962834, + "profiler_overhead_pct": 2.6143116041433068 + }, + "jit_phases": { + "b_s3_pdip_library_likelihood_jit": { + "lower_s": 1.2792975429983926, + "compile_s": 3.4006325119989924, + "first_call_s": 0.10637811999913538, + "steady_per_call_s": 0.03898790880011802 + }, + "d_s3_certified_fallback_library_likelihood_jit": { + "lower_s": 0.4771483149997948, + "compile_s": 3.835180104997562, + "first_call_s": 0.040652450999914436, + "steady_per_call_s": 0.03030649190004624 + } + }, + "peak_bytes": { + "after_setup": 85616640, + "after_routes": 1197479168, + "after_all": 23941737472, + "note": "jax.devices()[0].memory_stats()['peak_bytes_in_use']; None on a backend that does not report it (CPU). Process-wide high-water marks." + }, + "note": "Every stage row is a MEASURED sum of GPU kernel durations joined to library source through the optimized HLO of ONE program \u2014 not arithmetic across compilations. The rows attribute the command-buffers-OFF program: kernel time is the same as production, the launch overhead the CUDA graphs remove is not, and command_buffers.* carries both walls and their delta. sum_ms = kernel rows + measured device_idle_ms; the residual against the wall is host_outside_span_ms and is reported, not absorbed. mixed_fusion.prorated_estimate_ms is an ESTIMATE and is never part of the table. No row may be quoted if reconciliation_pct is outside 5 % or unjoined_ms is non-zero.", + "vmap": { + "batch": 20, + "lanes_mode": "captured", + "arms": [ + "vmap", + "scalar" + ], + "draw_seed": 0, + "fallback": true, + "composition": "jax.jit(jax.vmap(fn))", + "composition_provenance": "Current Fitness._vmap after PyAutoFit#1638. Array 343376 used the retired jax.vmap(jax.jit(fn)) composition and is historical evidence only.", + "headline_arm": "scalar", + "lane_rtol": 1e-09, + "lanes": [ + { + "lane": 0, + "draw_name": "call00015_lane00", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.0017002711605432041, + "centre_1": -0.009377257327484623, + "ell_comps_0": -0.002548851608736212, + "ell_comps_1": -0.004262475027349674, + "einstein_radius": -0.0230617600435421 + }, + "log_likelihood_vmap": 18463.07897110663, + "log_likelihood_scalar": 18463.078970707007, + "log_likelihood_library_pdip": 18463.07897110663, + "log_likelihood_library_pdip_scalar": 18463.078970707007, + "rel_diff_vmap_vs_library_pdip": 0.0, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 3.996246960014105e-07, + "rel_diff": 2.1644531588444352e-11, + "rel_diff_scalar_vs_library_pdip": 2.1644531587975868e-11, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 3.996246960014105e-07, + "rel_diff_library_pdip_vmap_vs_scalar": 2.1644531588444352e-11, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 1, + "draw_name": "call00015_lane01", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.00044835385344320865, + "centre_1": -0.003464237160596487, + "ell_comps_0": -0.0010036884316776545, + "ell_comps_1": 0.0020035511501456356, + "einstein_radius": -0.05761540720338343 + }, + "log_likelihood_vmap": 15734.21749647698, + "log_likelihood_scalar": 15734.21749633948, + "log_likelihood_library_pdip": 15734.21749647698, + "log_likelihood_library_pdip_scalar": 15734.21749633948, + "rel_diff_vmap_vs_library_pdip": 0.0, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 1.3750104699283838e-07, + "rel_diff": 8.738982222968992e-12, + "rel_diff_scalar_vs_library_pdip": 8.738982222892622e-12, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 1.3750104699283838e-07, + "rel_diff_library_pdip_vmap_vs_scalar": 8.738982222968992e-12, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 2, + "draw_name": "call00015_lane02", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.0017572218110215735, + "centre_1": 0.0022774942133795186, + "ell_comps_0": 0.0023932647815035485, + "ell_comps_1": -0.011727950927316913, + "einstein_radius": -0.027234805142873908 + }, + "log_likelihood_vmap": 18706.16598662583, + "log_likelihood_scalar": 18706.16598652238, + "log_likelihood_library_pdip": 18706.16598662583, + "log_likelihood_library_pdip_scalar": 18706.16598652238, + "rel_diff_vmap_vs_library_pdip": 0.0, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 1.0344956535845995e-07, + "rel_diff": 5.530238822482085e-12, + "rel_diff_scalar_vs_library_pdip": 5.530238822451501e-12, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 1.0344956535845995e-07, + "rel_diff_library_pdip_vmap_vs_scalar": 5.530238822482085e-12, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 3, + "draw_name": "call00015_lane03", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.002862791114730316, + "centre_1": 0.0038524808804676603, + "ell_comps_0": 0.006111415425061918, + "ell_comps_1": -0.022191169695991525, + "einstein_radius": -0.03531000166767062 + }, + "log_likelihood_vmap": -22166.22177885171, + "log_likelihood_scalar": -22166.22174959407, + "log_likelihood_library_pdip": -22166.22175941304, + "log_likelihood_library_pdip_scalar": -22166.221747848853, + "rel_diff_vmap_vs_library_pdip": 8.76949930924791e-10, + "rel_diff_scalar_vs_library_pdip_scalar": 7.873324056523153e-11, + "abs_diff_nats": 2.9257636924739927e-05, + "rel_diff": 1.3199198878029684e-09, + "rel_diff_scalar_vs_library_pdip": 4.4296995629349265e-10, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 1.1564188753254712e-05, + "rel_diff_library_pdip_vmap_vs_scalar": 5.21703197089823e-10, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 4, + "draw_name": "call00015_lane04", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.0017545152650242774, + "centre_1": 0.005096768299803747, + "ell_comps_0": 0.00015519416981613077, + "ell_comps_1": 0.007279341501820333, + "einstein_radius": -0.03249658545615719 + }, + "log_likelihood_vmap": -194384.92380559124, + "log_likelihood_scalar": -194385.01018374675, + "log_likelihood_library_pdip": -194384.06795689592, + "log_likelihood_library_pdip_scalar": NaN, + "rel_diff_vmap_vs_library_pdip": 4.402874702241095e-06, + "rel_diff_scalar_vs_library_pdip_scalar": NaN, + "abs_diff_nats": 0.08637815550900996, + "rel_diff": 4.443663399114936e-07, + "rel_diff_scalar_vs_library_pdip": 4.847243196104306e-06, + "abs_diff_library_pdip_vmap_vs_scalar_nats": NaN, + "rel_diff_library_pdip_vmap_vs_scalar": NaN, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 5, + "draw_name": "call00015_lane05", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.0009851407640018856, + "centre_1": 0.002274591191563648, + "ell_comps_0": 0.006006903437417319, + "ell_comps_1": 0.008497457839948512, + "einstein_radius": -0.07242218866013372 + }, + "log_likelihood_vmap": 14761.660929764937, + "log_likelihood_scalar": 14761.66092976493, + "log_likelihood_library_pdip": 14761.660929764937, + "log_likelihood_library_pdip_scalar": 14761.66092976493, + "rel_diff_vmap_vs_library_pdip": 0.0, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 7.275957614183426e-12, + "rel_diff": 4.928955927657451e-16, + "rel_diff_scalar_vs_library_pdip": 4.928955927657449e-16, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 7.275957614183426e-12, + "rel_diff_library_pdip_vmap_vs_scalar": 4.928955927657451e-16, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 6, + "draw_name": "call00015_lane06", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.002713857824416392, + "centre_1": 0.00891817739575143, + "ell_comps_0": 0.001298959041684998, + "ell_comps_1": -0.0098959428603974, + "einstein_radius": 0.04379561090121875 + }, + "log_likelihood_vmap": 21597.126871220647, + "log_likelihood_scalar": 21597.126871230867, + "log_likelihood_library_pdip": 21597.126871220735, + "log_likelihood_library_pdip_scalar": 21597.126871231594, + "rel_diff_vmap_vs_library_pdip": 4.042736420025762e-15, + "rel_diff_scalar_vs_library_pdip_scalar": 3.3689470166864415e-14, + "abs_diff_nats": 1.0219082469120622e-08, + "rel_diff": 4.731686084936266e-13, + "rel_diff_scalar_vs_library_pdip": 4.691258720738228e-13, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 1.0859366739168763e-08, + "rel_diff_library_pdip_vmap_vs_scalar": 5.028153422404514e-13, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 7, + "draw_name": "call00015_lane07", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.01063269420288399, + "centre_1": -0.0015469073410711704, + "ell_comps_0": -0.012689283848227026, + "ell_comps_1": 0.0004952469855790744, + "einstein_radius": 0.02732727396499479 + }, + "log_likelihood_vmap": 7413.159095267612, + "log_likelihood_scalar": 7413.159096700969, + "log_likelihood_library_pdip": 7413.159095290037, + "log_likelihood_library_pdip_scalar": 7413.159096744621, + "rel_diff_vmap_vs_library_pdip": 3.0249588709300414e-12, + "rel_diff_scalar_vs_library_pdip_scalar": 5.888462278580078e-12, + "abs_diff_nats": 1.4333563740365207e-06, + "rel_diff": 1.933529761521506e-10, + "rel_diff_scalar_vs_library_pdip": 1.9032801731802105e-10, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 1.4545839803759009e-06, + "rel_diff_library_pdip_vmap_vs_scalar": 1.9621647955925563e-10, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 8, + "draw_name": "call00015_lane08", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.003586333218755102, + "centre_1": 0.0002442650473125539, + "ell_comps_0": -0.0025095685188555317, + "ell_comps_1": 0.008402687166147546, + "einstein_radius": 0.003809182535237543 + }, + "log_likelihood_vmap": 19060.202679471306, + "log_likelihood_scalar": 19060.20267912919, + "log_likelihood_library_pdip": 19060.202679471306, + "log_likelihood_library_pdip_scalar": 19060.20267912919, + "rel_diff_vmap_vs_library_pdip": 0.0, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 3.421155270189047e-07, + "rel_diff": 1.7949207192508986e-11, + "rel_diff_scalar_vs_library_pdip": 1.7949207192186812e-11, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 3.421155270189047e-07, + "rel_diff_library_pdip_vmap_vs_scalar": 1.7949207192508986e-11, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 9, + "draw_name": "call00015_lane09", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.004569070502203608, + "centre_1": -0.0008437281377326854, + "ell_comps_0": 0.016330335737132294, + "ell_comps_1": 0.007271610957481866, + "einstein_radius": -0.0644363448871137 + }, + "log_likelihood_vmap": 12782.703321755558, + "log_likelihood_scalar": 12782.70332143049, + "log_likelihood_library_pdip": 12782.703321755558, + "log_likelihood_library_pdip_scalar": 12782.70332143049, + "rel_diff_vmap_vs_library_pdip": 0.0, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 3.250679583288729e-07, + "rel_diff": 2.543029828314087e-11, + "rel_diff_scalar_vs_library_pdip": 2.543029828249417e-11, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 3.250679583288729e-07, + "rel_diff_library_pdip_vmap_vs_scalar": 2.543029828314087e-11, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 10, + "draw_name": "call00015_lane10", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.00041413552102611065, + "centre_1": -0.004015077828810355, + "ell_comps_0": 0.005329766760357603, + "ell_comps_1": 0.01667480963359283, + "einstein_radius": 0.011021193939315443 + }, + "log_likelihood_vmap": 25442.236800481307, + "log_likelihood_scalar": 25442.236800481303, + "log_likelihood_library_pdip": 25442.23680048129, + "log_likelihood_library_pdip_scalar": 25442.23680048131, + "rel_diff_vmap_vs_library_pdip": 7.149486964571632e-16, + "rel_diff_scalar_vs_library_pdip_scalar": 2.8597947858286504e-16, + "abs_diff_nats": 3.637978807091713e-12, + "rel_diff": 1.4298973929143257e-16, + "rel_diff_scalar_vs_library_pdip": 5.719589571657306e-16, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 2.1827872842550278e-11, + "rel_diff_library_pdip_vmap_vs_scalar": 8.579384357485952e-16, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 11, + "draw_name": "call00015_lane11", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.00234856906735493, + "centre_1": -0.0005637310462631455, + "ell_comps_0": 0.002190699592912508, + "ell_comps_1": -0.01675931647125419, + "einstein_radius": -0.1186639473801736 + }, + "log_likelihood_vmap": -3234.481431636159, + "log_likelihood_scalar": -3234.481430921878, + "log_likelihood_library_pdip": -3234.481431636159, + "log_likelihood_library_pdip_scalar": -3234.481430921878, + "rel_diff_vmap_vs_library_pdip": 0.0, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 7.142807589843869e-07, + "rel_diff": 2.208331611230817e-10, + "rel_diff_scalar_vs_library_pdip": 2.208331610743144e-10, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 7.142807589843869e-07, + "rel_diff_library_pdip_vmap_vs_scalar": 2.208331611230817e-10, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 12, + "draw_name": "call00015_lane12", + "draw_kind": "captured", + "offsets": { + "centre_0": -9.326736988388313e-05, + "centre_1": -0.0013488200741109593, + "ell_comps_0": 0.00997667014421897, + "ell_comps_1": -0.014348588092779897, + "einstein_radius": -0.02126731799195114 + }, + "log_likelihood_vmap": 18883.933556142838, + "log_likelihood_scalar": 18883.93355609074, + "log_likelihood_library_pdip": 18883.933556142838, + "log_likelihood_library_pdip_scalar": 18883.93355609074, + "rel_diff_vmap_vs_library_pdip": 0.0, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 5.209949449636042e-08, + "rel_diff": 2.7589323136310487e-12, + "rel_diff_scalar_vs_library_pdip": 2.7589323136234372e-12, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 5.209949449636042e-08, + "rel_diff_library_pdip_vmap_vs_scalar": 2.7589323136310487e-12, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 13, + "draw_name": "call00015_lane13", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.007013568613743564, + "centre_1": 0.004528745612839986, + "ell_comps_0": -0.018496405934026655, + "ell_comps_1": 0.0014830576999261711, + "einstein_radius": -0.04673040108359361 + }, + "log_likelihood_vmap": 23869.48806781581, + "log_likelihood_scalar": 23869.4880678158, + "log_likelihood_library_pdip": 23869.488067815808, + "log_likelihood_library_pdip_scalar": 23869.4880678158, + "rel_diff_vmap_vs_library_pdip": 1.524112623092636e-16, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 1.0913936421275139e-11, + "rel_diff": 4.57233786927791e-16, + "rel_diff_scalar_vs_library_pdip": 3.048225246185272e-16, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 7.275957614183426e-12, + "rel_diff_library_pdip_vmap_vs_scalar": 3.048225246185273e-16, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 14, + "draw_name": "call00015_lane14", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.005108692197125562, + "centre_1": -0.010240010499870703, + "ell_comps_0": -0.00684600823433492, + "ell_comps_1": -0.002573928604858717, + "einstein_radius": -0.0214638151942923 + }, + "log_likelihood_vmap": -177848.1078674859, + "log_likelihood_scalar": -177848.57703967043, + "log_likelihood_library_pdip": -177848.2636271419, + "log_likelihood_library_pdip_scalar": -177848.6982096522, + "rel_diff_vmap_vs_library_pdip": 8.758008248731738e-07, + "rel_diff_scalar_vs_library_pdip_scalar": 6.813093545205072e-07, + "abs_diff_nats": 0.46917218453017995, + "rel_diff": 2.638042948330858e-06, + "rel_diff_scalar_vs_library_pdip": 1.7622467723403553e-06, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 0.43458251032279804, + "rel_diff_library_pdip_vmap_vs_scalar": 2.4435518207195536e-06, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 15, + "draw_name": "call00015_lane15", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.0015375882948530809, + "centre_1": 0.00010861850037634777, + "ell_comps_0": 0.010624594413718456, + "ell_comps_1": -0.00030576693661378264, + "einstein_radius": 0.018140577124415858 + }, + "log_likelihood_vmap": 25794.985439580305, + "log_likelihood_scalar": 25794.985439526637, + "log_likelihood_library_pdip": 25794.985439566757, + "log_likelihood_library_pdip_scalar": 25794.985439523887, + "rel_diff_vmap_vs_library_pdip": 5.252118908673082e-13, + "rel_diff_scalar_vs_library_pdip_scalar": 1.0662196280782622e-13, + "abs_diff_nats": 5.366746336221695e-08, + "rel_diff": 2.0805386181757736e-12, + "rel_diff_scalar_vs_library_pdip": 1.5553267273052295e-12, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 4.2869942262768745e-08, + "rel_diff_library_pdip_vmap_vs_scalar": 1.6619486901156407e-12, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 16, + "draw_name": "call00015_lane16", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.001227759218702405, + "centre_1": 0.016003430753678986, + "ell_comps_0": 0.012636219938870381, + "ell_comps_1": -0.00698902153230205, + "einstein_radius": -0.05127757912787545 + }, + "log_likelihood_vmap": 16088.259041843845, + "log_likelihood_scalar": 16088.259041698664, + "log_likelihood_library_pdip": 16088.259041843845, + "log_likelihood_library_pdip_scalar": 16088.259041698664, + "rel_diff_vmap_vs_library_pdip": 0.0, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 1.45180820254609e-07, + "rel_diff": 9.024023039305824e-12, + "rel_diff_scalar_vs_library_pdip": 9.024023039224392e-12, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 1.45180820254609e-07, + "rel_diff_library_pdip_vmap_vs_scalar": 9.024023039305824e-12, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 17, + "draw_name": "call00015_lane17", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.005083750984013619, + "centre_1": 0.0010204202759534836, + "ell_comps_0": -0.00849477917205129, + "ell_comps_1": 0.011231146696452643, + "einstein_radius": 0.01601143147676365 + }, + "log_likelihood_vmap": NaN, + "log_likelihood_scalar": NaN, + "log_likelihood_library_pdip": NaN, + "log_likelihood_library_pdip_scalar": NaN, + "rel_diff_vmap_vs_library_pdip": NaN, + "rel_diff_scalar_vs_library_pdip_scalar": NaN, + "abs_diff_nats": NaN, + "rel_diff": NaN, + "rel_diff_scalar_vs_library_pdip": NaN, + "abs_diff_library_pdip_vmap_vs_scalar_nats": NaN, + "rel_diff_library_pdip_vmap_vs_scalar": NaN, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 18, + "draw_name": "call00015_lane18", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.0024988577690690035, + "centre_1": -0.001222125045613948, + "ell_comps_0": -0.01895695410631662, + "ell_comps_1": -0.0031279904204321676, + "einstein_radius": 0.01799244839027403 + }, + "log_likelihood_vmap": 18620.968710658402, + "log_likelihood_scalar": 18620.968710155976, + "log_likelihood_library_pdip": 18620.968710658402, + "log_likelihood_library_pdip_scalar": 18620.968710155976, + "rel_diff_vmap_vs_library_pdip": 0.0, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 5.024267011322081e-07, + "rel_diff": 2.6981770333902228e-11, + "rel_diff_scalar_vs_library_pdip": 2.6981770333174212e-11, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 5.024267011322081e-07, + "rel_diff_library_pdip_vmap_vs_scalar": 2.6981770333902228e-11, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 19, + "draw_name": "call00015_lane19", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.010541543200940506, + "centre_1": -0.008441200101276233, + "ell_comps_0": 0.007996538161425107, + "ell_comps_1": 0.0034133978687523603, + "einstein_radius": -0.09425697178670522 + }, + "log_likelihood_vmap": 7217.440786725896, + "log_likelihood_scalar": 7217.440786173451, + "log_likelihood_library_pdip": 7217.440786725896, + "log_likelihood_library_pdip_scalar": 7217.440786173451, + "rel_diff_vmap_vs_library_pdip": 0.0, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 5.524452717509121e-07, + "rel_diff": 7.654309721657004e-11, + "rel_diff_scalar_vs_library_pdip": 7.654309721071118e-11, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 5.524452717509121e-07, + "rel_diff_library_pdip_vmap_vs_scalar": 7.654309721657004e-11, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + } + ], + "lane_pins": [ + { + "pin": "lane 0: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 18463.07897110663, + "reference_value": 18463.07897110663, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 0: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 18463.078970707007, + "reference_value": 18463.078970707007, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 0: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 18463.07897110663, + "reference_value": 18463.078970707007, + "rel_diff": 2.1644531588444352e-11, + "abs_diff_nats": 3.996246960014105e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 0: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 18463.07897110663, + "reference_value": 18463.078970707007, + "rel_diff": 2.1644531588444352e-11, + "abs_diff_nats": 3.996246960014105e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 1: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 15734.21749647698, + "reference_value": 15734.21749647698, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 1: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 15734.21749633948, + "reference_value": 15734.21749633948, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 1: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 15734.21749647698, + "reference_value": 15734.21749633948, + "rel_diff": 8.738982222968992e-12, + "abs_diff_nats": 1.3750104699283838e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 1: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 15734.21749647698, + "reference_value": 15734.21749633948, + "rel_diff": 8.738982222968992e-12, + "abs_diff_nats": 1.3750104699283838e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 2: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 18706.16598662583, + "reference_value": 18706.16598662583, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 2: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 18706.16598652238, + "reference_value": 18706.16598652238, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 2: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 18706.16598662583, + "reference_value": 18706.16598652238, + "rel_diff": 5.530238822482085e-12, + "abs_diff_nats": 1.0344956535845995e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 2: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 18706.16598662583, + "reference_value": 18706.16598652238, + "rel_diff": 5.530238822482085e-12, + "abs_diff_nats": 1.0344956535845995e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 3: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -22166.22177885171, + "reference_value": -22166.22175941304, + "rel_diff": 8.76949930924791e-10, + "abs_diff_nats": 1.9438666640780866e-05, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 3: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -22166.22174959407, + "reference_value": -22166.221747848853, + "rel_diff": 7.873324056523153e-11, + "abs_diff_nats": 1.7452184692956507e-06, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 3: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -22166.22177885171, + "reference_value": -22166.22174959407, + "rel_diff": 1.3199198878029684e-09, + "abs_diff_nats": 2.9257636924739927e-05, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 3: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -22166.22175941304, + "reference_value": -22166.221747848853, + "rel_diff": 5.21703197089823e-10, + "abs_diff_nats": 1.1564188753254712e-05, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 4: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -194384.92380559124, + "reference_value": -194384.06795689592, + "rel_diff": 4.402874702241095e-06, + "abs_diff_nats": 0.8558486953261308, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 4: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -194385.01018374675, + "reference_value": NaN, + "rel_diff": NaN, + "abs_diff_nats": NaN, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 4: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -194384.92380559124, + "reference_value": -194385.01018374675, + "rel_diff": 4.443663399114936e-07, + "abs_diff_nats": 0.08637815550900996, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 4: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -194384.06795689592, + "reference_value": NaN, + "rel_diff": NaN, + "abs_diff_nats": NaN, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 5: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 14761.660929764937, + "reference_value": 14761.660929764937, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 5: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 14761.66092976493, + "reference_value": 14761.66092976493, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 5: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 14761.660929764937, + "reference_value": 14761.66092976493, + "rel_diff": 4.928955927657451e-16, + "abs_diff_nats": 7.275957614183426e-12, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 5: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 14761.660929764937, + "reference_value": 14761.66092976493, + "rel_diff": 4.928955927657451e-16, + "abs_diff_nats": 7.275957614183426e-12, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 6: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 21597.126871220647, + "reference_value": 21597.126871220735, + "rel_diff": 4.042736420025762e-15, + "abs_diff_nats": 8.731149137020111e-11, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 6: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 21597.126871230867, + "reference_value": 21597.126871231594, + "rel_diff": 3.3689470166864415e-14, + "abs_diff_nats": 7.275957614183426e-10, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 6: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 21597.126871220647, + "reference_value": 21597.126871230867, + "rel_diff": 4.731686084936266e-13, + "abs_diff_nats": 1.0219082469120622e-08, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 6: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 21597.126871220735, + "reference_value": 21597.126871231594, + "rel_diff": 5.028153422404514e-13, + "abs_diff_nats": 1.0859366739168763e-08, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 7: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 7413.159095267612, + "reference_value": 7413.159095290037, + "rel_diff": 3.0249588709300414e-12, + "abs_diff_nats": 2.242450136691332e-08, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 7: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 7413.159096700969, + "reference_value": 7413.159096744621, + "rel_diff": 5.888462278580078e-12, + "abs_diff_nats": 4.3652107706293464e-08, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 7: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 7413.159095267612, + "reference_value": 7413.159096700969, + "rel_diff": 1.933529761521506e-10, + "abs_diff_nats": 1.4333563740365207e-06, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 7: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 7413.159095290037, + "reference_value": 7413.159096744621, + "rel_diff": 1.9621647955925563e-10, + "abs_diff_nats": 1.4545839803759009e-06, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 8: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 19060.202679471306, + "reference_value": 19060.202679471306, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 8: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 19060.20267912919, + "reference_value": 19060.20267912919, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 8: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 19060.202679471306, + "reference_value": 19060.20267912919, + "rel_diff": 1.7949207192508986e-11, + "abs_diff_nats": 3.421155270189047e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 8: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 19060.202679471306, + "reference_value": 19060.20267912919, + "rel_diff": 1.7949207192508986e-11, + "abs_diff_nats": 3.421155270189047e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 9: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 12782.703321755558, + "reference_value": 12782.703321755558, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 9: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 12782.70332143049, + "reference_value": 12782.70332143049, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 9: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 12782.703321755558, + "reference_value": 12782.70332143049, + "rel_diff": 2.543029828314087e-11, + "abs_diff_nats": 3.250679583288729e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 9: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 12782.703321755558, + "reference_value": 12782.70332143049, + "rel_diff": 2.543029828314087e-11, + "abs_diff_nats": 3.250679583288729e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 10: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 25442.236800481307, + "reference_value": 25442.23680048129, + "rel_diff": 7.149486964571632e-16, + "abs_diff_nats": 1.8189894035458565e-11, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 10: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 25442.236800481303, + "reference_value": 25442.23680048131, + "rel_diff": 2.8597947858286504e-16, + "abs_diff_nats": 7.275957614183426e-12, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 10: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 25442.236800481307, + "reference_value": 25442.236800481303, + "rel_diff": 1.4298973929143257e-16, + "abs_diff_nats": 3.637978807091713e-12, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 10: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 25442.23680048129, + "reference_value": 25442.23680048131, + "rel_diff": 8.579384357485952e-16, + "abs_diff_nats": 2.1827872842550278e-11, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 11: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -3234.481431636159, + "reference_value": -3234.481431636159, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 11: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -3234.481430921878, + "reference_value": -3234.481430921878, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 11: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -3234.481431636159, + "reference_value": -3234.481430921878, + "rel_diff": 2.208331611230817e-10, + "abs_diff_nats": 7.142807589843869e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 11: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -3234.481431636159, + "reference_value": -3234.481430921878, + "rel_diff": 2.208331611230817e-10, + "abs_diff_nats": 7.142807589843869e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 12: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 18883.933556142838, + "reference_value": 18883.933556142838, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 12: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 18883.93355609074, + "reference_value": 18883.93355609074, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 12: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 18883.933556142838, + "reference_value": 18883.93355609074, + "rel_diff": 2.7589323136310487e-12, + "abs_diff_nats": 5.209949449636042e-08, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 12: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 18883.933556142838, + "reference_value": 18883.93355609074, + "rel_diff": 2.7589323136310487e-12, + "abs_diff_nats": 5.209949449636042e-08, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 13: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 23869.48806781581, + "reference_value": 23869.488067815808, + "rel_diff": 1.524112623092636e-16, + "abs_diff_nats": 3.637978807091713e-12, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 13: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 23869.4880678158, + "reference_value": 23869.4880678158, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 13: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 23869.48806781581, + "reference_value": 23869.4880678158, + "rel_diff": 4.57233786927791e-16, + "abs_diff_nats": 1.0913936421275139e-11, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 13: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 23869.488067815808, + "reference_value": 23869.4880678158, + "rel_diff": 3.048225246185273e-16, + "abs_diff_nats": 7.275957614183426e-12, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 14: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -177848.1078674859, + "reference_value": -177848.2636271419, + "rel_diff": 8.758008248731738e-07, + "abs_diff_nats": 0.15575965598691255, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 14: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -177848.57703967043, + "reference_value": -177848.6982096522, + "rel_diff": 6.813093545205072e-07, + "abs_diff_nats": 0.12116998177953064, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 14: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -177848.1078674859, + "reference_value": -177848.57703967043, + "rel_diff": 2.638042948330858e-06, + "abs_diff_nats": 0.46917218453017995, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 14: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -177848.2636271419, + "reference_value": -177848.6982096522, + "rel_diff": 2.4435518207195536e-06, + "abs_diff_nats": 0.43458251032279804, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 15: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 25794.985439580305, + "reference_value": 25794.985439566757, + "rel_diff": 5.252118908673082e-13, + "abs_diff_nats": 1.3547833077609539e-08, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 15: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 25794.985439526637, + "reference_value": 25794.985439523887, + "rel_diff": 1.0662196280782622e-13, + "abs_diff_nats": 2.750311978161335e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 15: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 25794.985439580305, + "reference_value": 25794.985439526637, + "rel_diff": 2.0805386181757736e-12, + "abs_diff_nats": 5.366746336221695e-08, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 15: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 25794.985439566757, + "reference_value": 25794.985439523887, + "rel_diff": 1.6619486901156407e-12, + "abs_diff_nats": 4.2869942262768745e-08, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 16: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 16088.259041843845, + "reference_value": 16088.259041843845, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 16: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 16088.259041698664, + "reference_value": 16088.259041698664, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 16: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 16088.259041843845, + "reference_value": 16088.259041698664, + "rel_diff": 9.024023039305824e-12, + "abs_diff_nats": 1.45180820254609e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 16: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 16088.259041843845, + "reference_value": 16088.259041698664, + "rel_diff": 9.024023039305824e-12, + "abs_diff_nats": 1.45180820254609e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 17: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": NaN, + "reference_value": NaN, + "rel_diff": NaN, + "abs_diff_nats": NaN, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 17: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": NaN, + "reference_value": NaN, + "rel_diff": NaN, + "abs_diff_nats": NaN, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 17: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": NaN, + "reference_value": NaN, + "rel_diff": NaN, + "abs_diff_nats": NaN, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 17: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": NaN, + "reference_value": NaN, + "rel_diff": NaN, + "abs_diff_nats": NaN, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 18: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 18620.968710658402, + "reference_value": 18620.968710658402, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 18: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 18620.968710155976, + "reference_value": 18620.968710155976, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 18: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 18620.968710658402, + "reference_value": 18620.968710155976, + "rel_diff": 2.6981770333902228e-11, + "abs_diff_nats": 5.024267011322081e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 18: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 18620.968710658402, + "reference_value": 18620.968710155976, + "rel_diff": 2.6981770333902228e-11, + "abs_diff_nats": 5.024267011322081e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 19: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 7217.440786725896, + "reference_value": 7217.440786725896, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 19: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 7217.440786173451, + "reference_value": 7217.440786173451, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 19: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 7217.440786725896, + "reference_value": 7217.440786173451, + "rel_diff": 7.654309721657004e-11, + "abs_diff_nats": 5.524452717509121e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 19: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 7217.440786725896, + "reference_value": 7217.440786173451, + "rel_diff": 7.654309721657004e-11, + "abs_diff_nats": 5.524452717509121e-07, + "within_rtol": true, + "status": "RECORDED" + } + ], + "lanes_failed": 3, + "arm_rows": { + "vmap": { + "arm": "vmap", + "program": "jax.jit(jax.vmap(fn))", + "stands_for": "Nautilus(use_jax_vmap=True) \u2014 Fitness._vmap", + "hlo_source": "jax.jit(jax.vmap(fn)).lower(batched_tree) \u2014 the exact current Fitness._vmap composition (PyAutoFit#1638)", + "batch_wall_ms": 612.6601225998456, + "wall_production_nesting_ms": 612.6601225998456, + "wall_aot_command_buffers_on_ms": 613.2435868999892, + "wall_aot_command_buffers_off_ms": 614.4339546000992, + "command_buffer_delta_ms": 1.1903677001100732, + "production_nesting_vs_aot_on_delta_ms": -0.5834643001435325, + "production_nesting_vs_aot_on_delta_pct": -0.09514397094521704, + "wall_per_lane_ms": 30.633006129992282, + "wall_per_lane_command_buffers_off_ms": 30.721697730004962, + "traced_batch_wall_ms": 620.9592326998973, + "untraced_batch_wall_ms": 615.4794131998642, + "traced_wall_per_lane_ms": 31.047961634994863, + "callback_count_per_call": 0.0, + "callback_count_per_lane": 0.0, + "callback_expectation": "0 \u2014 the rectangular mesh has no qhull host callback (asserted)", + "host_qhull_ms": 0.0, + "host_tables_ms": 0.0, + "host_qhull_ms_per_lane": 0.0, + "host_tables_ms_per_lane": 0.0, + "host_callback_probe": { + "calls": 0, + "qhull_ms_total": 0.0, + "tables_ms_total": 0.0, + "total_ms_total": 0.0, + "qhull_ms_mean": 0.0, + "tables_ms_mean": 0.0, + "total_ms_mean": 0.0, + "non_finite_calls": 0, + "n_points": [] + }, + "host_callback_records_first": [], + "device_idle_ms": 16.582043099999964, + "device_idle_ms_per_lane": 0.8291021549999982, + "trace": { + "parser": "ProfileData.from_file(xplane) + as_text() + stack_frame_index(proto field 17)", + "stage_audit": { + "mesh_construction": [ + { + "instruction": "fusion.4", + "ms": 0.5155019999999998, + "opcode": "fusion", + "shape": "(f64[20,15361,2]{2,1,0}, s64[20,15361,2]{2,1,0}, s32[20,15361,2]{2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:227", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:227 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_select_fusion", + "ms": 0.21474780000000002, + "opcode": "fusion", + "shape": "(u32[20,2,15361]{2,1,0}, u32[20,2,15361]{2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69 (forward_interp)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:573 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/abstract.py:36 (AbstractInterpolator.mappings)" + ] + }, + { + "instruction": "loop_select_fusion.1", + "ms": 0.09111300000000004, + "opcode": "fusion", + "shape": "(u32[20,15361]{1,0}, u32[20,15361]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_select_fusion.4", + "ms": 0.08749710000000006, + "opcode": "fusion", + "shape": "(u32[20,15361]{1,0}, u32[20,15361]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_subtract_transpose_fusion", + "ms": 0.059503799999999996, + "opcode": "fusion", + "shape": "(f64[20,15361,2]{2,1,0}, f64[614440,1,1,1]{3,2,1,0}, f64[614440,1,1,1]{3,2,1,0}, f64[20,15361,2]{2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69 (forward_interp)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:573 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/abstract.py:36 (AbstractInterpolator.mappings)" + ] + }, + { + "instruction": "loop_gather_fusion", + "ms": 0.0265917, + "opcode": "fusion", + "shape": "(f64[614440,1,1,1]{3,2,1,0}, f64[614440,1,1,1]{3,2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69 (forward_interp)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:573 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/abstract.py:36 (AbstractInterpolator.mappings)" + ] + } + ], + "mixed_fusion": [ + { + "instruction": "loop_divide_gather_fusion", + "ms": 21.5046171, + "opcode": "fusion", + "shape": "(f64[15361,20,1,1,1521]{4,3,2,1,0}, f64[15361,20,1,1,1521]{4,3,2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_add_multiply_fusion", + "ms": 2.5566199, + "opcode": "fusion", + "shape": "(f64[20,1369,1369]{2,1,0}, f64[20,1369,1369]{2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:61", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:61 (initialize)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:72 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:508 (reconstruction_positive_only_from)" + ] + }, + { + "instruction": "input_transpose_fusion.3", + "ms": 0.6032725999999999, + "opcode": "fusion", + "shape": "f64[20,1521,1521]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1078 (AbstractInversion.log_det_curvature_reg_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:347 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "input_transpose_fusion.4", + "ms": 0.5736407, + "opcode": "fusion", + "shape": "f64[20,1521,1521]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1157 (AbstractInversion.log_det_regularization_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:348 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "input_transpose_fusion.5", + "ms": 0.38489870000000004, + "opcode": "fusion", + "shape": "f64[20,1369,1369]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:62", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:62 (initialize)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:72 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:508 (reconstruction_positive_only_from)" + ] + }, + { + "instruction": "input_scatter_fusion.10", + "ms": 0.1207705, + "opcode": "fusion", + "shape": "f64[15361,20,1521]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:353", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:353 (mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:283 (Mapper.mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:91 (AbstractInversionImaging._mapping_matrix_for_convolution_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:137 (AbstractInversionImaging.operated_mapping_matrix_list)" + ] + } + ], + "ray_trace_data_grid": [ + { + "instruction": "input_reduce_fusion.20", + "ms": 0.0027935999999999994, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:506", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:506 (FlatLambdaCDM._simpson_1d)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:644 (FlatLambdaCDM.angular_diameter_distance_kpc_z1z2)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:133 (LensingCosmology.angular_diameter_distance_to_earth_in_kpc_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:362 (LensingCosmology.scaling_factor_between_redshifts_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer_util.py:252 (traced_grid_2d_list_from)" + ] + }, + { + "instruction": "input_reduce_fusion.22", + "ms": 0.0027456000000000004, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:506", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:506 (FlatLambdaCDM._simpson_1d)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:644 (FlatLambdaCDM.angular_diameter_distance_kpc_z1z2)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:151 (LensingCosmology.angular_diameter_distance_between_redshifts_in_kpc_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:355 (LensingCosmology.scaling_factor_between_redshifts_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer_util.py:252 (traced_grid_2d_list_from)" + ] + }, + { + "instruction": "input_reduce_fusion.21", + "ms": 0.0025759000000000008, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:503", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:503 (FlatLambdaCDM._simpson_1d)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:644 (FlatLambdaCDM.angular_diameter_distance_kpc_z1z2)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:133 (LensingCosmology.angular_diameter_distance_to_earth_in_kpc_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:362 (LensingCosmology.scaling_factor_between_redshifts_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer_util.py:252 (traced_grid_2d_list_from)" + ] + }, + { + "instruction": "input_reduce_fusion.23", + "ms": 0.0025505000000000007, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:503", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:503 (FlatLambdaCDM._simpson_1d)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:644 (FlatLambdaCDM.angular_diameter_distance_kpc_z1z2)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:151 (LensingCosmology.angular_diameter_distance_between_redshifts_in_kpc_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:355 (LensingCosmology.scaling_factor_between_redshifts_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer_util.py:252 (traced_grid_2d_list_from)" + ] + }, + { + "instruction": "loop_divide_fusion.2", + "ms": 0.0022784, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:380", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:380 (LensingCosmology.scaling_factor_between_redshifts_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer_util.py:252 (traced_grid_2d_list_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer.py:632 (Tracer.traced_grid_2d_list_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/structures/decorators/abstract.py:93 (AbstractMaker.evaluate_func)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/structures/decorators/abstract.py:110 (AbstractMaker.result)" + ] + } + ], + "border_relocator": [ + { + "instruction": "custom-call.2", + "ms": 0.0423872, + "opcode": "custom-call", + "shape": "(f64[20,2,2]{2,1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_add_rsqrt_fusion", + "ms": 0.014892699999999998, + "opcode": "fusion", + "shape": "(f64[20,15361]{1,0}, f64[20,15361]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:311", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:311 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:423 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "eigh.0", + "ms": 0.014844899999999998, + "opcode": "custom-call", + "shape": "(f64[20,2,2]{1,2,0}, f64[20,2]{1,0}, s32[20]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_concatenate_fusion.5", + "ms": 0.008464, + "opcode": "fusion", + "shape": "f64[20,2,15361]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:323", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:323 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:423 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_select_sine_fusion", + "ms": 0.0035167999999999996, + "opcode": "fusion", + "shape": "(f64[20]{0}, f64[20]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:301", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:301 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:423 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_reduce_fusion.17", + "ms": 0.0033696, + "opcode": "fusion", + "shape": "f64[20]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:269", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:269 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + } + ], + "other": [ + { + "instruction": "copy.52", + "ms": 0.08472000000000003, + "opcode": "copy", + "shape": "u32[20,2,15361]{2,1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.53", + "ms": 0.08131489999999995, + "opcode": "copy", + "shape": "u32[20,2,15361]{2,1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.71", + "ms": 0.07451119999999996, + "opcode": "copy", + "shape": "u32[20,15361]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.61", + "ms": 0.0737758, + "opcode": "copy", + "shape": "u32[20,15361]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.70", + "ms": 0.07176329999999997, + "opcode": "copy", + "shape": "u32[20,15361]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.62", + "ms": 0.07168250000000001, + "opcode": "copy", + "shape": "u32[20,15361]{1,0}", + "source": "", + "stack": [] + } + ], + "mapping_matrix": [ + { + "instruction": "loop_broadcast_fusion", + "ms": 2.1561234000000002, + "opcode": "fusion", + "shape": "f64[15361,20,1521]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:353", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:353 (mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:283 (Mapper.mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:91 (AbstractInversionImaging._mapping_matrix_for_convolution_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:137 (AbstractInversionImaging.operated_mapping_matrix_list)" + ] + }, + { + "instruction": "input_scatter_fusion.5", + "ms": 0.0748318, + "opcode": "fusion", + "shape": "f64[20,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:71", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:71 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:362 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + }, + { + "instruction": "input_reduce_fusion.30", + "ms": 0.0038336000000000004, + "opcode": "fusion", + "shape": "f64[20]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:362 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + }, + { + "instruction": "loop_divide_fusion.1", + "ms": 0.0028318999999999996, + "opcode": "fusion", + "shape": "f64[20,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:92", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:92 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:362 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + }, + { + "instruction": "loop_compare_fusion.5", + "ms": 0.0020512, + "opcode": "fusion", + "shape": "pred[4]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:54", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:54 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:362 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + } + ], + "psf_convolution_mapping_matrix": [ + { + "instruction": "input_scatter_fusion", + "ms": 40.896151800000005, + "opcode": "fusion", + "shape": "f64[20,1521,180,180]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.29.0", + "ms": 35.95514749999999, + "opcode": "fft", + "shape": "f64[20,1521,180,180]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.25.0", + "ms": 27.308921100000003, + "opcode": "fft", + "shape": "c128[20,1521,180,91]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.27.0", + "ms": 19.671598699999997, + "opcode": "fft", + "shape": "c128[20,1521,91,180]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_transpose_fusion.2", + "ms": 10.690748699999999, + "opcode": "fusion", + "shape": "c128[20,1521,91,180]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "wrapped_transpose.2", + "ms": 10.0254664, + "opcode": "fusion", + "shape": "c128[20,1521,180,91]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + } + ], + "regularization_H": [ + { + "instruction": "wrapped_broadcast", + "ms": 0.6199736, + "opcode": "fusion", + "shape": "f64[20,1521,1521]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:124", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:124 (weighted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:366 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_broadcast_fusion.3", + "ms": 0.015417499999999995, + "opcode": "fusion", + "shape": "f64[1521,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:111", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:111 (weighted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:366 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_scatter_fusion.7", + "ms": 0.0026656, + "opcode": "fusion", + "shape": "f64[1521,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:123 (weighted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:366 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "curvature_matrix_F": [ + { + "instruction": "cublas-lt-matmul.2", + "ms": 125.3140744, + "opcode": "custom-call", + "shape": "(f64[20,1521,1521]{2,1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "inversion_other": [ + { + "instruction": "cholesky.60", + "ms": 7.496535499999972, + "opcode": "custom-call", + "shape": "(f64[20,1521,1521]{1,2,0}, s32[20]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1078 (AbstractInversion.log_det_curvature_reg_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:347 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "cholesky.70", + "ms": 7.423006899999987, + "opcode": "custom-call", + "shape": "(f64[20,1521,1521]{1,2,0}, s32[20]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1157 (AbstractInversion.log_det_regularization_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:348 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "input_reduce_fusion.19", + "ms": 0.2115359, + "opcode": "fusion", + "shape": "f64[20,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:946", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:946 (AbstractInversion.regularization_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:346 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)", + "/mnt/ral/jnightin/autolens_profiling_wt/certified-solver-phase-c1-lane-rate/scripts/imaging/likelihood_breakdown/fixed_light_trace.py:1195 (_captured_likelihood_fn.._likelihood)" + ] + }, + { + "instruction": "loop_reduce_window_fusion.3", + "ms": 0.0082656, + "opcode": "fusion", + "shape": "s64[6,16]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "input_reduce_fusion.26", + "ms": 0.005494300000000001, + "opcode": "fusion", + "shape": "f64[20]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:944", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:944 (AbstractInversion.regularization_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:346 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)", + "/mnt/ral/jnightin/autolens_profiling_wt/certified-solver-phase-c1-lane-rate/scripts/imaging/likelihood_breakdown/fixed_light_trace.py:1195 (_captured_likelihood_fn.._likelihood)" + ] + }, + { + "instruction": "input_scatter_fusion.11", + "ms": 0.0051424, + "opcode": "fusion", + "shape": "pred[1521]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:526", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:526 (AbstractInversion.zeroed_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:567 (AbstractInversion.solve_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:684 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "data_vector_D": [ + { + "instruction": "input_reduce_fusion.12", + "ms": 2.6548599, + "opcode": "fusion", + "shape": "f64[92,20,1521]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123 (data_vector_via_blurred_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:67 (InversionImagingMapping.data_vector)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:699 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_reduce_fusion.28", + "ms": 0.0209155, + "opcode": "fusion", + "shape": "f64[20,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123 (data_vector_via_blurred_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:67 (InversionImagingMapping.data_vector)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:699 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "pdip_solve": [ + { + "instruction": "cholesky.20", + "ms": 120.98164070000921, + "opcode": "custom-call", + "shape": "(f64[20,1369,1369]{1,2,0}, s32[20]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:106", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:106 (factorize_kkt)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:212 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve", + "ms": 33.87757720000101, + "opcode": "custom-call", + "shape": "(f64[20,1369,1]{1,2,0}, s8[320]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:213 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve.2", + "ms": 31.3094459000008, + "opcode": "custom-call", + "shape": "(f64[20,1369,1]{1,2,0}, s8[320]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:217 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve.3", + "ms": 30.390555200000247, + "opcode": "custom-call", + "shape": "(f64[20,1369,1]{1,2,0}, s8[320]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:217 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve.1", + "ms": 30.191349000000404, + "opcode": "custom-call", + "shape": "(f64[20,1369,1]{1,2,0}, s8[320]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:213 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "loop_add_fusion.2", + "ms": 8.1785768, + "opcode": "fusion", + "shape": "f64[20,1369,1369]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:107", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:107 (factorize_kkt)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:212 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + } + ], + "mapped_reconstruction": [ + { + "instruction": "input_reduce_fusion.15", + "ms": 2.2349278, + "opcode": "fusion", + "shape": "f64[15361,20]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163 (mapped_reconstructed_data_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:120 (InversionImagingMapping._mapped_reconstructed_data_dict_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:196 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + } + ], + "chi_squared_evidence": [ + { + "instruction": "loop_divide_fusion", + "ms": 0.0054047, + "opcode": "fusion", + "shape": "f64[15361,20]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:352", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:352 (AbstractNDArray.__truediv__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:57 (unwrap_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:35 (to_new_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:78 (chi_squared_map_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:78 (AbstractFit.chi_squared_map)" + ] + }, + { + "instruction": "input_reduce_fusion.27", + "ms": 0.0039008, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:104", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:104 (noise_normalization_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:98 (AbstractFit.noise_normalization)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:306 (FitDataset.noise_normalization)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:349 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)" + ] + }, + { + "instruction": "input_reduce_fusion.11", + "ms": 0.0035103999999999995, + "opcode": "fusion", + "shape": "f64[92,20]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:90", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:90 (chi_squared_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:87 (AbstractFit.chi_squared)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:293 (FitDataset.chi_squared)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:345 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)" + ] + }, + { + "instruction": "input_reduce_fusion.29", + "ms": 0.0021568000000000004, + "opcode": "fusion", + "shape": "f64[20]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:90", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:90 (chi_squared_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:87 (AbstractFit.chi_squared)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:293 (FitDataset.chi_squared)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:345 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)" + ] + } + ] + }, + "stage_audit_note": "The HLO instructions that contributed most of each stage's milliseconds, with their full source stack. A stage row is only as good as the rules that built it; this is how a reader checks a row against the HLO instead of trusting it.", + "untraced_wall_ms": 615.4794131998642, + "reconciliation_vs_untraced_pct": 0.8277670691944955, + "wall_basis": "wall_ms is the TRACED run's wall, the run these kernel durations came from. untraced_wall_ms is the same executable without the profiler; the difference is the profiler's overhead and belongs in neither the stages nor the idle row.", + "calls": 10, + "call_split": "per-call (first-instruction recurrence)", + "call_blocks": 10, + "events": 140290, + "streams": [ + "Stream #14(MemcpyD2D,Compute,MemcpyD2H)" + ], + "per_stage_ms": { + "border_relocator": { + "median_ms": 0.1030065, + "min_ms": 0.102623, + "max_ms": 0.10361599999999999 + }, + "chi_squared_evidence": { + "median_ms": 0.014752000000000001, + "min_ms": 0.014496, + "max_ms": 0.017248 + }, + "curvature_matrix_F": { + "median_ms": 125.0852935, + "min_ms": 124.364267, + "max_ms": 127.362125 + }, + "data_vector_D": { + "median_ms": 2.679522, + "min_ms": 2.654622, + "max_ms": 2.690238 + }, + "inversion_other": { + "median_ms": 15.173945499999993, + "min_ms": 15.155209, + "max_ms": 15.22977099999999 + }, + "mapped_reconstruction": { + "median_ms": 2.2353055, + "min_ms": 2.230041, + "max_ms": 2.238937 + }, + "mapping_matrix": { + "median_ms": 2.2390499999999998, + "min_ms": 2.2316409999999998, + "max_ms": 2.2489999999999997 + }, + "mesh_construction": { + "median_ms": 1.2039244999999987, + "min_ms": 1.2022619999999988, + "max_ms": 1.2094899999999988 + }, + "mixed_fusion": { + "median_ms": 26.063823499999998, + "min_ms": 25.903966999999998, + "max_ms": 26.220603999999998 + }, + "other": { + "median_ms": 0.47922049999999994, + "min_ms": 0.477403, + "max_ms": 0.48364399999999996 + }, + "pdip_solve": { + "median_ms": 278.5209755000043, + "min_ms": 278.04023500000426, + "max_ms": 279.7015329999965 + }, + "psf_convolution_mapping_matrix": { + "median_ms": 149.5407005, + "min_ms": 149.22591300000002, + "max_ms": 150.247017 + }, + "ray_trace_data_grid": { + "median_ms": 0.012928499999999999, + "min_ms": 0.012832, + "max_ms": 0.013087999999999999 + }, + "regularization_H": { + "median_ms": 0.6396580000000001, + "min_ms": 0.633159, + "max_ms": 0.6406660000000001 + } + }, + "stage_order": [ + "ray_trace_data_grid", + "border_relocator", + "mesh_construction", + "mapping_matrix", + "psf_convolution_mapping_matrix", + "data_vector_D", + "curvature_matrix_F", + "regularization_H", + "pdip_solve", + "mapped_reconstruction", + "chi_squared_evidence", + "inversion_other", + "mixed_fusion", + "other" + ], + "mixed_fusion": { + "ms": 26.063823499999998, + "constituent_stage_sets": { + "curvature_matrix_F + psf_convolution_mapping_matrix": 21.5046171, + "inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": 2.5566199, + "inversion_other + regularization_H": 0.6090868999999999, + "curvature_reg_reduce_gather + inversion_other": 0.6032725999999999, + "border_relocator + pdip_solve": 0.3868923000000001, + "border_relocator + inversion_other + mapping_matrix + mesh_construction": 0.12371769999999999, + "inversion_other + mapping_matrix + mesh_construction": 0.08260799999999999, + "grids_and_structures + mass_profile_deflections + ray_trace_data_grid": 0.05483810000000001, + "inversion_other + mesh_construction": 0.035715199999999996, + "border_relocator + mesh_construction": 0.02768, + "inversion_other + mapped_reconstruction + reconstruction_scatter": 0.023471699999999998, + "inversion_other + mapping_matrix": 0.01368, + "border_relocator + inversion_other": 0.009955199999999999, + "inversion_other + mapped_reconstruction": 0.009868700000000001, + "border_relocator + inversion_other + mesh_construction": 0.0061088, + "inversion_other + ray_trace_data_grid": 0.004902499999999999, + "mapping_matrix + regularization_H": 0.004336, + "grids_and_structures + mass_profile_deflections": 0.0042464, + "chi_squared_evidence + inversion_other": 0.0019648 + }, + "example_kernels": { + "curvature_matrix_F + psf_convolution_mapping_matrix": [ + "loop_divide_gather_fusion" + ], + "inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": [ + "loop_add_multiply_fusion" + ], + "inversion_other + regularization_H": [ + "input_scatter_fusion.3", + "input_scatter_fusion.4", + "input_scatter_fusion.1", + "input_scatter_fusion.2" + ], + "curvature_reg_reduce_gather + inversion_other": [ + "input_transpose_fusion.3" + ], + "border_relocator + pdip_solve": [ + "loop_compare_fusion.4", + "input_transpose_fusion.5" + ], + "border_relocator + inversion_other + mapping_matrix + mesh_construction": [ + "input_scatter_fusion.10", + "loop_select_fusion.6" + ], + "inversion_other + mapping_matrix + mesh_construction": [ + "input_scatter_fusion.6" + ], + "grids_and_structures + mass_profile_deflections + ray_trace_data_grid": [ + "loop_sqrt_fusion", + "loop_slice_fusion", + "loop_subtract_fusion.1" + ], + "inversion_other + mesh_construction": [ + "loop_add_fusion.4", + "input_concatenate_fusion.4" + ], + "border_relocator + mesh_construction": [ + "loop_select_fusion.5" + ] + }, + "prorated_estimate_ms": { + "curvature_matrix_F": 10.75230855, + "psf_convolution_mapping_matrix": 10.75230855, + "inversion_other": 1.3517035166666667, + "pdip_solve": 0.832601125, + "mapped_reconstruction": 0.6519132249999999, + "reconstruction_scatter": 0.646978875, + "regularization_H": 0.30671144999999994, + "curvature_reg_reduce_gather": 0.30163629999999997, + "border_relocator": 0.2452294416666667, + "mesh_construction": 0.09219929166666666, + "mapping_matrix": 0.06747342499999999, + "ray_trace_data_grid": 0.020730616666666667, + "grids_and_structures": 0.020402566666666667, + "mass_profile_deflections": 0.020402566666666667, + "chi_squared_evidence": 0.0009824 + }, + "prorated_note": "ESTIMATE ONLY \u2014 a mixed fusion's time split equally across the stages its constituents span. Never summed into the measured table, never reconciled." + }, + "other_sources_ms": { + "copy.52": 0.08472000000000003, + "copy.53": 0.08131489999999995, + "copy.71": 0.07451119999999996, + "copy.61": 0.0737758, + "copy.70": 0.07176329999999997, + "copy.62": 0.07168250000000001, + "loop_reduce_window_fusion.1": 0.0060190999999999995, + "loop_slice_fusion.1": 0.005193600000000001, + "loop_reduce_window_fusion": 0.0034208000000000003, + "loop_broadcast_fusion.1": 0.0022816000000000004, + "copy.109": 0.0017920000000000002, + "copy.54": 0.0015615999999999996, + "copy.63": 0.0015359999999999998 + }, + "device_span_ms": 620.8703965, + "device_busy_ms": 604.2883534, + "device_idle_ms": 16.582043099999964, + "largest_idle_gaps": [ + { + "gap_ms": 0.068127, + "after": "input_concatenate_fusion.8", + "before": "custom-call.2" + }, + { + "gap_ms": 0.050047, + "after": "loop_broadcast_fusion.7", + "before": "loop_broadcast_fusion.9" + }, + { + "gap_ms": 0.023264, + "after": "while.52", + "before": "input_reduce_fusion" + }, + { + "gap_ms": 0.02272, + "after": "while.52", + "before": "input_transpose_fusion.1" + }, + { + "gap_ms": 0.02112, + "after": "while.52", + "before": "input_reduce_fusion" + }, + { + "gap_ms": 0.018463, + "after": "while.52", + "before": "input_reduce_fusion" + }, + { + "gap_ms": 0.017855, + "after": "while.52", + "before": "input_reduce_fusion" + }, + { + "gap_ms": 0.017728, + "after": "while.52", + "before": "input_reduce_fusion" + } + ], + "kernel_ms": 603.9921060000042, + "sum_ms": 620.5741491000042, + "wall_ms": 620.9592326998973, + "host_outside_span_ms": 0.08883619989728686, + "reconciliation_pct": -0.062014312633492524, + "unjoined_ms": 0.0, + "unjoined_pct": 0.0, + "other_ms": 0.47922049999999994, + "other_pct": 0.07717422896127576, + "note": "Stage rows attribute the command-buffers-OFF program (see the module docstring): kernel times are the same, the launch overhead the CUDA graphs remove is not. sum_ms = kernel rows + device_idle_ms; the residual against wall_ms is host_outside_span_ms (dispatch before the first kernel, teardown after the last).", + "per_stage_ms_per_lane": { + "border_relocator": 0.005150325, + "chi_squared_evidence": 0.0007376, + "curvature_matrix_F": 6.254264675, + "data_vector_D": 0.1339761, + "inversion_other": 0.7586972749999996, + "mapped_reconstruction": 0.111765275, + "mapping_matrix": 0.11195249999999998, + "mesh_construction": 0.06019622499999994, + "mixed_fusion": 1.3031911749999998, + "other": 0.023961024999999997, + "pdip_solve": 13.926048775000215, + "psf_convolution_mapping_matrix": 7.477035025000001, + "ray_trace_data_grid": 0.000646425, + "regularization_H": 0.0319829 + }, + "per_lane_divisor": 20, + "host_callback": { + "pure_callback_span_ms": 0, + "qhull_ms": 0.0, + "callback_body_ms_note": "the OUTERMOST matching body event, not a sum: under the probe the body appears twice (the wrapper and the timed re-implementation it calls) and summing them would count the same work twice", + "events_by_name": { + "ThenExecuteCallback:GetEventForComputeStreamSyncPoint": { + "count": 10, + "ms": 0.033391899999999995 + } + }, + "note": "HOST milliseconds per traced BATCH (the whole invocation), aggregated by name because the events nest. Not a row of the device table: the device pays for them as the idle gaps largest_idle_gaps names." + }, + "host_callback_ms": 0 + }, + "hlo_census": { + "status": "excluded", + "reason": "The legacy census anchors PyAutoArray source line numbers that moved after the phase-1 run. No batched attribution is published from unsupported anchors; the device-event table and wall reconciliation remain valid." + }, + "trace_split": { + "expected_calls": 10, + "executions_per_invocation": 1, + "method": "per-call (first-instruction recurrence)", + "note": "DECIDED IN CODE: the scalar arm's trace is split by trace_calls * B, so every lane's execution is its own block and the per-stage median is taken over all of them. The vmap arm's is split by trace_calls, one block per batched execution, and per_stage_ms_per_lane divides those rows by B." + } + }, + "scalar": { + "arm": "scalar", + "program": "jax.jit(fn), called B times", + "stands_for": "Nautilus(use_jax_vmap=False, use_jax_jit=True). Plain use_jax_vmap=False is UNJITTED and is NOT this arm", + "hlo_source": "jax.jit(fn).lower(lane_trees[0]) \u2014 the same program phase 1 traced", + "batch_wall_ms": 821.9248676999996, + "wall_production_nesting_ms": 821.9248676999996, + "wall_aot_command_buffers_on_ms": 821.1695773999963, + "wall_aot_command_buffers_off_ms": 828.3706322999933, + "command_buffer_delta_ms": 7.2010548999969615, + "production_nesting_vs_aot_on_delta_ms": 0.7552903000032529, + "production_nesting_vs_aot_on_delta_pct": 0.09197738454883683, + "wall_per_lane_ms": 41.09624338499998, + "wall_per_lane_command_buffers_off_ms": 41.418531614999665, + "traced_batch_wall_ms": 850.1524302999314, + "untraced_batch_wall_ms": 828.4930406000058, + "traced_wall_per_lane_ms": 42.50762151499657, + "callback_count_per_call": 0.0, + "callback_count_per_lane": 0.0, + "callback_expectation": "0 \u2014 the rectangular mesh has no qhull host callback (asserted)", + "host_qhull_ms": 0.0, + "host_tables_ms": 0.0, + "host_qhull_ms_per_lane": 0.0, + "host_tables_ms_per_lane": 0.0, + "host_callback_probe": { + "calls": 0, + "qhull_ms_total": 0.0, + "tables_ms_total": 0.0, + "total_ms_total": 0.0, + "qhull_ms_mean": 0.0, + "tables_ms_mean": 0.0, + "total_ms_mean": 0.0, + "non_finite_calls": 0, + "n_points": [] + }, + "host_callback_records_first": [], + "device_idle_ms": 2.2370476149999945, + "device_idle_ms_per_lane": 2.2370476149999945, + "trace": { + "parser": "ProfileData.from_file(xplane) + as_text() + stack_frame_index(proto field 17)", + "stage_audit": { + "mesh_construction": [ + { + "instruction": "fusion.2", + "ms": 0.1485403199999988, + "opcode": "fusion", + "shape": "(f64[15361,2]{1,0}, s64[15361,2]{1,0}, s32[15361,2]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:227", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:227 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_select_fusion", + "ms": 0.03961204000000024, + "opcode": "fusion", + "shape": "(u32[2,15361]{1,0}, u32[2,15361]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69 (forward_interp)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:573 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/abstract.py:36 (AbstractInterpolator.mappings)" + ] + }, + { + "instruction": "loop_select_fusion.1", + "ms": 0.03489680500000051, + "opcode": "fusion", + "shape": "(u32[15361]{0}, u32[15361]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_select_fusion.4", + "ms": 0.03485500000000027, + "opcode": "fusion", + "shape": "(u32[15361]{0}, u32[15361]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_add_fusion", + "ms": 0.020980280000000465, + "opcode": "fusion", + "shape": "s64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69 (forward_interp)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:573 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/abstract.py:36 (AbstractInterpolator.mappings)" + ] + }, + { + "instruction": "loop_add_fusion.5", + "ms": 0.02033793500000018, + "opcode": "fusion", + "shape": "s64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "mixed_fusion": [ + { + "instruction": "loop_divide_gather_fusion", + "ms": 0.6977891849999998, + "opcode": "fusion", + "shape": "(f64[15361,1,1,1521]{3,2,1,0}, f64[15361,1,1,1521]{3,2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_add_multiply_fusion", + "ms": 0.08984078999999998, + "opcode": "fusion", + "shape": "(f64[1369,1369]{1,0}, f64[1369,1369]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:61", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:61 (initialize)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:72 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:508 (reconstruction_positive_only_from)" + ] + }, + { + "instruction": "input_transpose_fusion.3", + "ms": 0.030864404999999994, + "opcode": "fusion", + "shape": "f64[1521,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1157 (AbstractInversion.log_det_regularization_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:348 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "loop_reduce_fusion.1", + "ms": 0.027141555000000015, + "opcode": "fusion", + "shape": "f64[92,2]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:556", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:556 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/abstract.py:36 (AbstractInterpolator.mappings)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:167 (Mapper.pix_indexes_for_sub_slim_index)" + ] + }, + { + "instruction": "input_transpose_fusion.2", + "ms": 0.025618074999999997, + "opcode": "fusion", + "shape": "f64[1521,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1078 (AbstractInversion.log_det_curvature_reg_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:347 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "input_transpose_fusion.4", + "ms": 0.016372880000000006, + "opcode": "fusion", + "shape": "f64[1369,1369]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:62", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:62 (initialize)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:72 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:508 (reconstruction_positive_only_from)" + ] + } + ], + "ray_trace_data_grid": [ + { + "instruction": "input_reduce_fusion.16", + "ms": 0.0028044450000000074, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:506", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:506 (FlatLambdaCDM._simpson_1d)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:644 (FlatLambdaCDM.angular_diameter_distance_kpc_z1z2)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:151 (LensingCosmology.angular_diameter_distance_between_redshifts_in_kpc_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:355 (LensingCosmology.scaling_factor_between_redshifts_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer_util.py:252 (traced_grid_2d_list_from)" + ] + }, + { + "instruction": "input_reduce_fusion.14", + "ms": 0.002773230000000002, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:506", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:506 (FlatLambdaCDM._simpson_1d)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:644 (FlatLambdaCDM.angular_diameter_distance_kpc_z1z2)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:133 (LensingCosmology.angular_diameter_distance_to_earth_in_kpc_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:362 (LensingCosmology.scaling_factor_between_redshifts_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer_util.py:252 (traced_grid_2d_list_from)" + ] + }, + { + "instruction": "input_reduce_fusion.15", + "ms": 0.0026174000000000006, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:503", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:503 (FlatLambdaCDM._simpson_1d)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:644 (FlatLambdaCDM.angular_diameter_distance_kpc_z1z2)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:133 (LensingCosmology.angular_diameter_distance_to_earth_in_kpc_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:362 (LensingCosmology.scaling_factor_between_redshifts_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer_util.py:252 (traced_grid_2d_list_from)" + ] + }, + { + "instruction": "input_reduce_fusion.17", + "ms": 0.0025793049999999944, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:503", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:503 (FlatLambdaCDM._simpson_1d)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:644 (FlatLambdaCDM.angular_diameter_distance_kpc_z1z2)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:151 (LensingCosmology.angular_diameter_distance_between_redshifts_in_kpc_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:355 (LensingCosmology.scaling_factor_between_redshifts_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer_util.py:252 (traced_grid_2d_list_from)" + ] + }, + { + "instruction": "loop_divide_fusion.2", + "ms": 0.002077249999999996, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:380", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:380 (LensingCosmology.scaling_factor_between_redshifts_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer_util.py:252 (traced_grid_2d_list_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer.py:632 (Tracer.traced_grid_2d_list_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/structures/decorators/abstract.py:93 (AbstractMaker.evaluate_func)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/structures/decorators/abstract.py:110 (AbstractMaker.result)" + ] + } + ], + "border_relocator": [ + { + "instruction": "eigh.0", + "ms": 0.0739232749999999, + "opcode": "custom-call", + "shape": "(f64[2,2]{0,1}, f64[2]{0}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "custom-call.2", + "ms": 0.007890920000000001, + "opcode": "custom-call", + "shape": "(f64[2,2]{1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_reduce_fusion.11", + "ms": 0.005175274999999998, + "opcode": "fusion", + "shape": "(f64[], f64[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:270", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:270 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_add_fusion.7", + "ms": 0.003613570000000007, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:423 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_concatenate_fusion.1", + "ms": 0.0035650399999999963, + "opcode": "fusion", + "shape": "f64[15361,2]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:323", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:323 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:423 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_select_sine_fusion", + "ms": 0.0032901699999999916, + "opcode": "fusion", + "shape": "(f64[], f64[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:301", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:301 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:423 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + } + ], + "other": [ + { + "instruction": "copy.31", + "ms": 0.030478270000001178, + "opcode": "copy", + "shape": "u32[2,15361]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.32", + "ms": 0.03035719000000064, + "opcode": "copy", + "shape": "u32[2,15361]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.49", + "ms": 0.028687710000001757, + "opcode": "copy", + "shape": "u32[15361]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.41", + "ms": 0.02866302500000174, + "opcode": "copy", + "shape": "u32[15361]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.50", + "ms": 0.028468630000000817, + "opcode": "copy", + "shape": "u32[15361]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.40", + "ms": 0.028398770000000552, + "opcode": "copy", + "shape": "u32[15361]{0}", + "source": "", + "stack": [] + } + ], + "mapping_matrix": [ + { + "instruction": "loop_broadcast_fusion.1", + "ms": 0.13640899999999978, + "opcode": "fusion", + "shape": "f64[15361,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:342", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:342 (mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:283 (Mapper.mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:91 (AbstractInversionImaging._mapping_matrix_for_convolution_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:137 (AbstractInversionImaging.operated_mapping_matrix_list)" + ] + }, + { + "instruction": "input_reduce_fusion.25", + "ms": 0.002863969999999995, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:362 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + }, + { + "instruction": "loop_divide_fusion.1", + "ms": 0.00234958, + "opcode": "fusion", + "shape": "f64[1521]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:92", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:92 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:362 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + } + ], + "regularization_H": [ + { + "instruction": "loop_broadcast_fusion.2", + "ms": 0.019258510000000006, + "opcode": "fusion", + "shape": "(f64[1521,1521]{1,0}, f64[1521,1521]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:111", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:111 (weighted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:366 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_scatter_fusion.8", + "ms": 0.0028127399999999985, + "opcode": "fusion", + "shape": "f64[1521,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:123 (weighted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:366 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "psf_convolution_mapping_matrix": [ + { + "instruction": "fft.19.0", + "ms": 1.7828272349999998, + "opcode": "fft", + "shape": "f64[1521,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_scatter_fusion", + "ms": 1.5036786850000001, + "opcode": "fusion", + "shape": "f64[1521,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.15.0", + "ms": 1.3864055050000004, + "opcode": "fft", + "shape": "c128[1521,180,91]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.17.0", + "ms": 0.9927867100000007, + "opcode": "fft", + "shape": "c128[1521,91,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_transpose_fusion.1", + "ms": 0.5220636699999999, + "opcode": "fusion", + "shape": "c128[1521,91,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "wrapped_transpose.2", + "ms": 0.5071845050000002, + "opcode": "fusion", + "shape": "c128[1521,180,91]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + } + ], + "curvature_matrix_F": [ + { + "instruction": "cublas-lt-matmul.2", + "ms": 4.38780185, + "opcode": "custom-call", + "shape": "(f64[1521,1521]{1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "data_vector_D": [ + { + "instruction": "input_reduce_fusion.7", + "ms": 0.11374234000000003, + "opcode": "fusion", + "shape": "f64[92,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123 (data_vector_via_blurred_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:67 (InversionImagingMapping.data_vector)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:699 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_reduce_fusion.23", + "ms": 0.0037307950000000016, + "opcode": "fusion", + "shape": "f64[1521]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123 (data_vector_via_blurred_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:67 (InversionImagingMapping.data_vector)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:699 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "inversion_other": [ + { + "instruction": "cholesky.60", + "ms": 0.9178175300000002, + "opcode": "custom-call", + "shape": "(f64[1521,1521]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1078 (AbstractInversion.log_det_curvature_reg_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:347 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "cholesky.70", + "ms": 0.89939234, + "opcode": "custom-call", + "shape": "(f64[1521,1521]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1157 (AbstractInversion.log_det_regularization_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:348 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "input_reduce_fusion.13", + "ms": 0.018972599999999996, + "opcode": "fusion", + "shape": "f64[1521]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:946", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:946 (AbstractInversion.regularization_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:346 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)", + "/mnt/ral/jnightin/autolens_profiling_wt/certified-solver-phase-c1-lane-rate/scripts/imaging/likelihood_breakdown/fixed_light_trace.py:1195 (_captured_likelihood_fn.._likelihood)" + ] + }, + { + "instruction": "loop_reduce_window_fusion.3", + "ms": 0.005791649999999985, + "opcode": "fusion", + "shape": "s64[6,16]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "input_scatter_fusion.11", + "ms": 0.0038190150000000076, + "opcode": "fusion", + "shape": "pred[1521]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:526", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:526 (AbstractInversion.zeroed_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:567 (AbstractInversion.solve_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:684 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_reduce_window_fusion.2", + "ms": 0.003105690000000011, + "opcode": "fusion", + "shape": "s64[86,16]{1,0}", + "source": "", + "stack": [] + } + ], + "pdip_solve": [ + { + "instruction": "cholesky.20", + "ms": 14.070144085000209, + "opcode": "custom-call", + "shape": "(f64[1369,1369]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:106", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:106 (factorize_kkt)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:212 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve", + "ms": 2.1470052899999867, + "opcode": "custom-call", + "shape": "(f64[1369,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:213 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve.2", + "ms": 2.059719799999959, + "opcode": "custom-call", + "shape": "(f64[1369,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:217 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve.3", + "ms": 2.039387555000112, + "opcode": "custom-call", + "shape": "(f64[1369,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:217 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve.1", + "ms": 1.9864238500000981, + "opcode": "custom-call", + "shape": "(f64[1369,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:213 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "cholesky.40", + "ms": 0.8427822950000018, + "opcode": "custom-call", + "shape": "(f64[1369,1369]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:62", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:62 (initialize)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:72 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:508 (reconstruction_positive_only_from)" + ] + } + ], + "mapped_reconstruction": [ + { + "instruction": "input_reduce_fusion.10", + "ms": 0.11178793000000001, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163 (mapped_reconstructed_data_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:120 (InversionImagingMapping._mapped_reconstructed_data_dict_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:196 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + } + ], + "chi_squared_evidence": [ + { + "instruction": "input_reduce_fusion.22", + "ms": 0.0038382150000000033, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:104", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:104 (noise_normalization_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:98 (AbstractFit.noise_normalization)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:306 (FitDataset.noise_normalization)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:349 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)" + ] + }, + { + "instruction": "input_reduce_fusion.24", + "ms": 0.0038127600000000066, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:90", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:90 (chi_squared_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:87 (AbstractFit.chi_squared)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:293 (FitDataset.chi_squared)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:345 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)" + ] + }, + { + "instruction": "loop_multiply_fusion.2", + "ms": 0.0029820550000000012, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:300", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:300 (AbstractNDArray.__pow__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:60 (unwrap_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:35 (to_new_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:78 (chi_squared_map_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:78 (AbstractFit.chi_squared_map)" + ] + } + ] + }, + "stage_audit_note": "The HLO instructions that contributed most of each stage's milliseconds, with their full source stack. A stage row is only as good as the rules that built it; this is how a reader checks a row against the HLO instead of trusting it.", + "untraced_wall_ms": 41.42465203000029, + "reconciliation_vs_untraced_pct": 3.1264296053996277, + "wall_basis": "wall_ms is the TRACED run's wall, the run these kernel durations came from. untraced_wall_ms is the same executable without the profiler; the difference is the profiler's overhead and belongs in neither the stages nor the idle row.", + "calls": 200, + "call_split": "per-call (first-instruction recurrence)", + "call_blocks": 200, + "events": 186320, + "streams": [ + "Stream #14(Memset,MemcpyD2H,Compute,MemcpyH2D,MemcpyD2D)" + ], + "per_stage_ms": { + "border_relocator": { + "median_ms": 0.10549999999999998, + "min_ms": 0.10467000000000001, + "max_ms": 0.10668400000000001 + }, + "chi_squared_evidence": { + "median_ms": 0.010623, + "min_ms": 0.010303, + "max_ms": 0.011264 + }, + "curvature_matrix_F": { + "median_ms": 4.3684835, + "min_ms": 4.342805, + "max_ms": 4.571605 + }, + "data_vector_D": { + "median_ms": 0.117409, + "min_ms": 0.11645, + "max_ms": 0.118588 + }, + "inversion_other": { + "median_ms": 1.8640055000000002, + "min_ms": 1.84703, + "max_ms": 1.883893 + }, + "mapped_reconstruction": { + "median_ms": 0.111777, + "min_ms": 0.111137, + "max_ms": 0.112667 + }, + "mapping_matrix": { + "median_ms": 0.141627, + "min_ms": 0.14153, + "max_ms": 0.141793 + }, + "memset": { + "median_ms": 0.052029500000000006, + "min_ms": 0.037439999999999994, + "max_ms": 0.06035100000000001 + }, + "mesh_construction": { + "median_ms": 0.3816715000000001, + "min_ms": 0.37930100000000005, + "max_ms": 0.38384500000000005 + }, + "mixed_fusion": { + "median_ms": 0.991841, + "min_ms": 0.9883780000000001, + "max_ms": 0.9940410000000001 + }, + "other": { + "median_ms": 0.19523599999999963, + "min_ms": 0.19474399999999972, + "max_ms": 0.1960679999999997 + }, + "pdip_solve": { + "median_ms": 25.179315000000003, + "min_ms": 18.048658999999997, + "max_ms": 29.37148000000002 + }, + "psf_convolution_mapping_matrix": { + "median_ms": 6.928319, + "min_ms": 6.903121000000001, + "max_ms": 6.946574 + }, + "ray_trace_data_grid": { + "median_ms": 0.012832000000000001, + "min_ms": 0.012766999999999999, + "max_ms": 0.013087999999999999 + }, + "regularization_H": { + "median_ms": 0.022047999999999998, + "min_ms": 0.021471, + "max_ms": 0.022944 + } + }, + "stage_order": [ + "ray_trace_data_grid", + "border_relocator", + "mesh_construction", + "mapping_matrix", + "psf_convolution_mapping_matrix", + "data_vector_D", + "curvature_matrix_F", + "regularization_H", + "pdip_solve", + "mapped_reconstruction", + "chi_squared_evidence", + "inversion_other", + "mixed_fusion", + "other", + "memset" + ], + "mixed_fusion": { + "ms": 0.991841, + "constituent_stage_sets": { + "curvature_matrix_F + psf_convolution_mapping_matrix": 0.6977891849999998, + "inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": 0.08984078999999998, + "inversion_other + regularization_H": 0.030864404999999994, + "border_relocator + mesh_construction": 0.030598155000000054, + "curvature_reg_reduce_gather + inversion_other": 0.025618074999999997, + "border_relocator + inversion_other + mapping_matrix + mesh_construction": 0.020481725000000006, + "border_relocator + pdip_solve": 0.016372880000000006, + "inversion_other + mapping_matrix + regularization_H": 0.015515319999999996, + "inversion_other + mapping_matrix + mesh_construction": 0.012837594999999995, + "grids_and_structures + mass_profile_deflections": 0.01000758, + "inversion_other + mapped_reconstruction + reconstruction_scatter": 0.009636884999999994, + "inversion_other + mapped_reconstruction": 0.008931665000000004, + "inversion_other + mesh_construction": 0.005589354999999988, + "grids_and_structures + mass_profile_deflections + ray_trace_data_grid": 0.005273854999999991, + "inversion_other + ray_trace_data_grid": 0.004779764999999983, + "border_relocator + inversion_other": 0.0033756249999999976, + "border_relocator + inversion_other + mesh_construction": 0.0024176899999999975, + "chi_squared_evidence + inversion_other": 0.0017919749999999982 + }, + "example_kernels": { + "curvature_matrix_F + psf_convolution_mapping_matrix": [ + "loop_divide_gather_fusion" + ], + "inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": [ + "loop_add_multiply_fusion" + ], + "inversion_other + regularization_H": [ + "input_transpose_fusion.3" + ], + "border_relocator + mesh_construction": [ + "loop_reduce_fusion.1", + "loop_select_fusion.5" + ], + "curvature_reg_reduce_gather + inversion_other": [ + "input_transpose_fusion.2" + ], + "border_relocator + inversion_other + mapping_matrix + mesh_construction": [ + "input_scatter_fusion.6", + "input_scatter_fusion.10" + ], + "border_relocator + pdip_solve": [ + "input_transpose_fusion.4" + ], + "inversion_other + mapping_matrix + regularization_H": [ + "input_scatter_fusion.4", + "input_scatter_fusion.5", + "input_scatter_fusion.2", + "input_scatter_fusion.3" + ], + "inversion_other + mapping_matrix + mesh_construction": [ + "input_scatter_fusion.7" + ], + "grids_and_structures + mass_profile_deflections": [ + "loop_divide_minimum_multiply_sine_sqrt_fusion", + "loop_slice_fusion" + ] + }, + "prorated_estimate_ms": { + "curvature_matrix_F": 0.3488945924999999, + "psf_convolution_mapping_matrix": 0.3488945924999999, + "inversion_other": 0.08152522458333329, + "border_relocator": 0.031099657916666697, + "pdip_solve": 0.030646637499999997, + "mapped_reconstruction": 0.030138324999999994, + "mesh_construction": 0.02829928125000002, + "reconstruction_scatter": 0.02567249249999999, + "regularization_H": 0.02060397583333333, + "mapping_matrix": 0.014571402916666663, + "curvature_reg_reduce_gather": 0.012809037499999999, + "grids_and_structures": 0.006761741666666664, + "mass_profile_deflections": 0.006761741666666664, + "ray_trace_data_grid": 0.004147834166666655, + "chi_squared_evidence": 0.0008959874999999991 + }, + "prorated_note": "ESTIMATE ONLY \u2014 a mixed fusion's time split equally across the stages its constituents span. Never summed into the measured table, never reconciled." + }, + "other_sources_ms": { + "copy.31": 0.030478270000001178, + "copy.32": 0.03035719000000064, + "copy.49": 0.028687710000001757, + "copy.41": 0.02866302500000174, + "copy.50": 0.028468630000000817, + "copy.40": 0.028398770000000552, + "loop_reduce_window_fusion": 0.0064693399999999875, + "loop_reduce_window_fusion.1": 0.004341255000000005, + "loop_broadcast_fusion.3": 0.0017782049999999962, + "copy.69": 0.0016991699999999981, + "copy.90": 0.0016363100000000004, + "copy.24": 0.001463345000000002, + "copy.33": 0.0014167949999999985, + "copy.42": 0.0014159849999999983 + }, + "device_span_ms": 42.50396075, + "device_busy_ms": 40.266913135, + "device_idle_ms": 2.2370476149999945, + "largest_idle_gaps": [ + { + "gap_ms": 0.052766, + "after": "while.28", + "before": "input_scatter_fusion.1" + }, + { + "gap_ms": 0.044606, + "after": "input_concatenate_fusion.4", + "before": "custom-call.2" + }, + { + "gap_ms": 0.032223, + "after": "loop_multiply_fusion.3", + "before": "eigh.0" + }, + { + "gap_ms": 0.031487, + "after": "loop_add_fusion.5", + "before": "loop_select_fusion.4" + }, + { + "gap_ms": 0.026079, + "after": "loop_add_fusion.1", + "before": "loop_select_fusion.1" + }, + { + "gap_ms": 0.025631, + "after": "input_reduce_fusion.20", + "before": "loop_divide_fusion" + }, + { + "gap_ms": 0.023295, + "after": "while.28", + "before": "input_reduce_fusion" + }, + { + "gap_ms": 0.022592, + "after": "loop_broadcast_fusion.6", + "before": "loop_broadcast_fusion.8" + } + ], + "kernel_ms": 40.482717, + "sum_ms": 42.719764614999995, + "wall_ms": 42.50762151499657, + "host_outside_span_ms": 0.003660764996574528, + "reconciliation_pct": 0.4990707370643639, + "unjoined_ms": 0.0, + "unjoined_pct": 0.0, + "other_ms": 0.19523599999999963, + "other_pct": 0.4592964580037039, + "note": "Stage rows attribute the command-buffers-OFF program (see the module docstring): kernel times are the same, the launch overhead the CUDA graphs remove is not. sum_ms = kernel rows + device_idle_ms; the residual against wall_ms is host_outside_span_ms (dispatch before the first kernel, teardown after the last).", + "per_stage_ms_per_lane": { + "border_relocator": 0.10549999999999998, + "chi_squared_evidence": 0.010623, + "curvature_matrix_F": 4.3684835, + "data_vector_D": 0.117409, + "inversion_other": 1.8640055000000002, + "mapped_reconstruction": 0.111777, + "mapping_matrix": 0.141627, + "memset": 0.052029500000000006, + "mesh_construction": 0.3816715000000001, + "mixed_fusion": 0.991841, + "other": 0.19523599999999963, + "pdip_solve": 25.179315000000003, + "psf_convolution_mapping_matrix": 6.928319, + "ray_trace_data_grid": 0.012832000000000001, + "regularization_H": 0.022047999999999998 + }, + "per_lane_divisor": 1, + "host_callback": { + "pure_callback_span_ms": 0, + "qhull_ms": 0.0, + "callback_body_ms_note": "the OUTERMOST matching body event, not a sum: under the probe the body appears twice (the wrapper and the timed re-implementation it calls) and summing them would count the same work twice", + "events_by_name": { + "ThenExecuteCallback:GetEventForComputeStreamSyncPoint": { + "count": 200, + "ms": 0.38267579999999995 + } + }, + "note": "HOST milliseconds per traced BATCH (the whole invocation), aggregated by name because the events nest. Not a row of the device table: the device pays for them as the idle gaps largest_idle_gaps names." + }, + "host_callback_ms": 0 + }, + "hlo_census": { + "status": "excluded", + "reason": "The legacy census anchors PyAutoArray source line numbers that moved after the phase-1 run. No batched attribution is published from unsupported anchors; the device-event table and wall reconciliation remain valid." + }, + "trace_split": { + "expected_calls": 200, + "executions_per_invocation": 20, + "method": "per-call (first-instruction recurrence)", + "note": "DECIDED IN CODE: the scalar arm's trace is split by trace_calls * B, so every lane's execution is its own block and the per-stage median is taken over all of them. The vmap arm's is split by trace_calls, one block per batched execution, and per_stage_ms_per_lane divides those rows by B." + } + } + }, + "certification_report": { + "source": "vmap arm, library solve observed through its stats= out-dict (PyAutoArray #566) and jax.debug.callback(..., ordered=True); ordered because the unordered batching rule returns the lanes permuted. Untimed, separately compiled; max rel diff of its log likelihoods vs the timed arm's: nan", + "rows": 0, + "pdip_iter": "NOT AVAILABLE per lane without changing library numerics. The fallback branch calls the library's own reconstruction_positive_only_from, which returns the solution alone \u2014 jax_nnls.solve_nnls' iteration count is discarded inside the library's custom_vjp primal. The PDIP while_loop's cost is in the pdip_solve stage row of each arm's device table instead, which is a max-over-lanes quantity under vmap because every lane runs the same fixed kernel sequence.", + "passes_semantics": "library `passes`: restricted active-set passes run (jax_active_set.solve_certified)" + }, + "lane_construction": { + "draws_sha256": "414c4581d327cf9f25278928cfce122a44af7f32110c4d2260c4622bb6110fbb", + "lane_rows": [ + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319 + ], + "calls": [ + 15 + ], + "stage": "pix1", + "regularization_range": { + "galaxies.source.pixelization.regularization.inner_coefficient": { + "min": 1.5395402868893563e-06, + "max": 631.3270846999916 + }, + "galaxies.source.pixelization.regularization.outer_coefficient": { + "min": 1.585514819488347e-06, + "max": 1082.4533276985048 + }, + "galaxies.source.pixelization.regularization.signal_scale": { + "min": 0.06623313471893155, + "max": 0.9779334025364208 + } + }, + "phases": [ + "exploration" + ], + "window_rule": "nautilus_batches.timed_window: consecutive captured calls, in call order, from the FIRST call that is not a prior batch, concatenated and truncated to B; at B == n_batch exactly one real Nautilus batch. Falls back to the latest B lanes if the post-prior lanes run out; never repeats a lane.", + "note": "Lane k is captured lane lane_rows[k]: the mass AND shear of a real Nautilus proposal (nautilus_batch_capture.py), lens light fixed at S3, the S3 light-subtracted dataset shared by every lane. `offsets` in the lane table are the mass offsets from the fiducial; the shear is in the capture file." + }, + "captured": { + "batches_path": "/mnt/ral/jnightin/autolens_profiling_wt/certified-solver-phase-c1-lane-rate/results/breakdown/imaging/nautilus_batches_rectangular_pix1.npz", + "batches_sha256": "c0b62fba544cb62c8a273c19837cf364127f5af7fdaa110f3a2c8a973e0b6cc0", + "schema_version": 2, + "n_calls": 972, + "n_lanes": 19440, + "call_sizes_seen": [ + 20 + ], + "calls_by_phase": { + "prior": 15, + "exploration": 957 + }, + "parameter_paths": [ + "galaxies.source.pixelization.regularization.inner_coefficient", + "galaxies.source.pixelization.regularization.outer_coefficient", + "galaxies.source.pixelization.regularization.signal_scale", + "galaxies.lens.mass.centre.centre_0", + "galaxies.lens.mass.centre.centre_1", + "galaxies.lens.mass.einstein_radius", + "galaxies.lens.mass.ell_comps.ell_comps_0", + "galaxies.lens.mass.ell_comps.ell_comps_1", + "galaxies.lens.shear.gamma_1", + "galaxies.lens.shear.gamma_2" + ], + "stage": "pix1", + "regularization": { + "class": "Adapt", + "free": true, + "priors": { + "inner_coefficient": [ + "LogUniform", + 1e-06, + 1000000.0 + ], + "outer_coefficient": [ + "LogUniform", + 1e-06, + 1000000.0 + ], + "signal_scale": [ + "Uniform", + 0.0, + 1.0 + ] + }, + "priors_source": "PyAutoGalaxy packaged config/priors/regularization (adapt_split.yaml / adapt.yaml / constant.yaml); adapt_split.yaml and adapt.yaml are identical to euclid_strong_lens_modeling_pipeline/config/priors/regularization/'s copies" + }, + "nautilus": { + "departures_from_production": [ + "mass/shear priors are the phase-B cell's Gaussians, not chained from source_lp", + "no positions likelihood", + "the cell's mesh (39x39 RectangularBilinearAdaptImage, weight_power 1, weight_floor 0) fixed in both stages; source_pix_1 uses RectangularBilinearAdaptDensity, source_pix_2 frees weight_power / weight_floor", + "seeded (production passes no seed)", + "quick updates disabled (iterations_per_quick_update=1e12; render-only)", + "NullPaths: no output directory, so no checkpoint and one Sampler.run call", + "post-fit perform_update skipped (samples / latent variables never built)" + ], + "n_batch": 20, + "n_like_max": 40000, + "n_live": 150, + "number_of_cores": 1, + "production_reference": "euclid_strong_lens_modeling_pipeline/scripts/full_model.py source_pix_1 (n_live=150) / source_pix_2 (n_live=75): af.Nautilus(n_batch=20, **SettingsSearch.search_dict) with use_jax_vmap=True and number_of_cores=1 (SettingsSearch defaults)", + "production_stage": "source_pix_1", + "seed": 1, + "stage": "pix1", + "use_jax_vmap": true, + "version": "1.0.5" + }, + "capture_fit_status": "sampling complete (n_like_max or convergence); post-fit result skipped", + "capture_library_revisions": { + "PyAutoArray": { + "head": "3de624b5b91a4efa130dc3cb0a3a0f06f85025a3", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoArray" + }, + "PyAutoFit": { + "head": "dd9fbe0aab60c4a57702b1444ca031b317c91331", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoFit" + }, + "PyAutoGalaxy": { + "head": "70a61e26cd715cefe7012a38285698091246a8a4", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy" + }, + "PyAutoLens": { + "head": "86054bbc19baa2f710a12e04a94fa27ab37cc354", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoLens" + }, + "PyAutoNerves": { + "head": "1fa613aa8d89a79613009fb66f5b4e2d21deb57a", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoNerves" + } + }, + "fingerprint_check": { + "fields": [ + "mesh", + "source_pixels", + "dataset_sha256", + "regularization_class", + "regularization_s0_fiducial", + "border_relocator", + "use_mixed_precision", + "log_evidence_s3_library" + ], + "not_identity": "the regularization coefficients: free per lane since the capture frees them", + "log_evidence_s3_library_rel_diff": 0.0, + "passed": true + }, + "timed_window_vs_capture_pdip": { + "reference": "the capture's own figure of merit (library PDIP, Fitness.call_wrap jax.jit(jax.vmap(call)) over parameter vectors) for the same lanes", + "compared_against": "this cell's jit(vmap) library-PDIP reference", + "n_compared": 19, + "max_rel_diff": 2.6317579656458324e-06, + "max_abs_diff_nats": 0.5115704729105346, + "gated": false, + "note": "RECORDED, NOT GATED: proves the lane trees rebuilt here are the models the sampler evaluated (a wrong parameter mapping shows up as nats, not 1e-10)." + } + }, + "matched": { + "vmap_wall_per_lane_ms": 30.633006129992282, + "scalar_wall_per_lane_ms": 41.09624338499998, + "speedup_vmap_over_scalar": 1.3415674325466644, + "note": "Both walls are the PRODUCTION nesting of their arm, measured in one process on the same B lanes with the SAME library Settings (no injection). A speedup below 1 means the batch is slower per lane than B sequential jitted calls." + }, + "solver_source": "library", + "solver": "pdip", + "certified_fallback": "pdip", + "certified_pass_budget": 16, + "certified_pass_budget_basis": "config default (Settings().certified_pass_budget)", + "certified_tau_rel": 1e-09, + "solver_used": "pdip", + "solver_check": { + "solver_used": "pdip", + "solver_used_source": "AbstractInversion.positive_only_solver_used on the fiducial S3 inversion, built eagerly on the JAX backend (AnalysisImaging(use_jax=True).fit_from) with the arms' Settings", + "reference_solver_used": "pdip", + "traced_solver_kwargs_jax": [ + "pdip" + ], + "observed_calls_jax": 1, + "report_rows": 0, + "report_vs_timed_arm_max_rel_diff": NaN + }, + "lanes_certified": [ + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null + ], + "lanes_passes": [ + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null + ], + "uncertified_lanes": null, + "per_lane_certification_note": "Not applicable: a library-PDIP row has no certificate or pass count.", + "gate": { + "pre_registered": true, + "gated": [ + "per lane: jit(vmap) arm vs jit(vmap) library PDIP <= lane_rtol relative", + "per lane: scalar jit arm vs scalar jit library PDIP <= lane_rtol relative" + ], + "recorded_not_gated": [ + "per lane: jit(vmap) arm vs scalar jit arm (rel_diff, abs_diff_nats)", + "per lane: jit(vmap) library PDIP vs scalar jit library PDIP", + "uncertified_lanes (certified_fallback=none rows)" + ], + "lanes_failed": 3, + "passed": false, + "policy_eligible": false, + "note": "Pre-registered before submission (module docstring; submit header). Phase 3 (results/notes/hst_gpu_residue_phase3_psf_2026_09.md) placed phase 2's ~2.5e-9 certified-vs-PDIP residual BETWEEN the jit(vmap) and scalar-jit compositions, not in the solver \u2014 so each arm is gated against the library-PDIP reference of its OWN composition, and the cross-composition difference is recorded with its nats. A certified_fallback=none row is policy-eligible only if every lane certifies AND passes the gate. Timing is never gated." + }, + "library_revisions": { + "PyAutoArray": { + "head": "3de624b5b91a4efa130dc3cb0a3a0f06f85025a3", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoArray", + "module_file": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/__init__.py" + }, + "PyAutoFit": { + "head": "dd9fbe0aab60c4a57702b1444ca031b317c91331", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoFit", + "module_file": "/mnt/ral/jnightin/PyAuto/PyAutoFit/autofit/__init__.py" + }, + "PyAutoGalaxy": { + "head": "70a61e26cd715cefe7012a38285698091246a8a4", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy", + "module_file": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/__init__.py" + }, + "PyAutoLens": { + "head": "86054bbc19baa2f710a12e04a94fa27ab37cc354", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoLens", + "module_file": "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/__init__.py" + }, + "autoarray_file": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/__init__.py" + } + }, + "headline_arm_note": "`trace`, `hlo_census`, `command_buffers` and `trace_timing` above describe the scalar arm \u2014 the program phase 1 traced. Both arms' full blocks, the lane table and the matched comparison are under `vmap`." +} \ No newline at end of file diff --git a/results/breakdown/imaging/fixed_light_trace_rectangular_jitvmap20_captured_pix1_libpdip_fbon_b16_hpc_a100_fp64_fixed_light_trace.png b/results/breakdown/imaging/fixed_light_trace_rectangular_jitvmap20_captured_pix1_libpdip_fbon_b16_hpc_a100_fp64_fixed_light_trace.png new file mode 100644 index 000000000..e79253d0a Binary files /dev/null and b/results/breakdown/imaging/fixed_light_trace_rectangular_jitvmap20_captured_pix1_libpdip_fbon_b16_hpc_a100_fp64_fixed_light_trace.png differ diff --git a/results/breakdown/imaging/fixed_light_trace_rectangular_jitvmap20_captured_pix2_libcertified_fboff_b16_hpc_a100_fp64_fixed_light_trace.json b/results/breakdown/imaging/fixed_light_trace_rectangular_jitvmap20_captured_pix2_libcertified_fboff_b16_hpc_a100_fp64_fixed_light_trace.json new file mode 100644 index 000000000..0d1a3682d --- /dev/null +++ b/results/breakdown/imaging/fixed_light_trace_rectangular_jitvmap20_captured_pix2_libcertified_fboff_b16_hpc_a100_fp64_fixed_light_trace.json @@ -0,0 +1,5164 @@ +{ + "device": { + "backend": "gpu", + "device": "cuda:0", + "hostname": "euclid-ral-gpu-2", + "xla_flags": "--xla_disable_hlo_passes=constant_folding --xla_gpu_autotune_level=0 --xla_gpu_enable_triton_gemm=false", + "omp_num_threads": null, + "cpu_count": 124, + "jax_compilation_cache_dir": "/mnt/ral/jnightin/autolens_profiling_wt/certified-solver-phase-c1-lane-rate/output/jax_cache/fixed_light_lanerate_rectangular_pix2_time_20_certified_off_350768_37", + "autotune_cache_entries_at_start": 0, + "cache_fresh": true, + "nvidia_smi": "NVIDIA A100 80GB PCIe, 4733 MiB, 81920 MiB" + }, + "machine": { + "cpu_model": "AMD EPYC 7702 64-Core Processor", + "cpu_count_os": 124, + "nproc": 4, + "nproc_all": 124, + "nproc_note": "GNU nproc honours OMP_NUM_THREADS, so `nproc` can print 1 on a multi-core host; `nproc_all` is the core count.", + "ram_total": "928298204 kB", + "kernel": "5.14.0-687.50.1.el9_8.x86_64", + "platform": "Linux-5.14.0-687.50.1.el9_8.x86_64-x86_64-with-glibc2.34", + "python": "3.12.4", + "jax_thread_env": { + "NPROC": null + }, + "blas_thread_env": { + "OMP_NUM_THREADS": null, + "OPENBLAS_NUM_THREADS": null, + "MKL_NUM_THREADS": null, + "VECLIB_MAXIMUM_THREADS": null, + "NUMEXPR_NUM_THREADS": null + }, + "thread_env_note": "NPROC sizes XLA's CPU intra-op pool (the JAX rows); the BLAS knobs pin OpenBLAS/MKL/OpenMP (the numpy/scipy rows) and do not touch JAX. Two disjoint families; both are recorded on every CPU timing.", + "gpu": "NVIDIA A100 80GB PCIe, 81920 MiB, 610.57.04" + }, + "precision": "fp64", + "configuration": { + "pixel_scale_arcsec": 0.05, + "mask_radius_arcsec": 3.5, + "image_pixels_masked": 15361, + "over_sampled_pixels": 62752, + "mesh": "rectangular", + "mesh_shape": [ + 39, + 39 + ], + "source_pixels": 1521, + "source_pixels_requested": null, + "dataset": "hst", + "dataset_sha256": { + "data.fits": "e4e833a28e9c6f6fb023cd85c0d3dde74068720256bc77a240633500e5b04fac", + "noise_map.fits": "315c6266a0acd3ac9c8da82fcd2b45a08697362481fd7a35072bab1658530ba3", + "psf.fits": "8389ba0e8bf4a09b4a561cfc246181a2fb944ed396754cd0ff76fdd22910d303" + }, + "cell_source_sha256": "06a162fcdae6b329384ec33322f443df07215d86e56f0505ac15b3d3473eb432", + "inversion_path": "dense", + "pass_budget": 11, + "pass_budget_basis": "phase 3 (autolens_profiling#255): the smallest ZERO-fallback budget per mesh, the budget a production run fixes. NOT phase 0's certifying budget (2 for Delaunay), which falls back on 67.5 % of a graded draw set and is not a production cost.", + "border_relocator_mode": "cell", + "border_relocator": true, + "border_relocator_note": "'cell' is use_border_relocator=True, which every profiling cell in this family forces; 'library' passes None and takes the shipped config default, which is what production runs. The resolved boolean is what this leg actually ran.", + "routes_selected": [ + "b", + "d" + ], + "trace_calls": 10, + "command_buffers_traced": "off", + "use_mixed_precision": false, + "tau_rel": 1e-09, + "regularization": { + "scheme": "constant", + "coefficient": 1.0 + }, + "thread_env": { + "n_threads": null, + "vars": [ + "OPENBLAS_NUM_THREADS", + "MKL_NUM_THREADS", + "OMP_NUM_THREADS", + "VECLIB_MAXIMUM_THREADS", + "NUMEXPR_NUM_THREADS" + ], + "set_to": null, + "preexisting": {}, + "overridden": {}, + "note": "Not pinned (legacy variant): recorded as found." + }, + "over_sample_size_lp_rule": { + "sub_size_list": [ + 4, + 2, + 2 + ], + "radial_list": [ + 0.3, + 0.6 + ], + "centre": [ + 0.0, + 0.0 + ] + }, + "vmap_batch": 20, + "lanes": "captured", + "arms": [ + "vmap", + "scalar" + ], + "fallback": "off", + "draw_seed": 0, + "vmap_composition": "jax.jit(jax.vmap(fn))", + "lane_rtol": 1e-09, + "vmap_flags_note": "Strict ProfileCLI.parse_cell_args rejects unknown flags. These keys record the exact batching program and prevent historical vmap(jit) artifacts from being mistaken for current jit(vmap) measurements.", + "solver_source": "library", + "solver": "certified", + "certified_fallback": "none", + "certified_pass_budget": 16, + "captured_pass": "time", + "batches": "/mnt/ral/jnightin/autolens_profiling_wt/certified-solver-phase-c1-lane-rate/results/breakdown/imaging/nautilus_batches_rectangular_pix2.npz" + }, + "solver_injection": { + "patched": null, + "part_v": "none \u2014 library mode selects the solver through al.Settings", + "part_b_route_d": { + "patched": "autoarray.inversion.inversion.inversion_util.reconstruction_positive_only_from", + "pass_budget": 11, + "fallback": true + }, + "note": "Library mode (phase B, #300): PART V's arms and references run the library's own positive-only solve, selected by Settings(positive_only_solver, certified_fallback, certified_pass_budget); nothing is injected. PART B's single-call route d (the fiducial d == b pin) still uses the phase-1 harness injection at the phase-3 budget and is not a phase-B row. The untimed certification report observes the library solve (library_solver_observed) without changing it." + }, + "routes": { + "b_s3_pdip": { + "label": "S3 PDIP (source-only)", + "status": "ok", + "solver": "library", + "ms": 38.98851379999542, + "log_likelihood": 28622.39485118912 + }, + "d_s3_certified_fallback": { + "label": "S3 certified active set, budget 11, PDIP fallback", + "status": "ok", + "solver": "harness-injected certified active set", + "pass_budget": 11, + "fallback": true, + "injected_solver_calls_jax": 1, + "injected_solver_calls_numpy": 0, + "ms": 30.2517120999255, + "log_likelihood": 28622.394851189252 + } + }, + "equivalence_pins": [ + { + "pin": "route d (certified, fallback) == route b (library PDIP)", + "route": "d_s3_certified_fallback", + "reference": "b_s3_pdip", + "expectation": "the certified active set returns the library's own positive solution", + "rtol": 1e-09, + "got": 28622.394851189252, + "reference_value": 28622.39485118912, + "rel_diff": 4.575691088611358e-15, + "status": "PASS" + } + ], + "equivalence_rtol": 1e-09, + "reference": { + "log_evidence_s0_library": 28622.394851199875, + "log_evidence_s3_library": 28622.39485119987, + "s3": { + "n_params": 1521, + "n_mapper": 1521, + "n_funcs": 0, + "edge_zeroed_pixels": 152, + "subtracted_light_flux": 5253.476646922047 + } + }, + "command_buffers": { + "wall_on_ms": 571.0435676999623, + "wall_off_ms": 574.7985816997243, + "command_buffer_delta_ms": 3.7550139997620136, + "command_buffer_delta_pct": 0.6575704923682764, + "traced": "off", + "compiler_option": "xla_gpu_enable_command_buffer", + "probe": { + "note": "Not taken in --vmap-batch mode: the CUPTI-inside-a-CUDA-graph probe is a phase-1 diagnostic about the JOIN, and this mode already compiles and times both the command-buffers ON and OFF executable of every arm." + }, + "note": "ONE lowering, TWO compilations, one process. wall_on_ms is the PRODUCTION program (CUDA graphs as XLA ships them) and is the number comparable to phase 5's row; wall_off_ms is the graph-less program the stage rows attribute. The delta is the launch overhead the graphs remove \u2014 it lands in device_idle and host_outside_span, not in any stage. Reconciliation is computed against wall_off_ms." + }, + "trace": { + "parser": "ProfileData.from_file(xplane) + as_text() + stack_frame_index(proto field 17)", + "stage_audit": { + "mesh_construction": [ + { + "instruction": "fusion.2", + "ms": 0.14819373499999788, + "opcode": "fusion", + "shape": "(f64[15361,2]{1,0}, s64[15361,2]{1,0}, s32[15361,2]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:227", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:227 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_select_fusion", + "ms": 0.039899950000000496, + "opcode": "fusion", + "shape": "(u32[2,15361]{1,0}, u32[2,15361]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69 (forward_interp)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:573 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/abstract.py:36 (AbstractInterpolator.mappings)" + ] + }, + { + "instruction": "loop_select_fusion.3", + "ms": 0.03500038500000035, + "opcode": "fusion", + "shape": "(u32[15361]{0}, u32[15361]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_select_fusion.1", + "ms": 0.03487613000000031, + "opcode": "fusion", + "shape": "(u32[15361]{0}, u32[15361]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_add_fusion", + "ms": 0.021255590000000074, + "opcode": "fusion", + "shape": "s64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69 (forward_interp)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:573 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/abstract.py:36 (AbstractInterpolator.mappings)" + ] + }, + { + "instruction": "loop_add_fusion.3", + "ms": 0.02111142000000016, + "opcode": "fusion", + "shape": "s64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "mixed_fusion": [ + { + "instruction": "loop_divide_gather_fusion", + "ms": 0.696951585, + "opcode": "fusion", + "shape": "(f64[15361,1,1,1521]{3,2,1,0}, f64[15361,1,1,1521]{3,2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_broadcast_fusion.2", + "ms": 0.23400206500000006, + "opcode": "fusion", + "shape": "f64[1521,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_multiply_transpose_fusion", + "ms": 0.18503692000000002, + "opcode": "fusion", + "shape": "(f64[1369,1369]{1,0}, f64[1369,1369]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:237 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:274 (_certified_positive_only_from)" + ] + }, + { + "instruction": "loop_broadcast_fusion", + "ms": 0.13656464500000023, + "opcode": "fusion", + "shape": "f64[15361,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:342", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:342 (mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:283 (Mapper.mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:91 (AbstractInversionImaging._mapping_matrix_for_convolution_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:137 (AbstractInversionImaging.operated_mapping_matrix_list)" + ] + }, + { + "instruction": "input_reduce_fusion.3", + "ms": 0.11318070000000004, + "opcode": "fusion", + "shape": "f64[92,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123 (data_vector_via_blurred_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:67 (InversionImagingMapping.data_vector)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:699 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_reduce_fusion.6", + "ms": 0.11226838499999997, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163 (mapped_reconstructed_data_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:120 (InversionImagingMapping._mapped_reconstructed_data_dict_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:196 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + } + ], + "border_relocator": [ + { + "instruction": "eigh.0", + "ms": 0.07435260000000034, + "opcode": "custom-call", + "shape": "(f64[2,2]{0,1}, f64[2]{0}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "custom-call.2", + "ms": 0.007930405000000007, + "opcode": "custom-call", + "shape": "(f64[2,2]{1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_reduce_fusion.14", + "ms": 0.001569894999999997, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:256", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:256 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_multiply_fusion.1", + "ms": 0.0015497349999999985, + "opcode": "fusion", + "shape": "f64[2,2]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + } + ], + "other": [ + { + "instruction": "copy.41", + "ms": 0.030482110000000565, + "opcode": "copy", + "shape": "u32[2,15361]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.42", + "ms": 0.030116844999999413, + "opcode": "copy", + "shape": "u32[2,15361]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.60", + "ms": 0.02854873500000104, + "opcode": "copy", + "shape": "u32[15361]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.59", + "ms": 0.02848323000000083, + "opcode": "copy", + "shape": "u32[15361]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.51", + "ms": 0.02846624000000079, + "opcode": "copy", + "shape": "u32[15361]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.50", + "ms": 0.028422155000000678, + "opcode": "copy", + "shape": "u32[15361]{0}", + "source": "", + "stack": [] + } + ], + "pdip_solve": [ + { + "instruction": "cholesky.40", + "ms": 7.241606069999998, + "opcode": "custom-call", + "shape": "(f64[1369,1369]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "triangular-solve.1", + "ms": 1.2781716499999873, + "opcode": "custom-call", + "shape": "(f64[1369,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "triangular-solve", + "ms": 1.0788007149999808, + "opcode": "custom-call", + "shape": "(f64[1369,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "cholesky.60", + "ms": 0.8488837199999999, + "opcode": "custom-call", + "shape": "(f64[1369,1369]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:237 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:274 (_certified_positive_only_from)" + ] + }, + { + "instruction": "cholesky.70", + "ms": 0.8416984249999988, + "opcode": "custom-call", + "shape": "(f64[1369,1369]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:297 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:274 (_certified_positive_only_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:496 (reconstruction_positive_only_from)" + ] + }, + { + "instruction": "input_transpose_fusion.1", + "ms": 0.2523309950000005, + "opcode": "fusion", + "shape": "f64[1369,1369]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + } + ], + "mapping_matrix": [ + { + "instruction": "input_reduce_fusion.20", + "ms": 0.002865394999999996, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:362 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + } + ], + "regularization_H": [ + { + "instruction": "input_scatter_fusion.8", + "ms": 0.002817529999999996, + "opcode": "fusion", + "shape": "f64[1521,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:123 (weighted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:366 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "psf_convolution_mapping_matrix": [ + { + "instruction": "fft.19.0", + "ms": 1.7819829200000004, + "opcode": "fft", + "shape": "f64[1521,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_scatter_fusion", + "ms": 1.4316758649999994, + "opcode": "fusion", + "shape": "f64[1521,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.15.0", + "ms": 1.3829853, + "opcode": "fft", + "shape": "c128[1521,180,91]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.17.0", + "ms": 0.9921738049999994, + "opcode": "fft", + "shape": "c128[1521,91,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_transpose_fusion.2", + "ms": 0.5220091399999995, + "opcode": "fusion", + "shape": "c128[1521,91,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "wrapped_transpose.2", + "ms": 0.507333405, + "opcode": "fusion", + "shape": "c128[1521,180,91]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + } + ], + "curvature_matrix_F": [ + { + "instruction": "cublas-lt-matmul.2", + "ms": 4.432382150000001, + "opcode": "custom-call", + "shape": "(f64[1521,1521]{1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "inversion_other": [ + { + "instruction": "cholesky.80", + "ms": 0.9217428699999995, + "opcode": "custom-call", + "shape": "(f64[1521,1521]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1078 (AbstractInversion.log_det_curvature_reg_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:347 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "cholesky.90", + "ms": 0.9046710200000012, + "opcode": "custom-call", + "shape": "(f64[1521,1521]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1157 (AbstractInversion.log_det_regularization_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:348 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "loop_reduce_window_fusion.3", + "ms": 0.005840480000000002, + "opcode": "fusion", + "shape": "s64[6,16]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "loop_reduce_window_fusion.2", + "ms": 0.003103270000000011, + "opcode": "fusion", + "shape": "s64[86,16]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "input_scatter_fusion.9", + "ms": 0.002566069999999999, + "opcode": "fusion", + "shape": "s64[1369]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527 (AbstractInversion.zeroed_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:567 (AbstractInversion.solve_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:684 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_broadcast_fusion.4", + "ms": 0.001903160000000007, + "opcode": "fusion", + "shape": "(s64[1369]{0}, s64[1369]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527 (AbstractInversion.zeroed_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:567 (AbstractInversion.solve_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:684 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "chi_squared_evidence": [ + { + "instruction": "loop_multiply_fusion", + "ms": 0.0030337000000000033, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:300", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:300 (AbstractNDArray.__pow__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:60 (unwrap_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:35 (to_new_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:78 (chi_squared_map_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:78 (AbstractFit.chi_squared_map)" + ] + } + ] + }, + "stage_audit_note": "The HLO instructions that contributed most of each stage's milliseconds, with their full source stack. A stage row is only as good as the rules that built it; this is how a reader checks a row against the HLO instead of trusting it.", + "untraced_wall_ms": 28.75262516499788, + "reconciliation_vs_untraced_pct": 0.23128994177221876, + "wall_basis": "wall_ms is the TRACED run's wall, the run these kernel durations came from. untraced_wall_ms is the same executable without the profiler; the difference is the profiler's overhead and belongs in neither the stages nor the idle row.", + "calls": 200, + "call_split": "per-call (first-instruction recurrence)", + "call_blocks": 200, + "events": 102520, + "streams": [ + "Stream #14(MemcpyD2D,MemcpyH2D,Compute,MemcpyD2H,Memset)" + ], + "per_stage_ms": { + "border_relocator": { + "median_ms": 0.08540900000000001, + "min_ms": 0.08457100000000002, + "max_ms": 0.087421 + }, + "chi_squared_evidence": { + "median_ms": 0.003008, + "min_ms": 0.002879, + "max_ms": 0.003296 + }, + "curvature_matrix_F": { + "median_ms": 4.4115435000000005, + "min_ms": 4.387056, + "max_ms": 4.573977 + }, + "inversion_other": { + "median_ms": 1.8411594999999998, + "min_ms": 1.820477, + "max_ms": 1.884692 + }, + "mapping_matrix": { + "median_ms": 0.002848, + "min_ms": 0.002847, + "max_ms": 0.002944 + }, + "memset": { + "median_ms": 0.030575499999999995, + "min_ms": 0.014398000000000001, + "max_ms": 0.05420800000000002 + }, + "mesh_construction": { + "median_ms": 0.34461200000000014, + "min_ms": 0.341938, + "max_ms": 0.3525939999999995 + }, + "mixed_fusion": { + "median_ms": 1.8504445000000003, + "min_ms": 1.8437429999999997, + "max_ms": 1.882365 + }, + "other": { + "median_ms": 0.18061049999999973, + "min_ms": 0.1798019999999998, + "max_ms": 0.18463699999999988 + }, + "pdip_solve": { + "median_ms": 11.884316999999994, + "min_ms": 4.679350000000001, + "max_ms": 22.00700200000001 + }, + "psf_convolution_mapping_matrix": { + "median_ms": 6.614719, + "min_ms": 6.586161, + "max_ms": 6.686088000000001 + }, + "regularization_H": { + "median_ms": 0.002816, + "min_ms": 0.002464, + "max_ms": 0.003136 + } + }, + "stage_order": [ + "border_relocator", + "mesh_construction", + "mapping_matrix", + "psf_convolution_mapping_matrix", + "curvature_matrix_F", + "regularization_H", + "pdip_solve", + "chi_squared_evidence", + "inversion_other", + "mixed_fusion", + "other", + "memset" + ], + "mixed_fusion": { + "ms": 1.8504445000000003, + "constituent_stage_sets": { + "curvature_matrix_F + psf_convolution_mapping_matrix": 0.696951585, + "pdip_solve + psf_convolution_mapping_matrix": 0.23400206500000006, + "inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": 0.18503692000000002, + "mapping_matrix + pdip_solve": 0.1389175450000003, + "data_vector_D + pdip_solve": 0.11688908500000014, + "mapped_reconstruction + pdip_solve": 0.11226838499999997, + "border_relocator + pdip_solve": 0.06464511500000004, + "mesh_construction + pdip_solve": 0.038893325000000055, + "inversion_other + regularization_H": 0.031110209999999992, + "inversion_other + pdip_solve": 0.030266415000000154, + "border_relocator + mesh_construction + pdip_solve": 0.027127139999999973, + "curvature_reg_reduce_gather + inversion_other": 0.025689265000000003, + "border_relocator + inversion_other + mapping_matrix + mesh_construction + pdip_solve": 0.020668045000000006, + "pdip_solve + regularization_H": 0.019340714999999998, + "inversion_other + mapping_matrix + pdip_solve + regularization_H": 0.015641885000000046, + "inversion_other + mapping_matrix + mesh_construction": 0.013025489999999992, + "pdip_solve + ray_trace_data_grid": 0.012745174999999996, + "border_relocator + ray_trace_data_grid": 0.012402915000000002, + "inversion_other + mapped_reconstruction + reconstruction_scatter": 0.009762880000000007, + "inversion_other + mapped_reconstruction + pdip_solve": 0.00891774, + "border_relocator + pdip_solve + ray_trace_data_grid": 0.008747624999999998, + "chi_squared_evidence + pdip_solve": 0.007687504999999988, + "inversion_other + mesh_construction + pdip_solve": 0.005583884999999989, + "inversion_other + pdip_solve + ray_trace_data_grid": 0.0047563949999999905, + "border_relocator + mesh_construction": 0.0036917799999999982, + "border_relocator + inversion_other": 0.003369879999999999, + "border_relocator + inversion_other + mesh_construction + pdip_solve": 0.0024973850000000034, + "chi_squared_evidence + inversion_other": 0.0018047699999999976 + }, + "example_kernels": { + "curvature_matrix_F + psf_convolution_mapping_matrix": [ + "loop_divide_gather_fusion" + ], + "pdip_solve + psf_convolution_mapping_matrix": [ + "loop_broadcast_fusion.2" + ], + "inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": [ + "input_multiply_transpose_fusion" + ], + "mapping_matrix + pdip_solve": [ + "loop_divide_fusion.1", + "loop_broadcast_fusion" + ], + "data_vector_D + pdip_solve": [ + "input_reduce_fusion.3", + "input_reduce_fusion.18" + ], + "mapped_reconstruction + pdip_solve": [ + "input_reduce_fusion.6" + ], + "border_relocator + pdip_solve": [ + "loop_select_sine_fusion", + "input_transpose_fusion.6", + "input_transpose_fusion.7" + ], + "mesh_construction + pdip_solve": [ + "loop_multiply_fusion.2", + "loop_pad_fusion", + "loop_reduce_fusion", + "triton_softmax.1" + ], + "inversion_other + regularization_H": [ + "input_transpose_fusion.4" + ], + "inversion_other + pdip_solve": [ + "input_scatter_fusion.11", + "input_reduce_fusion.9", + "input_reduce_fusion.16", + "input_reduce_fusion.4" + ] + }, + "prorated_estimate_ms": { + "psf_convolution_mapping_matrix": 0.46547682500000004, + "pdip_solve": 0.46113291650000043, + "curvature_matrix_F": 0.3484757925, + "inversion_other": 0.11506338983333343, + "mapped_reconstruction": 0.10862029583333332, + "mapping_matrix": 0.08184468275000016, + "border_relocator": 0.05877105525000001, + "data_vector_D": 0.05844454250000007, + "reconstruction_scatter": 0.049513523333333344, + "mesh_construction": 0.04129601275000002, + "regularization_H": 0.029135933750000006, + "ray_trace_data_grid": 0.017075384999999995, + "curvature_reg_reduce_gather": 0.012844632500000001, + "chi_squared_evidence": 0.004746137499999993 + }, + "prorated_note": "ESTIMATE ONLY \u2014 a mixed fusion's time split equally across the stages its constituents span. Never summed into the measured table, never reconciled." + }, + "other_sources_ms": { + "copy.41": 0.030482110000000565, + "copy.42": 0.030116844999999413, + "copy.60": 0.02854873500000104, + "copy.59": 0.02848323000000083, + "copy.51": 0.02846624000000079, + "copy.50": 0.028422155000000678, + "copy.96": 0.0016783399999999993, + "copy.95": 0.001647319999999998, + "copy.52": 0.0015554499999999999, + "copy.34": 0.0015447500000000008 + }, + "device_span_ms": 29.620574539999996, + "device_busy_ms": 28.053509945000002, + "device_idle_ms": 1.5670645949999944, + "largest_idle_gaps": [ + { + "gap_ms": 0.046654, + "after": "input_concatenate_fusion.4", + "before": "custom-call.2" + }, + { + "gap_ms": 0.034654, + "after": "loop_add_fusion.3", + "before": "loop_select_fusion.3" + }, + { + "gap_ms": 0.033759, + "after": "loop_multiply_fusion.1", + "before": "eigh.0" + }, + { + "gap_ms": 0.027455, + "after": "copy.51", + "before": "loop_add_fusion.3" + }, + { + "gap_ms": 0.022815, + "after": "copy.42", + "before": "loop_add_fusion" + }, + { + "gap_ms": 0.021568, + "after": "while.26", + "before": "input_transpose_fusion" + }, + { + "gap_ms": 0.021088, + "after": "input_scatter_fusion.4", + "before": "input_scatter_fusion.5" + }, + { + "gap_ms": 0.021023, + "after": "loop_broadcast_fusion.6", + "before": "loop_broadcast_fusion.8" + } + ], + "kernel_ms": 27.252062499999994, + "sum_ms": 28.81912709499999, + "wall_ms": 29.624366735006333, + "host_outside_span_ms": 0.0037921950063370957, + "reconciliation_pct": -2.71816659309316, + "unjoined_ms": 0.0, + "unjoined_pct": 0.0, + "other_ms": 0.18061049999999973, + "other_pct": 0.6096687285017204, + "note": "Stage rows attribute the command-buffers-OFF program (see the module docstring): kernel times are the same, the launch overhead the CUDA graphs remove is not. sum_ms = kernel rows + device_idle_ms; the residual against wall_ms is host_outside_span_ms (dispatch before the first kernel, teardown after the last).", + "per_stage_ms_per_lane": { + "border_relocator": 0.08540900000000001, + "chi_squared_evidence": 0.003008, + "curvature_matrix_F": 4.4115435000000005, + "inversion_other": 1.8411594999999998, + "mapping_matrix": 0.002848, + "memset": 0.030575499999999995, + "mesh_construction": 0.34461200000000014, + "mixed_fusion": 1.8504445000000003, + "other": 0.18061049999999973, + "pdip_solve": 11.884316999999994, + "psf_convolution_mapping_matrix": 6.614719, + "regularization_H": 0.002816 + }, + "per_lane_divisor": 1, + "host_callback": { + "pure_callback_span_ms": 0, + "qhull_ms": 0.0, + "callback_body_ms_note": "the OUTERMOST matching body event, not a sum: under the probe the body appears twice (the wrapper and the timed re-implementation it calls) and summing them would count the same work twice", + "events_by_name": { + "ThenExecuteCallback:GetEventForComputeStreamSyncPoint": { + "count": 200, + "ms": 0.38357209999999997 + } + }, + "note": "HOST milliseconds per traced BATCH (the whole invocation), aggregated by name because the events nest. Not a row of the device table: the device pays for them as the idle gaps largest_idle_gaps names." + }, + "host_callback_ms": 0 + }, + "hlo_census": { + "status": "excluded", + "reason": "The legacy census anchors PyAutoArray source line numbers that moved after the phase-1 run. No batched attribution is published from unsupported anchors; the device-event table and wall reconciliation remain valid." + }, + "stage_map_provenance": [ + { + "label": "log_det_curvature_reg", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 850, + 882 + ], + "requires": { + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 884, + 896 + ] + }, + "function": null + }, + { + "label": "log_det_regularization", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 850, + 882 + ], + "requires": { + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 897, + 943 + ] + }, + "function": null + }, + { + "label": "curvature_reg_add", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 359, + 372 + ], + "requires": null, + "function": null + }, + { + "label": "curvature_reg_reduce_gather", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 374, + 398 + ], + "requires": null, + "function": null + }, + { + "label": "edge_subset_gather", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 606, + 614 + ], + "requires": null, + "function": null + }, + { + "label": "regularization_term", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 786, + 849 + ], + "requires": null, + "function": null + }, + { + "label": "mapped_reconstruction", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 722, + 785 + ], + "requires": null, + "function": null + }, + { + "label": "reconstruction_scatter", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 583, + 605 + ], + "requires": null, + "function": null + }, + { + "label": "reconstruction_scatter", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 615, + 721 + ], + "requires": null, + "function": null + }, + { + "label": "certified_active_set_solve", + "path": "likelihood_breakdown/active_set_steps.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "certified_active_set_solve", + "path": "likelihood_breakdown/library_solver_injection.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "pdip_solve", + "path": "PyAutoArray/autoarray/util/jax_nnls.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "pdip_solve", + "path": "PyAutoArray/autoarray/inversion/inversion/inversion_util.py", + "lines": [ + 256, + 488 + ], + "requires": null, + "function": null + }, + { + "label": "mapped_reconstruction", + "path": "PyAutoArray/autoarray/inversion/inversion/inversion_util.py", + "lines": [ + 156, + 200 + ], + "requires": null, + "function": null + }, + { + "label": "curvature_matrix_F", + "path": "PyAutoArray/autoarray/inversion/inversion/inversion_util.py", + "lines": [ + 12, + 155 + ], + "requires": null, + "function": null + }, + { + "label": "reconstruction_scatter", + "path": "PyAutoArray/autoarray/inversion/inversion/inversion_util.py", + "lines": [ + 201, + 255 + ], + "requires": null, + "function": null + }, + { + "label": "data_vector_D", + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py", + "lines": [ + 54, + 73 + ], + "requires": null, + "function": null + }, + { + "label": "curvature_matrix_F", + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py", + "lines": [ + 74, + 110 + ], + "requires": null, + "function": null + }, + { + "label": "data_vector_D", + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py", + "lines": null, + "requires": null, + "function": "data_vector_via_blurred_mapping_matrix_from" + }, + { + "label": "curvature_matrix_F", + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "likelihood_breakdown/psf_cube_injection.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": [ + 1086, + 1300 + ], + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": [ + 632, + 642 + ], + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": [ + 670, + 691 + ], + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": null, + "requires": { + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": [ + 1086, + 1300 + ] + }, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": null, + "requires": { + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py", + "lines": [ + 119, + 150 + ] + }, + "function": null + }, + { + "label": "psf_convolution_image", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py", + "lines": [ + 119, + 150 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_qhull_callback", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 139, + 172 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_seed_argmin", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 173, + 207 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_locate_walk", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 208, + 372 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_dual_areas", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 373, + 396 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_dual_areas", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 437, + 494 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_dual_areas", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 605, + 615 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_interpolation_weights", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 616, + 695 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_interpolation_weights", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 896, + 1000 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_construction", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "border_relocator", + "path": "PyAutoArray/autoarray/inversion/mesh/border_relocator.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "mesh_construction", + "path": "PyAutoArray/autoarray/inversion/mesh/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "mapping_matrix", + "path": "PyAutoArray/autoarray/inversion/mappers/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "mapping_matrix", + "path": "PyAutoArray/autoarray/inversion/mappings/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "mapping_matrix", + "path": "PyAutoArray/autoarray/inversion/linear_obj/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "regularization_H", + "path": "PyAutoArray/autoarray/inversion/regularization/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "chi_squared_evidence", + "path": "PyAutoArray/autoarray/fit/fit_util.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "chi_squared_evidence", + "path": "PyAutoArray/autoarray/fit/fit_dataset.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "ray_trace_mesh_grid", + "path": "PyAutoLens/autolens/lens/to_inversion.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "ray_trace_mesh_grid", + "path": "PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "mass_profile_deflections", + "path": "PyAutoGalaxy/autogalaxy/profiles/mass/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "light_profile_image", + "path": "PyAutoGalaxy/autogalaxy/profiles/light/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "light_profile_image", + "path": "PyAutoGalaxy/autogalaxy/operate/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "ray_trace_data_grid", + "path": "PyAutoLens/autolens/lens/tracer.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "ray_trace_data_grid", + "path": "PyAutoLens/autolens/lens/tracer_util.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "grids_and_structures", + "path": "PyAutoArray/autoarray/structures/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "grids_and_structures", + "path": "PyAutoArray/autoarray/operators/over_sampling/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "grids_and_structures", + "path": "PyAutoArray/autoarray/geometry/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "inversion_other", + "path": "PyAutoArray/autoarray/inversion/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "fit_imaging_other", + "path": "PyAutoLens/autolens/imaging/fit_imaging.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "fit_imaging_other", + "path": "PyAutoGalaxy/autogalaxy/imaging/fit_imaging.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "fit_imaging_other", + "path": "PyAutoArray/autoarray/fit/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "analysis_other", + "path": "PyAutoLens/autolens/analysis/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "analysis_other", + "path": "PyAutoGalaxy/autogalaxy/analysis/", + "lines": null, + "requires": null, + "function": null + } + ], + "trace_timing": { + "traced_wall_ms": 29.624366735006333, + "untraced_wall_ms": 28.75262516499788, + "profiler_overhead_ms": 0.871741570008453, + "profiler_overhead_pct": 3.0318677512259677 + }, + "jit_phases": { + "b_s3_pdip_library_likelihood_jit": { + "lower_s": 1.2862135809991742, + "compile_s": 3.4392438549984945, + "first_call_s": 0.1236057649985014, + "steady_per_call_s": 0.03898851379999542 + }, + "d_s3_certified_fallback_library_likelihood_jit": { + "lower_s": 0.4936090230003174, + "compile_s": 3.875583139997616, + "first_call_s": 0.04601696800091304, + "steady_per_call_s": 0.0302517120999255 + } + }, + "peak_bytes": { + "after_setup": 85616640, + "after_routes": 1197479168, + "after_all": 1884339200, + "note": "jax.devices()[0].memory_stats()['peak_bytes_in_use']; None on a backend that does not report it (CPU). Process-wide high-water marks." + }, + "note": "Every stage row is a MEASURED sum of GPU kernel durations joined to library source through the optimized HLO of ONE program \u2014 not arithmetic across compilations. The rows attribute the command-buffers-OFF program: kernel time is the same as production, the launch overhead the CUDA graphs remove is not, and command_buffers.* carries both walls and their delta. sum_ms = kernel rows + measured device_idle_ms; the residual against the wall is host_outside_span_ms and is reported, not absorbed. mixed_fusion.prorated_estimate_ms is an ESTIMATE and is never part of the table. No row may be quoted if reconciliation_pct is outside 5 % or unjoined_ms is non-zero.", + "vmap": { + "batch": 20, + "lanes_mode": "captured", + "arms": [ + "vmap", + "scalar" + ], + "draw_seed": 0, + "fallback": false, + "composition": "jax.jit(jax.vmap(fn))", + "composition_provenance": "Current Fitness._vmap after PyAutoFit#1638. Array 343376 used the retired jax.vmap(jax.jit(fn)) composition and is historical evidence only.", + "headline_arm": "scalar", + "lane_rtol": 1e-09, + "lanes": [ + { + "lane": 0, + "draw_name": "call00008_lane00", + "draw_kind": "captured", + "offsets": {}, + "log_likelihood_vmap": 22274.403488581782, + "log_likelihood_scalar": 22274.40348858178, + "log_likelihood_library_pdip": 22274.40348857942, + "log_likelihood_library_pdip_scalar": 22274.403488579374, + "rel_diff_vmap_vs_library_pdip": 1.0599827048176995e-13, + "rel_diff_scalar_vs_library_pdip_scalar": 1.0795817686972278e-13, + "abs_diff_nats": 3.637978807091713e-12, + "rel_diff": 1.633255323293663e-16, + "rel_diff_scalar_vs_library_pdip": 1.0583494494944057e-13, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 4.729372449219227e-11, + "rel_diff_library_pdip_vmap_vs_scalar": 2.1232319202819914e-15, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 10, + "pdip_iter": null + }, + { + "lane": 1, + "draw_name": "call00008_lane01", + "draw_kind": "captured", + "offsets": {}, + "log_likelihood_vmap": 25020.104927248427, + "log_likelihood_scalar": 25020.10492700105, + "log_likelihood_library_pdip": 25020.10492731211, + "log_likelihood_library_pdip_scalar": 25020.10492692715, + "rel_diff_vmap_vs_library_pdip": 2.5452658653171297e-12, + "rel_diff_scalar_vs_library_pdip_scalar": 2.9537007020192915e-12, + "abs_diff_nats": 2.473752829246223e-07, + "rel_diff": 9.887060172064318e-12, + "rel_diff_scalar_vs_library_pdip": 1.2432326037258528e-11, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 3.849600034300238e-07, + "rel_diff_library_pdip_vmap_vs_scalar": 1.5386026739469102e-11, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 5, + "pdip_iter": null + }, + { + "lane": 2, + "draw_name": "call00008_lane02", + "draw_kind": "captured", + "offsets": {}, + "log_likelihood_vmap": -194152.8951770001, + "log_likelihood_scalar": -194152.91917556833, + "log_likelihood_library_pdip": -194152.9169570576, + "log_likelihood_library_pdip_scalar": -194152.92157207552, + "rel_diff_vmap_vs_library_pdip": 1.1217991395939684e-07, + "rel_diff_scalar_vs_library_pdip_scalar": 1.2343400085216491e-08, + "abs_diff_nats": 0.023998568241950125, + "rel_diff": 1.2360652800820744e-07, + "rel_diff_scalar_vs_library_pdip": 1.1426615461214888e-08, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 0.004615017911419272, + "rel_diff_library_pdip_vmap_vs_scalar": 2.3770015274820556e-08, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": true, + "passes": 2, + "pdip_iter": null + }, + { + "lane": 3, + "draw_name": "call00008_lane03", + "draw_kind": "captured", + "offsets": {}, + "log_likelihood_vmap": 21669.460653391165, + "log_likelihood_scalar": 21669.46065339682, + "log_likelihood_library_pdip": 21671.259367014034, + "log_likelihood_library_pdip_scalar": 21671.25936701999, + "rel_diff_vmap_vs_library_pdip": 8.299995825841269e-05, + "rel_diff_scalar_vs_library_pdip_scalar": 8.299995827215531e-05, + "abs_diff_nats": 5.657057045027614e-09, + "rel_diff": 2.6106127584402223e-13, + "rel_diff_scalar_vs_library_pdip": 8.299995799737308e-05, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 5.955371307209134e-09, + "rel_diff_library_pdip_vmap_vs_scalar": 2.7480504046166357e-13, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 4, + "draw_name": "call00008_lane04", + "draw_kind": "captured", + "offsets": {}, + "log_likelihood_vmap": 19207.043786251175, + "log_likelihood_scalar": 19207.04378598415, + "log_likelihood_library_pdip": 19204.153254755838, + "log_likelihood_library_pdip_scalar": 19204.15325448881, + "rel_diff_vmap_vs_library_pdip": 0.00015051595647006048, + "rel_diff_scalar_vs_library_pdip_scalar": 0.00015051595647234278, + "abs_diff_nats": 2.6702400646172464e-07, + "rel_diff": 1.3902400048495676e-11, + "rel_diff_scalar_vs_library_pdip": 0.00015051594256556788, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 2.6702764444053173e-07, + "rel_diff_library_pdip_vmap_vs_scalar": 1.3904682018620958e-11, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 5, + "draw_name": "call00008_lane05", + "draw_kind": "captured", + "offsets": {}, + "log_likelihood_vmap": 19342.80344895851, + "log_likelihood_scalar": 19342.803448783256, + "log_likelihood_library_pdip": 19342.25587702078, + "log_likelihood_library_pdip_scalar": 19342.255876845524, + "rel_diff_vmap_vs_library_pdip": 2.830962123618572e-05, + "rel_diff_scalar_vs_library_pdip_scalar": 2.830962123644223e-05, + "abs_diff_nats": 1.7525599105283618e-07, + "rel_diff": 9.060526904328366e-12, + "rel_diff_scalar_vs_library_pdip": 2.8309612175402316e-05, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 1.7525599105283618e-07, + "rel_diff_library_pdip_vmap_vs_scalar": 9.060783404413229e-12, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 6, + "draw_name": "call00008_lane06", + "draw_kind": "captured", + "offsets": {}, + "log_likelihood_vmap": 24443.79026135683, + "log_likelihood_scalar": 24443.790261356848, + "log_likelihood_library_pdip": 24443.790261355745, + "log_likelihood_library_pdip_scalar": 24443.790261355764, + "rel_diff_vmap_vs_library_pdip": 4.435145584714247e-14, + "rel_diff_scalar_vs_library_pdip_scalar": 4.435145584714244e-14, + "abs_diff_nats": 1.8189894035458565e-11, + "rel_diff": 7.441519437439676e-16, + "rel_diff_scalar_vs_library_pdip": 4.5095607790886473e-14, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 1.8189894035458565e-11, + "rel_diff_library_pdip_vmap_vs_scalar": 7.441519437440006e-16, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 8, + "pdip_iter": null + }, + { + "lane": 7, + "draw_name": "call00008_lane07", + "draw_kind": "captured", + "offsets": {}, + "log_likelihood_vmap": 28119.165446921, + "log_likelihood_scalar": 28119.165446932093, + "log_likelihood_library_pdip": 28119.165446914456, + "log_likelihood_library_pdip_scalar": 28119.165446932093, + "rel_diff_vmap_vs_library_pdip": 2.327495773768119e-13, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 1.1092197382822633e-08, + "rel_diff": 3.944710736083682e-13, + "rel_diff_scalar_vs_library_pdip": 6.272206509854275e-13, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 1.7636921256780624e-08, + "rel_diff_library_pdip_vmap_vs_scalar": 6.272206509850341e-13, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 5, + "pdip_iter": null + }, + { + "lane": 8, + "draw_name": "call00008_lane08", + "draw_kind": "captured", + "offsets": {}, + "log_likelihood_vmap": 28488.842567056352, + "log_likelihood_scalar": 28488.84256701032, + "log_likelihood_library_pdip": 28488.842567046995, + "log_likelihood_library_pdip_scalar": 28488.84256701842, + "rel_diff_vmap_vs_library_pdip": 3.284402119818998e-13, + "rel_diff_scalar_vs_library_pdip_scalar": 2.84256575378088e-13, + "abs_diff_nats": 4.6031345846131444e-08, + "rel_diff": 1.6157674969721337e-12, + "rel_diff_scalar_vs_library_pdip": 1.287327284988154e-12, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 2.8576323529705405e-08, + "rel_diff_library_pdip_vmap_vs_scalar": 1.0030707096113572e-12, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 8, + "pdip_iter": null + }, + { + "lane": 9, + "draw_name": "call00008_lane09", + "draw_kind": "captured", + "offsets": {}, + "log_likelihood_vmap": 28760.406110559044, + "log_likelihood_scalar": 28760.406110612974, + "log_likelihood_library_pdip": 28760.406110565793, + "log_likelihood_library_pdip_scalar": 28760.40611062914, + "rel_diff_vmap_vs_library_pdip": 2.346437898411987e-13, + "rel_diff_scalar_vs_library_pdip_scalar": 5.621331547450082e-13, + "abs_diff_nats": 5.392939783632755e-08, + "rel_diff": 1.8751264369812526e-12, + "rel_diff_scalar_vs_library_pdip": 1.64048264714313e-12, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6.3348124967888e-08, + "rel_diff_library_pdip_vmap_vs_scalar": 2.2026158018845248e-12, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 8, + "pdip_iter": null + }, + { + "lane": 10, + "draw_name": "call00008_lane10", + "draw_kind": "captured", + "offsets": {}, + "log_likelihood_vmap": 19207.043768078816, + "log_likelihood_scalar": 19207.04376784843, + "log_likelihood_library_pdip": 19204.153236579965, + "log_likelihood_library_pdip_scalar": 19204.15323634958, + "rel_diff_vmap_vs_library_pdip": 0.00015051595679551333, + "rel_diff_scalar_vs_library_pdip_scalar": 0.00015051595679731902, + "abs_diff_nats": 2.30385921895504e-07, + "rel_diff": 1.1994866293851935e-11, + "rel_diff_scalar_vs_library_pdip": 0.0001505159447988416, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 2.30385921895504e-07, + "rel_diff_library_pdip_vmap_vs_scalar": 1.1996671712628809e-11, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 11, + "draw_name": "call00008_lane11", + "draw_kind": "captured", + "offsets": {}, + "log_likelihood_vmap": 21293.073383208954, + "log_likelihood_scalar": 21293.0733832091, + "log_likelihood_library_pdip": 21293.017831633548, + "log_likelihood_library_pdip_scalar": 21293.017831633693, + "rel_diff_vmap_vs_library_pdip": 2.608910387672443e-06, + "rel_diff_scalar_vs_library_pdip_scalar": 2.6089103876724254e-06, + "abs_diff_nats": 1.4551915228366852e-10, + "rel_diff": 6.8341074895472504e-15, + "rel_diff_scalar_vs_library_pdip": 2.6089103945065684e-06, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 1.4551915228366852e-10, + "rel_diff_library_pdip_vmap_vs_scalar": 6.83412531912127e-15, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 12, + "draw_name": "call00008_lane12", + "draw_kind": "captured", + "offsets": {}, + "log_likelihood_vmap": 19207.10066644192, + "log_likelihood_scalar": 19207.10066605381, + "log_likelihood_library_pdip": 19204.210147488666, + "log_likelihood_library_pdip_scalar": 19204.21014710055, + "rel_diff_vmap_vs_library_pdip": 0.00015051485747412843, + "rel_diff_scalar_vs_library_pdip_scalar": 0.00015051485747754917, + "abs_diff_nats": 3.881068550981581e-07, + "rel_diff": 2.0206425834175444e-11, + "rel_diff_scalar_vs_library_pdip": 0.00015051483726466122, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 3.881141310557723e-07, + "rel_diff_library_pdip_vmap_vs_scalar": 2.0209846074527033e-11, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 13, + "draw_name": "call00008_lane13", + "draw_kind": "captured", + "offsets": {}, + "log_likelihood_vmap": -79994.54572968827, + "log_likelihood_scalar": -79994.54573536215, + "log_likelihood_library_pdip": -79994.54572645946, + "log_likelihood_library_pdip_scalar": -79994.54573189026, + "rel_diff_vmap_vs_library_pdip": 4.0362852559240354e-11, + "rel_diff_scalar_vs_library_pdip_scalar": 4.340149962613074e-11, + "abs_diff_nats": 5.673879059031606e-06, + "rel_diff": 7.092832401101352e-11, + "rel_diff_scalar_vs_library_pdip": 1.1129117657814757e-10, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 5.430803867056966e-06, + "rel_diff_library_pdip_vmap_vs_scalar": 6.788967694446131e-11, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 2, + "pdip_iter": null + }, + { + "lane": 14, + "draw_name": "call00008_lane14", + "draw_kind": "captured", + "offsets": {}, + "log_likelihood_vmap": -194333.889843453, + "log_likelihood_scalar": -194333.9651422776, + "log_likelihood_library_pdip": -194333.89095333137, + "log_likelihood_library_pdip_scalar": -194333.98674246192, + "rel_diff_vmap_vs_library_pdip": 5.711193001492636e-09, + "rel_diff_scalar_vs_library_pdip_scalar": 1.1114980289317314e-07, + "abs_diff_nats": 0.07529882458038628, + "rel_diff": 3.87471250973847e-07, + "rel_diff_scalar_vs_library_pdip": 3.8176020589345893e-07, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 0.09578913054428995, + "rel_diff_library_pdip_vmap_vs_scalar": 4.929098206132775e-07, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": true, + "passes": 3, + "pdip_iter": null + }, + { + "lane": 15, + "draw_name": "call00008_lane15", + "draw_kind": "captured", + "offsets": {}, + "log_likelihood_vmap": -154117.0696871241, + "log_likelihood_scalar": -154117.058198119, + "log_likelihood_library_pdip": -154117.0732888017, + "log_likelihood_library_pdip_scalar": -154117.0559099833, + "rel_diff_vmap_vs_library_pdip": 2.336975081673012e-08, + "rel_diff_scalar_vs_library_pdip_scalar": 1.4846738970047946e-08, + "abs_diff_nats": 0.011489005119074136, + "rel_diff": 7.454726461430964e-08, + "rel_diff_scalar_vs_library_pdip": 9.791700813159465e-08, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 0.017378818418364972, + "rel_diff_library_pdip_vmap_vs_scalar": 1.1276375814313242e-07, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": true, + "passes": 4, + "pdip_iter": null + }, + { + "lane": 16, + "draw_name": "call00008_lane16", + "draw_kind": "captured", + "offsets": {}, + "log_likelihood_vmap": -189207.1814120473, + "log_likelihood_scalar": -189207.15917375882, + "log_likelihood_library_pdip": -189207.18514865235, + "log_likelihood_library_pdip_scalar": -189207.15930035582, + "rel_diff_vmap_vs_library_pdip": 1.974874817729856e-08, + "rel_diff_scalar_vs_library_pdip_scalar": 6.690920488529339e-10, + "abs_diff_nats": 0.022238288482185453, + "rel_diff": 1.1753407523952553e-07, + "rel_diff_scalar_vs_library_pdip": 1.372828072814163e-07, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 0.025848296529147774, + "rel_diff_library_pdip_vmap_vs_scalar": 1.366137339872803e-07, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": true, + "passes": 2, + "pdip_iter": null + }, + { + "lane": 17, + "draw_name": "call00008_lane17", + "draw_kind": "captured", + "offsets": {}, + "log_likelihood_vmap": -31662.811738245466, + "log_likelihood_scalar": -31662.81171253482, + "log_likelihood_library_pdip": -31662.8117598315, + "log_likelihood_library_pdip_scalar": -31662.81171572719, + "rel_diff_vmap_vs_library_pdip": 6.817472411200958e-10, + "rel_diff_scalar_vs_library_pdip_scalar": 1.0082395990697773e-10, + "abs_diff_nats": 2.5710643967613578e-05, + "rel_diff": 8.120139234960971e-10, + "rel_diff_scalar_vs_library_pdip": 1.493761163403238e-09, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 4.4104308472014964e-05, + "rel_diff_library_pdip_vmap_vs_scalar": 1.3929372055769756e-09, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 4, + "pdip_iter": null + }, + { + "lane": 18, + "draw_name": "call00008_lane18", + "draw_kind": "captured", + "offsets": {}, + "log_likelihood_vmap": -187758.220641915, + "log_likelihood_scalar": -187758.21958097297, + "log_likelihood_library_pdip": -187758.22114152397, + "log_likelihood_library_pdip_scalar": -187758.21955090004, + "rel_diff_vmap_vs_library_pdip": 2.6609166919307648e-09, + "rel_diff_scalar_vs_library_pdip_scalar": 1.6016837971308865e-10, + "abs_diff_nats": 0.0010609420132823288, + "rel_diff": 5.650575594773282e-09, + "rel_diff_scalar_vs_library_pdip": 8.311492239739332e-09, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 0.0015906239277683198, + "rel_diff_library_pdip_vmap_vs_scalar": 8.471660689864562e-09, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": true, + "passes": 2, + "pdip_iter": null + }, + { + "lane": 19, + "draw_name": "call00008_lane19", + "draw_kind": "captured", + "offsets": {}, + "log_likelihood_vmap": 21467.061750413566, + "log_likelihood_scalar": 21467.06175041392, + "log_likelihood_library_pdip": 21467.061750410907, + "log_likelihood_library_pdip_scalar": 21467.06175041126, + "rel_diff_vmap_vs_library_pdip": 1.2388106667337177e-13, + "rel_diff_scalar_vs_library_pdip_scalar": 1.2388106667336972e-13, + "abs_diff_nats": 3.5288394428789616e-10, + "rel_diff": 1.6438390516163302e-14, + "rel_diff_scalar_vs_library_pdip": 1.4031945718953737e-13, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 3.5288394428789616e-10, + "rel_diff_library_pdip_vmap_vs_scalar": 1.6438390516165338e-14, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 13, + "pdip_iter": null + } + ], + "lane_pins": [ + { + "pin": "lane 0: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 22274.403488581782, + "reference_value": 22274.40348857942, + "rel_diff": 1.0599827048176995e-13, + "abs_diff_nats": 2.3610482458025217e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 0: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 22274.40348858178, + "reference_value": 22274.403488579374, + "rel_diff": 1.0795817686972278e-13, + "abs_diff_nats": 2.4047039914876223e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 0: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 22274.403488581782, + "reference_value": 22274.40348858178, + "rel_diff": 1.633255323293663e-16, + "abs_diff_nats": 3.637978807091713e-12, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 0: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 22274.40348857942, + "reference_value": 22274.403488579374, + "rel_diff": 2.1232319202819914e-15, + "abs_diff_nats": 4.729372449219227e-11, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 1: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 25020.104927248427, + "reference_value": 25020.10492731211, + "rel_diff": 2.5452658653171297e-12, + "abs_diff_nats": 6.368281901814044e-08, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 1: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 25020.10492700105, + "reference_value": 25020.10492692715, + "rel_diff": 2.9537007020192915e-12, + "abs_diff_nats": 7.390190148726106e-08, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 1: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 25020.104927248427, + "reference_value": 25020.10492700105, + "rel_diff": 9.887060172064318e-12, + "abs_diff_nats": 2.473752829246223e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 1: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 25020.10492731211, + "reference_value": 25020.10492692715, + "rel_diff": 1.5386026739469102e-11, + "abs_diff_nats": 3.849600034300238e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 2: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -194152.8951770001, + "reference_value": -194152.9169570576, + "rel_diff": 1.1217991395939684e-07, + "abs_diff_nats": 0.02178005751920864, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 2: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -194152.91917556833, + "reference_value": -194152.92157207552, + "rel_diff": 1.2343400085216491e-08, + "abs_diff_nats": 0.0023965071886777878, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 2: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -194152.8951770001, + "reference_value": -194152.91917556833, + "rel_diff": 1.2360652800820744e-07, + "abs_diff_nats": 0.023998568241950125, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 2: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -194152.9169570576, + "reference_value": -194152.92157207552, + "rel_diff": 2.3770015274820556e-08, + "abs_diff_nats": 0.004615017911419272, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 3: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 21669.460653391165, + "reference_value": 21671.259367014034, + "rel_diff": 8.299995825841269e-05, + "abs_diff_nats": 1.7987136228693998, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 3: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 21669.46065339682, + "reference_value": 21671.25936701999, + "rel_diff": 8.299995827215531e-05, + "abs_diff_nats": 1.798713623167714, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 3: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 21669.460653391165, + "reference_value": 21669.46065339682, + "rel_diff": 2.6106127584402223e-13, + "abs_diff_nats": 5.657057045027614e-09, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 3: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 21671.259367014034, + "reference_value": 21671.25936701999, + "rel_diff": 2.7480504046166357e-13, + "abs_diff_nats": 5.955371307209134e-09, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 4: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 19207.043786251175, + "reference_value": 19204.153254755838, + "rel_diff": 0.00015051595647006048, + "abs_diff_nats": 2.8905314953372, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 4: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 19207.04378598415, + "reference_value": 19204.15325448881, + "rel_diff": 0.00015051595647234278, + "abs_diff_nats": 2.890531495340838, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 4: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 19207.043786251175, + "reference_value": 19207.04378598415, + "rel_diff": 1.3902400048495676e-11, + "abs_diff_nats": 2.6702400646172464e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 4: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 19204.153254755838, + "reference_value": 19204.15325448881, + "rel_diff": 1.3904682018620958e-11, + "abs_diff_nats": 2.6702764444053173e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 5: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 19342.80344895851, + "reference_value": 19342.25587702078, + "rel_diff": 2.830962123618572e-05, + "abs_diff_nats": 0.5475719377318455, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 5: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 19342.803448783256, + "reference_value": 19342.255876845524, + "rel_diff": 2.830962123644223e-05, + "abs_diff_nats": 0.5475719377318455, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 5: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 19342.80344895851, + "reference_value": 19342.803448783256, + "rel_diff": 9.060526904328366e-12, + "abs_diff_nats": 1.7525599105283618e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 5: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 19342.25587702078, + "reference_value": 19342.255876845524, + "rel_diff": 9.060783404413229e-12, + "abs_diff_nats": 1.7525599105283618e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 6: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 24443.79026135683, + "reference_value": 24443.790261355745, + "rel_diff": 4.435145584714247e-14, + "abs_diff_nats": 1.0841176845133305e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 6: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 24443.790261356848, + "reference_value": 24443.790261355764, + "rel_diff": 4.435145584714244e-14, + "abs_diff_nats": 1.0841176845133305e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 6: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 24443.79026135683, + "reference_value": 24443.790261356848, + "rel_diff": 7.441519437439676e-16, + "abs_diff_nats": 1.8189894035458565e-11, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 6: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 24443.790261355745, + "reference_value": 24443.790261355764, + "rel_diff": 7.441519437440006e-16, + "abs_diff_nats": 1.8189894035458565e-11, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 7: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 28119.165446921, + "reference_value": 28119.165446914456, + "rel_diff": 2.327495773768119e-13, + "abs_diff_nats": 6.544723873957992e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 7: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 28119.165446932093, + "reference_value": 28119.165446932093, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 7: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 28119.165446921, + "reference_value": 28119.165446932093, + "rel_diff": 3.944710736083682e-13, + "abs_diff_nats": 1.1092197382822633e-08, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 7: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 28119.165446914456, + "reference_value": 28119.165446932093, + "rel_diff": 6.272206509850341e-13, + "abs_diff_nats": 1.7636921256780624e-08, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 8: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 28488.842567056352, + "reference_value": 28488.842567046995, + "rel_diff": 3.284402119818998e-13, + "abs_diff_nats": 9.356881491839886e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 8: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 28488.84256701032, + "reference_value": 28488.84256701842, + "rel_diff": 2.84256575378088e-13, + "abs_diff_nats": 8.098140824586153e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 8: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 28488.842567056352, + "reference_value": 28488.84256701032, + "rel_diff": 1.6157674969721337e-12, + "abs_diff_nats": 4.6031345846131444e-08, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 8: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 28488.842567046995, + "reference_value": 28488.84256701842, + "rel_diff": 1.0030707096113572e-12, + "abs_diff_nats": 2.8576323529705405e-08, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 9: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 28760.406110559044, + "reference_value": 28760.406110565793, + "rel_diff": 2.346437898411987e-13, + "abs_diff_nats": 6.7484506871551275e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 9: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 28760.406110612974, + "reference_value": 28760.40611062914, + "rel_diff": 5.621331547450082e-13, + "abs_diff_nats": 1.6167177818715572e-08, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 9: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 28760.406110559044, + "reference_value": 28760.406110612974, + "rel_diff": 1.8751264369812526e-12, + "abs_diff_nats": 5.392939783632755e-08, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 9: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 28760.406110565793, + "reference_value": 28760.40611062914, + "rel_diff": 2.2026158018845248e-12, + "abs_diff_nats": 6.3348124967888e-08, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 10: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 19207.043768078816, + "reference_value": 19204.153236579965, + "rel_diff": 0.00015051595679551333, + "abs_diff_nats": 2.8905314988514874, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 10: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 19207.04376784843, + "reference_value": 19204.15323634958, + "rel_diff": 0.00015051595679731902, + "abs_diff_nats": 2.8905314988514874, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 10: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 19207.043768078816, + "reference_value": 19207.04376784843, + "rel_diff": 1.1994866293851935e-11, + "abs_diff_nats": 2.30385921895504e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 10: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 19204.153236579965, + "reference_value": 19204.15323634958, + "rel_diff": 1.1996671712628809e-11, + "abs_diff_nats": 2.30385921895504e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 11: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 21293.073383208954, + "reference_value": 21293.017831633548, + "rel_diff": 2.608910387672443e-06, + "abs_diff_nats": 0.05555157540584332, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 11: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 21293.0733832091, + "reference_value": 21293.017831633693, + "rel_diff": 2.6089103876724254e-06, + "abs_diff_nats": 0.05555157540584332, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 11: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 21293.073383208954, + "reference_value": 21293.0733832091, + "rel_diff": 6.8341074895472504e-15, + "abs_diff_nats": 1.4551915228366852e-10, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 11: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 21293.017831633548, + "reference_value": 21293.017831633693, + "rel_diff": 6.83412531912127e-15, + "abs_diff_nats": 1.4551915228366852e-10, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 12: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 19207.10066644192, + "reference_value": 19204.210147488666, + "rel_diff": 0.00015051485747412843, + "abs_diff_nats": 2.8905189532524673, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 12: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 19207.10066605381, + "reference_value": 19204.21014710055, + "rel_diff": 0.00015051485747754917, + "abs_diff_nats": 2.8905189532597433, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 12: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 19207.10066644192, + "reference_value": 19207.10066605381, + "rel_diff": 2.0206425834175444e-11, + "abs_diff_nats": 3.881068550981581e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 12: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 19204.210147488666, + "reference_value": 19204.21014710055, + "rel_diff": 2.0209846074527033e-11, + "abs_diff_nats": 3.881141310557723e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 13: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -79994.54572968827, + "reference_value": -79994.54572645946, + "rel_diff": 4.0362852559240354e-11, + "abs_diff_nats": 3.228808054700494e-06, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 13: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -79994.54573536215, + "reference_value": -79994.54573189026, + "rel_diff": 4.340149962613074e-11, + "abs_diff_nats": 3.4718832466751337e-06, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 13: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -79994.54572968827, + "reference_value": -79994.54573536215, + "rel_diff": 7.092832401101352e-11, + "abs_diff_nats": 5.673879059031606e-06, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 13: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -79994.54572645946, + "reference_value": -79994.54573189026, + "rel_diff": 6.788967694446131e-11, + "abs_diff_nats": 5.430803867056966e-06, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 14: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -194333.889843453, + "reference_value": -194333.89095333137, + "rel_diff": 5.711193001492636e-09, + "abs_diff_nats": 0.0011098783579654992, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 14: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -194333.9651422776, + "reference_value": -194333.98674246192, + "rel_diff": 1.1114980289317314e-07, + "abs_diff_nats": 0.021600184321869165, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 14: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -194333.889843453, + "reference_value": -194333.9651422776, + "rel_diff": 3.87471250973847e-07, + "abs_diff_nats": 0.07529882458038628, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 14: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -194333.89095333137, + "reference_value": -194333.98674246192, + "rel_diff": 4.929098206132775e-07, + "abs_diff_nats": 0.09578913054428995, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 15: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -154117.0696871241, + "reference_value": -154117.0732888017, + "rel_diff": 2.336975081673012e-08, + "abs_diff_nats": 0.003601677599363029, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 15: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -154117.058198119, + "reference_value": -154117.0559099833, + "rel_diff": 1.4846738970047946e-08, + "abs_diff_nats": 0.002288135699927807, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 15: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -154117.0696871241, + "reference_value": -154117.058198119, + "rel_diff": 7.454726461430964e-08, + "abs_diff_nats": 0.011489005119074136, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 15: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -154117.0732888017, + "reference_value": -154117.0559099833, + "rel_diff": 1.1276375814313242e-07, + "abs_diff_nats": 0.017378818418364972, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 16: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -189207.1814120473, + "reference_value": -189207.18514865235, + "rel_diff": 1.974874817729856e-08, + "abs_diff_nats": 0.0037366050528362393, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 16: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -189207.15917375882, + "reference_value": -189207.15930035582, + "rel_diff": 6.690920488529339e-10, + "abs_diff_nats": 0.00012659700587391853, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 16: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -189207.1814120473, + "reference_value": -189207.15917375882, + "rel_diff": 1.1753407523952553e-07, + "abs_diff_nats": 0.022238288482185453, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 16: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -189207.18514865235, + "reference_value": -189207.15930035582, + "rel_diff": 1.366137339872803e-07, + "abs_diff_nats": 0.025848296529147774, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 17: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -31662.811738245466, + "reference_value": -31662.8117598315, + "rel_diff": 6.817472411200958e-10, + "abs_diff_nats": 2.158603456337005e-05, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 17: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -31662.81171253482, + "reference_value": -31662.81171572719, + "rel_diff": 1.0082395990697773e-10, + "abs_diff_nats": 3.1923700589686632e-06, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 17: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -31662.811738245466, + "reference_value": -31662.81171253482, + "rel_diff": 8.120139234960971e-10, + "abs_diff_nats": 2.5710643967613578e-05, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 17: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -31662.8117598315, + "reference_value": -31662.81171572719, + "rel_diff": 1.3929372055769756e-09, + "abs_diff_nats": 4.4104308472014964e-05, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 18: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -187758.220641915, + "reference_value": -187758.22114152397, + "rel_diff": 2.6609166919307648e-09, + "abs_diff_nats": 0.000499608984682709, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 18: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -187758.21958097297, + "reference_value": -187758.21955090004, + "rel_diff": 1.6016837971308865e-10, + "abs_diff_nats": 3.0072929803282022e-05, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 18: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -187758.220641915, + "reference_value": -187758.21958097297, + "rel_diff": 5.650575594773282e-09, + "abs_diff_nats": 0.0010609420132823288, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 18: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -187758.22114152397, + "reference_value": -187758.21955090004, + "rel_diff": 8.471660689864562e-09, + "abs_diff_nats": 0.0015906239277683198, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 19: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 21467.061750413566, + "reference_value": 21467.061750410907, + "rel_diff": 1.2388106667337177e-13, + "abs_diff_nats": 2.659362507984042e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 19: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 21467.06175041392, + "reference_value": 21467.06175041126, + "rel_diff": 1.2388106667336972e-13, + "abs_diff_nats": 2.659362507984042e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 19: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 21467.061750413566, + "reference_value": 21467.06175041392, + "rel_diff": 1.6438390516163302e-14, + "abs_diff_nats": 3.5288394428789616e-10, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 19: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 21467.061750410907, + "reference_value": 21467.06175041126, + "rel_diff": 1.6438390516165338e-14, + "abs_diff_nats": 3.5288394428789616e-10, + "within_rtol": true, + "status": "RECORDED" + } + ], + "lanes_failed": 11, + "arm_rows": { + "vmap": { + "arm": "vmap", + "program": "jax.jit(jax.vmap(fn))", + "stands_for": "Nautilus(use_jax_vmap=True) \u2014 Fitness._vmap", + "hlo_source": "jax.jit(jax.vmap(fn)).lower(batched_tree) \u2014 the exact current Fitness._vmap composition (PyAutoFit#1638)", + "batch_wall_ms": 230.75631200008502, + "wall_production_nesting_ms": 230.75631200008502, + "wall_aot_command_buffers_on_ms": 230.74357400000736, + "wall_aot_command_buffers_off_ms": 231.05137519996788, + "command_buffer_delta_ms": 0.30780119996052235, + "production_nesting_vs_aot_on_delta_ms": 0.012738000077661127, + "production_nesting_vs_aot_on_delta_pct": 0.0055204137895778285, + "wall_per_lane_ms": 11.53781560000425, + "wall_per_lane_command_buffers_off_ms": 11.552568759998394, + "traced_batch_wall_ms": 235.62178620013583, + "untraced_batch_wall_ms": 231.24251609988278, + "traced_wall_per_lane_ms": 11.781089310006791, + "callback_count_per_call": 0.0, + "callback_count_per_lane": 0.0, + "callback_expectation": "0 \u2014 the rectangular mesh has no qhull host callback (asserted)", + "host_qhull_ms": 0.0, + "host_tables_ms": 0.0, + "host_qhull_ms_per_lane": 0.0, + "host_tables_ms_per_lane": 0.0, + "host_callback_probe": { + "calls": 0, + "qhull_ms_total": 0.0, + "tables_ms_total": 0.0, + "total_ms_total": 0.0, + "qhull_ms_mean": 0.0, + "tables_ms_mean": 0.0, + "total_ms_mean": 0.0, + "non_finite_calls": 0, + "n_points": [] + }, + "host_callback_records_first": [], + "device_idle_ms": 11.508636000000024, + "device_idle_ms_per_lane": 0.5754318000000012, + "trace": { + "parser": "ProfileData.from_file(xplane) + as_text() + stack_frame_index(proto field 17)", + "stage_audit": { + "mesh_construction": [ + { + "instruction": "fusion.4", + "ms": 0.14915239999999994, + "opcode": "fusion", + "shape": "(f64[15361,2]{1,0}, s64[15361,2]{1,0}, s32[15361,2]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:227", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:227 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_select_fusion", + "ms": 0.039972299999999975, + "opcode": "fusion", + "shape": "(u32[2,15361]{1,0}, u32[2,15361]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69 (forward_interp)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:573 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/abstract.py:36 (AbstractInterpolator.mappings)" + ] + }, + { + "instruction": "loop_select_fusion.2", + "ms": 0.03515010000000004, + "opcode": "fusion", + "shape": "(u32[15361]{0}, u32[15361]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_select_fusion.1", + "ms": 0.035108900000000026, + "opcode": "fusion", + "shape": "(u32[15361]{0}, u32[15361]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_add_fusion.2", + "ms": 0.02117649999999997, + "opcode": "fusion", + "shape": "s64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_add_fusion.1", + "ms": 0.020408300000000004, + "opcode": "fusion", + "shape": "s64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "mixed_fusion": [ + { + "instruction": "input_multiply_transpose_fusion", + "ms": 4.2010639, + "opcode": "fusion", + "shape": "(f64[20,1369,1369]{2,1,0}, f64[20,1369,1369]{2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:237 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:274 (_certified_positive_only_from)" + ] + }, + { + "instruction": "input_transpose_fusion.3", + "ms": 1.2995498, + "opcode": "fusion", + "shape": "(f64[20,1521,1521]{2,1,0}, f64[20,1521,1521]{2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1157 (AbstractInversion.log_det_regularization_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:348 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "input_transpose_fusion.6", + "ms": 0.8127366, + "opcode": "fusion", + "shape": "f64[20,1369,1369]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:297 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:274 (_certified_positive_only_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:496 (reconstruction_positive_only_from)" + ] + }, + { + "instruction": "input_transpose_fusion.7", + "ms": 0.8119080000000001, + "opcode": "fusion", + "shape": "f64[20,1369,1369]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:237 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:274 (_certified_positive_only_from)" + ] + }, + { + "instruction": "loop_divide_gather_fusion", + "ms": 0.6998886999999999, + "opcode": "fusion", + "shape": "(f64[15361,1521]{1,0}, f64[15361,1,1,1521]{3,2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_broadcast_fusion.2", + "ms": 0.2215648, + "opcode": "fusion", + "shape": "f64[1521,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:303 (AbstractInversion.operated_mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:68 (InversionImagingMapping.data_vector)" + ] + } + ], + "border_relocator": [ + { + "instruction": "eigh.0", + "ms": 0.07439260000000002, + "opcode": "custom-call", + "shape": "(f64[2,2]{0,1}, f64[2]{0}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "custom-call.3", + "ms": 0.007996300000000001, + "opcode": "custom-call", + "shape": "(f64[2,2]{1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_reduce_fusion.12", + "ms": 0.0017151, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:256", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:256 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_multiply_fusion.2", + "ms": 0.0016575000000000001, + "opcode": "fusion", + "shape": "f64[2,2]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + } + ], + "other": [ + { + "instruction": "copy.80", + "ms": 0.038849100000000004, + "opcode": "copy", + "shape": "s32[20]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.81", + "ms": 0.03485859999999992, + "opcode": "copy", + "shape": "pred[20,1369]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.79", + "ms": 0.034542300000000054, + "opcode": "copy", + "shape": "pred[20]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.43", + "ms": 0.030394799999999975, + "opcode": "copy", + "shape": "u32[2,15361]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.42", + "ms": 0.03034689999999998, + "opcode": "copy", + "shape": "u32[2,15361]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.51", + "ms": 0.028641800000000054, + "opcode": "copy", + "shape": "u32[15361]{0}", + "source": "", + "stack": [] + } + ], + "pdip_solve": [ + { + "instruction": "cholesky.40", + "ms": 94.35188250000127, + "opcode": "custom-call", + "shape": "(f64[20,1369,1369]{1,2,0}, s32[20]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "triangular-solve", + "ms": 26.434608500000277, + "opcode": "custom-call", + "shape": "(f64[20,1369,1]{1,2,0}, s8[320]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "triangular-solve.1", + "ms": 24.319773100000265, + "opcode": "custom-call", + "shape": "(f64[20,1369,1]{1,2,0}, s8[320]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "input_transpose_fusion", + "ms": 12.996547699999999, + "opcode": "fusion", + "shape": "f64[20,1369,1369]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "input_transpose_fusion.1", + "ms": 7.756467099999999, + "opcode": "fusion", + "shape": "f64[20,1369,1369]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "cholesky.60", + "ms": 5.939494499999952, + "opcode": "custom-call", + "shape": "(f64[20,1369,1369]{1,2,0}, s32[20]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:237 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:274 (_certified_positive_only_from)" + ] + } + ], + "psf_convolution_mapping_matrix": [ + { + "instruction": "fft.14.0", + "ms": 1.7896336, + "opcode": "fft", + "shape": "f64[1521,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:303 (AbstractInversion.operated_mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:68 (InversionImagingMapping.data_vector)" + ] + }, + { + "instruction": "input_scatter_fusion", + "ms": 1.4308448, + "opcode": "fusion", + "shape": "f64[1521,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:303 (AbstractInversion.operated_mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:68 (InversionImagingMapping.data_vector)" + ] + }, + { + "instruction": "fft.10.0", + "ms": 1.3851383999999995, + "opcode": "fft", + "shape": "c128[1521,180,91]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:303 (AbstractInversion.operated_mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:68 (InversionImagingMapping.data_vector)" + ] + }, + { + "instruction": "fft.12.0", + "ms": 0.9925023000000002, + "opcode": "fft", + "shape": "c128[1521,91,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:303 (AbstractInversion.operated_mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:68 (InversionImagingMapping.data_vector)" + ] + }, + { + "instruction": "input_transpose_fusion.5", + "ms": 0.5228847, + "opcode": "fusion", + "shape": "c128[1521,91,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:303 (AbstractInversion.operated_mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:68 (InversionImagingMapping.data_vector)" + ] + }, + { + "instruction": "wrapped_transpose.2", + "ms": 0.5075575000000001, + "opcode": "fusion", + "shape": "c128[1521,180,91]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:303 (AbstractInversion.operated_mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:68 (InversionImagingMapping.data_vector)" + ] + } + ], + "curvature_matrix_F": [ + { + "instruction": "custom-call.4", + "ms": 4.426730699999999, + "opcode": "custom-call", + "shape": "(f64[1521,1521]{1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "mapping_matrix": [ + { + "instruction": "input_reduce_fusion.17", + "ms": 0.0029151000000000003, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:362 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + } + ], + "regularization_H": [ + { + "instruction": "wrapped_broadcast", + "ms": 0.5942693000000001, + "opcode": "fusion", + "shape": "f64[20,1521,1521]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:124", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:124 (weighted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:366 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_scatter_fusion.7", + "ms": 0.0025695999999999996, + "opcode": "fusion", + "shape": "f64[1521,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:123 (weighted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:366 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "inversion_other": [ + { + "instruction": "cholesky.80", + "ms": 7.542396599999947, + "opcode": "custom-call", + "shape": "(f64[20,1521,1521]{1,2,0}, s32[20]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1078 (AbstractInversion.log_det_curvature_reg_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:347 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "cholesky.90", + "ms": 7.4536137999999506, + "opcode": "custom-call", + "shape": "(f64[20,1521,1521]{1,2,0}, s32[20]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1157 (AbstractInversion.log_det_regularization_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:348 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "loop_reduce_window_fusion.3", + "ms": 0.006313399999999999, + "opcode": "fusion", + "shape": "s64[6,16]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "loop_reduce_window_fusion.2", + "ms": 0.0029788999999999996, + "opcode": "fusion", + "shape": "s64[86,16]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "input_scatter_fusion.10", + "ms": 0.0023232, + "opcode": "fusion", + "shape": "s64[1369]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527 (AbstractInversion.zeroed_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:567 (AbstractInversion.solve_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:684 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_slice_fusion", + "ms": 0.0017885, + "opcode": "fusion", + "shape": "s64[6,1]{1,0}", + "source": "", + "stack": [] + } + ], + "fit_imaging_other": [ + { + "instruction": "custom-call.5", + "ms": 0.20551440000000004, + "opcode": "custom-call", + "shape": "(f64[20,15361]{1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:305", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:305 (AbstractNDArray.__add__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:57 (unwrap_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:35 (to_new_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:58 (AbstractFit.residual_map)" + ] + } + ], + "chi_squared_evidence": [ + { + "instruction": "loop_divide_fusion", + "ms": 0.010271399999999998, + "opcode": "fusion", + "shape": "f64[20,15361]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:352", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:352 (AbstractNDArray.__truediv__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:57 (unwrap_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:35 (to_new_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:78 (chi_squared_map_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:78 (AbstractFit.chi_squared_map)" + ] + } + ] + }, + "stage_audit_note": "The HLO instructions that contributed most of each stage's milliseconds, with their full source stack. A stage row is only as good as the rules that built it; this is how a reader checks a row against the HLO instead of trusting it.", + "untraced_wall_ms": 231.24251609988278, + "reconciliation_vs_untraced_pct": 1.8141449379074313, + "wall_basis": "wall_ms is the TRACED run's wall, the run these kernel durations came from. untraced_wall_ms is the same executable without the profiler; the difference is the profiler's overhead and belongs in neither the stages nor the idle row.", + "calls": 10, + "call_split": "per-call (first-instruction recurrence)", + "call_blocks": 10, + "events": 89260, + "streams": [ + "Stream #14(MemcpyD2H,Compute,MemcpyH2D,MemcpyD2D)" + ], + "per_stage_ms": { + "border_relocator": { + "median_ms": 0.0857405, + "min_ms": 0.08534200000000002, + "max_ms": 0.08620300000000002 + }, + "chi_squared_evidence": { + "median_ms": 0.010303, + "min_ms": 0.009856, + "max_ms": 0.010559 + }, + "curvature_matrix_F": { + "median_ms": 4.419086500000001, + "min_ms": 4.376097, + "max_ms": 4.496922 + }, + "fit_imaging_other": { + "median_ms": 0.205588, + "min_ms": 0.204436, + "max_ms": 0.207028 + }, + "inversion_other": { + "median_ms": 15.0142105, + "min_ms": 14.996813999999992, + "max_ms": 15.022624000000004 + }, + "mapping_matrix": { + "median_ms": 0.002912, + "min_ms": 0.002911, + "max_ms": 0.002944 + }, + "mesh_construction": { + "median_ms": 0.34570799999999985, + "min_ms": 0.3436579999999999, + "max_ms": 0.346607 + }, + "mixed_fusion": { + "median_ms": 8.804444, + "min_ms": 8.787201999999999, + "max_ms": 8.821049999999998 + }, + "other": { + "median_ms": 0.2895039999999999, + "min_ms": 0.28916899999999984, + "max_ms": 0.29096199999999983 + }, + "pdip_solve": { + "median_ms": 187.52533449999856, + "min_ms": 187.4192690000003, + "max_ms": 188.10838199999898 + }, + "psf_convolution_mapping_matrix": { + "median_ms": 6.629246, + "min_ms": 6.614909999999999, + "max_ms": 6.640189 + }, + "regularization_H": { + "median_ms": 0.5968775, + "min_ms": 0.594877, + "max_ms": 0.599549 + } + }, + "stage_order": [ + "border_relocator", + "mesh_construction", + "mapping_matrix", + "psf_convolution_mapping_matrix", + "curvature_matrix_F", + "regularization_H", + "pdip_solve", + "chi_squared_evidence", + "inversion_other", + "fit_imaging_other", + "mixed_fusion", + "other" + ], + "mixed_fusion": { + "ms": 8.804444, + "constituent_stage_sets": { + "curvature_reg_reduce_gather + inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": 4.2010639, + "border_relocator + pdip_solve": 1.6283083000000003, + "curvature_reg_reduce_gather + inversion_other + regularization_H": 1.2995498, + "curvature_matrix_F + psf_convolution_mapping_matrix": 0.6998886999999999, + "inversion_other + pdip_solve": 0.23478299999999985, + "pdip_solve + psf_convolution_mapping_matrix": 0.2215648, + "mapping_matrix + pdip_solve": 0.14112109999999997, + "data_vector_D + pdip_solve + psf_convolution_mapping_matrix": 0.1221722, + "mesh_construction + pdip_solve": 0.0387434, + "inversion_other + mapping_matrix + pdip_solve + regularization_H": 0.0376268, + "border_relocator + mesh_construction + pdip_solve": 0.0269581, + "border_relocator + inversion_other + mapping_matrix + mesh_construction + pdip_solve": 0.0224433, + "inversion_other + mapping_matrix + mesh_construction": 0.0158742, + "pdip_solve + regularization_H": 0.015071000000000001, + "pdip_solve + ray_trace_data_grid": 0.013256899999999995, + "border_relocator + ray_trace_data_grid": 0.012735599999999996, + "border_relocator + pdip_solve + ray_trace_data_grid": 0.008706799999999999, + "inversion_other + mapped_reconstruction": 0.008597899999999999, + "chi_squared_evidence + pdip_solve": 0.008367099999999999, + "border_relocator + inversion_other + pdip_solve": 0.008297, + "inversion_other + mapped_reconstruction + reconstruction_scatter": 0.0079805, + "curvature_reg_reduce_gather + inversion_other + mapped_reconstruction + reconstruction_scatter": 0.0078365, + "inversion_other + mesh_construction + pdip_solve": 0.0055804999999999995, + "inversion_other + pdip_solve + ray_trace_data_grid": 0.0047231, + "data_vector_D + pdip_solve": 0.0037433, + "border_relocator + mesh_construction": 0.0035519, + "border_relocator + inversion_other + mesh_construction + pdip_solve": 0.0027360000000000006, + "chi_squared_evidence + inversion_other": 0.0019390000000000002 + }, + "example_kernels": { + "curvature_reg_reduce_gather + inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": [ + "input_multiply_transpose_fusion" + ], + "border_relocator + pdip_solve": [ + "loop_select_sine_fusion", + "input_transpose_fusion.7", + "input_transpose_fusion.6" + ], + "curvature_reg_reduce_gather + inversion_other + regularization_H": [ + "input_transpose_fusion.3" + ], + "curvature_matrix_F + psf_convolution_mapping_matrix": [ + "loop_divide_gather_fusion" + ], + "inversion_other + pdip_solve": [ + "input_scatter_fusion.11", + "input_transpose_fusion.2", + "input_reduce_fusion.6", + "input_reduce_fusion.14" + ], + "pdip_solve + psf_convolution_mapping_matrix": [ + "loop_broadcast_fusion.2" + ], + "mapping_matrix + pdip_solve": [ + "loop_broadcast_fusion.1", + "loop_divide_fusion.3", + "loop_divide_fusion.2" + ], + "data_vector_D + pdip_solve + psf_convolution_mapping_matrix": [ + "input_reduce_fusion.1" + ], + "mesh_construction + pdip_solve": [ + "loop_multiply_fusion.3", + "loop_pad_fusion", + "loop_reduce_fusion.1", + "triton_softmax.2" + ], + "inversion_other + mapping_matrix + pdip_solve + regularization_H": [ + "input_scatter_fusion.3", + "input_scatter_fusion.4", + "input_scatter_fusion.1", + "input_scatter_fusion.2" + ] + }, + "prorated_estimate_ms": { + "pdip_solve": 2.066084156666667, + "inversion_other": 1.4267462483333335, + "curvature_reg_reduce_gather": 1.2753551716666667, + "mapped_reconstruction": 0.8491310216666668, + "reconstruction_scatter": 0.8448320716666667, + "border_relocator": 0.8421245266666668, + "psf_convolution_mapping_matrix": 0.5014508166666666, + "regularization_H": 0.4501254666666667, + "curvature_matrix_F": 0.34994434999999996, + "mapping_matrix": 0.08974731, + "data_vector_D": 0.042595716666666665, + "mesh_construction": 0.04245791, + "ray_trace_data_grid": 0.017472883333333328, + "chi_squared_evidence": 0.005153049999999999 + }, + "prorated_note": "ESTIMATE ONLY \u2014 a mixed fusion's time split equally across the stages its constituents span. Never summed into the measured table, never reconciled." + }, + "other_sources_ms": { + "copy.80": 0.038849100000000004, + "copy.81": 0.03485859999999992, + "copy.79": 0.034542300000000054, + "copy.43": 0.030394799999999975, + "copy.42": 0.03034689999999998, + "copy.51": 0.028641800000000054, + "copy.61": 0.02862210000000005, + "copy.52": 0.028520300000000044, + "copy.60": 0.028154999999999993, + "copy.77": 0.0018144, + "copy.93": 0.0017888, + "copy.35": 0.0015775, + "copy.53": 0.0015774 + }, + "device_span_ms": 235.5294843, + "device_busy_ms": 224.02084829999998, + "device_idle_ms": 11.508636000000024, + "largest_idle_gaps": [ + { + "gap_ms": 0.054301, + "after": "loop_broadcast_fusion.7", + "before": "loop_broadcast_fusion.9" + }, + { + "gap_ms": 0.052093, + "after": "input_concatenate_fusion.4", + "before": "custom-call.3" + }, + { + "gap_ms": 0.03283, + "after": "loop_add_fusion.2", + "before": "loop_select_fusion.2" + }, + { + "gap_ms": 0.032702, + "after": "loop_multiply_fusion.2", + "before": "eigh.0" + }, + { + "gap_ms": 0.027326, + "after": "loop_broadcast_fusion.9", + "before": "input_concatenate_fusion.3" + }, + { + "gap_ms": 0.023807, + "after": "eigh.0", + "before": "eigh.0" + }, + { + "gap_ms": 0.023487, + "after": "while.42", + "before": "loop_not_select_fusion" + }, + { + "gap_ms": 0.022622, + "after": "eigh.0", + "before": "eigh.0" + } + ], + "kernel_ms": 223.92895449999855, + "sum_ms": 235.43759049999858, + "wall_ms": 235.62178620013583, + "host_outside_span_ms": 0.09230190013582273, + "reconciliation_pct": -0.07817430769360065, + "unjoined_ms": 0.0, + "unjoined_pct": 0.0, + "other_ms": 0.2895039999999999, + "other_pct": 0.12286809495370551, + "note": "Stage rows attribute the command-buffers-OFF program (see the module docstring): kernel times are the same, the launch overhead the CUDA graphs remove is not. sum_ms = kernel rows + device_idle_ms; the residual against wall_ms is host_outside_span_ms (dispatch before the first kernel, teardown after the last).", + "per_stage_ms_per_lane": { + "border_relocator": 0.004287025, + "chi_squared_evidence": 0.00051515, + "curvature_matrix_F": 0.22095432500000003, + "fit_imaging_other": 0.0102794, + "inversion_other": 0.750710525, + "mapping_matrix": 0.00014560000000000002, + "mesh_construction": 0.017285399999999992, + "mixed_fusion": 0.4402222, + "other": 0.014475199999999994, + "pdip_solve": 9.376266724999928, + "psf_convolution_mapping_matrix": 0.3314623, + "regularization_H": 0.029843875 + }, + "per_lane_divisor": 20, + "host_callback": { + "pure_callback_span_ms": 0, + "qhull_ms": 0.0, + "callback_body_ms_note": "the OUTERMOST matching body event, not a sum: under the probe the body appears twice (the wrapper and the timed re-implementation it calls) and summing them would count the same work twice", + "events_by_name": { + "ThenExecuteCallback:GetEventForComputeStreamSyncPoint": { + "count": 10, + "ms": 0.0189648 + } + }, + "note": "HOST milliseconds per traced BATCH (the whole invocation), aggregated by name because the events nest. Not a row of the device table: the device pays for them as the idle gaps largest_idle_gaps names." + }, + "host_callback_ms": 0 + }, + "hlo_census": { + "status": "excluded", + "reason": "The legacy census anchors PyAutoArray source line numbers that moved after the phase-1 run. No batched attribution is published from unsupported anchors; the device-event table and wall reconciliation remain valid." + }, + "trace_split": { + "expected_calls": 10, + "executions_per_invocation": 1, + "method": "per-call (first-instruction recurrence)", + "note": "DECIDED IN CODE: the scalar arm's trace is split by trace_calls * B, so every lane's execution is its own block and the per-stage median is taken over all of them. The vmap arm's is split by trace_calls, one block per batched execution, and per_stage_ms_per_lane divides those rows by B." + } + }, + "scalar": { + "arm": "scalar", + "program": "jax.jit(fn), called B times", + "stands_for": "Nautilus(use_jax_vmap=False, use_jax_jit=True). Plain use_jax_vmap=False is UNJITTED and is NOT this arm", + "hlo_source": "jax.jit(fn).lower(lane_trees[0]) \u2014 the same program phase 1 traced", + "batch_wall_ms": 570.8587288001581, + "wall_production_nesting_ms": 570.8587288001581, + "wall_aot_command_buffers_on_ms": 571.0435676999623, + "wall_aot_command_buffers_off_ms": 574.7985816997243, + "command_buffer_delta_ms": 3.7550139997620136, + "production_nesting_vs_aot_on_delta_ms": -0.1848388998041628, + "production_nesting_vs_aot_on_delta_pct": -0.032368616031987395, + "wall_per_lane_ms": 28.542936440007907, + "wall_per_lane_command_buffers_off_ms": 28.739929084986215, + "traced_batch_wall_ms": 592.4873347001267, + "untraced_batch_wall_ms": 575.0525032999576, + "traced_wall_per_lane_ms": 29.624366735006333, + "callback_count_per_call": 0.0, + "callback_count_per_lane": 0.0, + "callback_expectation": "0 \u2014 the rectangular mesh has no qhull host callback (asserted)", + "host_qhull_ms": 0.0, + "host_tables_ms": 0.0, + "host_qhull_ms_per_lane": 0.0, + "host_tables_ms_per_lane": 0.0, + "host_callback_probe": { + "calls": 0, + "qhull_ms_total": 0.0, + "tables_ms_total": 0.0, + "total_ms_total": 0.0, + "qhull_ms_mean": 0.0, + "tables_ms_mean": 0.0, + "total_ms_mean": 0.0, + "non_finite_calls": 0, + "n_points": [] + }, + "host_callback_records_first": [], + "device_idle_ms": 1.5670645949999944, + "device_idle_ms_per_lane": 1.5670645949999944, + "trace": { + "parser": "ProfileData.from_file(xplane) + as_text() + stack_frame_index(proto field 17)", + "stage_audit": { + "mesh_construction": [ + { + "instruction": "fusion.2", + "ms": 0.14819373499999788, + "opcode": "fusion", + "shape": "(f64[15361,2]{1,0}, s64[15361,2]{1,0}, s32[15361,2]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:227", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:227 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_select_fusion", + "ms": 0.039899950000000496, + "opcode": "fusion", + "shape": "(u32[2,15361]{1,0}, u32[2,15361]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69 (forward_interp)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:573 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/abstract.py:36 (AbstractInterpolator.mappings)" + ] + }, + { + "instruction": "loop_select_fusion.3", + "ms": 0.03500038500000035, + "opcode": "fusion", + "shape": "(u32[15361]{0}, u32[15361]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_select_fusion.1", + "ms": 0.03487613000000031, + "opcode": "fusion", + "shape": "(u32[15361]{0}, u32[15361]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_add_fusion", + "ms": 0.021255590000000074, + "opcode": "fusion", + "shape": "s64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69 (forward_interp)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:573 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/abstract.py:36 (AbstractInterpolator.mappings)" + ] + }, + { + "instruction": "loop_add_fusion.3", + "ms": 0.02111142000000016, + "opcode": "fusion", + "shape": "s64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "mixed_fusion": [ + { + "instruction": "loop_divide_gather_fusion", + "ms": 0.696951585, + "opcode": "fusion", + "shape": "(f64[15361,1,1,1521]{3,2,1,0}, f64[15361,1,1,1521]{3,2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_broadcast_fusion.2", + "ms": 0.23400206500000006, + "opcode": "fusion", + "shape": "f64[1521,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_multiply_transpose_fusion", + "ms": 0.18503692000000002, + "opcode": "fusion", + "shape": "(f64[1369,1369]{1,0}, f64[1369,1369]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:237 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:274 (_certified_positive_only_from)" + ] + }, + { + "instruction": "loop_broadcast_fusion", + "ms": 0.13656464500000023, + "opcode": "fusion", + "shape": "f64[15361,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:342", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:342 (mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:283 (Mapper.mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:91 (AbstractInversionImaging._mapping_matrix_for_convolution_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:137 (AbstractInversionImaging.operated_mapping_matrix_list)" + ] + }, + { + "instruction": "input_reduce_fusion.3", + "ms": 0.11318070000000004, + "opcode": "fusion", + "shape": "f64[92,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123 (data_vector_via_blurred_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:67 (InversionImagingMapping.data_vector)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:699 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_reduce_fusion.6", + "ms": 0.11226838499999997, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163 (mapped_reconstructed_data_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:120 (InversionImagingMapping._mapped_reconstructed_data_dict_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:196 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + } + ], + "border_relocator": [ + { + "instruction": "eigh.0", + "ms": 0.07435260000000034, + "opcode": "custom-call", + "shape": "(f64[2,2]{0,1}, f64[2]{0}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "custom-call.2", + "ms": 0.007930405000000007, + "opcode": "custom-call", + "shape": "(f64[2,2]{1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_reduce_fusion.14", + "ms": 0.001569894999999997, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:256", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:256 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_multiply_fusion.1", + "ms": 0.0015497349999999985, + "opcode": "fusion", + "shape": "f64[2,2]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + } + ], + "other": [ + { + "instruction": "copy.41", + "ms": 0.030482110000000565, + "opcode": "copy", + "shape": "u32[2,15361]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.42", + "ms": 0.030116844999999413, + "opcode": "copy", + "shape": "u32[2,15361]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.60", + "ms": 0.02854873500000104, + "opcode": "copy", + "shape": "u32[15361]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.59", + "ms": 0.02848323000000083, + "opcode": "copy", + "shape": "u32[15361]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.51", + "ms": 0.02846624000000079, + "opcode": "copy", + "shape": "u32[15361]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.50", + "ms": 0.028422155000000678, + "opcode": "copy", + "shape": "u32[15361]{0}", + "source": "", + "stack": [] + } + ], + "pdip_solve": [ + { + "instruction": "cholesky.40", + "ms": 7.241606069999998, + "opcode": "custom-call", + "shape": "(f64[1369,1369]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "triangular-solve.1", + "ms": 1.2781716499999873, + "opcode": "custom-call", + "shape": "(f64[1369,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "triangular-solve", + "ms": 1.0788007149999808, + "opcode": "custom-call", + "shape": "(f64[1369,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "cholesky.60", + "ms": 0.8488837199999999, + "opcode": "custom-call", + "shape": "(f64[1369,1369]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:237 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:274 (_certified_positive_only_from)" + ] + }, + { + "instruction": "cholesky.70", + "ms": 0.8416984249999988, + "opcode": "custom-call", + "shape": "(f64[1369,1369]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:297 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:274 (_certified_positive_only_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:496 (reconstruction_positive_only_from)" + ] + }, + { + "instruction": "input_transpose_fusion.1", + "ms": 0.2523309950000005, + "opcode": "fusion", + "shape": "f64[1369,1369]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + } + ], + "mapping_matrix": [ + { + "instruction": "input_reduce_fusion.20", + "ms": 0.002865394999999996, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:362 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + } + ], + "regularization_H": [ + { + "instruction": "input_scatter_fusion.8", + "ms": 0.002817529999999996, + "opcode": "fusion", + "shape": "f64[1521,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:123 (weighted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:366 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "psf_convolution_mapping_matrix": [ + { + "instruction": "fft.19.0", + "ms": 1.7819829200000004, + "opcode": "fft", + "shape": "f64[1521,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_scatter_fusion", + "ms": 1.4316758649999994, + "opcode": "fusion", + "shape": "f64[1521,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.15.0", + "ms": 1.3829853, + "opcode": "fft", + "shape": "c128[1521,180,91]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.17.0", + "ms": 0.9921738049999994, + "opcode": "fft", + "shape": "c128[1521,91,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_transpose_fusion.2", + "ms": 0.5220091399999995, + "opcode": "fusion", + "shape": "c128[1521,91,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "wrapped_transpose.2", + "ms": 0.507333405, + "opcode": "fusion", + "shape": "c128[1521,180,91]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + } + ], + "curvature_matrix_F": [ + { + "instruction": "cublas-lt-matmul.2", + "ms": 4.432382150000001, + "opcode": "custom-call", + "shape": "(f64[1521,1521]{1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "inversion_other": [ + { + "instruction": "cholesky.80", + "ms": 0.9217428699999995, + "opcode": "custom-call", + "shape": "(f64[1521,1521]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1078 (AbstractInversion.log_det_curvature_reg_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:347 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "cholesky.90", + "ms": 0.9046710200000012, + "opcode": "custom-call", + "shape": "(f64[1521,1521]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1157 (AbstractInversion.log_det_regularization_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:348 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "loop_reduce_window_fusion.3", + "ms": 0.005840480000000002, + "opcode": "fusion", + "shape": "s64[6,16]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "loop_reduce_window_fusion.2", + "ms": 0.003103270000000011, + "opcode": "fusion", + "shape": "s64[86,16]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "input_scatter_fusion.9", + "ms": 0.002566069999999999, + "opcode": "fusion", + "shape": "s64[1369]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527 (AbstractInversion.zeroed_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:567 (AbstractInversion.solve_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:684 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_broadcast_fusion.4", + "ms": 0.001903160000000007, + "opcode": "fusion", + "shape": "(s64[1369]{0}, s64[1369]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527 (AbstractInversion.zeroed_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:567 (AbstractInversion.solve_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:684 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "chi_squared_evidence": [ + { + "instruction": "loop_multiply_fusion", + "ms": 0.0030337000000000033, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:300", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:300 (AbstractNDArray.__pow__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:60 (unwrap_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:35 (to_new_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:78 (chi_squared_map_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:78 (AbstractFit.chi_squared_map)" + ] + } + ] + }, + "stage_audit_note": "The HLO instructions that contributed most of each stage's milliseconds, with their full source stack. A stage row is only as good as the rules that built it; this is how a reader checks a row against the HLO instead of trusting it.", + "untraced_wall_ms": 28.75262516499788, + "reconciliation_vs_untraced_pct": 0.23128994177221876, + "wall_basis": "wall_ms is the TRACED run's wall, the run these kernel durations came from. untraced_wall_ms is the same executable without the profiler; the difference is the profiler's overhead and belongs in neither the stages nor the idle row.", + "calls": 200, + "call_split": "per-call (first-instruction recurrence)", + "call_blocks": 200, + "events": 102520, + "streams": [ + "Stream #14(MemcpyD2D,MemcpyH2D,Compute,MemcpyD2H,Memset)" + ], + "per_stage_ms": { + "border_relocator": { + "median_ms": 0.08540900000000001, + "min_ms": 0.08457100000000002, + "max_ms": 0.087421 + }, + "chi_squared_evidence": { + "median_ms": 0.003008, + "min_ms": 0.002879, + "max_ms": 0.003296 + }, + "curvature_matrix_F": { + "median_ms": 4.4115435000000005, + "min_ms": 4.387056, + "max_ms": 4.573977 + }, + "inversion_other": { + "median_ms": 1.8411594999999998, + "min_ms": 1.820477, + "max_ms": 1.884692 + }, + "mapping_matrix": { + "median_ms": 0.002848, + "min_ms": 0.002847, + "max_ms": 0.002944 + }, + "memset": { + "median_ms": 0.030575499999999995, + "min_ms": 0.014398000000000001, + "max_ms": 0.05420800000000002 + }, + "mesh_construction": { + "median_ms": 0.34461200000000014, + "min_ms": 0.341938, + "max_ms": 0.3525939999999995 + }, + "mixed_fusion": { + "median_ms": 1.8504445000000003, + "min_ms": 1.8437429999999997, + "max_ms": 1.882365 + }, + "other": { + "median_ms": 0.18061049999999973, + "min_ms": 0.1798019999999998, + "max_ms": 0.18463699999999988 + }, + "pdip_solve": { + "median_ms": 11.884316999999994, + "min_ms": 4.679350000000001, + "max_ms": 22.00700200000001 + }, + "psf_convolution_mapping_matrix": { + "median_ms": 6.614719, + "min_ms": 6.586161, + "max_ms": 6.686088000000001 + }, + "regularization_H": { + "median_ms": 0.002816, + "min_ms": 0.002464, + "max_ms": 0.003136 + } + }, + "stage_order": [ + "border_relocator", + "mesh_construction", + "mapping_matrix", + "psf_convolution_mapping_matrix", + "curvature_matrix_F", + "regularization_H", + "pdip_solve", + "chi_squared_evidence", + "inversion_other", + "mixed_fusion", + "other", + "memset" + ], + "mixed_fusion": { + "ms": 1.8504445000000003, + "constituent_stage_sets": { + "curvature_matrix_F + psf_convolution_mapping_matrix": 0.696951585, + "pdip_solve + psf_convolution_mapping_matrix": 0.23400206500000006, + "inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": 0.18503692000000002, + "mapping_matrix + pdip_solve": 0.1389175450000003, + "data_vector_D + pdip_solve": 0.11688908500000014, + "mapped_reconstruction + pdip_solve": 0.11226838499999997, + "border_relocator + pdip_solve": 0.06464511500000004, + "mesh_construction + pdip_solve": 0.038893325000000055, + "inversion_other + regularization_H": 0.031110209999999992, + "inversion_other + pdip_solve": 0.030266415000000154, + "border_relocator + mesh_construction + pdip_solve": 0.027127139999999973, + "curvature_reg_reduce_gather + inversion_other": 0.025689265000000003, + "border_relocator + inversion_other + mapping_matrix + mesh_construction + pdip_solve": 0.020668045000000006, + "pdip_solve + regularization_H": 0.019340714999999998, + "inversion_other + mapping_matrix + pdip_solve + regularization_H": 0.015641885000000046, + "inversion_other + mapping_matrix + mesh_construction": 0.013025489999999992, + "pdip_solve + ray_trace_data_grid": 0.012745174999999996, + "border_relocator + ray_trace_data_grid": 0.012402915000000002, + "inversion_other + mapped_reconstruction + reconstruction_scatter": 0.009762880000000007, + "inversion_other + mapped_reconstruction + pdip_solve": 0.00891774, + "border_relocator + pdip_solve + ray_trace_data_grid": 0.008747624999999998, + "chi_squared_evidence + pdip_solve": 0.007687504999999988, + "inversion_other + mesh_construction + pdip_solve": 0.005583884999999989, + "inversion_other + pdip_solve + ray_trace_data_grid": 0.0047563949999999905, + "border_relocator + mesh_construction": 0.0036917799999999982, + "border_relocator + inversion_other": 0.003369879999999999, + "border_relocator + inversion_other + mesh_construction + pdip_solve": 0.0024973850000000034, + "chi_squared_evidence + inversion_other": 0.0018047699999999976 + }, + "example_kernels": { + "curvature_matrix_F + psf_convolution_mapping_matrix": [ + "loop_divide_gather_fusion" + ], + "pdip_solve + psf_convolution_mapping_matrix": [ + "loop_broadcast_fusion.2" + ], + "inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": [ + "input_multiply_transpose_fusion" + ], + "mapping_matrix + pdip_solve": [ + "loop_divide_fusion.1", + "loop_broadcast_fusion" + ], + "data_vector_D + pdip_solve": [ + "input_reduce_fusion.3", + "input_reduce_fusion.18" + ], + "mapped_reconstruction + pdip_solve": [ + "input_reduce_fusion.6" + ], + "border_relocator + pdip_solve": [ + "loop_select_sine_fusion", + "input_transpose_fusion.6", + "input_transpose_fusion.7" + ], + "mesh_construction + pdip_solve": [ + "loop_multiply_fusion.2", + "loop_pad_fusion", + "loop_reduce_fusion", + "triton_softmax.1" + ], + "inversion_other + regularization_H": [ + "input_transpose_fusion.4" + ], + "inversion_other + pdip_solve": [ + "input_scatter_fusion.11", + "input_reduce_fusion.9", + "input_reduce_fusion.16", + "input_reduce_fusion.4" + ] + }, + "prorated_estimate_ms": { + "psf_convolution_mapping_matrix": 0.46547682500000004, + "pdip_solve": 0.46113291650000043, + "curvature_matrix_F": 0.3484757925, + "inversion_other": 0.11506338983333343, + "mapped_reconstruction": 0.10862029583333332, + "mapping_matrix": 0.08184468275000016, + "border_relocator": 0.05877105525000001, + "data_vector_D": 0.05844454250000007, + "reconstruction_scatter": 0.049513523333333344, + "mesh_construction": 0.04129601275000002, + "regularization_H": 0.029135933750000006, + "ray_trace_data_grid": 0.017075384999999995, + "curvature_reg_reduce_gather": 0.012844632500000001, + "chi_squared_evidence": 0.004746137499999993 + }, + "prorated_note": "ESTIMATE ONLY \u2014 a mixed fusion's time split equally across the stages its constituents span. Never summed into the measured table, never reconciled." + }, + "other_sources_ms": { + "copy.41": 0.030482110000000565, + "copy.42": 0.030116844999999413, + "copy.60": 0.02854873500000104, + "copy.59": 0.02848323000000083, + "copy.51": 0.02846624000000079, + "copy.50": 0.028422155000000678, + "copy.96": 0.0016783399999999993, + "copy.95": 0.001647319999999998, + "copy.52": 0.0015554499999999999, + "copy.34": 0.0015447500000000008 + }, + "device_span_ms": 29.620574539999996, + "device_busy_ms": 28.053509945000002, + "device_idle_ms": 1.5670645949999944, + "largest_idle_gaps": [ + { + "gap_ms": 0.046654, + "after": "input_concatenate_fusion.4", + "before": "custom-call.2" + }, + { + "gap_ms": 0.034654, + "after": "loop_add_fusion.3", + "before": "loop_select_fusion.3" + }, + { + "gap_ms": 0.033759, + "after": "loop_multiply_fusion.1", + "before": "eigh.0" + }, + { + "gap_ms": 0.027455, + "after": "copy.51", + "before": "loop_add_fusion.3" + }, + { + "gap_ms": 0.022815, + "after": "copy.42", + "before": "loop_add_fusion" + }, + { + "gap_ms": 0.021568, + "after": "while.26", + "before": "input_transpose_fusion" + }, + { + "gap_ms": 0.021088, + "after": "input_scatter_fusion.4", + "before": "input_scatter_fusion.5" + }, + { + "gap_ms": 0.021023, + "after": "loop_broadcast_fusion.6", + "before": "loop_broadcast_fusion.8" + } + ], + "kernel_ms": 27.252062499999994, + "sum_ms": 28.81912709499999, + "wall_ms": 29.624366735006333, + "host_outside_span_ms": 0.0037921950063370957, + "reconciliation_pct": -2.71816659309316, + "unjoined_ms": 0.0, + "unjoined_pct": 0.0, + "other_ms": 0.18061049999999973, + "other_pct": 0.6096687285017204, + "note": "Stage rows attribute the command-buffers-OFF program (see the module docstring): kernel times are the same, the launch overhead the CUDA graphs remove is not. sum_ms = kernel rows + device_idle_ms; the residual against wall_ms is host_outside_span_ms (dispatch before the first kernel, teardown after the last).", + "per_stage_ms_per_lane": { + "border_relocator": 0.08540900000000001, + "chi_squared_evidence": 0.003008, + "curvature_matrix_F": 4.4115435000000005, + "inversion_other": 1.8411594999999998, + "mapping_matrix": 0.002848, + "memset": 0.030575499999999995, + "mesh_construction": 0.34461200000000014, + "mixed_fusion": 1.8504445000000003, + "other": 0.18061049999999973, + "pdip_solve": 11.884316999999994, + "psf_convolution_mapping_matrix": 6.614719, + "regularization_H": 0.002816 + }, + "per_lane_divisor": 1, + "host_callback": { + "pure_callback_span_ms": 0, + "qhull_ms": 0.0, + "callback_body_ms_note": "the OUTERMOST matching body event, not a sum: under the probe the body appears twice (the wrapper and the timed re-implementation it calls) and summing them would count the same work twice", + "events_by_name": { + "ThenExecuteCallback:GetEventForComputeStreamSyncPoint": { + "count": 200, + "ms": 0.38357209999999997 + } + }, + "note": "HOST milliseconds per traced BATCH (the whole invocation), aggregated by name because the events nest. Not a row of the device table: the device pays for them as the idle gaps largest_idle_gaps names." + }, + "host_callback_ms": 0 + }, + "hlo_census": { + "status": "excluded", + "reason": "The legacy census anchors PyAutoArray source line numbers that moved after the phase-1 run. No batched attribution is published from unsupported anchors; the device-event table and wall reconciliation remain valid." + }, + "trace_split": { + "expected_calls": 200, + "executions_per_invocation": 20, + "method": "per-call (first-instruction recurrence)", + "note": "DECIDED IN CODE: the scalar arm's trace is split by trace_calls * B, so every lane's execution is its own block and the per-stage median is taken over all of them. The vmap arm's is split by trace_calls, one block per batched execution, and per_stage_ms_per_lane divides those rows by B." + } + } + }, + "certification_report": { + "source": "vmap arm, library solve observed through its stats= out-dict (PyAutoArray #566) and jax.debug.callback(..., ordered=True); ordered because the unordered batching rule returns the lanes permuted. Untimed, separately compiled; max rel diff of its log likelihoods vs the timed arm's: 9.795e-08", + "rows": 20, + "pdip_iter": "NOT AVAILABLE per lane without changing library numerics. The fallback branch calls the library's own reconstruction_positive_only_from, which returns the solution alone \u2014 jax_nnls.solve_nnls' iteration count is discarded inside the library's custom_vjp primal. The PDIP while_loop's cost is in the pdip_solve stage row of each arm's device table instead, which is a max-over-lanes quantity under vmap because every lane runs the same fixed kernel sequence.", + "passes_semantics": "library `passes`: restricted active-set passes run (jax_active_set.solve_certified)" + }, + "lane_construction": { + "draws_sha256": "8cddafd199e104718f58a97cf7a1ab5896f14415cfb2b1c64230c78557388dba", + "lane_rows": [ + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179 + ], + "calls": [ + 8 + ], + "stage": "pix2", + "regularization_range": { + "galaxies.source.pixelization.regularization.inner_coefficient": { + "min": 1.0935169824695694e-06, + "max": 138.59890275651458 + }, + "galaxies.source.pixelization.regularization.outer_coefficient": { + "min": 3.114197989844157e-06, + "max": 74.49747633293859 + }, + "galaxies.source.pixelization.regularization.signal_scale": { + "min": 0.035325131608288984, + "max": 0.993503904012744 + } + }, + "phases": [ + "exploration" + ], + "window_rule": "nautilus_batches.timed_window: consecutive captured calls, in call order, from the FIRST call that is not a prior batch, concatenated and truncated to B; at B == n_batch exactly one real Nautilus batch. Falls back to the latest B lanes if the post-prior lanes run out; never repeats a lane.", + "note": "Lane k is captured lane lane_rows[k]: the mass AND shear of a real Nautilus proposal (nautilus_batch_capture.py), lens light fixed at S3, the S3 light-subtracted dataset shared by every lane. `offsets` in the lane table are the mass offsets from the fiducial; the shear is in the capture file." + }, + "captured": { + "batches_path": "/mnt/ral/jnightin/autolens_profiling_wt/certified-solver-phase-c1-lane-rate/results/breakdown/imaging/nautilus_batches_rectangular_pix2.npz", + "batches_sha256": "77f052c40d028d2e54ab6efb1c3f1d7bdf1922da01e74916f7b206db0259df03", + "schema_version": 2, + "n_calls": 142, + "n_lanes": 2840, + "call_sizes_seen": [ + 20 + ], + "calls_by_phase": { + "prior": 8, + "exploration": 134 + }, + "parameter_paths": [ + "galaxies.source.pixelization.regularization.inner_coefficient", + "galaxies.source.pixelization.regularization.outer_coefficient", + "galaxies.source.pixelization.regularization.signal_scale" + ], + "stage": "pix2", + "regularization": { + "class": "Adapt", + "free": true, + "priors": { + "inner_coefficient": [ + "LogUniform", + 1e-06, + 1000000.0 + ], + "outer_coefficient": [ + "LogUniform", + 1e-06, + 1000000.0 + ], + "signal_scale": [ + "Uniform", + 0.0, + 1.0 + ] + }, + "priors_source": "PyAutoGalaxy packaged config/priors/regularization (adapt_split.yaml / adapt.yaml / constant.yaml); adapt_split.yaml and adapt.yaml are identical to euclid_strong_lens_modeling_pipeline/config/priors/regularization/'s copies" + }, + "nautilus": { + "departures_from_production": [ + "mass/shear fixed at the S3 fiducial, not at a source_pix_1 result", + "no positions likelihood", + "the cell's mesh (39x39 RectangularBilinearAdaptImage, weight_power 1, weight_floor 0) fixed in both stages; source_pix_1 uses RectangularBilinearAdaptDensity, source_pix_2 frees weight_power / weight_floor", + "seeded (production passes no seed)", + "quick updates disabled (iterations_per_quick_update=1e12; render-only)", + "NullPaths: no output directory, so no checkpoint and one Sampler.run call", + "post-fit perform_update skipped (samples / latent variables never built)" + ], + "n_batch": 20, + "n_like_max": 40000, + "n_live": 75, + "number_of_cores": 1, + "production_reference": "euclid_strong_lens_modeling_pipeline/scripts/full_model.py source_pix_1 (n_live=150) / source_pix_2 (n_live=75): af.Nautilus(n_batch=20, **SettingsSearch.search_dict) with use_jax_vmap=True and number_of_cores=1 (SettingsSearch defaults)", + "production_stage": "source_pix_2", + "seed": 1, + "stage": "pix2", + "use_jax_vmap": true, + "version": "1.0.5" + }, + "capture_fit_status": "sampling complete (n_like_max or convergence); post-fit result skipped", + "capture_library_revisions": { + "PyAutoArray": { + "head": "3de624b5b91a4efa130dc3cb0a3a0f06f85025a3", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoArray" + }, + "PyAutoFit": { + "head": "dd9fbe0aab60c4a57702b1444ca031b317c91331", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoFit" + }, + "PyAutoGalaxy": { + "head": "70a61e26cd715cefe7012a38285698091246a8a4", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy" + }, + "PyAutoLens": { + "head": "86054bbc19baa2f710a12e04a94fa27ab37cc354", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoLens" + }, + "PyAutoNerves": { + "head": "1fa613aa8d89a79613009fb66f5b4e2d21deb57a", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoNerves" + } + }, + "fingerprint_check": { + "fields": [ + "mesh", + "source_pixels", + "dataset_sha256", + "regularization_class", + "regularization_s0_fiducial", + "border_relocator", + "use_mixed_precision", + "log_evidence_s3_library" + ], + "not_identity": "the regularization coefficients: free per lane since the capture frees them", + "log_evidence_s3_library_rel_diff": 0.0, + "passed": true + }, + "timed_window_vs_capture_pdip": { + "reference": "the capture's own figure of merit (library PDIP, Fitness.call_wrap jax.jit(jax.vmap(call)) over parameter vectors) for the same lanes", + "compared_against": "this cell's jit(vmap) library-PDIP reference", + "n_compared": 20, + "max_rel_diff": 1.3668914049287377e-07, + "max_abs_diff_nats": 0.02653859171550721, + "gated": false, + "note": "RECORDED, NOT GATED: proves the lane trees rebuilt here are the models the sampler evaluated (a wrong parameter mapping shows up as nats, not 1e-10)." + } + }, + "matched": { + "vmap_wall_per_lane_ms": 11.53781560000425, + "scalar_wall_per_lane_ms": 28.542936440007907, + "speedup_vmap_over_scalar": 2.473859648094687, + "note": "Both walls are the PRODUCTION nesting of their arm, measured in one process on the same B lanes with the SAME library Settings (no injection). A speedup below 1 means the batch is slower per lane than B sequential jitted calls." + }, + "solver_source": "library", + "solver": "certified", + "certified_fallback": "none", + "certified_pass_budget": 16, + "certified_pass_budget_basis": "config default (Settings().certified_pass_budget)", + "certified_tau_rel": 1e-09, + "solver_used": "certified", + "solver_check": { + "solver_used": "certified", + "solver_used_source": "AbstractInversion.positive_only_solver_used on the fiducial S3 inversion, built eagerly on the JAX backend (AnalysisImaging(use_jax=True).fit_from) with the arms' Settings", + "reference_solver_used": "pdip", + "traced_solver_kwargs_jax": [ + "certified" + ], + "observed_calls_jax": 1, + "report_rows": 20, + "report_vs_timed_arm_max_rel_diff": 9.79467919778707e-08 + }, + "lanes_certified": [ + true, + true, + true, + false, + false, + false, + true, + true, + true, + true, + false, + false, + false, + true, + true, + true, + true, + true, + true, + true + ], + "lanes_passes": [ + 10, + 5, + 2, + 16, + 16, + 16, + 8, + 5, + 8, + 8, + 16, + 16, + 16, + 2, + 3, + 4, + 2, + 4, + 2, + 13 + ], + "uncertified_lanes": 6, + "per_lane_certification_note": "certified / passes come from the library's own solve through its stats= out-dict (PyAutoArray #566): passes is the number of restricted active-set passes the library ran (0 when the unconstrained solve was already non-negative), certified is its KKT certificate. With certified_fallback=pdip a False lane returned the PDIP solution; with none it returned the last uncertified iterate. null for a library-PDIP row (no certificate).", + "gate": { + "pre_registered": true, + "gated": [ + "per lane: jit(vmap) arm vs jit(vmap) library PDIP <= lane_rtol relative", + "per lane: scalar jit arm vs scalar jit library PDIP <= lane_rtol relative" + ], + "recorded_not_gated": [ + "per lane: jit(vmap) arm vs scalar jit arm (rel_diff, abs_diff_nats)", + "per lane: jit(vmap) library PDIP vs scalar jit library PDIP", + "uncertified_lanes (certified_fallback=none rows)" + ], + "lanes_failed": 11, + "passed": false, + "policy_eligible": false, + "note": "Pre-registered before submission (module docstring; submit header). Phase 3 (results/notes/hst_gpu_residue_phase3_psf_2026_09.md) placed phase 2's ~2.5e-9 certified-vs-PDIP residual BETWEEN the jit(vmap) and scalar-jit compositions, not in the solver \u2014 so each arm is gated against the library-PDIP reference of its OWN composition, and the cross-composition difference is recorded with its nats. A certified_fallback=none row is policy-eligible only if every lane certifies AND passes the gate. Timing is never gated." + }, + "library_revisions": { + "PyAutoArray": { + "head": "3de624b5b91a4efa130dc3cb0a3a0f06f85025a3", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoArray", + "module_file": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/__init__.py" + }, + "PyAutoFit": { + "head": "dd9fbe0aab60c4a57702b1444ca031b317c91331", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoFit", + "module_file": "/mnt/ral/jnightin/PyAuto/PyAutoFit/autofit/__init__.py" + }, + "PyAutoGalaxy": { + "head": "70a61e26cd715cefe7012a38285698091246a8a4", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy", + "module_file": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/__init__.py" + }, + "PyAutoLens": { + "head": "86054bbc19baa2f710a12e04a94fa27ab37cc354", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoLens", + "module_file": "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/__init__.py" + }, + "autoarray_file": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/__init__.py" + } + }, + "headline_arm_note": "`trace`, `hlo_census`, `command_buffers` and `trace_timing` above describe the scalar arm \u2014 the program phase 1 traced. Both arms' full blocks, the lane table and the matched comparison are under `vmap`." +} \ No newline at end of file diff --git a/results/breakdown/imaging/fixed_light_trace_rectangular_jitvmap20_captured_pix2_libcertified_fboff_b16_hpc_a100_fp64_fixed_light_trace.png b/results/breakdown/imaging/fixed_light_trace_rectangular_jitvmap20_captured_pix2_libcertified_fboff_b16_hpc_a100_fp64_fixed_light_trace.png new file mode 100644 index 000000000..5bedd70d5 Binary files /dev/null and b/results/breakdown/imaging/fixed_light_trace_rectangular_jitvmap20_captured_pix2_libcertified_fboff_b16_hpc_a100_fp64_fixed_light_trace.png differ diff --git a/results/breakdown/imaging/fixed_light_trace_rectangular_jitvmap20_captured_pix2_libcertified_fbon_b16_hpc_a100_fp64_fixed_light_trace.json b/results/breakdown/imaging/fixed_light_trace_rectangular_jitvmap20_captured_pix2_libcertified_fbon_b16_hpc_a100_fp64_fixed_light_trace.json new file mode 100644 index 000000000..99108e0b6 --- /dev/null +++ b/results/breakdown/imaging/fixed_light_trace_rectangular_jitvmap20_captured_pix2_libcertified_fbon_b16_hpc_a100_fp64_fixed_light_trace.json @@ -0,0 +1,5170 @@ +{ + "device": { + "backend": "gpu", + "device": "cuda:0", + "hostname": "euclid-ral-gpu-1", + "xla_flags": "--xla_disable_hlo_passes=constant_folding --xla_gpu_autotune_level=0 --xla_gpu_enable_triton_gemm=false", + "omp_num_threads": null, + "cpu_count": 124, + "jax_compilation_cache_dir": "/mnt/ral/jnightin/autolens_profiling_wt/certified-solver-phase-c1-lane-rate/output/jax_cache/fixed_light_lanerate_rectangular_pix2_time_20_certified_on_350768_36", + "autotune_cache_entries_at_start": 0, + "cache_fresh": true, + "nvidia_smi": "NVIDIA A100 80GB PCIe, 4735 MiB, 81920 MiB" + }, + "machine": { + "cpu_model": "AMD EPYC 7702 64-Core Processor", + "cpu_count_os": 124, + "nproc": 4, + "nproc_all": 124, + "nproc_note": "GNU nproc honours OMP_NUM_THREADS, so `nproc` can print 1 on a multi-core host; `nproc_all` is the core count.", + "ram_total": "928298200 kB", + "kernel": "5.14.0-687.50.1.el9_8.x86_64", + "platform": "Linux-5.14.0-687.50.1.el9_8.x86_64-x86_64-with-glibc2.34", + "python": "3.12.4", + "jax_thread_env": { + "NPROC": null + }, + "blas_thread_env": { + "OMP_NUM_THREADS": null, + "OPENBLAS_NUM_THREADS": null, + "MKL_NUM_THREADS": null, + "VECLIB_MAXIMUM_THREADS": null, + "NUMEXPR_NUM_THREADS": null + }, + "thread_env_note": "NPROC sizes XLA's CPU intra-op pool (the JAX rows); the BLAS knobs pin OpenBLAS/MKL/OpenMP (the numpy/scipy rows) and do not touch JAX. Two disjoint families; both are recorded on every CPU timing.", + "gpu": "NVIDIA A100 80GB PCIe, 81920 MiB, 610.57.04" + }, + "precision": "fp64", + "configuration": { + "pixel_scale_arcsec": 0.05, + "mask_radius_arcsec": 3.5, + "image_pixels_masked": 15361, + "over_sampled_pixels": 62752, + "mesh": "rectangular", + "mesh_shape": [ + 39, + 39 + ], + "source_pixels": 1521, + "source_pixels_requested": null, + "dataset": "hst", + "dataset_sha256": { + "data.fits": "e4e833a28e9c6f6fb023cd85c0d3dde74068720256bc77a240633500e5b04fac", + "noise_map.fits": "315c6266a0acd3ac9c8da82fcd2b45a08697362481fd7a35072bab1658530ba3", + "psf.fits": "8389ba0e8bf4a09b4a561cfc246181a2fb944ed396754cd0ff76fdd22910d303" + }, + "cell_source_sha256": "06a162fcdae6b329384ec33322f443df07215d86e56f0505ac15b3d3473eb432", + "inversion_path": "dense", + "pass_budget": 11, + "pass_budget_basis": "phase 3 (autolens_profiling#255): the smallest ZERO-fallback budget per mesh, the budget a production run fixes. NOT phase 0's certifying budget (2 for Delaunay), which falls back on 67.5 % of a graded draw set and is not a production cost.", + "border_relocator_mode": "cell", + "border_relocator": true, + "border_relocator_note": "'cell' is use_border_relocator=True, which every profiling cell in this family forces; 'library' passes None and takes the shipped config default, which is what production runs. The resolved boolean is what this leg actually ran.", + "routes_selected": [ + "b", + "d" + ], + "trace_calls": 10, + "command_buffers_traced": "off", + "use_mixed_precision": false, + "tau_rel": 1e-09, + "regularization": { + "scheme": "constant", + "coefficient": 1.0 + }, + "thread_env": { + "n_threads": null, + "vars": [ + "OPENBLAS_NUM_THREADS", + "MKL_NUM_THREADS", + "OMP_NUM_THREADS", + "VECLIB_MAXIMUM_THREADS", + "NUMEXPR_NUM_THREADS" + ], + "set_to": null, + "preexisting": {}, + "overridden": {}, + "note": "Not pinned (legacy variant): recorded as found." + }, + "over_sample_size_lp_rule": { + "sub_size_list": [ + 4, + 2, + 2 + ], + "radial_list": [ + 0.3, + 0.6 + ], + "centre": [ + 0.0, + 0.0 + ] + }, + "vmap_batch": 20, + "lanes": "captured", + "arms": [ + "vmap", + "scalar" + ], + "fallback": "on", + "draw_seed": 0, + "vmap_composition": "jax.jit(jax.vmap(fn))", + "lane_rtol": 1e-09, + "vmap_flags_note": "Strict ProfileCLI.parse_cell_args rejects unknown flags. These keys record the exact batching program and prevent historical vmap(jit) artifacts from being mistaken for current jit(vmap) measurements.", + "solver_source": "library", + "solver": "certified", + "certified_fallback": "pdip", + "certified_pass_budget": 16, + "captured_pass": "time", + "batches": "/mnt/ral/jnightin/autolens_profiling_wt/certified-solver-phase-c1-lane-rate/results/breakdown/imaging/nautilus_batches_rectangular_pix2.npz" + }, + "solver_injection": { + "patched": null, + "part_v": "none \u2014 library mode selects the solver through al.Settings", + "part_b_route_d": { + "patched": "autoarray.inversion.inversion.inversion_util.reconstruction_positive_only_from", + "pass_budget": 11, + "fallback": true + }, + "note": "Library mode (phase B, #300): PART V's arms and references run the library's own positive-only solve, selected by Settings(positive_only_solver, certified_fallback, certified_pass_budget); nothing is injected. PART B's single-call route d (the fiducial d == b pin) still uses the phase-1 harness injection at the phase-3 budget and is not a phase-B row. The untimed certification report observes the library solve (library_solver_observed) without changing it." + }, + "routes": { + "b_s3_pdip": { + "label": "S3 PDIP (source-only)", + "status": "ok", + "solver": "library", + "ms": 38.96826279997185, + "log_likelihood": 28622.39485118912 + }, + "d_s3_certified_fallback": { + "label": "S3 certified active set, budget 11, PDIP fallback", + "status": "ok", + "solver": "harness-injected certified active set", + "pass_budget": 11, + "fallback": true, + "injected_solver_calls_jax": 1, + "injected_solver_calls_numpy": 0, + "ms": 30.4237540000031, + "log_likelihood": 28622.394851189252 + } + }, + "equivalence_pins": [ + { + "pin": "route d (certified, fallback) == route b (library PDIP)", + "route": "d_s3_certified_fallback", + "reference": "b_s3_pdip", + "expectation": "the certified active set returns the library's own positive solution", + "rtol": 1e-09, + "got": 28622.394851189252, + "reference_value": 28622.39485118912, + "rel_diff": 4.575691088611358e-15, + "status": "PASS" + } + ], + "equivalence_rtol": 1e-09, + "reference": { + "log_evidence_s0_library": 28622.394851199875, + "log_evidence_s3_library": 28622.39485119987, + "s3": { + "n_params": 1521, + "n_mapper": 1521, + "n_funcs": 0, + "edge_zeroed_pixels": 152, + "subtracted_light_flux": 5253.476646922047 + } + }, + "command_buffers": { + "wall_on_ms": 714.0730568000436, + "wall_off_ms": 718.911783799922, + "command_buffer_delta_ms": 4.838726999878418, + "command_buffer_delta_pct": 0.6776235223832804, + "traced": "off", + "compiler_option": "xla_gpu_enable_command_buffer", + "probe": { + "note": "Not taken in --vmap-batch mode: the CUPTI-inside-a-CUDA-graph probe is a phase-1 diagnostic about the JOIN, and this mode already compiles and times both the command-buffers ON and OFF executable of every arm." + }, + "note": "ONE lowering, TWO compilations, one process. wall_on_ms is the PRODUCTION program (CUDA graphs as XLA ships them) and is the number comparable to phase 5's row; wall_off_ms is the graph-less program the stage rows attribute. The delta is the launch overhead the graphs remove \u2014 it lands in device_idle and host_outside_span, not in any stage. Reconciliation is computed against wall_off_ms." + }, + "trace": { + "parser": "ProfileData.from_file(xplane) + as_text() + stack_frame_index(proto field 17)", + "stage_audit": { + "mesh_construction": [ + { + "instruction": "fusion.2", + "ms": 0.14828379999999805, + "opcode": "fusion", + "shape": "(f64[15361,2]{1,0}, s64[15361,2]{1,0}, s32[15361,2]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:227", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:227 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_select_fusion", + "ms": 0.03960868000000019, + "opcode": "fusion", + "shape": "(u32[2,15361]{1,0}, u32[2,15361]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69 (forward_interp)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:573 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/abstract.py:36 (AbstractInterpolator.mappings)" + ] + }, + { + "instruction": "loop_select_fusion.1", + "ms": 0.03491444500000035, + "opcode": "fusion", + "shape": "(u32[15361]{0}, u32[15361]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_select_fusion.6", + "ms": 0.034829990000000345, + "opcode": "fusion", + "shape": "(u32[15361]{0}, u32[15361]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_add_fusion", + "ms": 0.02125330000000007, + "opcode": "fusion", + "shape": "s64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69 (forward_interp)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:573 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/abstract.py:36 (AbstractInterpolator.mappings)" + ] + }, + { + "instruction": "loop_add_fusion.7", + "ms": 0.02111931000000019, + "opcode": "fusion", + "shape": "s64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "mixed_fusion": [ + { + "instruction": "loop_divide_gather_fusion", + "ms": 0.7004981599999999, + "opcode": "fusion", + "shape": "(f64[15361,1,1,1521]{3,2,1,0}, f64[15361,1,1,1521]{3,2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_broadcast_fusion.2", + "ms": 0.23253239499999995, + "opcode": "fusion", + "shape": "f64[1521,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_multiply_transpose_fusion", + "ms": 0.18601937999999998, + "opcode": "fusion", + "shape": "(f64[1369,1369]{1,0}, f64[1369,1369]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:237 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:274 (_certified_positive_only_from)" + ] + }, + { + "instruction": "loop_broadcast_fusion", + "ms": 0.1364765699999997, + "opcode": "fusion", + "shape": "f64[15361,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:342", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:342 (mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:283 (Mapper.mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:91 (AbstractInversionImaging._mapping_matrix_for_convolution_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:137 (AbstractInversionImaging.operated_mapping_matrix_list)" + ] + }, + { + "instruction": "input_reduce_fusion.11", + "ms": 0.11370450000000001, + "opcode": "fusion", + "shape": "f64[92,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123 (data_vector_via_blurred_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:67 (InversionImagingMapping.data_vector)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:699 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_reduce_fusion.14", + "ms": 0.111746675, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163 (mapped_reconstructed_data_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:120 (InversionImagingMapping._mapped_reconstructed_data_dict_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:196 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + } + ], + "border_relocator": [ + { + "instruction": "eigh.0", + "ms": 0.07445276000000034, + "opcode": "custom-call", + "shape": "(f64[2,2]{0,1}, f64[2]{0}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "custom-call.2", + "ms": 0.007926170000000008, + "opcode": "custom-call", + "shape": "(f64[2,2]{1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_reduce_fusion.22", + "ms": 0.0015714699999999965, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:256", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:256 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_multiply_fusion.3", + "ms": 0.0015493849999999982, + "opcode": "fusion", + "shape": "f64[2,2]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + } + ], + "other": [ + { + "instruction": "copy.63", + "ms": 0.03029001500000022, + "opcode": "copy", + "shape": "u32[2,15361]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.64", + "ms": 0.03005880999999903, + "opcode": "copy", + "shape": "u32[2,15361]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.81", + "ms": 0.028580760000001492, + "opcode": "copy", + "shape": "u32[15361]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.82", + "ms": 0.028513515000000964, + "opcode": "copy", + "shape": "u32[15361]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.72", + "ms": 0.0284713650000008, + "opcode": "copy", + "shape": "u32[15361]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.73", + "ms": 0.028432890000000714, + "opcode": "copy", + "shape": "u32[15361]{0}", + "source": "", + "stack": [] + } + ], + "pdip_solve": [ + { + "instruction": "cholesky.40", + "ms": 7.220057850000074, + "opcode": "custom-call", + "shape": "(f64[1369,1369]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "cholesky.60", + "ms": 4.03189196499996, + "opcode": "custom-call", + "shape": "(f64[1369,1369]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:106", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:106 (factorize_kkt)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:212 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve.7", + "ms": 1.2634946650000356, + "opcode": "custom-call", + "shape": "(f64[1369,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "triangular-solve.6", + "ms": 1.0699040400000084, + "opcode": "custom-call", + "shape": "(f64[1369,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "cholesky.100", + "ms": 0.8455943749999996, + "opcode": "custom-call", + "shape": "(f64[1369,1369]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:237 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:274 (_certified_positive_only_from)" + ] + }, + { + "instruction": "cholesky.110", + "ms": 0.8395104999999983, + "opcode": "custom-call", + "shape": "(f64[1369,1369]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:297 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:274 (_certified_positive_only_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:496 (reconstruction_positive_only_from)" + ] + } + ], + "mapping_matrix": [ + { + "instruction": "input_reduce_fusion.28", + "ms": 0.0028100250000000077, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:362 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + } + ], + "regularization_H": [ + { + "instruction": "input_scatter_fusion.8", + "ms": 0.002817199999999998, + "opcode": "fusion", + "shape": "f64[1521,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:123 (weighted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:366 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "psf_convolution_mapping_matrix": [ + { + "instruction": "fft.19.0", + "ms": 1.7857895549999991, + "opcode": "fft", + "shape": "f64[1521,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_scatter_fusion", + "ms": 1.4264048, + "opcode": "fusion", + "shape": "f64[1521,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.15.0", + "ms": 1.3890444199999998, + "opcode": "fft", + "shape": "c128[1521,180,91]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.17.0", + "ms": 0.9926380849999998, + "opcode": "fft", + "shape": "c128[1521,91,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_transpose_fusion.4", + "ms": 0.5222252599999999, + "opcode": "fusion", + "shape": "c128[1521,91,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "wrapped_transpose.2", + "ms": 0.5053266899999999, + "opcode": "fusion", + "shape": "c128[1521,180,91]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + } + ], + "curvature_matrix_F": [ + { + "instruction": "cublas-lt-matmul.2", + "ms": 4.361905769999998, + "opcode": "custom-call", + "shape": "(f64[1521,1521]{1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "inversion_other": [ + { + "instruction": "cholesky.120", + "ms": 0.9207690599999994, + "opcode": "custom-call", + "shape": "(f64[1521,1521]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1078 (AbstractInversion.log_det_curvature_reg_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:347 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "cholesky.130", + "ms": 0.9027444650000005, + "opcode": "custom-call", + "shape": "(f64[1521,1521]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1157 (AbstractInversion.log_det_regularization_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:348 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "loop_reduce_window_fusion.3", + "ms": 0.0058316600000000015, + "opcode": "fusion", + "shape": "s64[6,16]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "loop_reduce_window_fusion.2", + "ms": 0.003037524999999993, + "opcode": "fusion", + "shape": "s64[86,16]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "input_scatter_fusion.9", + "ms": 0.0025595899999999987, + "opcode": "fusion", + "shape": "s64[1369]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527 (AbstractInversion.zeroed_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:567 (AbstractInversion.solve_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:684 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_broadcast_fusion.4", + "ms": 0.0019049150000000066, + "opcode": "fusion", + "shape": "(s64[1369]{0}, s64[1369]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527 (AbstractInversion.zeroed_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:567 (AbstractInversion.solve_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:684 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "chi_squared_evidence": [ + { + "instruction": "loop_multiply_fusion.2", + "ms": 0.002958349999999999, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:300", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:300 (AbstractNDArray.__pow__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:60 (unwrap_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:35 (to_new_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:78 (chi_squared_map_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:78 (AbstractFit.chi_squared_map)" + ] + } + ] + }, + "stage_audit_note": "The HLO instructions that contributed most of each stage's milliseconds, with their full source stack. A stage row is only as good as the rules that built it; this is how a reader checks a row against the HLO instead of trusting it.", + "untraced_wall_ms": 35.98835956499897, + "reconciliation_vs_untraced_pct": -19.43012901816099, + "wall_basis": "wall_ms is the TRACED run's wall, the run these kernel durations came from. untraced_wall_ms is the same executable without the profiler; the difference is the profiler's overhead and belongs in neither the stages nor the idle row.", + "calls": 200, + "call_split": "per-call (first-instruction recurrence)", + "call_blocks": 200, + "events": 138420, + "streams": [ + "Stream #14(MemcpyD2D,MemcpyD2H,Compute,MemcpyH2D,Memset)" + ], + "per_stage_ms": { + "border_relocator": { + "median_ms": 0.08551750000000001, + "min_ms": 0.084737, + "max_ms": 0.08626800000000001 + }, + "chi_squared_evidence": { + "median_ms": 0.002944, + "min_ms": 0.002816, + "max_ms": 0.003264 + }, + "curvature_matrix_F": { + "median_ms": 4.3403075, + "min_ms": 4.319474, + "max_ms": 4.523751 + }, + "inversion_other": { + "median_ms": 1.8402779999999999, + "min_ms": 1.823952, + "max_ms": 1.863639 + }, + "mapping_matrix": { + "median_ms": 0.002816, + "min_ms": 0.002783, + "max_ms": 0.002848 + }, + "memset": { + "median_ms": 0.030430999999999996, + "min_ms": 0.014048, + "max_ms": 0.09858499999999996 + }, + "mesh_construction": { + "median_ms": 0.34455100000000016, + "min_ms": 0.3418370000000002, + "max_ms": 0.3463830000000001 + }, + "mixed_fusion": { + "median_ms": 1.8543370000000001, + "min_ms": 1.8486000000000007, + "max_ms": 1.864694 + }, + "other": { + "median_ms": 0.1808984999999997, + "min_ms": 0.1802559999999997, + "max_ms": 0.18477099999999969 + }, + "pdip_solve": { + "median_ms": 11.848371499999995, + "min_ms": 4.6653020000000005, + "max_ms": 45.44146699999992 + }, + "psf_convolution_mapping_matrix": { + "median_ms": 6.621725, + "min_ms": 6.601735, + "max_ms": 6.638853 + }, + "regularization_H": { + "median_ms": 0.002784, + "min_ms": 0.002464, + "max_ms": 0.003264 + } + }, + "stage_order": [ + "border_relocator", + "mesh_construction", + "mapping_matrix", + "psf_convolution_mapping_matrix", + "curvature_matrix_F", + "regularization_H", + "pdip_solve", + "chi_squared_evidence", + "inversion_other", + "mixed_fusion", + "other", + "memset" + ], + "mixed_fusion": { + "ms": 1.8543370000000001, + "constituent_stage_sets": { + "curvature_matrix_F + psf_convolution_mapping_matrix": 0.7004981599999999, + "pdip_solve + psf_convolution_mapping_matrix": 0.23253239499999995, + "inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": 0.18601937999999998, + "mapping_matrix + pdip_solve": 0.13881617999999957, + "data_vector_D + pdip_solve": 0.11742438000000009, + "mapped_reconstruction + pdip_solve": 0.111746675, + "border_relocator + pdip_solve": 0.06492349499999994, + "mesh_construction + pdip_solve": 0.039254914999999994, + "inversion_other + regularization_H": 0.030678009999999988, + "inversion_other + pdip_solve": 0.03025882500000005, + "border_relocator + mesh_construction + pdip_solve": 0.026869450000000045, + "curvature_reg_reduce_gather + inversion_other": 0.025548724999999998, + "border_relocator + inversion_other + mapping_matrix + mesh_construction + pdip_solve": 0.020655850000000017, + "pdip_solve + regularization_H": 0.019196960000000006, + "inversion_other + mapping_matrix + pdip_solve + regularization_H": 0.015570065000000011, + "inversion_other + mapping_matrix + mesh_construction": 0.01313264500000001, + "pdip_solve + ray_trace_data_grid": 0.012863060000000022, + "border_relocator + ray_trace_data_grid": 0.012257449999999984, + "inversion_other + mapped_reconstruction + reconstruction_scatter": 0.009563720000000003, + "inversion_other + mapped_reconstruction": 0.009023949999999998, + "border_relocator + pdip_solve + ray_trace_data_grid": 0.008710005000000009, + "chi_squared_evidence + pdip_solve": 0.007699479999999985, + "inversion_other + mesh_construction + pdip_solve": 0.005485344999999984, + "inversion_other + pdip_solve + ray_trace_data_grid": 0.004812805000000009, + "border_relocator + mesh_construction": 0.003417834999999992, + "border_relocator + inversion_other": 0.0033550950000000006, + "border_relocator + inversion_other + mesh_construction + pdip_solve": 0.0024964250000000026, + "chi_squared_evidence + inversion_other": 0.0017951449999999967 + }, + "example_kernels": { + "curvature_matrix_F + psf_convolution_mapping_matrix": [ + "loop_divide_gather_fusion" + ], + "pdip_solve + psf_convolution_mapping_matrix": [ + "loop_broadcast_fusion.2" + ], + "inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": [ + "input_multiply_transpose_fusion" + ], + "mapping_matrix + pdip_solve": [ + "loop_divide_fusion.1", + "loop_broadcast_fusion" + ], + "data_vector_D + pdip_solve": [ + "input_reduce_fusion.11", + "input_reduce_fusion.26" + ], + "mapped_reconstruction + pdip_solve": [ + "input_reduce_fusion.14" + ], + "border_relocator + pdip_solve": [ + "loop_select_sine_fusion", + "input_transpose_fusion.8", + "input_transpose_fusion.9" + ], + "mesh_construction + pdip_solve": [ + "loop_multiply_fusion.4", + "loop_pad_fusion", + "loop_reduce_fusion", + "triton_softmax.1" + ], + "inversion_other + regularization_H": [ + "input_transpose_fusion.6" + ], + "inversion_other + pdip_solve": [ + "input_scatter_fusion.11", + "input_reduce_fusion.17", + "input_reduce_fusion.24", + "input_reduce_fusion.12" + ] + }, + "prorated_estimate_ms": { + "psf_convolution_mapping_matrix": 0.4665152774999999, + "pdip_solve": 0.45780335499999986, + "curvature_matrix_F": 0.35024907999999993, + "inversion_other": 0.1164806841666667, + "mapped_reconstruction": 0.11007806416666667, + "mapping_matrix": 0.08180932458333313, + "data_vector_D": 0.058712190000000046, + "border_relocator": 0.058592032083333315, + "reconstruction_scatter": 0.04969275166666667, + "mesh_construction": 0.041254131250000006, + "regularization_H": 0.02883000125, + "ray_trace_data_grid": 0.017067858333333342, + "curvature_reg_reduce_gather": 0.012774362499999999, + "chi_squared_evidence": 0.004747312499999991 + }, + "prorated_note": "ESTIMATE ONLY \u2014 a mixed fusion's time split equally across the stages its constituents span. Never summed into the measured table, never reconciled." + }, + "other_sources_ms": { + "copy.63": 0.03029001500000022, + "copy.64": 0.03005880999999903, + "copy.81": 0.028580760000001492, + "copy.82": 0.028513515000000964, + "copy.72": 0.0284713650000008, + "copy.73": 0.028432890000000714, + "copy.122": 0.0016841450000000017, + "copy.121": 0.0016489249999999977, + "copy.74": 0.0015515100000000003, + "copy.56": 0.0015439550000000018, + "copy.120": 0.0005070349999999999, + "copy.43": 0.00046094500000000004 + }, + "device_span_ms": 36.9407833, + "device_busy_ms": 35.09996943, + "device_idle_ms": 1.840813869999998, + "largest_idle_gaps": [ + { + "gap_ms": 0.043677, + "after": "input_concatenate_fusion.4", + "before": "custom-call.2" + }, + { + "gap_ms": 0.034174, + "after": "loop_multiply_fusion.3", + "before": "eigh.0" + }, + { + "gap_ms": 0.02835, + "after": "eigh.0", + "before": "eigh.0" + }, + { + "gap_ms": 0.027615, + "after": "loop_add_fusion.7", + "before": "loop_select_fusion.6" + }, + { + "gap_ms": 0.021407, + "after": "loop_broadcast_fusion.6", + "before": "loop_broadcast_fusion.8" + }, + { + "gap_ms": 0.020511, + "after": "copy.82", + "before": "loop_add_fusion.1" + }, + { + "gap_ms": 0.018303, + "after": "eigh.0", + "before": "eigh.0" + }, + { + "gap_ms": 0.017407, + "after": "cond.3.clone", + "before": "input_scatter_fusion.1" + } + ], + "kernel_ms": 27.154960999999993, + "sum_ms": 28.99577486999999, + "wall_ms": 36.944570255000144, + "host_outside_span_ms": 0.0037869550001445873, + "reconciliation_pct": -21.515463111725733, + "unjoined_ms": 0.0, + "unjoined_pct": 0.0, + "other_ms": 0.1808984999999997, + "other_pct": 0.4896484077400158, + "note": "Stage rows attribute the command-buffers-OFF program (see the module docstring): kernel times are the same, the launch overhead the CUDA graphs remove is not. sum_ms = kernel rows + device_idle_ms; the residual against wall_ms is host_outside_span_ms (dispatch before the first kernel, teardown after the last).", + "per_stage_ms_per_lane": { + "border_relocator": 0.08551750000000001, + "chi_squared_evidence": 0.002944, + "curvature_matrix_F": 4.3403075, + "inversion_other": 1.8402779999999999, + "mapping_matrix": 0.002816, + "memset": 0.030430999999999996, + "mesh_construction": 0.34455100000000016, + "mixed_fusion": 1.8543370000000001, + "other": 0.1808984999999997, + "pdip_solve": 11.848371499999995, + "psf_convolution_mapping_matrix": 6.621725, + "regularization_H": 0.002784 + }, + "per_lane_divisor": 1, + "host_callback": { + "pure_callback_span_ms": 0, + "qhull_ms": 0.0, + "callback_body_ms_note": "the OUTERMOST matching body event, not a sum: under the probe the body appears twice (the wrapper and the timed re-implementation it calls) and summing them would count the same work twice", + "events_by_name": { + "ThenExecuteCallback:GetEventForComputeStreamSyncPoint": { + "count": 200, + "ms": 0.343918 + } + }, + "note": "HOST milliseconds per traced BATCH (the whole invocation), aggregated by name because the events nest. Not a row of the device table: the device pays for them as the idle gaps largest_idle_gaps names." + }, + "host_callback_ms": 0 + }, + "hlo_census": { + "status": "excluded", + "reason": "The legacy census anchors PyAutoArray source line numbers that moved after the phase-1 run. No batched attribution is published from unsupported anchors; the device-event table and wall reconciliation remain valid." + }, + "stage_map_provenance": [ + { + "label": "log_det_curvature_reg", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 850, + 882 + ], + "requires": { + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 884, + 896 + ] + }, + "function": null + }, + { + "label": "log_det_regularization", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 850, + 882 + ], + "requires": { + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 897, + 943 + ] + }, + "function": null + }, + { + "label": "curvature_reg_add", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 359, + 372 + ], + "requires": null, + "function": null + }, + { + "label": "curvature_reg_reduce_gather", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 374, + 398 + ], + "requires": null, + "function": null + }, + { + "label": "edge_subset_gather", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 606, + 614 + ], + "requires": null, + "function": null + }, + { + "label": "regularization_term", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 786, + 849 + ], + "requires": null, + "function": null + }, + { + "label": "mapped_reconstruction", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 722, + 785 + ], + "requires": null, + "function": null + }, + { + "label": "reconstruction_scatter", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 583, + 605 + ], + "requires": null, + "function": null + }, + { + "label": "reconstruction_scatter", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 615, + 721 + ], + "requires": null, + "function": null + }, + { + "label": "certified_active_set_solve", + "path": "likelihood_breakdown/active_set_steps.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "certified_active_set_solve", + "path": "likelihood_breakdown/library_solver_injection.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "pdip_solve", + "path": "PyAutoArray/autoarray/util/jax_nnls.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "pdip_solve", + "path": "PyAutoArray/autoarray/inversion/inversion/inversion_util.py", + "lines": [ + 256, + 488 + ], + "requires": null, + "function": null + }, + { + "label": "mapped_reconstruction", + "path": "PyAutoArray/autoarray/inversion/inversion/inversion_util.py", + "lines": [ + 156, + 200 + ], + "requires": null, + "function": null + }, + { + "label": "curvature_matrix_F", + "path": "PyAutoArray/autoarray/inversion/inversion/inversion_util.py", + "lines": [ + 12, + 155 + ], + "requires": null, + "function": null + }, + { + "label": "reconstruction_scatter", + "path": "PyAutoArray/autoarray/inversion/inversion/inversion_util.py", + "lines": [ + 201, + 255 + ], + "requires": null, + "function": null + }, + { + "label": "data_vector_D", + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py", + "lines": [ + 54, + 73 + ], + "requires": null, + "function": null + }, + { + "label": "curvature_matrix_F", + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py", + "lines": [ + 74, + 110 + ], + "requires": null, + "function": null + }, + { + "label": "data_vector_D", + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py", + "lines": null, + "requires": null, + "function": "data_vector_via_blurred_mapping_matrix_from" + }, + { + "label": "curvature_matrix_F", + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "likelihood_breakdown/psf_cube_injection.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": [ + 1086, + 1300 + ], + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": [ + 632, + 642 + ], + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": [ + 670, + 691 + ], + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": null, + "requires": { + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": [ + 1086, + 1300 + ] + }, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": null, + "requires": { + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py", + "lines": [ + 119, + 150 + ] + }, + "function": null + }, + { + "label": "psf_convolution_image", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py", + "lines": [ + 119, + 150 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_qhull_callback", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 139, + 172 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_seed_argmin", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 173, + 207 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_locate_walk", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 208, + 372 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_dual_areas", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 373, + 396 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_dual_areas", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 437, + 494 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_dual_areas", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 605, + 615 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_interpolation_weights", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 616, + 695 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_interpolation_weights", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 896, + 1000 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_construction", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "border_relocator", + "path": "PyAutoArray/autoarray/inversion/mesh/border_relocator.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "mesh_construction", + "path": "PyAutoArray/autoarray/inversion/mesh/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "mapping_matrix", + "path": "PyAutoArray/autoarray/inversion/mappers/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "mapping_matrix", + "path": "PyAutoArray/autoarray/inversion/mappings/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "mapping_matrix", + "path": "PyAutoArray/autoarray/inversion/linear_obj/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "regularization_H", + "path": "PyAutoArray/autoarray/inversion/regularization/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "chi_squared_evidence", + "path": "PyAutoArray/autoarray/fit/fit_util.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "chi_squared_evidence", + "path": "PyAutoArray/autoarray/fit/fit_dataset.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "ray_trace_mesh_grid", + "path": "PyAutoLens/autolens/lens/to_inversion.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "ray_trace_mesh_grid", + "path": "PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "mass_profile_deflections", + "path": "PyAutoGalaxy/autogalaxy/profiles/mass/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "light_profile_image", + "path": "PyAutoGalaxy/autogalaxy/profiles/light/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "light_profile_image", + "path": "PyAutoGalaxy/autogalaxy/operate/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "ray_trace_data_grid", + "path": "PyAutoLens/autolens/lens/tracer.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "ray_trace_data_grid", + "path": "PyAutoLens/autolens/lens/tracer_util.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "grids_and_structures", + "path": "PyAutoArray/autoarray/structures/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "grids_and_structures", + "path": "PyAutoArray/autoarray/operators/over_sampling/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "grids_and_structures", + "path": "PyAutoArray/autoarray/geometry/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "inversion_other", + "path": "PyAutoArray/autoarray/inversion/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "fit_imaging_other", + "path": "PyAutoLens/autolens/imaging/fit_imaging.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "fit_imaging_other", + "path": "PyAutoGalaxy/autogalaxy/imaging/fit_imaging.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "fit_imaging_other", + "path": "PyAutoArray/autoarray/fit/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "analysis_other", + "path": "PyAutoLens/autolens/analysis/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "analysis_other", + "path": "PyAutoGalaxy/autogalaxy/analysis/", + "lines": null, + "requires": null, + "function": null + } + ], + "trace_timing": { + "traced_wall_ms": 36.944570255000144, + "untraced_wall_ms": 35.98835956499897, + "profiler_overhead_ms": 0.9562106900011713, + "profiler_overhead_pct": 2.6569999343097277 + }, + "jit_phases": { + "b_s3_pdip_library_likelihood_jit": { + "lower_s": 1.2964244770009827, + "compile_s": 3.4121302429994103, + "first_call_s": 0.10608881599910092, + "steady_per_call_s": 0.038968262799971856 + }, + "d_s3_certified_fallback_library_likelihood_jit": { + "lower_s": 0.4642403979996743, + "compile_s": 3.829279576002591, + "first_call_s": 0.053800204001163365, + "steady_per_call_s": 0.0304237540000031 + } + }, + "peak_bytes": { + "after_setup": 85616640, + "after_routes": 1197479168, + "after_all": 2184373248, + "note": "jax.devices()[0].memory_stats()['peak_bytes_in_use']; None on a backend that does not report it (CPU). Process-wide high-water marks." + }, + "note": "Every stage row is a MEASURED sum of GPU kernel durations joined to library source through the optimized HLO of ONE program \u2014 not arithmetic across compilations. The rows attribute the command-buffers-OFF program: kernel time is the same as production, the launch overhead the CUDA graphs remove is not, and command_buffers.* carries both walls and their delta. sum_ms = kernel rows + measured device_idle_ms; the residual against the wall is host_outside_span_ms and is reported, not absorbed. mixed_fusion.prorated_estimate_ms is an ESTIMATE and is never part of the table. No row may be quoted if reconciliation_pct is outside 5 % or unjoined_ms is non-zero.", + "vmap": { + "batch": 20, + "lanes_mode": "captured", + "arms": [ + "vmap", + "scalar" + ], + "draw_seed": 0, + "fallback": true, + "composition": "jax.jit(jax.vmap(fn))", + "composition_provenance": "Current Fitness._vmap after PyAutoFit#1638. Array 343376 used the retired jax.vmap(jax.jit(fn)) composition and is historical evidence only.", + "headline_arm": "scalar", + "lane_rtol": 1e-09, + "lanes": [ + { + "lane": 0, + "draw_name": "call00008_lane00", + "draw_kind": "captured", + "offsets": {}, + "log_likelihood_vmap": 22274.4034885819, + "log_likelihood_scalar": 22274.40348858178, + "log_likelihood_library_pdip": 22274.40348857942, + "log_likelihood_library_pdip_scalar": 22274.40348857937, + "rel_diff_vmap_vs_library_pdip": 1.1122468751631023e-13, + "rel_diff_scalar_vs_library_pdip_scalar": 1.0812150240205219e-13, + "abs_diff_nats": 1.2005330063402653e-10, + "rel_diff": 5.3897425668690886e-15, + "rel_diff_scalar_vs_library_pdip": 1.0583494494944057e-13, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 5.093170329928398e-11, + "rel_diff_library_pdip_vmap_vs_scalar": 2.2865574526113756e-15, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 10, + "pdip_iter": null + }, + { + "lane": 1, + "draw_name": "call00008_lane01", + "draw_kind": "captured", + "offsets": {}, + "log_likelihood_vmap": 25020.10492725813, + "log_likelihood_scalar": 25020.104927063, + "log_likelihood_library_pdip": 25020.104927216027, + "log_likelihood_library_pdip_scalar": 25020.104926995846, + "rel_diff_vmap_vs_library_pdip": 1.6827398948545136e-12, + "rel_diff_scalar_vs_library_pdip_scalar": 2.683979583460884e-12, + "abs_diff_nats": 1.951302692759782e-07, + "rel_diff": 7.79893888713934e-12, + "rel_diff_scalar_vs_library_pdip": 6.116198992237126e-12, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 2.2018139134161174e-07, + "rel_diff_library_pdip_vmap_vs_scalar": 8.800178575751835e-12, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 5, + "pdip_iter": null + }, + { + "lane": 2, + "draw_name": "call00008_lane02", + "draw_kind": "captured", + "offsets": {}, + "log_likelihood_vmap": -194152.89762046083, + "log_likelihood_scalar": -194152.92057902378, + "log_likelihood_library_pdip": -194152.89314986503, + "log_likelihood_library_pdip_scalar": -194152.91975298495, + "rel_diff_vmap_vs_library_pdip": 2.302616111658982e-08, + "rel_diff_scalar_vs_library_pdip_scalar": 4.254578446231554e-09, + "abs_diff_nats": 0.02295856294222176, + "rel_diff": 1.1824989741978776e-07, + "rel_diff_scalar_vs_library_pdip": 1.4127607524225897e-07, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 0.026603119913488626, + "rel_diff_library_pdip_vmap_vs_scalar": 1.3702147743817086e-07, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": true, + "passes": 2, + "pdip_iter": null + }, + { + "lane": 3, + "draw_name": "call00008_lane03", + "draw_kind": "captured", + "offsets": {}, + "log_likelihood_vmap": 21671.259367015133, + "log_likelihood_scalar": 21671.259367019993, + "log_likelihood_library_pdip": 21671.259367014092, + "log_likelihood_library_pdip_scalar": 21671.259367019993, + "rel_diff_vmap_vs_library_pdip": 4.80111432938651e-14, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 4.8603396862745285e-09, + "rel_diff": 2.2427583021184024e-13, + "rel_diff_scalar_vs_library_pdip": 2.722869735057664e-13, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 5.900801625102758e-09, + "rel_diff_library_pdip_vmap_vs_scalar": 2.722869735056923e-13, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 4, + "draw_name": "call00008_lane04", + "draw_kind": "captured", + "offsets": {}, + "log_likelihood_vmap": 19204.153254755838, + "log_likelihood_scalar": 19204.15325448881, + "log_likelihood_library_pdip": 19204.153254755838, + "log_likelihood_library_pdip_scalar": 19204.15325448881, + "rel_diff_vmap_vs_library_pdip": 0.0, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 2.6702764444053173e-07, + "rel_diff": 1.3904682018620958e-11, + "rel_diff_scalar_vs_library_pdip": 1.3904682018427618e-11, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 2.6702764444053173e-07, + "rel_diff_library_pdip_vmap_vs_scalar": 1.3904682018620958e-11, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 5, + "draw_name": "call00008_lane05", + "draw_kind": "captured", + "offsets": {}, + "log_likelihood_vmap": 19342.25587702078, + "log_likelihood_scalar": 19342.255876845524, + "log_likelihood_library_pdip": 19342.25587702078, + "log_likelihood_library_pdip_scalar": 19342.255876845524, + "rel_diff_vmap_vs_library_pdip": 0.0, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 1.7525599105283618e-07, + "rel_diff": 9.060783404413229e-12, + "rel_diff_scalar_vs_library_pdip": 9.060783404331131e-12, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 1.7525599105283618e-07, + "rel_diff_library_pdip_vmap_vs_scalar": 9.060783404413229e-12, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 6, + "draw_name": "call00008_lane06", + "draw_kind": "captured", + "offsets": {}, + "log_likelihood_vmap": 24443.79026135683, + "log_likelihood_scalar": 24443.790261356848, + "log_likelihood_library_pdip": 24443.790261355745, + "log_likelihood_library_pdip_scalar": 24443.790261355764, + "rel_diff_vmap_vs_library_pdip": 4.435145584714247e-14, + "rel_diff_scalar_vs_library_pdip_scalar": 4.435145584714244e-14, + "abs_diff_nats": 1.8189894035458565e-11, + "rel_diff": 7.441519437439676e-16, + "rel_diff_scalar_vs_library_pdip": 4.5095607790886473e-14, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 1.8189894035458565e-11, + "rel_diff_library_pdip_vmap_vs_scalar": 7.441519437440006e-16, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 8, + "pdip_iter": null + }, + { + "lane": 7, + "draw_name": "call00008_lane07", + "draw_kind": "captured", + "offsets": {}, + "log_likelihood_vmap": 28119.165446914463, + "log_likelihood_scalar": 28119.165446923216, + "log_likelihood_library_pdip": 28119.165446885498, + "log_likelihood_library_pdip_scalar": 28119.165446930892, + "rel_diff_vmap_vs_library_pdip": 1.0301012423991576e-12, + "rel_diff_scalar_vs_library_pdip_scalar": 2.7298588563912507e-13, + "abs_diff_nats": 8.752977009862661e-09, + "rel_diff": 3.112815359468788e-13, + "rel_diff_scalar_vs_library_pdip": 1.3413827783464542e-12, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 4.5394699554890394e-08, + "rel_diff_library_pdip_vmap_vs_scalar": 1.6143686639834137e-12, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 5, + "pdip_iter": null + }, + { + "lane": 8, + "draw_name": "call00008_lane08", + "draw_kind": "captured", + "offsets": {}, + "log_likelihood_vmap": 28488.842567050044, + "log_likelihood_scalar": 28488.84256700995, + "log_likelihood_library_pdip": 28488.842567052365, + "log_likelihood_library_pdip_scalar": 28488.842567010306, + "rel_diff_vmap_vs_library_pdip": 8.147156113701889e-14, + "rel_diff_scalar_vs_library_pdip_scalar": 1.2514440425453978e-14, + "abs_diff_nats": 4.009416443295777e-08, + "rel_diff": 1.407363754376837e-12, + "rel_diff_scalar_vs_library_pdip": 1.4888353155117604e-12, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 4.2058672988787293e-08, + "rel_diff_library_pdip_vmap_vs_scalar": 1.4763208750885045e-12, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 8, + "pdip_iter": null + }, + { + "lane": 9, + "draw_name": "call00008_lane09", + "draw_kind": "captured", + "offsets": {}, + "log_likelihood_vmap": 28760.406110561846, + "log_likelihood_scalar": 28760.406110615113, + "log_likelihood_library_pdip": 28760.406110562755, + "log_likelihood_library_pdip_scalar": 28760.40611061551, + "rel_diff_vmap_vs_library_pdip": 3.1623152269706674e-14, + "rel_diff_scalar_vs_library_pdip_scalar": 1.3787694389566818e-14, + "abs_diff_nats": 5.326728569343686e-08, + "rel_diff": 1.8521047821288086e-12, + "rel_diff_scalar_vs_library_pdip": 1.820481629862474e-12, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 5.275433068163693e-08, + "rel_diff_library_pdip_vmap_vs_scalar": 1.834269324248701e-12, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 8, + "pdip_iter": null + }, + { + "lane": 10, + "draw_name": "call00008_lane10", + "draw_kind": "captured", + "offsets": {}, + "log_likelihood_vmap": 19204.153236579965, + "log_likelihood_scalar": 19204.15323634958, + "log_likelihood_library_pdip": 19204.153236579965, + "log_likelihood_library_pdip_scalar": 19204.15323634958, + "rel_diff_vmap_vs_library_pdip": 0.0, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 2.30385921895504e-07, + "rel_diff": 1.1996671712628809e-11, + "rel_diff_scalar_vs_library_pdip": 1.199667171248489e-11, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 2.30385921895504e-07, + "rel_diff_library_pdip_vmap_vs_scalar": 1.1996671712628809e-11, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 11, + "draw_name": "call00008_lane11", + "draw_kind": "captured", + "offsets": {}, + "log_likelihood_vmap": 21293.017831633548, + "log_likelihood_scalar": 21293.017831633693, + "log_likelihood_library_pdip": 21293.017831633548, + "log_likelihood_library_pdip_scalar": 21293.017831633693, + "rel_diff_vmap_vs_library_pdip": 0.0, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 1.4551915228366852e-10, + "rel_diff": 6.83412531912127e-15, + "rel_diff_scalar_vs_library_pdip": 6.8341253191213176e-15, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 1.4551915228366852e-10, + "rel_diff_library_pdip_vmap_vs_scalar": 6.83412531912127e-15, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 12, + "draw_name": "call00008_lane12", + "draw_kind": "captured", + "offsets": {}, + "log_likelihood_vmap": 19204.210147488666, + "log_likelihood_scalar": 19204.21014710055, + "log_likelihood_library_pdip": 19204.210147488666, + "log_likelihood_library_pdip_scalar": 19204.21014710055, + "rel_diff_vmap_vs_library_pdip": 0.0, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 3.881141310557723e-07, + "rel_diff": 2.0209846074527033e-11, + "rel_diff_scalar_vs_library_pdip": 2.0209846074118597e-11, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 3.881141310557723e-07, + "rel_diff_library_pdip_vmap_vs_scalar": 2.0209846074527033e-11, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 13, + "draw_name": "call00008_lane13", + "draw_kind": "captured", + "offsets": {}, + "log_likelihood_vmap": -79994.54572586149, + "log_likelihood_scalar": -79994.54573459727, + "log_likelihood_library_pdip": -79994.54572550285, + "log_likelihood_library_pdip_scalar": -79994.5457345973, + "rel_diff_vmap_vs_library_pdip": 4.483386954268187e-12, + "rel_diff_scalar_vs_library_pdip_scalar": 3.638226855277512e-16, + "abs_diff_nats": 8.735776646062732e-06, + "rel_diff": 1.0920465346532431e-10, + "rel_diff_scalar_vs_library_pdip": 1.1368804043200776e-10, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 9.094452252611518e-06, + "rel_diff_library_pdip_vmap_vs_scalar": 1.1368840424176828e-10, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 2, + "pdip_iter": null + }, + { + "lane": 14, + "draw_name": "call00008_lane14", + "draw_kind": "captured", + "offsets": {}, + "log_likelihood_vmap": -194333.90105468506, + "log_likelihood_scalar": -194333.96959442768, + "log_likelihood_library_pdip": -194333.88433071802, + "log_likelihood_library_pdip_scalar": -194333.9725847055, + "rel_diff_vmap_vs_library_pdip": 8.605790543674856e-08, + "rel_diff_scalar_vs_library_pdip_scalar": 1.538731387792687e-08, + "abs_diff_nats": 0.06853974261321127, + "rel_diff": 3.526904882159963e-07, + "rel_diff_scalar_vs_library_pdip": 4.387485483951846e-07, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 0.08825398748740554, + "rel_diff_library_pdip_vmap_vs_scalar": 4.5413566302174853e-07, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": true, + "passes": 3, + "pdip_iter": null + }, + { + "lane": 15, + "draw_name": "call00008_lane15", + "draw_kind": "captured", + "offsets": {}, + "log_likelihood_vmap": -154117.0628650894, + "log_likelihood_scalar": -154117.05772197474, + "log_likelihood_library_pdip": -154117.06237811636, + "log_likelihood_library_pdip_scalar": -154117.05842385849, + "rel_diff_vmap_vs_library_pdip": 3.1597606735210967e-09, + "rel_diff_scalar_vs_library_pdip_scalar": 4.55422492973069e-09, + "abs_diff_nats": 0.005143114656675607, + "rel_diff": 3.337148225314373e-08, + "rel_diff_scalar_vs_library_pdip": 3.021172057141273e-08, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 0.00395425787428394, + "rel_diff_library_pdip_vmap_vs_scalar": 2.5657496416839153e-08, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": true, + "passes": 4, + "pdip_iter": null + }, + { + "lane": 16, + "draw_name": "call00008_lane16", + "draw_kind": "captured", + "offsets": {}, + "log_likelihood_vmap": -189207.189704768, + "log_likelihood_scalar": -189207.16431311518, + "log_likelihood_library_pdip": -189207.1785474707, + "log_likelihood_library_pdip_scalar": -189207.162426545, + "rel_diff_vmap_vs_library_pdip": 5.8968678578176974e-08, + "rel_diff_scalar_vs_library_pdip_scalar": 9.97092373086549e-09, + "abs_diff_nats": 0.02539165283087641, + "rel_diff": 1.342002715544971e-07, + "rel_diff_scalar_vs_library_pdip": 7.523158288022127e-08, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 0.016120925720315427, + "rel_diff_library_pdip_vmap_vs_scalar": 8.520251302100669e-08, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": true, + "passes": 2, + "pdip_iter": null + }, + { + "lane": 17, + "draw_name": "call00008_lane17", + "draw_kind": "captured", + "offsets": {}, + "log_likelihood_vmap": -31662.811767954903, + "log_likelihood_scalar": -31662.811736495438, + "log_likelihood_library_pdip": -31662.811719818346, + "log_likelihood_library_pdip_scalar": -31662.811722628612, + "rel_diff_vmap_vs_library_pdip": 1.5202868682750141e-09, + "rel_diff_scalar_vs_library_pdip_scalar": 4.379530703971024e-10, + "abs_diff_nats": 3.145946539007127e-05, + "rel_diff": 9.935777546190004e-10, + "rel_diff_scalar_vs_library_pdip": 5.267091131326871e-10, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 2.8102658689022064e-06, + "rel_diff_library_pdip_vmap_vs_scalar": 8.875604268883614e-11, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": true, + "passes": 4, + "pdip_iter": null + }, + { + "lane": 18, + "draw_name": "call00008_lane18", + "draw_kind": "captured", + "offsets": {}, + "log_likelihood_vmap": -187758.2206718382, + "log_likelihood_scalar": -187758.22026115406, + "log_likelihood_library_pdip": -187758.22111500963, + "log_likelihood_library_pdip_scalar": -187758.22018281446, + "rel_diff_vmap_vs_library_pdip": 2.3603303019480537e-09, + "rel_diff_scalar_vs_library_pdip_scalar": 4.1723656770588273e-10, + "abs_diff_nats": 0.0004106841515749693, + "rel_diff": 2.1873031764135076e-09, + "rel_diff_scalar_vs_library_pdip": 4.547633468414508e-09, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 0.0009321951656602323, + "rel_diff_library_pdip_vmap_vs_scalar": 4.9648700586988e-09, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": true, + "passes": 2, + "pdip_iter": null + }, + { + "lane": 19, + "draw_name": "call00008_lane19", + "draw_kind": "captured", + "offsets": {}, + "log_likelihood_vmap": 21467.061750413566, + "log_likelihood_scalar": 21467.06175041343, + "log_likelihood_library_pdip": 21467.061750410845, + "log_likelihood_library_pdip_scalar": 21467.061750410772, + "rel_diff_vmap_vs_library_pdip": 1.2676202171228775e-13, + "rel_diff_scalar_vs_library_pdip_scalar": 1.2388106667337252e-13, + "abs_diff_nats": 1.3460521586239338e-10, + "rel_diff": 6.2703139082273814e-15, + "rel_diff_scalar_vs_library_pdip": 1.2049170780405962e-13, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 7.275957614183426e-11, + "rel_diff_library_pdip_vmap_vs_scalar": 3.389358869312518e-15, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 13, + "pdip_iter": null + } + ], + "lane_pins": [ + { + "pin": "lane 0: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 22274.4034885819, + "reference_value": 22274.40348857942, + "rel_diff": 1.1122468751631023e-13, + "abs_diff_nats": 2.4774635676294565e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 0: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 22274.40348858178, + "reference_value": 22274.40348857937, + "rel_diff": 1.0812150240205219e-13, + "abs_diff_nats": 2.408341970294714e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 0: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 22274.4034885819, + "reference_value": 22274.40348858178, + "rel_diff": 5.3897425668690886e-15, + "abs_diff_nats": 1.2005330063402653e-10, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 0: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 22274.40348857942, + "reference_value": 22274.40348857937, + "rel_diff": 2.2865574526113756e-15, + "abs_diff_nats": 5.093170329928398e-11, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 1: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 25020.10492725813, + "reference_value": 25020.104927216027, + "rel_diff": 1.6827398948545136e-12, + "abs_diff_nats": 4.2102328734472394e-08, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 1: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 25020.104927063, + "reference_value": 25020.104926995846, + "rel_diff": 2.683979583460884e-12, + "abs_diff_nats": 6.715345080010593e-08, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 1: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 25020.10492725813, + "reference_value": 25020.104927063, + "rel_diff": 7.79893888713934e-12, + "abs_diff_nats": 1.951302692759782e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 1: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 25020.104927216027, + "reference_value": 25020.104926995846, + "rel_diff": 8.800178575751835e-12, + "abs_diff_nats": 2.2018139134161174e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 2: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -194152.89762046083, + "reference_value": -194152.89314986503, + "rel_diff": 2.302616111658982e-08, + "abs_diff_nats": 0.00447059579892084, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 2: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -194152.92057902378, + "reference_value": -194152.91975298495, + "rel_diff": 4.254578446231554e-09, + "abs_diff_nats": 0.0008260388276539743, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 2: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -194152.89762046083, + "reference_value": -194152.92057902378, + "rel_diff": 1.1824989741978776e-07, + "abs_diff_nats": 0.02295856294222176, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 2: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -194152.89314986503, + "reference_value": -194152.91975298495, + "rel_diff": 1.3702147743817086e-07, + "abs_diff_nats": 0.026603119913488626, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 3: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 21671.259367015133, + "reference_value": 21671.259367014092, + "rel_diff": 4.80111432938651e-14, + "abs_diff_nats": 1.04046193882823e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 3: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 21671.259367019993, + "reference_value": 21671.259367019993, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 3: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 21671.259367015133, + "reference_value": 21671.259367019993, + "rel_diff": 2.2427583021184024e-13, + "abs_diff_nats": 4.8603396862745285e-09, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 3: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 21671.259367014092, + "reference_value": 21671.259367019993, + "rel_diff": 2.722869735056923e-13, + "abs_diff_nats": 5.900801625102758e-09, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 4: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 19204.153254755838, + "reference_value": 19204.153254755838, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 4: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 19204.15325448881, + "reference_value": 19204.15325448881, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 4: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 19204.153254755838, + "reference_value": 19204.15325448881, + "rel_diff": 1.3904682018620958e-11, + "abs_diff_nats": 2.6702764444053173e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 4: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 19204.153254755838, + "reference_value": 19204.15325448881, + "rel_diff": 1.3904682018620958e-11, + "abs_diff_nats": 2.6702764444053173e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 5: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 19342.25587702078, + "reference_value": 19342.25587702078, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 5: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 19342.255876845524, + "reference_value": 19342.255876845524, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 5: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 19342.25587702078, + "reference_value": 19342.255876845524, + "rel_diff": 9.060783404413229e-12, + "abs_diff_nats": 1.7525599105283618e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 5: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 19342.25587702078, + "reference_value": 19342.255876845524, + "rel_diff": 9.060783404413229e-12, + "abs_diff_nats": 1.7525599105283618e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 6: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 24443.79026135683, + "reference_value": 24443.790261355745, + "rel_diff": 4.435145584714247e-14, + "abs_diff_nats": 1.0841176845133305e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 6: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 24443.790261356848, + "reference_value": 24443.790261355764, + "rel_diff": 4.435145584714244e-14, + "abs_diff_nats": 1.0841176845133305e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 6: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 24443.79026135683, + "reference_value": 24443.790261356848, + "rel_diff": 7.441519437439676e-16, + "abs_diff_nats": 1.8189894035458565e-11, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 6: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 24443.790261355745, + "reference_value": 24443.790261355764, + "rel_diff": 7.441519437440006e-16, + "abs_diff_nats": 1.8189894035458565e-11, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 7: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 28119.165446914463, + "reference_value": 28119.165446885498, + "rel_diff": 1.0301012423991576e-12, + "abs_diff_nats": 2.896558726206422e-08, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 7: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 28119.165446923216, + "reference_value": 28119.165446930892, + "rel_diff": 2.7298588563912507e-13, + "abs_diff_nats": 7.676135282963514e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 7: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 28119.165446914463, + "reference_value": 28119.165446923216, + "rel_diff": 3.112815359468788e-13, + "abs_diff_nats": 8.752977009862661e-09, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 7: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 28119.165446885498, + "reference_value": 28119.165446930892, + "rel_diff": 1.6143686639834137e-12, + "abs_diff_nats": 4.5394699554890394e-08, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 8: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 28488.842567050044, + "reference_value": 28488.842567052365, + "rel_diff": 8.147156113701889e-14, + "abs_diff_nats": 2.321030478924513e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 8: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 28488.84256700995, + "reference_value": 28488.842567010306, + "rel_diff": 1.2514440425453978e-14, + "abs_diff_nats": 3.5652192309498787e-10, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 8: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 28488.842567050044, + "reference_value": 28488.84256700995, + "rel_diff": 1.407363754376837e-12, + "abs_diff_nats": 4.009416443295777e-08, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 8: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 28488.842567052365, + "reference_value": 28488.842567010306, + "rel_diff": 1.4763208750885045e-12, + "abs_diff_nats": 4.2058672988787293e-08, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 9: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 28760.406110561846, + "reference_value": 28760.406110562755, + "rel_diff": 3.1623152269706674e-14, + "abs_diff_nats": 9.094947017729282e-10, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 9: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 28760.406110615113, + "reference_value": 28760.40611061551, + "rel_diff": 1.3787694389566818e-14, + "abs_diff_nats": 3.965396899729967e-10, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 9: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 28760.406110561846, + "reference_value": 28760.406110615113, + "rel_diff": 1.8521047821288086e-12, + "abs_diff_nats": 5.326728569343686e-08, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 9: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 28760.406110562755, + "reference_value": 28760.40611061551, + "rel_diff": 1.834269324248701e-12, + "abs_diff_nats": 5.275433068163693e-08, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 10: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 19204.153236579965, + "reference_value": 19204.153236579965, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 10: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 19204.15323634958, + "reference_value": 19204.15323634958, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 10: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 19204.153236579965, + "reference_value": 19204.15323634958, + "rel_diff": 1.1996671712628809e-11, + "abs_diff_nats": 2.30385921895504e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 10: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 19204.153236579965, + "reference_value": 19204.15323634958, + "rel_diff": 1.1996671712628809e-11, + "abs_diff_nats": 2.30385921895504e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 11: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 21293.017831633548, + "reference_value": 21293.017831633548, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 11: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 21293.017831633693, + "reference_value": 21293.017831633693, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 11: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 21293.017831633548, + "reference_value": 21293.017831633693, + "rel_diff": 6.83412531912127e-15, + "abs_diff_nats": 1.4551915228366852e-10, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 11: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 21293.017831633548, + "reference_value": 21293.017831633693, + "rel_diff": 6.83412531912127e-15, + "abs_diff_nats": 1.4551915228366852e-10, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 12: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 19204.210147488666, + "reference_value": 19204.210147488666, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 12: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 19204.21014710055, + "reference_value": 19204.21014710055, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 12: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 19204.210147488666, + "reference_value": 19204.21014710055, + "rel_diff": 2.0209846074527033e-11, + "abs_diff_nats": 3.881141310557723e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 12: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 19204.210147488666, + "reference_value": 19204.21014710055, + "rel_diff": 2.0209846074527033e-11, + "abs_diff_nats": 3.881141310557723e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 13: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -79994.54572586149, + "reference_value": -79994.54572550285, + "rel_diff": 4.483386954268187e-12, + "abs_diff_nats": 3.5864650271832943e-07, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 13: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -79994.54573459727, + "reference_value": -79994.5457345973, + "rel_diff": 3.638226855277512e-16, + "abs_diff_nats": 2.9103830456733704e-11, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 13: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -79994.54572586149, + "reference_value": -79994.54573459727, + "rel_diff": 1.0920465346532431e-10, + "abs_diff_nats": 8.735776646062732e-06, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 13: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -79994.54572550285, + "reference_value": -79994.5457345973, + "rel_diff": 1.1368840424176828e-10, + "abs_diff_nats": 9.094452252611518e-06, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 14: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -194333.90105468506, + "reference_value": -194333.88433071802, + "rel_diff": 8.605790543674856e-08, + "abs_diff_nats": 0.016723967040888965, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 14: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -194333.96959442768, + "reference_value": -194333.9725847055, + "rel_diff": 1.538731387792687e-08, + "abs_diff_nats": 0.0029902778333052993, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 14: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -194333.90105468506, + "reference_value": -194333.96959442768, + "rel_diff": 3.526904882159963e-07, + "abs_diff_nats": 0.06853974261321127, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 14: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -194333.88433071802, + "reference_value": -194333.9725847055, + "rel_diff": 4.5413566302174853e-07, + "abs_diff_nats": 0.08825398748740554, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 15: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -154117.0628650894, + "reference_value": -154117.06237811636, + "rel_diff": 3.1597606735210967e-09, + "abs_diff_nats": 0.0004869730328209698, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 15: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -154117.05772197474, + "reference_value": -154117.05842385849, + "rel_diff": 4.55422492973069e-09, + "abs_diff_nats": 0.0007018837495706975, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 15: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -154117.0628650894, + "reference_value": -154117.05772197474, + "rel_diff": 3.337148225314373e-08, + "abs_diff_nats": 0.005143114656675607, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 15: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -154117.06237811636, + "reference_value": -154117.05842385849, + "rel_diff": 2.5657496416839153e-08, + "abs_diff_nats": 0.00395425787428394, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 16: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -189207.189704768, + "reference_value": -189207.1785474707, + "rel_diff": 5.8968678578176974e-08, + "abs_diff_nats": 0.011157297296449542, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 16: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -189207.16431311518, + "reference_value": -189207.162426545, + "rel_diff": 9.97092373086549e-09, + "abs_diff_nats": 0.0018865701858885586, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 16: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -189207.189704768, + "reference_value": -189207.16431311518, + "rel_diff": 1.342002715544971e-07, + "abs_diff_nats": 0.02539165283087641, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 16: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -189207.1785474707, + "reference_value": -189207.162426545, + "rel_diff": 8.520251302100669e-08, + "abs_diff_nats": 0.016120925720315427, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 17: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -31662.811767954903, + "reference_value": -31662.811719818346, + "rel_diff": 1.5202868682750141e-09, + "abs_diff_nats": 4.813655687030405e-05, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 17: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -31662.811736495438, + "reference_value": -31662.811722628612, + "rel_diff": 4.379530703971024e-10, + "abs_diff_nats": 1.3866825611330569e-05, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 17: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -31662.811767954903, + "reference_value": -31662.811736495438, + "rel_diff": 9.935777546190004e-10, + "abs_diff_nats": 3.145946539007127e-05, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 17: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -31662.811719818346, + "reference_value": -31662.811722628612, + "rel_diff": 8.875604268883614e-11, + "abs_diff_nats": 2.8102658689022064e-06, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 18: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -187758.2206718382, + "reference_value": -187758.22111500963, + "rel_diff": 2.3603303019480537e-09, + "abs_diff_nats": 0.0004431714187376201, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 18: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -187758.22026115406, + "reference_value": -187758.22018281446, + "rel_diff": 4.1723656770588273e-10, + "abs_diff_nats": 7.83395953476429e-05, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 18: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -187758.2206718382, + "reference_value": -187758.22026115406, + "rel_diff": 2.1873031764135076e-09, + "abs_diff_nats": 0.0004106841515749693, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 18: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -187758.22111500963, + "reference_value": -187758.22018281446, + "rel_diff": 4.9648700586988e-09, + "abs_diff_nats": 0.0009321951656602323, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 19: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 21467.061750413566, + "reference_value": 21467.061750410845, + "rel_diff": 1.2676202171228775e-13, + "abs_diff_nats": 2.7212081477046013e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 19: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 21467.06175041343, + "reference_value": 21467.061750410772, + "rel_diff": 1.2388106667337252e-13, + "abs_diff_nats": 2.659362507984042e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 19: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 21467.061750413566, + "reference_value": 21467.06175041343, + "rel_diff": 6.2703139082273814e-15, + "abs_diff_nats": 1.3460521586239338e-10, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 19: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 21467.061750410845, + "reference_value": 21467.061750410772, + "rel_diff": 3.389358869312518e-15, + "abs_diff_nats": 7.275957614183426e-11, + "within_rtol": true, + "status": "RECORDED" + } + ], + "lanes_failed": 6, + "arm_rows": { + "vmap": { + "arm": "vmap", + "program": "jax.jit(jax.vmap(fn))", + "stands_for": "Nautilus(use_jax_vmap=True) \u2014 Fitness._vmap", + "hlo_source": "jax.jit(jax.vmap(fn)).lower(batched_tree) \u2014 the exact current Fitness._vmap composition (PyAutoFit#1638)", + "batch_wall_ms": 536.9756108000729, + "wall_production_nesting_ms": 536.9756108000729, + "wall_aot_command_buffers_on_ms": 537.0689185001538, + "wall_aot_command_buffers_off_ms": 537.7176756999688, + "command_buffer_delta_ms": 0.6487571998150088, + "production_nesting_vs_aot_on_delta_ms": -0.09330770008091349, + "production_nesting_vs_aot_on_delta_pct": -0.01737350586987781, + "wall_per_lane_ms": 26.848780540003645, + "wall_per_lane_command_buffers_off_ms": 26.88588378499844, + "traced_batch_wall_ms": 547.8770347999671, + "untraced_batch_wall_ms": 537.2692412001925, + "traced_wall_per_lane_ms": 27.393851739998354, + "callback_count_per_call": 0.0, + "callback_count_per_lane": 0.0, + "callback_expectation": "0 \u2014 the rectangular mesh has no qhull host callback (asserted)", + "host_qhull_ms": 0.0, + "host_tables_ms": 0.0, + "host_qhull_ms_per_lane": 0.0, + "host_tables_ms_per_lane": 0.0, + "host_callback_probe": { + "calls": 0, + "qhull_ms_total": 0.0, + "tables_ms_total": 0.0, + "total_ms_total": 0.0, + "qhull_ms_mean": 0.0, + "tables_ms_mean": 0.0, + "total_ms_mean": 0.0, + "non_finite_calls": 0, + "n_points": [] + }, + "host_callback_records_first": [], + "device_idle_ms": 27.720792500000016, + "device_idle_ms_per_lane": 1.3860396250000009, + "trace": { + "parser": "ProfileData.from_file(xplane) + as_text() + stack_frame_index(proto field 17)", + "stage_audit": { + "mesh_construction": [ + { + "instruction": "fusion.4", + "ms": 0.14841789999999996, + "opcode": "fusion", + "shape": "(f64[15361,2]{1,0}, s64[15361,2]{1,0}, s32[15361,2]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:227", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:227 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_select_fusion", + "ms": 0.03921479999999997, + "opcode": "fusion", + "shape": "(u32[2,15361]{1,0}, u32[2,15361]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69 (forward_interp)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:573 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/abstract.py:36 (AbstractInterpolator.mappings)" + ] + }, + { + "instruction": "loop_select_fusion.4", + "ms": 0.035042200000000016, + "opcode": "fusion", + "shape": "(u32[15361]{0}, u32[15361]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_select_fusion.1", + "ms": 0.03501290000000001, + "opcode": "fusion", + "shape": "(u32[15361]{0}, u32[15361]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_add_fusion.3", + "ms": 0.02126339999999998, + "opcode": "fusion", + "shape": "s64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_add_fusion.1", + "ms": 0.02056879999999999, + "opcode": "fusion", + "shape": "s64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "mixed_fusion": [ + { + "instruction": "input_add_multiply_transpose_fusion", + "ms": 4.2661531, + "opcode": "fusion", + "shape": "(f64[20,1369,1369]{2,1,0}, f64[20,1369,1369]{2,1,0}, f64[20,1369,1369]{2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:237 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:274 (_certified_positive_only_from)" + ] + }, + { + "instruction": "input_transpose_fusion.5", + "ms": 1.285784, + "opcode": "fusion", + "shape": "(f64[20,1521,1521]{2,1,0}, f64[20,1521,1521]{2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1157 (AbstractInversion.log_det_regularization_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:348 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "input_transpose_fusion.8", + "ms": 0.8091722000000001, + "opcode": "fusion", + "shape": "f64[20,1369,1369]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:297 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:274 (_certified_positive_only_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:496 (reconstruction_positive_only_from)" + ] + }, + { + "instruction": "input_transpose_fusion.9", + "ms": 0.8073441000000001, + "opcode": "fusion", + "shape": "f64[20,1369,1369]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:237 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:274 (_certified_positive_only_from)" + ] + }, + { + "instruction": "loop_divide_gather_fusion", + "ms": 0.7016034999999999, + "opcode": "fusion", + "shape": "(f64[15361,1521]{1,0}, f64[15361,1,1,1521]{3,2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_transpose_fusion.4", + "ms": 0.36711029999999994, + "opcode": "fusion", + "shape": "f64[20,1369,1369]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:62", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:62 (initialize)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:72 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:177 (solve_nnls_primal)" + ] + } + ], + "border_relocator": [ + { + "instruction": "eigh.0", + "ms": 0.07483289999999994, + "opcode": "custom-call", + "shape": "(f64[2,2]{0,1}, f64[2]{0}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "custom-call.3", + "ms": 0.0080219, + "opcode": "custom-call", + "shape": "(f64[2,2]{1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_reduce_fusion.24", + "ms": 0.0017312, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:256", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:256 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_multiply_fusion.4", + "ms": 0.0015935999999999997, + "opcode": "fusion", + "shape": "f64[2,2]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + } + ], + "other": [ + { + "instruction": "copy.104", + "ms": 0.039051199999999966, + "opcode": "copy", + "shape": "s32[20]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.103", + "ms": 0.03497840000000002, + "opcode": "copy", + "shape": "pred[20]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.105", + "ms": 0.03302890000000003, + "opcode": "copy", + "shape": "pred[20,1369]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.51", + "ms": 0.03013029999999998, + "opcode": "copy", + "shape": "u32[2,15361]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.50", + "ms": 0.030120599999999987, + "opcode": "copy", + "shape": "u32[2,15361]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.69", + "ms": 0.02866470000000006, + "opcode": "copy", + "shape": "u32[15361]{0}", + "source": "", + "stack": [] + } + ], + "pdip_solve": [ + { + "instruction": "cholesky.60", + "ms": 129.67088679999412, + "opcode": "custom-call", + "shape": "(f64[20,1369,1369]{1,2,0}, s32[20]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:106", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:106 (factorize_kkt)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:212 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "cholesky.40", + "ms": 93.93212419999703, + "opcode": "custom-call", + "shape": "(f64[20,1369,1369]{1,2,0}, s32[20]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "triangular-solve", + "ms": 36.542169800001005, + "opcode": "custom-call", + "shape": "(f64[20,1369,1]{1,2,0}, s8[320]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:213 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve.2", + "ms": 33.79238610000185, + "opcode": "custom-call", + "shape": "(f64[20,1369,1]{1,2,0}, s8[320]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:217 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve.3", + "ms": 32.910526499999634, + "opcode": "custom-call", + "shape": "(f64[20,1369,1]{1,2,0}, s8[320]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:217 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve.1", + "ms": 32.66261300000059, + "opcode": "custom-call", + "shape": "(f64[20,1369,1]{1,2,0}, s8[320]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:213 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + } + ], + "psf_convolution_mapping_matrix": [ + { + "instruction": "fft.14.0", + "ms": 1.7906379000000001, + "opcode": "fft", + "shape": "f64[1521,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:303 (AbstractInversion.operated_mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:68 (InversionImagingMapping.data_vector)" + ] + }, + { + "instruction": "input_scatter_fusion", + "ms": 1.4305371999999998, + "opcode": "fusion", + "shape": "f64[1521,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:303 (AbstractInversion.operated_mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:68 (InversionImagingMapping.data_vector)" + ] + }, + { + "instruction": "fft.10.0", + "ms": 1.3884552, + "opcode": "fft", + "shape": "c128[1521,180,91]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:303 (AbstractInversion.operated_mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:68 (InversionImagingMapping.data_vector)" + ] + }, + { + "instruction": "fft.12.0", + "ms": 0.9930919, + "opcode": "fft", + "shape": "c128[1521,91,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:303 (AbstractInversion.operated_mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:68 (InversionImagingMapping.data_vector)" + ] + }, + { + "instruction": "input_transpose_fusion.7", + "ms": 0.5224923, + "opcode": "fusion", + "shape": "c128[1521,91,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:303 (AbstractInversion.operated_mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:68 (InversionImagingMapping.data_vector)" + ] + }, + { + "instruction": "wrapped_transpose.2", + "ms": 0.5059169000000001, + "opcode": "fusion", + "shape": "c128[1521,180,91]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:303 (AbstractInversion.operated_mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:68 (InversionImagingMapping.data_vector)" + ] + } + ], + "curvature_matrix_F": [ + { + "instruction": "custom-call.4", + "ms": 4.3522941, + "opcode": "custom-call", + "shape": "(f64[1521,1521]{1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "mapping_matrix": [ + { + "instruction": "input_reduce_fusion.29", + "ms": 0.0029120000000000005, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:362 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + } + ], + "regularization_H": [ + { + "instruction": "wrapped_broadcast", + "ms": 0.5893573999999999, + "opcode": "fusion", + "shape": "f64[20,1521,1521]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:124", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:124 (weighted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:366 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_scatter_fusion.7", + "ms": 0.0026334, + "opcode": "fusion", + "shape": "f64[1521,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:123 (weighted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:366 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "inversion_other": [ + { + "instruction": "cholesky.120", + "ms": 7.492580500000013, + "opcode": "custom-call", + "shape": "(f64[20,1521,1521]{1,2,0}, s32[20]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1078 (AbstractInversion.log_det_curvature_reg_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:347 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "cholesky.130", + "ms": 7.447210100000001, + "opcode": "custom-call", + "shape": "(f64[20,1521,1521]{1,2,0}, s32[20]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1157 (AbstractInversion.log_det_regularization_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:348 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "loop_reduce_window_fusion.3", + "ms": 0.006307099999999999, + "opcode": "fusion", + "shape": "s64[6,16]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "loop_reduce_window_fusion.2", + "ms": 0.0029726999999999996, + "opcode": "fusion", + "shape": "s64[86,16]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "input_scatter_fusion.10", + "ms": 0.0023103999999999998, + "opcode": "fusion", + "shape": "s64[1369]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527 (AbstractInversion.zeroed_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:567 (AbstractInversion.solve_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:684 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_slice_fusion", + "ms": 0.0017886, + "opcode": "fusion", + "shape": "s64[6,1]{1,0}", + "source": "", + "stack": [] + } + ], + "fit_imaging_other": [ + { + "instruction": "custom-call.5", + "ms": 0.2040204, + "opcode": "custom-call", + "shape": "(f64[20,15361]{1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:305", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:305 (AbstractNDArray.__add__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:57 (unwrap_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:35 (to_new_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:58 (AbstractFit.residual_map)" + ] + } + ], + "chi_squared_evidence": [ + { + "instruction": "loop_divide_fusion", + "ms": 0.0097274, + "opcode": "fusion", + "shape": "f64[20,15361]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:352", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:352 (AbstractNDArray.__truediv__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:57 (unwrap_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:35 (to_new_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:78 (chi_squared_map_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:78 (AbstractFit.chi_squared_map)" + ] + } + ] + }, + "stage_audit_note": "The HLO instructions that contributed most of each stage's milliseconds, with their full source stack. A stage row is only as good as the rules that built it; this is how a reader checks a row against the HLO instead of trusting it.", + "untraced_wall_ms": 537.2692412001925, + "reconciliation_vs_untraced_pct": 1.955423090353897, + "wall_basis": "wall_ms is the TRACED run's wall, the run these kernel durations came from. untraced_wall_ms is the same executable without the profiler; the difference is the profiler's overhead and belongs in neither the stages nor the idle row.", + "calls": 10, + "call_split": "per-call (first-instruction recurrence)", + "call_blocks": 10, + "events": 233610, + "streams": [ + "Stream #14(MemcpyH2D,Compute,MemcpyD2H,MemcpyD2D)" + ], + "per_stage_ms": { + "border_relocator": { + "median_ms": 0.08619000000000002, + "min_ms": 0.085851, + "max_ms": 0.08640100000000002 + }, + "chi_squared_evidence": { + "median_ms": 0.0096955, + "min_ms": 0.009631, + "max_ms": 0.009855 + }, + "curvature_matrix_F": { + "median_ms": 4.322925, + "min_ms": 4.301579, + "max_ms": 4.447076 + }, + "fit_imaging_other": { + "median_ms": 0.20388, + "min_ms": 0.203395, + "max_ms": 0.205111 + }, + "inversion_other": { + "median_ms": 14.957703500000003, + "min_ms": 14.940656000000002, + "max_ms": 14.979204999999999 + }, + "mapping_matrix": { + "median_ms": 0.002912, + "min_ms": 0.00288, + "max_ms": 0.002944 + }, + "mesh_construction": { + "median_ms": 0.34437950000000006, + "min_ms": 0.34164999999999995, + "max_ms": 0.345284 + }, + "mixed_fusion": { + "median_ms": 9.214315500000001, + "min_ms": 9.20404, + "max_ms": 9.230971 + }, + "other": { + "median_ms": 0.2878349999999999, + "min_ms": 0.2872219999999998, + "max_ms": 0.28856599999999977 + }, + "pdip_solve": { + "median_ms": 483.4035414999902, + "min_ms": 483.2693529999895, + "max_ms": 483.4619499999894 + }, + "psf_convolution_mapping_matrix": { + "median_ms": 6.628583000000001, + "min_ms": 6.624937999999999, + "max_ms": 6.644074 + }, + "regularization_H": { + "median_ms": 0.5923750000000001, + "min_ms": 0.589926, + "max_ms": 0.594023 + } + }, + "stage_order": [ + "border_relocator", + "mesh_construction", + "mapping_matrix", + "psf_convolution_mapping_matrix", + "curvature_matrix_F", + "regularization_H", + "pdip_solve", + "chi_squared_evidence", + "inversion_other", + "fit_imaging_other", + "mixed_fusion", + "other" + ], + "mixed_fusion": { + "ms": 9.214315500000001, + "constituent_stage_sets": { + "curvature_reg_reduce_gather + inversion_other + pdip_solve + reconstruction_scatter": 4.2661531, + "border_relocator + pdip_solve": 1.9872808999999998, + "curvature_reg_reduce_gather + inversion_other + regularization_H": 1.285784, + "curvature_matrix_F + psf_convolution_mapping_matrix": 0.7016034999999999, + "inversion_other + pdip_solve": 0.2356705, + "pdip_solve + psf_convolution_mapping_matrix": 0.2199708, + "mapping_matrix + pdip_solve": 0.14323370000000002, + "data_vector_D + pdip_solve + psf_convolution_mapping_matrix": 0.1220378, + "mesh_construction + pdip_solve": 0.03875050000000001, + "inversion_other + mapping_matrix + pdip_solve + regularization_H": 0.037522099999999996, + "border_relocator + mesh_construction + pdip_solve": 0.026984899999999996, + "border_relocator + inversion_other + mapping_matrix + mesh_construction + pdip_solve": 0.022524000000000006, + "inversion_other + mapping_matrix + mesh_construction": 0.0158686, + "pdip_solve + regularization_H": 0.015017500000000001, + "pdip_solve + ray_trace_data_grid": 0.013273499999999994, + "border_relocator + ray_trace_data_grid": 0.012562500000000004, + "border_relocator + pdip_solve + ray_trace_data_grid": 0.0087005, + "inversion_other + mapped_reconstruction + reconstruction_scatter": 0.0086622, + "border_relocator + inversion_other + pdip_solve": 0.0083037, + "chi_squared_evidence + pdip_solve": 0.0082302, + "inversion_other + reconstruction_scatter": 0.0078304, + "curvature_reg_reduce_gather + inversion_other + reconstruction_scatter": 0.007599600000000001, + "inversion_other + mesh_construction + pdip_solve": 0.005519999999999999, + "inversion_other + pdip_solve + ray_trace_data_grid": 0.004799700000000001, + "data_vector_D + pdip_solve": 0.0036988999999999998, + "border_relocator + mesh_construction": 0.0033726999999999997, + "border_relocator + inversion_other + mesh_construction + pdip_solve": 0.0027327000000000002, + "chi_squared_evidence + inversion_other": 0.0019968 + }, + "example_kernels": { + "curvature_reg_reduce_gather + inversion_other + pdip_solve + reconstruction_scatter": [ + "input_add_multiply_transpose_fusion" + ], + "border_relocator + pdip_solve": [ + "loop_select_sine_fusion", + "input_transpose_fusion.9", + "input_transpose_fusion.8", + "input_transpose_fusion.4" + ], + "curvature_reg_reduce_gather + inversion_other + regularization_H": [ + "input_transpose_fusion.5" + ], + "curvature_matrix_F + psf_convolution_mapping_matrix": [ + "loop_divide_gather_fusion" + ], + "inversion_other + pdip_solve": [ + "input_scatter_fusion.11", + "input_transpose_fusion.3", + "input_reduce_fusion.17", + "input_reduce_fusion.26" + ], + "pdip_solve + psf_convolution_mapping_matrix": [ + "loop_broadcast_fusion.1" + ], + "mapping_matrix + pdip_solve": [ + "loop_broadcast_fusion", + "loop_divide_fusion.3", + "loop_divide_fusion.2", + "loop_broadcast_fusion.2" + ], + "data_vector_D + pdip_solve + psf_convolution_mapping_matrix": [ + "input_reduce_fusion.12" + ], + "mesh_construction + pdip_solve": [ + "loop_multiply_fusion.5", + "loop_pad_fusion", + "loop_reduce_fusion.2", + "triton_softmax.2" + ], + "inversion_other + mapping_matrix + pdip_solve + regularization_H": [ + "input_scatter_fusion.3", + "input_scatter_fusion.4", + "input_scatter_fusion.1", + "input_scatter_fusion.2" + ] + }, + "prorated_estimate_ms": { + "pdip_solve": 2.472452225, + "inversion_other": 1.6493682250000004, + "curvature_reg_reduce_gather": 1.4976661416666668, + "reconstruction_scatter": 1.0758740750000002, + "border_relocator": 1.0214590583333334, + "psf_convolution_mapping_matrix": 0.5014664166666667, + "regularization_H": 0.44548394166666666, + "curvature_matrix_F": 0.35080174999999997, + "mapping_matrix": 0.09079170833333335, + "data_vector_D": 0.04252871666666667, + "mesh_construction": 0.042374075000000004, + "ray_trace_data_grid": 0.01741806666666667, + "chi_squared_evidence": 0.0051135, + "mapped_reconstruction": 0.0028874 + }, + "prorated_note": "ESTIMATE ONLY \u2014 a mixed fusion's time split equally across the stages its constituents span. Never summed into the measured table, never reconciled." + }, + "other_sources_ms": { + "copy.104": 0.039051199999999966, + "copy.103": 0.03497840000000002, + "copy.105": 0.03302890000000003, + "copy.51": 0.03013029999999998, + "copy.50": 0.030120599999999987, + "copy.69": 0.02866470000000006, + "copy.59": 0.028639100000000063, + "copy.60": 0.028376600000000012, + "copy.68": 0.028107999999999998, + "copy.118": 0.0018079000000000003, + "copy.101": 0.0017952, + "copy.61": 0.0015711999999999998, + "copy.43": 0.0015486999999999996 + }, + "device_span_ms": 547.793868, + "device_busy_ms": 520.0730755, + "device_idle_ms": 27.720792500000016, + "largest_idle_gaps": [ + { + "gap_ms": 0.161369, + "after": "cholesky.40", + "before": "cholesky.40" + }, + { + "gap_ms": 0.150298, + "after": "cholesky.60", + "before": "cholesky.60" + }, + { + "gap_ms": 0.145562, + "after": "input_transpose_fusion.1", + "before": "triangular-solve.4" + }, + { + "gap_ms": 0.131866, + "after": "cholesky.40", + "before": "cholesky.40" + }, + { + "gap_ms": 0.054014, + "after": "cholesky.60", + "before": "cholesky.60" + }, + { + "gap_ms": 0.05267, + "after": "loop_broadcast_fusion.8", + "before": "loop_broadcast_fusion.10" + }, + { + "gap_ms": 0.043742, + "after": "input_concatenate_fusion.5", + "before": "custom-call.3" + }, + { + "gap_ms": 0.031487, + "after": "loop_multiply_fusion.4", + "before": "eigh.0" + } + ], + "kernel_ms": 520.0543354999902, + "sum_ms": 547.7751279999902, + "wall_ms": 547.8770347999671, + "host_outside_span_ms": 0.08316679996710263, + "reconciliation_pct": -0.018600305087448355, + "unjoined_ms": 0.0, + "unjoined_pct": 0.0, + "other_ms": 0.2878349999999999, + "other_pct": 0.05253642363474681, + "note": "Stage rows attribute the command-buffers-OFF program (see the module docstring): kernel times are the same, the launch overhead the CUDA graphs remove is not. sum_ms = kernel rows + device_idle_ms; the residual against wall_ms is host_outside_span_ms (dispatch before the first kernel, teardown after the last).", + "per_stage_ms_per_lane": { + "border_relocator": 0.004309500000000001, + "chi_squared_evidence": 0.00048477499999999995, + "curvature_matrix_F": 0.21614624999999998, + "fit_imaging_other": 0.010194, + "inversion_other": 0.7478851750000002, + "mapping_matrix": 0.00014560000000000002, + "mesh_construction": 0.017218975000000004, + "mixed_fusion": 0.46071577500000005, + "other": 0.014391749999999995, + "pdip_solve": 24.170177074999508, + "psf_convolution_mapping_matrix": 0.33142915000000006, + "regularization_H": 0.029618750000000006 + }, + "per_lane_divisor": 20, + "host_callback": { + "pure_callback_span_ms": 0, + "qhull_ms": 0.0, + "callback_body_ms_note": "the OUTERMOST matching body event, not a sum: under the probe the body appears twice (the wrapper and the timed re-implementation it calls) and summing them would count the same work twice", + "events_by_name": { + "ThenExecuteCallback:GetEventForComputeStreamSyncPoint": { + "count": 10, + "ms": 0.028249400000000004 + } + }, + "note": "HOST milliseconds per traced BATCH (the whole invocation), aggregated by name because the events nest. Not a row of the device table: the device pays for them as the idle gaps largest_idle_gaps names." + }, + "host_callback_ms": 0 + }, + "hlo_census": { + "status": "excluded", + "reason": "The legacy census anchors PyAutoArray source line numbers that moved after the phase-1 run. No batched attribution is published from unsupported anchors; the device-event table and wall reconciliation remain valid." + }, + "trace_split": { + "expected_calls": 10, + "executions_per_invocation": 1, + "method": "per-call (first-instruction recurrence)", + "note": "DECIDED IN CODE: the scalar arm's trace is split by trace_calls * B, so every lane's execution is its own block and the per-stage median is taken over all of them. The vmap arm's is split by trace_calls, one block per batched execution, and per_stage_ms_per_lane divides those rows by B." + } + }, + "scalar": { + "arm": "scalar", + "program": "jax.jit(fn), called B times", + "stands_for": "Nautilus(use_jax_vmap=False, use_jax_jit=True). Plain use_jax_vmap=False is UNJITTED and is NOT this arm", + "hlo_source": "jax.jit(fn).lower(lane_trees[0]) \u2014 the same program phase 1 traced", + "batch_wall_ms": 713.8621514000988, + "wall_production_nesting_ms": 713.8621514000988, + "wall_aot_command_buffers_on_ms": 714.0730568000436, + "wall_aot_command_buffers_off_ms": 718.911783799922, + "command_buffer_delta_ms": 4.838726999878418, + "production_nesting_vs_aot_on_delta_ms": -0.21090539994474966, + "production_nesting_vs_aot_on_delta_pct": -0.0295355493301868, + "wall_per_lane_ms": 35.69310757000494, + "wall_per_lane_command_buffers_off_ms": 35.9455891899961, + "traced_batch_wall_ms": 738.8914051000029, + "untraced_batch_wall_ms": 719.7671912999795, + "traced_wall_per_lane_ms": 36.944570255000144, + "callback_count_per_call": 0.0, + "callback_count_per_lane": 0.0, + "callback_expectation": "0 \u2014 the rectangular mesh has no qhull host callback (asserted)", + "host_qhull_ms": 0.0, + "host_tables_ms": 0.0, + "host_qhull_ms_per_lane": 0.0, + "host_tables_ms_per_lane": 0.0, + "host_callback_probe": { + "calls": 0, + "qhull_ms_total": 0.0, + "tables_ms_total": 0.0, + "total_ms_total": 0.0, + "qhull_ms_mean": 0.0, + "tables_ms_mean": 0.0, + "total_ms_mean": 0.0, + "non_finite_calls": 0, + "n_points": [] + }, + "host_callback_records_first": [], + "device_idle_ms": 1.840813869999998, + "device_idle_ms_per_lane": 1.840813869999998, + "trace": { + "parser": "ProfileData.from_file(xplane) + as_text() + stack_frame_index(proto field 17)", + "stage_audit": { + "mesh_construction": [ + { + "instruction": "fusion.2", + "ms": 0.14828379999999805, + "opcode": "fusion", + "shape": "(f64[15361,2]{1,0}, s64[15361,2]{1,0}, s32[15361,2]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:227", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:227 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_select_fusion", + "ms": 0.03960868000000019, + "opcode": "fusion", + "shape": "(u32[2,15361]{1,0}, u32[2,15361]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69 (forward_interp)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:573 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/abstract.py:36 (AbstractInterpolator.mappings)" + ] + }, + { + "instruction": "loop_select_fusion.1", + "ms": 0.03491444500000035, + "opcode": "fusion", + "shape": "(u32[15361]{0}, u32[15361]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_select_fusion.6", + "ms": 0.034829990000000345, + "opcode": "fusion", + "shape": "(u32[15361]{0}, u32[15361]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_add_fusion", + "ms": 0.02125330000000007, + "opcode": "fusion", + "shape": "s64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69 (forward_interp)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:573 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/abstract.py:36 (AbstractInterpolator.mappings)" + ] + }, + { + "instruction": "loop_add_fusion.7", + "ms": 0.02111931000000019, + "opcode": "fusion", + "shape": "s64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "mixed_fusion": [ + { + "instruction": "loop_divide_gather_fusion", + "ms": 0.7004981599999999, + "opcode": "fusion", + "shape": "(f64[15361,1,1,1521]{3,2,1,0}, f64[15361,1,1,1521]{3,2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_broadcast_fusion.2", + "ms": 0.23253239499999995, + "opcode": "fusion", + "shape": "f64[1521,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_multiply_transpose_fusion", + "ms": 0.18601937999999998, + "opcode": "fusion", + "shape": "(f64[1369,1369]{1,0}, f64[1369,1369]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:237 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:274 (_certified_positive_only_from)" + ] + }, + { + "instruction": "loop_broadcast_fusion", + "ms": 0.1364765699999997, + "opcode": "fusion", + "shape": "f64[15361,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:342", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:342 (mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:283 (Mapper.mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:91 (AbstractInversionImaging._mapping_matrix_for_convolution_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:137 (AbstractInversionImaging.operated_mapping_matrix_list)" + ] + }, + { + "instruction": "input_reduce_fusion.11", + "ms": 0.11370450000000001, + "opcode": "fusion", + "shape": "f64[92,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123 (data_vector_via_blurred_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:67 (InversionImagingMapping.data_vector)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:699 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_reduce_fusion.14", + "ms": 0.111746675, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163 (mapped_reconstructed_data_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:120 (InversionImagingMapping._mapped_reconstructed_data_dict_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:196 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + } + ], + "border_relocator": [ + { + "instruction": "eigh.0", + "ms": 0.07445276000000034, + "opcode": "custom-call", + "shape": "(f64[2,2]{0,1}, f64[2]{0}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "custom-call.2", + "ms": 0.007926170000000008, + "opcode": "custom-call", + "shape": "(f64[2,2]{1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_reduce_fusion.22", + "ms": 0.0015714699999999965, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:256", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:256 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_multiply_fusion.3", + "ms": 0.0015493849999999982, + "opcode": "fusion", + "shape": "f64[2,2]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + } + ], + "other": [ + { + "instruction": "copy.63", + "ms": 0.03029001500000022, + "opcode": "copy", + "shape": "u32[2,15361]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.64", + "ms": 0.03005880999999903, + "opcode": "copy", + "shape": "u32[2,15361]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.81", + "ms": 0.028580760000001492, + "opcode": "copy", + "shape": "u32[15361]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.82", + "ms": 0.028513515000000964, + "opcode": "copy", + "shape": "u32[15361]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.72", + "ms": 0.0284713650000008, + "opcode": "copy", + "shape": "u32[15361]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.73", + "ms": 0.028432890000000714, + "opcode": "copy", + "shape": "u32[15361]{0}", + "source": "", + "stack": [] + } + ], + "pdip_solve": [ + { + "instruction": "cholesky.40", + "ms": 7.220057850000074, + "opcode": "custom-call", + "shape": "(f64[1369,1369]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "cholesky.60", + "ms": 4.03189196499996, + "opcode": "custom-call", + "shape": "(f64[1369,1369]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:106", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:106 (factorize_kkt)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:212 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve.7", + "ms": 1.2634946650000356, + "opcode": "custom-call", + "shape": "(f64[1369,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "triangular-solve.6", + "ms": 1.0699040400000084, + "opcode": "custom-call", + "shape": "(f64[1369,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "cholesky.100", + "ms": 0.8455943749999996, + "opcode": "custom-call", + "shape": "(f64[1369,1369]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:237 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:274 (_certified_positive_only_from)" + ] + }, + { + "instruction": "cholesky.110", + "ms": 0.8395104999999983, + "opcode": "custom-call", + "shape": "(f64[1369,1369]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:297 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:274 (_certified_positive_only_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:496 (reconstruction_positive_only_from)" + ] + } + ], + "mapping_matrix": [ + { + "instruction": "input_reduce_fusion.28", + "ms": 0.0028100250000000077, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:362 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + } + ], + "regularization_H": [ + { + "instruction": "input_scatter_fusion.8", + "ms": 0.002817199999999998, + "opcode": "fusion", + "shape": "f64[1521,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:123 (weighted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:366 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "psf_convolution_mapping_matrix": [ + { + "instruction": "fft.19.0", + "ms": 1.7857895549999991, + "opcode": "fft", + "shape": "f64[1521,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_scatter_fusion", + "ms": 1.4264048, + "opcode": "fusion", + "shape": "f64[1521,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.15.0", + "ms": 1.3890444199999998, + "opcode": "fft", + "shape": "c128[1521,180,91]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.17.0", + "ms": 0.9926380849999998, + "opcode": "fft", + "shape": "c128[1521,91,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_transpose_fusion.4", + "ms": 0.5222252599999999, + "opcode": "fusion", + "shape": "c128[1521,91,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "wrapped_transpose.2", + "ms": 0.5053266899999999, + "opcode": "fusion", + "shape": "c128[1521,180,91]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + } + ], + "curvature_matrix_F": [ + { + "instruction": "cublas-lt-matmul.2", + "ms": 4.361905769999998, + "opcode": "custom-call", + "shape": "(f64[1521,1521]{1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "inversion_other": [ + { + "instruction": "cholesky.120", + "ms": 0.9207690599999994, + "opcode": "custom-call", + "shape": "(f64[1521,1521]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1078 (AbstractInversion.log_det_curvature_reg_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:347 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "cholesky.130", + "ms": 0.9027444650000005, + "opcode": "custom-call", + "shape": "(f64[1521,1521]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1157 (AbstractInversion.log_det_regularization_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:348 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "loop_reduce_window_fusion.3", + "ms": 0.0058316600000000015, + "opcode": "fusion", + "shape": "s64[6,16]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "loop_reduce_window_fusion.2", + "ms": 0.003037524999999993, + "opcode": "fusion", + "shape": "s64[86,16]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "input_scatter_fusion.9", + "ms": 0.0025595899999999987, + "opcode": "fusion", + "shape": "s64[1369]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527 (AbstractInversion.zeroed_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:567 (AbstractInversion.solve_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:684 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_broadcast_fusion.4", + "ms": 0.0019049150000000066, + "opcode": "fusion", + "shape": "(s64[1369]{0}, s64[1369]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527 (AbstractInversion.zeroed_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:567 (AbstractInversion.solve_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:684 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "chi_squared_evidence": [ + { + "instruction": "loop_multiply_fusion.2", + "ms": 0.002958349999999999, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:300", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:300 (AbstractNDArray.__pow__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:60 (unwrap_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:35 (to_new_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:78 (chi_squared_map_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:78 (AbstractFit.chi_squared_map)" + ] + } + ] + }, + "stage_audit_note": "The HLO instructions that contributed most of each stage's milliseconds, with their full source stack. A stage row is only as good as the rules that built it; this is how a reader checks a row against the HLO instead of trusting it.", + "untraced_wall_ms": 35.98835956499897, + "reconciliation_vs_untraced_pct": -19.43012901816099, + "wall_basis": "wall_ms is the TRACED run's wall, the run these kernel durations came from. untraced_wall_ms is the same executable without the profiler; the difference is the profiler's overhead and belongs in neither the stages nor the idle row.", + "calls": 200, + "call_split": "per-call (first-instruction recurrence)", + "call_blocks": 200, + "events": 138420, + "streams": [ + "Stream #14(MemcpyD2D,MemcpyD2H,Compute,MemcpyH2D,Memset)" + ], + "per_stage_ms": { + "border_relocator": { + "median_ms": 0.08551750000000001, + "min_ms": 0.084737, + "max_ms": 0.08626800000000001 + }, + "chi_squared_evidence": { + "median_ms": 0.002944, + "min_ms": 0.002816, + "max_ms": 0.003264 + }, + "curvature_matrix_F": { + "median_ms": 4.3403075, + "min_ms": 4.319474, + "max_ms": 4.523751 + }, + "inversion_other": { + "median_ms": 1.8402779999999999, + "min_ms": 1.823952, + "max_ms": 1.863639 + }, + "mapping_matrix": { + "median_ms": 0.002816, + "min_ms": 0.002783, + "max_ms": 0.002848 + }, + "memset": { + "median_ms": 0.030430999999999996, + "min_ms": 0.014048, + "max_ms": 0.09858499999999996 + }, + "mesh_construction": { + "median_ms": 0.34455100000000016, + "min_ms": 0.3418370000000002, + "max_ms": 0.3463830000000001 + }, + "mixed_fusion": { + "median_ms": 1.8543370000000001, + "min_ms": 1.8486000000000007, + "max_ms": 1.864694 + }, + "other": { + "median_ms": 0.1808984999999997, + "min_ms": 0.1802559999999997, + "max_ms": 0.18477099999999969 + }, + "pdip_solve": { + "median_ms": 11.848371499999995, + "min_ms": 4.6653020000000005, + "max_ms": 45.44146699999992 + }, + "psf_convolution_mapping_matrix": { + "median_ms": 6.621725, + "min_ms": 6.601735, + "max_ms": 6.638853 + }, + "regularization_H": { + "median_ms": 0.002784, + "min_ms": 0.002464, + "max_ms": 0.003264 + } + }, + "stage_order": [ + "border_relocator", + "mesh_construction", + "mapping_matrix", + "psf_convolution_mapping_matrix", + "curvature_matrix_F", + "regularization_H", + "pdip_solve", + "chi_squared_evidence", + "inversion_other", + "mixed_fusion", + "other", + "memset" + ], + "mixed_fusion": { + "ms": 1.8543370000000001, + "constituent_stage_sets": { + "curvature_matrix_F + psf_convolution_mapping_matrix": 0.7004981599999999, + "pdip_solve + psf_convolution_mapping_matrix": 0.23253239499999995, + "inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": 0.18601937999999998, + "mapping_matrix + pdip_solve": 0.13881617999999957, + "data_vector_D + pdip_solve": 0.11742438000000009, + "mapped_reconstruction + pdip_solve": 0.111746675, + "border_relocator + pdip_solve": 0.06492349499999994, + "mesh_construction + pdip_solve": 0.039254914999999994, + "inversion_other + regularization_H": 0.030678009999999988, + "inversion_other + pdip_solve": 0.03025882500000005, + "border_relocator + mesh_construction + pdip_solve": 0.026869450000000045, + "curvature_reg_reduce_gather + inversion_other": 0.025548724999999998, + "border_relocator + inversion_other + mapping_matrix + mesh_construction + pdip_solve": 0.020655850000000017, + "pdip_solve + regularization_H": 0.019196960000000006, + "inversion_other + mapping_matrix + pdip_solve + regularization_H": 0.015570065000000011, + "inversion_other + mapping_matrix + mesh_construction": 0.01313264500000001, + "pdip_solve + ray_trace_data_grid": 0.012863060000000022, + "border_relocator + ray_trace_data_grid": 0.012257449999999984, + "inversion_other + mapped_reconstruction + reconstruction_scatter": 0.009563720000000003, + "inversion_other + mapped_reconstruction": 0.009023949999999998, + "border_relocator + pdip_solve + ray_trace_data_grid": 0.008710005000000009, + "chi_squared_evidence + pdip_solve": 0.007699479999999985, + "inversion_other + mesh_construction + pdip_solve": 0.005485344999999984, + "inversion_other + pdip_solve + ray_trace_data_grid": 0.004812805000000009, + "border_relocator + mesh_construction": 0.003417834999999992, + "border_relocator + inversion_other": 0.0033550950000000006, + "border_relocator + inversion_other + mesh_construction + pdip_solve": 0.0024964250000000026, + "chi_squared_evidence + inversion_other": 0.0017951449999999967 + }, + "example_kernels": { + "curvature_matrix_F + psf_convolution_mapping_matrix": [ + "loop_divide_gather_fusion" + ], + "pdip_solve + psf_convolution_mapping_matrix": [ + "loop_broadcast_fusion.2" + ], + "inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": [ + "input_multiply_transpose_fusion" + ], + "mapping_matrix + pdip_solve": [ + "loop_divide_fusion.1", + "loop_broadcast_fusion" + ], + "data_vector_D + pdip_solve": [ + "input_reduce_fusion.11", + "input_reduce_fusion.26" + ], + "mapped_reconstruction + pdip_solve": [ + "input_reduce_fusion.14" + ], + "border_relocator + pdip_solve": [ + "loop_select_sine_fusion", + "input_transpose_fusion.8", + "input_transpose_fusion.9" + ], + "mesh_construction + pdip_solve": [ + "loop_multiply_fusion.4", + "loop_pad_fusion", + "loop_reduce_fusion", + "triton_softmax.1" + ], + "inversion_other + regularization_H": [ + "input_transpose_fusion.6" + ], + "inversion_other + pdip_solve": [ + "input_scatter_fusion.11", + "input_reduce_fusion.17", + "input_reduce_fusion.24", + "input_reduce_fusion.12" + ] + }, + "prorated_estimate_ms": { + "psf_convolution_mapping_matrix": 0.4665152774999999, + "pdip_solve": 0.45780335499999986, + "curvature_matrix_F": 0.35024907999999993, + "inversion_other": 0.1164806841666667, + "mapped_reconstruction": 0.11007806416666667, + "mapping_matrix": 0.08180932458333313, + "data_vector_D": 0.058712190000000046, + "border_relocator": 0.058592032083333315, + "reconstruction_scatter": 0.04969275166666667, + "mesh_construction": 0.041254131250000006, + "regularization_H": 0.02883000125, + "ray_trace_data_grid": 0.017067858333333342, + "curvature_reg_reduce_gather": 0.012774362499999999, + "chi_squared_evidence": 0.004747312499999991 + }, + "prorated_note": "ESTIMATE ONLY \u2014 a mixed fusion's time split equally across the stages its constituents span. Never summed into the measured table, never reconciled." + }, + "other_sources_ms": { + "copy.63": 0.03029001500000022, + "copy.64": 0.03005880999999903, + "copy.81": 0.028580760000001492, + "copy.82": 0.028513515000000964, + "copy.72": 0.0284713650000008, + "copy.73": 0.028432890000000714, + "copy.122": 0.0016841450000000017, + "copy.121": 0.0016489249999999977, + "copy.74": 0.0015515100000000003, + "copy.56": 0.0015439550000000018, + "copy.120": 0.0005070349999999999, + "copy.43": 0.00046094500000000004 + }, + "device_span_ms": 36.9407833, + "device_busy_ms": 35.09996943, + "device_idle_ms": 1.840813869999998, + "largest_idle_gaps": [ + { + "gap_ms": 0.043677, + "after": "input_concatenate_fusion.4", + "before": "custom-call.2" + }, + { + "gap_ms": 0.034174, + "after": "loop_multiply_fusion.3", + "before": "eigh.0" + }, + { + "gap_ms": 0.02835, + "after": "eigh.0", + "before": "eigh.0" + }, + { + "gap_ms": 0.027615, + "after": "loop_add_fusion.7", + "before": "loop_select_fusion.6" + }, + { + "gap_ms": 0.021407, + "after": "loop_broadcast_fusion.6", + "before": "loop_broadcast_fusion.8" + }, + { + "gap_ms": 0.020511, + "after": "copy.82", + "before": "loop_add_fusion.1" + }, + { + "gap_ms": 0.018303, + "after": "eigh.0", + "before": "eigh.0" + }, + { + "gap_ms": 0.017407, + "after": "cond.3.clone", + "before": "input_scatter_fusion.1" + } + ], + "kernel_ms": 27.154960999999993, + "sum_ms": 28.99577486999999, + "wall_ms": 36.944570255000144, + "host_outside_span_ms": 0.0037869550001445873, + "reconciliation_pct": -21.515463111725733, + "unjoined_ms": 0.0, + "unjoined_pct": 0.0, + "other_ms": 0.1808984999999997, + "other_pct": 0.4896484077400158, + "note": "Stage rows attribute the command-buffers-OFF program (see the module docstring): kernel times are the same, the launch overhead the CUDA graphs remove is not. sum_ms = kernel rows + device_idle_ms; the residual against wall_ms is host_outside_span_ms (dispatch before the first kernel, teardown after the last).", + "per_stage_ms_per_lane": { + "border_relocator": 0.08551750000000001, + "chi_squared_evidence": 0.002944, + "curvature_matrix_F": 4.3403075, + "inversion_other": 1.8402779999999999, + "mapping_matrix": 0.002816, + "memset": 0.030430999999999996, + "mesh_construction": 0.34455100000000016, + "mixed_fusion": 1.8543370000000001, + "other": 0.1808984999999997, + "pdip_solve": 11.848371499999995, + "psf_convolution_mapping_matrix": 6.621725, + "regularization_H": 0.002784 + }, + "per_lane_divisor": 1, + "host_callback": { + "pure_callback_span_ms": 0, + "qhull_ms": 0.0, + "callback_body_ms_note": "the OUTERMOST matching body event, not a sum: under the probe the body appears twice (the wrapper and the timed re-implementation it calls) and summing them would count the same work twice", + "events_by_name": { + "ThenExecuteCallback:GetEventForComputeStreamSyncPoint": { + "count": 200, + "ms": 0.343918 + } + }, + "note": "HOST milliseconds per traced BATCH (the whole invocation), aggregated by name because the events nest. Not a row of the device table: the device pays for them as the idle gaps largest_idle_gaps names." + }, + "host_callback_ms": 0 + }, + "hlo_census": { + "status": "excluded", + "reason": "The legacy census anchors PyAutoArray source line numbers that moved after the phase-1 run. No batched attribution is published from unsupported anchors; the device-event table and wall reconciliation remain valid." + }, + "trace_split": { + "expected_calls": 200, + "executions_per_invocation": 20, + "method": "per-call (first-instruction recurrence)", + "note": "DECIDED IN CODE: the scalar arm's trace is split by trace_calls * B, so every lane's execution is its own block and the per-stage median is taken over all of them. The vmap arm's is split by trace_calls, one block per batched execution, and per_stage_ms_per_lane divides those rows by B." + } + } + }, + "certification_report": { + "source": "vmap arm, library solve observed through its stats= out-dict (PyAutoArray #566) and jax.debug.callback(..., ordered=True); ordered because the unordered batching rule returns the lanes permuted. Untimed, separately compiled; max rel diff of its log likelihoods vs the timed arm's: 2.323e-08", + "rows": 20, + "pdip_iter": "NOT AVAILABLE per lane without changing library numerics. The fallback branch calls the library's own reconstruction_positive_only_from, which returns the solution alone \u2014 jax_nnls.solve_nnls' iteration count is discarded inside the library's custom_vjp primal. The PDIP while_loop's cost is in the pdip_solve stage row of each arm's device table instead, which is a max-over-lanes quantity under vmap because every lane runs the same fixed kernel sequence.", + "passes_semantics": "library `passes`: restricted active-set passes run (jax_active_set.solve_certified)" + }, + "lane_construction": { + "draws_sha256": "8cddafd199e104718f58a97cf7a1ab5896f14415cfb2b1c64230c78557388dba", + "lane_rows": [ + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179 + ], + "calls": [ + 8 + ], + "stage": "pix2", + "regularization_range": { + "galaxies.source.pixelization.regularization.inner_coefficient": { + "min": 1.0935169824695694e-06, + "max": 138.59890275651458 + }, + "galaxies.source.pixelization.regularization.outer_coefficient": { + "min": 3.114197989844157e-06, + "max": 74.49747633293859 + }, + "galaxies.source.pixelization.regularization.signal_scale": { + "min": 0.035325131608288984, + "max": 0.993503904012744 + } + }, + "phases": [ + "exploration" + ], + "window_rule": "nautilus_batches.timed_window: consecutive captured calls, in call order, from the FIRST call that is not a prior batch, concatenated and truncated to B; at B == n_batch exactly one real Nautilus batch. Falls back to the latest B lanes if the post-prior lanes run out; never repeats a lane.", + "note": "Lane k is captured lane lane_rows[k]: the mass AND shear of a real Nautilus proposal (nautilus_batch_capture.py), lens light fixed at S3, the S3 light-subtracted dataset shared by every lane. `offsets` in the lane table are the mass offsets from the fiducial; the shear is in the capture file." + }, + "captured": { + "batches_path": "/mnt/ral/jnightin/autolens_profiling_wt/certified-solver-phase-c1-lane-rate/results/breakdown/imaging/nautilus_batches_rectangular_pix2.npz", + "batches_sha256": "77f052c40d028d2e54ab6efb1c3f1d7bdf1922da01e74916f7b206db0259df03", + "schema_version": 2, + "n_calls": 142, + "n_lanes": 2840, + "call_sizes_seen": [ + 20 + ], + "calls_by_phase": { + "prior": 8, + "exploration": 134 + }, + "parameter_paths": [ + "galaxies.source.pixelization.regularization.inner_coefficient", + "galaxies.source.pixelization.regularization.outer_coefficient", + "galaxies.source.pixelization.regularization.signal_scale" + ], + "stage": "pix2", + "regularization": { + "class": "Adapt", + "free": true, + "priors": { + "inner_coefficient": [ + "LogUniform", + 1e-06, + 1000000.0 + ], + "outer_coefficient": [ + "LogUniform", + 1e-06, + 1000000.0 + ], + "signal_scale": [ + "Uniform", + 0.0, + 1.0 + ] + }, + "priors_source": "PyAutoGalaxy packaged config/priors/regularization (adapt_split.yaml / adapt.yaml / constant.yaml); adapt_split.yaml and adapt.yaml are identical to euclid_strong_lens_modeling_pipeline/config/priors/regularization/'s copies" + }, + "nautilus": { + "departures_from_production": [ + "mass/shear fixed at the S3 fiducial, not at a source_pix_1 result", + "no positions likelihood", + "the cell's mesh (39x39 RectangularBilinearAdaptImage, weight_power 1, weight_floor 0) fixed in both stages; source_pix_1 uses RectangularBilinearAdaptDensity, source_pix_2 frees weight_power / weight_floor", + "seeded (production passes no seed)", + "quick updates disabled (iterations_per_quick_update=1e12; render-only)", + "NullPaths: no output directory, so no checkpoint and one Sampler.run call", + "post-fit perform_update skipped (samples / latent variables never built)" + ], + "n_batch": 20, + "n_like_max": 40000, + "n_live": 75, + "number_of_cores": 1, + "production_reference": "euclid_strong_lens_modeling_pipeline/scripts/full_model.py source_pix_1 (n_live=150) / source_pix_2 (n_live=75): af.Nautilus(n_batch=20, **SettingsSearch.search_dict) with use_jax_vmap=True and number_of_cores=1 (SettingsSearch defaults)", + "production_stage": "source_pix_2", + "seed": 1, + "stage": "pix2", + "use_jax_vmap": true, + "version": "1.0.5" + }, + "capture_fit_status": "sampling complete (n_like_max or convergence); post-fit result skipped", + "capture_library_revisions": { + "PyAutoArray": { + "head": "3de624b5b91a4efa130dc3cb0a3a0f06f85025a3", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoArray" + }, + "PyAutoFit": { + "head": "dd9fbe0aab60c4a57702b1444ca031b317c91331", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoFit" + }, + "PyAutoGalaxy": { + "head": "70a61e26cd715cefe7012a38285698091246a8a4", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy" + }, + "PyAutoLens": { + "head": "86054bbc19baa2f710a12e04a94fa27ab37cc354", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoLens" + }, + "PyAutoNerves": { + "head": "1fa613aa8d89a79613009fb66f5b4e2d21deb57a", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoNerves" + } + }, + "fingerprint_check": { + "fields": [ + "mesh", + "source_pixels", + "dataset_sha256", + "regularization_class", + "regularization_s0_fiducial", + "border_relocator", + "use_mixed_precision", + "log_evidence_s3_library" + ], + "not_identity": "the regularization coefficients: free per lane since the capture frees them", + "log_evidence_s3_library_rel_diff": 0.0, + "passed": true + }, + "timed_window_vs_capture_pdip": { + "reference": "the capture's own figure of merit (library PDIP, Fitness.call_wrap jax.jit(jax.vmap(call)) over parameter vectors) for the same lanes", + "compared_against": "this cell's jit(vmap) library-PDIP reference", + "n_compared": 20, + "max_rel_diff": 6.472384592052444e-08, + "max_abs_diff_nats": 0.009975049644708633, + "gated": false, + "note": "RECORDED, NOT GATED: proves the lane trees rebuilt here are the models the sampler evaluated (a wrong parameter mapping shows up as nats, not 1e-10)." + } + }, + "matched": { + "vmap_wall_per_lane_ms": 26.848780540003645, + "scalar_wall_per_lane_ms": 35.69310757000494, + "speedup_vmap_over_scalar": 1.3294126158476207, + "note": "Both walls are the PRODUCTION nesting of their arm, measured in one process on the same B lanes with the SAME library Settings (no injection). A speedup below 1 means the batch is slower per lane than B sequential jitted calls." + }, + "solver_source": "library", + "solver": "certified", + "certified_fallback": "pdip", + "certified_pass_budget": 16, + "certified_pass_budget_basis": "config default (Settings().certified_pass_budget)", + "certified_tau_rel": 1e-09, + "solver_used": "certified", + "solver_check": { + "solver_used": "certified", + "solver_used_source": "AbstractInversion.positive_only_solver_used on the fiducial S3 inversion, built eagerly on the JAX backend (AnalysisImaging(use_jax=True).fit_from) with the arms' Settings", + "reference_solver_used": "pdip", + "traced_solver_kwargs_jax": [ + "certified" + ], + "observed_calls_jax": 1, + "report_rows": 20, + "report_vs_timed_arm_max_rel_diff": 2.3231681801105435e-08 + }, + "lanes_certified": [ + true, + true, + true, + false, + false, + false, + true, + true, + true, + true, + false, + false, + false, + true, + true, + true, + true, + true, + true, + true + ], + "lanes_passes": [ + 10, + 5, + 2, + 16, + 16, + 16, + 8, + 5, + 8, + 8, + 16, + 16, + 16, + 2, + 3, + 4, + 2, + 4, + 2, + 13 + ], + "uncertified_lanes": 6, + "per_lane_certification_note": "certified / passes come from the library's own solve through its stats= out-dict (PyAutoArray #566): passes is the number of restricted active-set passes the library ran (0 when the unconstrained solve was already non-negative), certified is its KKT certificate. With certified_fallback=pdip a False lane returned the PDIP solution; with none it returned the last uncertified iterate. null for a library-PDIP row (no certificate).", + "gate": { + "pre_registered": true, + "gated": [ + "per lane: jit(vmap) arm vs jit(vmap) library PDIP <= lane_rtol relative", + "per lane: scalar jit arm vs scalar jit library PDIP <= lane_rtol relative" + ], + "recorded_not_gated": [ + "per lane: jit(vmap) arm vs scalar jit arm (rel_diff, abs_diff_nats)", + "per lane: jit(vmap) library PDIP vs scalar jit library PDIP", + "uncertified_lanes (certified_fallback=none rows)" + ], + "lanes_failed": 6, + "passed": false, + "policy_eligible": false, + "note": "Pre-registered before submission (module docstring; submit header). Phase 3 (results/notes/hst_gpu_residue_phase3_psf_2026_09.md) placed phase 2's ~2.5e-9 certified-vs-PDIP residual BETWEEN the jit(vmap) and scalar-jit compositions, not in the solver \u2014 so each arm is gated against the library-PDIP reference of its OWN composition, and the cross-composition difference is recorded with its nats. A certified_fallback=none row is policy-eligible only if every lane certifies AND passes the gate. Timing is never gated." + }, + "library_revisions": { + "PyAutoArray": { + "head": "3de624b5b91a4efa130dc3cb0a3a0f06f85025a3", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoArray", + "module_file": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/__init__.py" + }, + "PyAutoFit": { + "head": "dd9fbe0aab60c4a57702b1444ca031b317c91331", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoFit", + "module_file": "/mnt/ral/jnightin/PyAuto/PyAutoFit/autofit/__init__.py" + }, + "PyAutoGalaxy": { + "head": "70a61e26cd715cefe7012a38285698091246a8a4", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy", + "module_file": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/__init__.py" + }, + "PyAutoLens": { + "head": "86054bbc19baa2f710a12e04a94fa27ab37cc354", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoLens", + "module_file": "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/__init__.py" + }, + "autoarray_file": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/__init__.py" + } + }, + "headline_arm_note": "`trace`, `hlo_census`, `command_buffers` and `trace_timing` above describe the scalar arm \u2014 the program phase 1 traced. Both arms' full blocks, the lane table and the matched comparison are under `vmap`." +} \ No newline at end of file diff --git a/results/breakdown/imaging/fixed_light_trace_rectangular_jitvmap20_captured_pix2_libcertified_fbon_b16_hpc_a100_fp64_fixed_light_trace.png b/results/breakdown/imaging/fixed_light_trace_rectangular_jitvmap20_captured_pix2_libcertified_fbon_b16_hpc_a100_fp64_fixed_light_trace.png new file mode 100644 index 000000000..4077378d6 Binary files /dev/null and b/results/breakdown/imaging/fixed_light_trace_rectangular_jitvmap20_captured_pix2_libcertified_fbon_b16_hpc_a100_fp64_fixed_light_trace.png differ diff --git a/results/breakdown/imaging/fixed_light_trace_rectangular_jitvmap20_captured_pix2_libpdip_fbon_b16_hpc_a100_fp64_fixed_light_trace.json b/results/breakdown/imaging/fixed_light_trace_rectangular_jitvmap20_captured_pix2_libpdip_fbon_b16_hpc_a100_fp64_fixed_light_trace.json new file mode 100644 index 000000000..2eac71bed --- /dev/null +++ b/results/breakdown/imaging/fixed_light_trace_rectangular_jitvmap20_captured_pix2_libpdip_fbon_b16_hpc_a100_fp64_fixed_light_trace.json @@ -0,0 +1,5787 @@ +{ + "device": { + "backend": "gpu", + "device": "cuda:0", + "hostname": "euclid-ral-gpu-1", + "xla_flags": "--xla_disable_hlo_passes=constant_folding --xla_gpu_autotune_level=0 --xla_gpu_enable_triton_gemm=false", + "omp_num_threads": null, + "cpu_count": 124, + "jax_compilation_cache_dir": "/mnt/ral/jnightin/autolens_profiling_wt/certified-solver-phase-c1-lane-rate/output/jax_cache/fixed_light_lanerate_rectangular_pix2_time_20_pdip_on_350768_35", + "autotune_cache_entries_at_start": 0, + "cache_fresh": true, + "nvidia_smi": "NVIDIA A100 80GB PCIe, 4733 MiB, 81920 MiB" + }, + "machine": { + "cpu_model": "AMD EPYC 7702 64-Core Processor", + "cpu_count_os": 124, + "nproc": 4, + "nproc_all": 124, + "nproc_note": "GNU nproc honours OMP_NUM_THREADS, so `nproc` can print 1 on a multi-core host; `nproc_all` is the core count.", + "ram_total": "928298200 kB", + "kernel": "5.14.0-687.50.1.el9_8.x86_64", + "platform": "Linux-5.14.0-687.50.1.el9_8.x86_64-x86_64-with-glibc2.34", + "python": "3.12.4", + "jax_thread_env": { + "NPROC": null + }, + "blas_thread_env": { + "OMP_NUM_THREADS": null, + "OPENBLAS_NUM_THREADS": null, + "MKL_NUM_THREADS": null, + "VECLIB_MAXIMUM_THREADS": null, + "NUMEXPR_NUM_THREADS": null + }, + "thread_env_note": "NPROC sizes XLA's CPU intra-op pool (the JAX rows); the BLAS knobs pin OpenBLAS/MKL/OpenMP (the numpy/scipy rows) and do not touch JAX. Two disjoint families; both are recorded on every CPU timing.", + "gpu": "NVIDIA A100 80GB PCIe, 81920 MiB, 610.57.04" + }, + "precision": "fp64", + "configuration": { + "pixel_scale_arcsec": 0.05, + "mask_radius_arcsec": 3.5, + "image_pixels_masked": 15361, + "over_sampled_pixels": 62752, + "mesh": "rectangular", + "mesh_shape": [ + 39, + 39 + ], + "source_pixels": 1521, + "source_pixels_requested": null, + "dataset": "hst", + "dataset_sha256": { + "data.fits": "e4e833a28e9c6f6fb023cd85c0d3dde74068720256bc77a240633500e5b04fac", + "noise_map.fits": "315c6266a0acd3ac9c8da82fcd2b45a08697362481fd7a35072bab1658530ba3", + "psf.fits": "8389ba0e8bf4a09b4a561cfc246181a2fb944ed396754cd0ff76fdd22910d303" + }, + "cell_source_sha256": "06a162fcdae6b329384ec33322f443df07215d86e56f0505ac15b3d3473eb432", + "inversion_path": "dense", + "pass_budget": 11, + "pass_budget_basis": "phase 3 (autolens_profiling#255): the smallest ZERO-fallback budget per mesh, the budget a production run fixes. NOT phase 0's certifying budget (2 for Delaunay), which falls back on 67.5 % of a graded draw set and is not a production cost.", + "border_relocator_mode": "cell", + "border_relocator": true, + "border_relocator_note": "'cell' is use_border_relocator=True, which every profiling cell in this family forces; 'library' passes None and takes the shipped config default, which is what production runs. The resolved boolean is what this leg actually ran.", + "routes_selected": [ + "b", + "d" + ], + "trace_calls": 10, + "command_buffers_traced": "off", + "use_mixed_precision": false, + "tau_rel": 1e-09, + "regularization": { + "scheme": "constant", + "coefficient": 1.0 + }, + "thread_env": { + "n_threads": null, + "vars": [ + "OPENBLAS_NUM_THREADS", + "MKL_NUM_THREADS", + "OMP_NUM_THREADS", + "VECLIB_MAXIMUM_THREADS", + "NUMEXPR_NUM_THREADS" + ], + "set_to": null, + "preexisting": {}, + "overridden": {}, + "note": "Not pinned (legacy variant): recorded as found." + }, + "over_sample_size_lp_rule": { + "sub_size_list": [ + 4, + 2, + 2 + ], + "radial_list": [ + 0.3, + 0.6 + ], + "centre": [ + 0.0, + 0.0 + ] + }, + "vmap_batch": 20, + "lanes": "captured", + "arms": [ + "vmap", + "scalar" + ], + "fallback": "on", + "draw_seed": 0, + "vmap_composition": "jax.jit(jax.vmap(fn))", + "lane_rtol": 1e-09, + "vmap_flags_note": "Strict ProfileCLI.parse_cell_args rejects unknown flags. These keys record the exact batching program and prevent historical vmap(jit) artifacts from being mistaken for current jit(vmap) measurements.", + "solver_source": "library", + "solver": "pdip", + "certified_fallback": "pdip", + "certified_pass_budget": 16, + "captured_pass": "time", + "batches": "/mnt/ral/jnightin/autolens_profiling_wt/certified-solver-phase-c1-lane-rate/results/breakdown/imaging/nautilus_batches_rectangular_pix2.npz" + }, + "solver_injection": { + "patched": null, + "part_v": "none \u2014 library mode selects the solver through al.Settings", + "part_b_route_d": { + "patched": "autoarray.inversion.inversion.inversion_util.reconstruction_positive_only_from", + "pass_budget": 11, + "fallback": true + }, + "note": "Library mode (phase B, #300): PART V's arms and references run the library's own positive-only solve, selected by Settings(positive_only_solver, certified_fallback, certified_pass_budget); nothing is injected. PART B's single-call route d (the fiducial d == b pin) still uses the phase-1 harness injection at the phase-3 budget and is not a phase-B row. The untimed certification report observes the library solve (library_solver_observed) without changing it." + }, + "routes": { + "b_s3_pdip": { + "label": "S3 PDIP (source-only)", + "status": "ok", + "solver": "library", + "ms": 38.847992199953296, + "log_likelihood": 28622.39485118912 + }, + "d_s3_certified_fallback": { + "label": "S3 certified active set, budget 11, PDIP fallback", + "status": "ok", + "solver": "harness-injected certified active set", + "pass_budget": 11, + "fallback": true, + "injected_solver_calls_jax": 1, + "injected_solver_calls_numpy": 0, + "ms": 30.21587149996776, + "log_likelihood": 28622.394851189252 + } + }, + "equivalence_pins": [ + { + "pin": "route d (certified, fallback) == route b (library PDIP)", + "route": "d_s3_certified_fallback", + "reference": "b_s3_pdip", + "expectation": "the certified active set returns the library's own positive solution", + "rtol": 1e-09, + "got": 28622.394851189252, + "reference_value": 28622.39485118912, + "rel_diff": 4.575691088611358e-15, + "status": "PASS" + } + ], + "equivalence_rtol": 1e-09, + "reference": { + "log_evidence_s0_library": 28622.394851199875, + "log_evidence_s3_library": 28622.39485119987, + "s3": { + "n_params": 1521, + "n_mapper": 1521, + "n_funcs": 0, + "edge_zeroed_pixels": 152, + "subtracted_light_flux": 5253.476646922047 + } + }, + "command_buffers": { + "wall_on_ms": 795.4915517999325, + "wall_off_ms": 801.7241957997612, + "command_buffer_delta_ms": 6.232643999828724, + "command_buffer_delta_pct": 0.7834959385459627, + "traced": "off", + "compiler_option": "xla_gpu_enable_command_buffer", + "probe": { + "note": "Not taken in --vmap-batch mode: the CUPTI-inside-a-CUDA-graph probe is a phase-1 diagnostic about the JOIN, and this mode already compiles and times both the command-buffers ON and OFF executable of every arm." + }, + "note": "ONE lowering, TWO compilations, one process. wall_on_ms is the PRODUCTION program (CUDA graphs as XLA ships them) and is the number comparable to phase 5's row; wall_off_ms is the graph-less program the stage rows attribute. The delta is the launch overhead the graphs remove \u2014 it lands in device_idle and host_outside_span, not in any stage. Reconciliation is computed against wall_off_ms." + }, + "trace": { + "parser": "ProfileData.from_file(xplane) + as_text() + stack_frame_index(proto field 17)", + "stage_audit": { + "mesh_construction": [ + { + "instruction": "fusion.2", + "ms": 0.14776041999999864, + "opcode": "fusion", + "shape": "(f64[15361,2]{1,0}, s64[15361,2]{1,0}, s32[15361,2]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:227", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:227 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_select_fusion", + "ms": 0.03910720499999924, + "opcode": "fusion", + "shape": "(u32[2,15361]{1,0}, u32[2,15361]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69 (forward_interp)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:573 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/abstract.py:36 (AbstractInterpolator.mappings)" + ] + }, + { + "instruction": "loop_select_fusion.4", + "ms": 0.03448014500000072, + "opcode": "fusion", + "shape": "(u32[15361]{0}, u32[15361]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_select_fusion.1", + "ms": 0.03444267500000079, + "opcode": "fusion", + "shape": "(u32[15361]{0}, u32[15361]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_add_fusion", + "ms": 0.0211928600000002, + "opcode": "fusion", + "shape": "s64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69 (forward_interp)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:573 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/abstract.py:36 (AbstractInterpolator.mappings)" + ] + }, + { + "instruction": "loop_add_fusion.5", + "ms": 0.020496519999999983, + "opcode": "fusion", + "shape": "s64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "mixed_fusion": [ + { + "instruction": "loop_divide_gather_fusion", + "ms": 0.69575344, + "opcode": "fusion", + "shape": "(f64[15361,1,1,1521]{3,2,1,0}, f64[15361,1,1,1521]{3,2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_add_multiply_fusion", + "ms": 0.08956260500000006, + "opcode": "fusion", + "shape": "(f64[1369,1369]{1,0}, f64[1369,1369]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:61", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:61 (initialize)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:72 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:508 (reconstruction_positive_only_from)" + ] + }, + { + "instruction": "input_transpose_fusion.3", + "ms": 0.030728550000000007, + "opcode": "fusion", + "shape": "f64[1521,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1157 (AbstractInversion.log_det_regularization_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:348 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "loop_reduce_fusion.1", + "ms": 0.02684907500000007, + "opcode": "fusion", + "shape": "f64[92,2]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:556", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:556 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/abstract.py:36 (AbstractInterpolator.mappings)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:167 (Mapper.pix_indexes_for_sub_slim_index)" + ] + }, + { + "instruction": "input_transpose_fusion.2", + "ms": 0.025508610000000008, + "opcode": "fusion", + "shape": "f64[1521,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1078 (AbstractInversion.log_det_curvature_reg_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:347 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "input_transpose_fusion.4", + "ms": 0.016028075000000003, + "opcode": "fusion", + "shape": "f64[1369,1369]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:62", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:62 (initialize)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:72 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:508 (reconstruction_positive_only_from)" + ] + } + ], + "ray_trace_data_grid": [ + { + "instruction": "input_reduce_fusion.14", + "ms": 0.002696569999999995, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:506", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:506 (FlatLambdaCDM._simpson_1d)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:644 (FlatLambdaCDM.angular_diameter_distance_kpc_z1z2)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:133 (LensingCosmology.angular_diameter_distance_to_earth_in_kpc_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:362 (LensingCosmology.scaling_factor_between_redshifts_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer_util.py:252 (traced_grid_2d_list_from)" + ] + }, + { + "instruction": "input_reduce_fusion.16", + "ms": 0.002675815, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:506", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:506 (FlatLambdaCDM._simpson_1d)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:644 (FlatLambdaCDM.angular_diameter_distance_kpc_z1z2)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:151 (LensingCosmology.angular_diameter_distance_between_redshifts_in_kpc_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:355 (LensingCosmology.scaling_factor_between_redshifts_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer_util.py:252 (traced_grid_2d_list_from)" + ] + }, + { + "instruction": "input_reduce_fusion.15", + "ms": 0.0025711899999999975, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:503", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:503 (FlatLambdaCDM._simpson_1d)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:644 (FlatLambdaCDM.angular_diameter_distance_kpc_z1z2)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:133 (LensingCosmology.angular_diameter_distance_to_earth_in_kpc_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:362 (LensingCosmology.scaling_factor_between_redshifts_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer_util.py:252 (traced_grid_2d_list_from)" + ] + }, + { + "instruction": "input_reduce_fusion.17", + "ms": 0.0025629949999999993, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:503", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:503 (FlatLambdaCDM._simpson_1d)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:644 (FlatLambdaCDM.angular_diameter_distance_kpc_z1z2)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:151 (LensingCosmology.angular_diameter_distance_between_redshifts_in_kpc_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:355 (LensingCosmology.scaling_factor_between_redshifts_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer_util.py:252 (traced_grid_2d_list_from)" + ] + }, + { + "instruction": "loop_divide_fusion.2", + "ms": 0.0022049500000000007, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:380", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:380 (LensingCosmology.scaling_factor_between_redshifts_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer_util.py:252 (traced_grid_2d_list_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer.py:632 (Tracer.traced_grid_2d_list_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/structures/decorators/abstract.py:93 (AbstractMaker.evaluate_func)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/structures/decorators/abstract.py:110 (AbstractMaker.result)" + ] + } + ], + "border_relocator": [ + { + "instruction": "eigh.0", + "ms": 0.07413607500000029, + "opcode": "custom-call", + "shape": "(f64[2,2]{0,1}, f64[2]{0}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "custom-call.2", + "ms": 0.007901840000000005, + "opcode": "custom-call", + "shape": "(f64[2,2]{1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_select_sine_fusion", + "ms": 0.003288144999999991, + "opcode": "fusion", + "shape": "(f64[], f64[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:301", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:301 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:423 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_reduce_fusion.19", + "ms": 0.0015626899999999979, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:256", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:256 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_multiply_fusion.3", + "ms": 0.0015486099999999984, + "opcode": "fusion", + "shape": "f64[2,2]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + } + ], + "other": [ + { + "instruction": "copy.31", + "ms": 0.030053394999998925, + "opcode": "copy", + "shape": "u32[2,15361]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.32", + "ms": 0.029770839999999087, + "opcode": "copy", + "shape": "u32[2,15361]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.49", + "ms": 0.028496110000001, + "opcode": "copy", + "shape": "u32[15361]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.41", + "ms": 0.028274354999999834, + "opcode": "copy", + "shape": "u32[15361]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.50", + "ms": 0.02822928499999978, + "opcode": "copy", + "shape": "u32[15361]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.40", + "ms": 0.028172664999999677, + "opcode": "copy", + "shape": "u32[15361]{0}", + "source": "", + "stack": [] + } + ], + "mapping_matrix": [ + { + "instruction": "loop_broadcast_fusion.1", + "ms": 0.13632439000000002, + "opcode": "fusion", + "shape": "f64[15361,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:342", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:342 (mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:283 (Mapper.mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:91 (AbstractInversionImaging._mapping_matrix_for_convolution_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:137 (AbstractInversionImaging.operated_mapping_matrix_list)" + ] + }, + { + "instruction": "input_reduce_fusion.25", + "ms": 0.002810670000000008, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:362 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + }, + { + "instruction": "loop_divide_fusion.1", + "ms": 0.0023362750000000035, + "opcode": "fusion", + "shape": "f64[1521]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:92", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:92 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:362 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + } + ], + "regularization_H": [ + { + "instruction": "loop_broadcast_fusion.2", + "ms": 0.01918764500000001, + "opcode": "fusion", + "shape": "(f64[1521,1521]{1,0}, f64[1521,1521]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:111", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:111 (weighted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:366 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_scatter_fusion.8", + "ms": 0.0028247199999999997, + "opcode": "fusion", + "shape": "f64[1521,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:123 (weighted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:366 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "psf_convolution_mapping_matrix": [ + { + "instruction": "fft.19.0", + "ms": 1.7800637849999974, + "opcode": "fft", + "shape": "f64[1521,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_scatter_fusion", + "ms": 1.4226850849999995, + "opcode": "fusion", + "shape": "f64[1521,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.15.0", + "ms": 1.382435984999998, + "opcode": "fft", + "shape": "c128[1521,180,91]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.17.0", + "ms": 0.9923389550000007, + "opcode": "fft", + "shape": "c128[1521,91,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_transpose_fusion.1", + "ms": 0.5223432699999999, + "opcode": "fusion", + "shape": "c128[1521,91,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "wrapped_transpose.2", + "ms": 0.5055582950000004, + "opcode": "fusion", + "shape": "c128[1521,180,91]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + } + ], + "curvature_matrix_F": [ + { + "instruction": "cublas-lt-matmul.2", + "ms": 4.346808074999999, + "opcode": "custom-call", + "shape": "(f64[1521,1521]{1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "data_vector_D": [ + { + "instruction": "input_reduce_fusion.7", + "ms": 0.11361031000000008, + "opcode": "fusion", + "shape": "f64[92,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123 (data_vector_via_blurred_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:67 (InversionImagingMapping.data_vector)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:699 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_reduce_fusion.23", + "ms": 0.0037116350000000026, + "opcode": "fusion", + "shape": "f64[1521]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123 (data_vector_via_blurred_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:67 (InversionImagingMapping.data_vector)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:699 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "inversion_other": [ + { + "instruction": "cholesky.60", + "ms": 0.9182449849999995, + "opcode": "custom-call", + "shape": "(f64[1521,1521]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1078 (AbstractInversion.log_det_curvature_reg_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:347 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "cholesky.70", + "ms": 0.9018989549999996, + "opcode": "custom-call", + "shape": "(f64[1521,1521]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1157 (AbstractInversion.log_det_regularization_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:348 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "input_reduce_fusion.13", + "ms": 0.01896757500000001, + "opcode": "fusion", + "shape": "f64[1521]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:946", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:946 (AbstractInversion.regularization_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:346 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)", + "/mnt/ral/jnightin/autolens_profiling_wt/certified-solver-phase-c1-lane-rate/scripts/imaging/likelihood_breakdown/fixed_light_trace.py:1195 (_captured_likelihood_fn.._likelihood)" + ] + }, + { + "instruction": "loop_reduce_window_fusion.3", + "ms": 0.005836709999999998, + "opcode": "fusion", + "shape": "s64[6,16]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "input_scatter_fusion.11", + "ms": 0.003847810000000003, + "opcode": "fusion", + "shape": "pred[1521]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:526", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:526 (AbstractInversion.zeroed_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:567 (AbstractInversion.solve_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:684 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_reduce_window_fusion.2", + "ms": 0.003013245000000001, + "opcode": "fusion", + "shape": "s64[86,16]{1,0}", + "source": "", + "stack": [] + } + ], + "pdip_solve": [ + { + "instruction": "cholesky.20", + "ms": 13.442404870000248, + "opcode": "custom-call", + "shape": "(f64[1369,1369]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:106", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:106 (factorize_kkt)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:212 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve", + "ms": 2.0498154249999825, + "opcode": "custom-call", + "shape": "(f64[1369,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:213 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve.2", + "ms": 1.9589206850000624, + "opcode": "custom-call", + "shape": "(f64[1369,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:217 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve.3", + "ms": 1.9444542300001024, + "opcode": "custom-call", + "shape": "(f64[1369,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:217 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve.1", + "ms": 1.8951437750001001, + "opcode": "custom-call", + "shape": "(f64[1369,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:213 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "cholesky.40", + "ms": 0.8452861800000001, + "opcode": "custom-call", + "shape": "(f64[1369,1369]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:62", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:62 (initialize)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:72 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:508 (reconstruction_positive_only_from)" + ] + } + ], + "mapped_reconstruction": [ + { + "instruction": "input_reduce_fusion.10", + "ms": 0.11159355000000003, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163 (mapped_reconstructed_data_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:120 (InversionImagingMapping._mapped_reconstructed_data_dict_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:196 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + } + ], + "chi_squared_evidence": [ + { + "instruction": "input_reduce_fusion.22", + "ms": 0.003904100000000003, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:104", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:104 (noise_normalization_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:98 (AbstractFit.noise_normalization)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:306 (FitDataset.noise_normalization)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:349 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)" + ] + }, + { + "instruction": "input_reduce_fusion.24", + "ms": 0.003776604999999993, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:90", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:90 (chi_squared_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:87 (AbstractFit.chi_squared)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:293 (FitDataset.chi_squared)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:345 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)" + ] + }, + { + "instruction": "loop_multiply_fusion.2", + "ms": 0.0029628499999999995, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:300", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:300 (AbstractNDArray.__pow__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:60 (unwrap_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:35 (to_new_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:78 (chi_squared_map_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:78 (AbstractFit.chi_squared_map)" + ] + } + ] + }, + "stage_audit_note": "The HLO instructions that contributed most of each stage's milliseconds, with their full source stack. A stage row is only as good as the rules that built it; this is how a reader checks a row against the HLO instead of trusting it.", + "untraced_wall_ms": 40.075655470009224, + "reconciliation_vs_untraced_pct": 2.2768945867239294, + "wall_basis": "wall_ms is the TRACED run's wall, the run these kernel durations came from. untraced_wall_ms is the same executable without the profiler; the difference is the profiler's overhead and belongs in neither the stages nor the idle row.", + "calls": 200, + "call_split": "per-call (first-instruction recurrence)", + "call_blocks": 200, + "events": 179960, + "streams": [ + "Stream #14(MemcpyD2D,MemcpyH2D,Compute,MemcpyD2H,Memset)" + ], + "per_stage_ms": { + "border_relocator": { + "median_ms": 0.08844750000000004, + "min_ms": 0.08780900000000001, + "max_ms": 0.08930800000000001 + }, + "chi_squared_evidence": { + "median_ms": 0.010624, + "min_ms": 0.010304, + "max_ms": 0.011103 + }, + "curvature_matrix_F": { + "median_ms": 4.323899, + "min_ms": 4.291949, + "max_ms": 4.497648 + }, + "data_vector_D": { + "median_ms": 0.1172625, + "min_ms": 0.116354, + "max_ms": 0.118491 + }, + "inversion_other": { + "median_ms": 1.866646, + "min_ms": 1.8507090000000002, + "max_ms": 1.8894960000000003 + }, + "mapped_reconstruction": { + "median_ms": 0.11158, + "min_ms": 0.110881, + "max_ms": 0.112673 + }, + "mapping_matrix": { + "median_ms": 0.141473, + "min_ms": 0.141378, + "max_ms": 0.141569 + }, + "memset": { + "median_ms": 0.04895850000000003, + "min_ms": 0.032607, + "max_ms": 0.066333 + }, + "mesh_construction": { + "median_ms": 0.38071449999999984, + "min_ms": 0.3782580000000003, + "max_ms": 0.38289599999999974 + }, + "mixed_fusion": { + "median_ms": 0.993845, + "min_ms": 0.9919620000000001, + "max_ms": 0.996029 + }, + "other": { + "median_ms": 0.19372999999999985, + "min_ms": 0.19275899999999985, + "max_ms": 0.1941779999999998 + }, + "pdip_solve": { + "median_ms": 23.777701499999992, + "min_ms": 15.245406000000001, + "max_ms": 32.29393599999996 + }, + "psf_convolution_mapping_matrix": { + "median_ms": 6.838433, + "min_ms": 6.816744, + "max_ms": 6.855515 + }, + "ray_trace_data_grid": { + "median_ms": 0.012702999999999999, + "min_ms": 0.012607, + "max_ms": 0.01296 + }, + "regularization_H": { + "median_ms": 0.021984, + "min_ms": 0.021408, + "max_ms": 0.022784 + } + }, + "stage_order": [ + "ray_trace_data_grid", + "border_relocator", + "mesh_construction", + "mapping_matrix", + "psf_convolution_mapping_matrix", + "data_vector_D", + "curvature_matrix_F", + "regularization_H", + "pdip_solve", + "mapped_reconstruction", + "chi_squared_evidence", + "inversion_other", + "mixed_fusion", + "other", + "memset" + ], + "mixed_fusion": { + "ms": 0.993845, + "constituent_stage_sets": { + "curvature_matrix_F + psf_convolution_mapping_matrix": 0.69575344, + "inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": 0.08956260500000006, + "inversion_other + regularization_H": 0.030728550000000007, + "border_relocator + mesh_construction": 0.030251120000000083, + "curvature_reg_reduce_gather + inversion_other": 0.025508610000000008, + "border_relocator + inversion_other + mapping_matrix + mesh_construction": 0.020632850000000015, + "border_relocator + ray_trace_data_grid": 0.020402920000000015, + "border_relocator + pdip_solve": 0.016028075000000003, + "inversion_other + mapping_matrix + regularization_H": 0.015496104999999948, + "inversion_other + mapping_matrix + mesh_construction": 0.013131510000000011, + "inversion_other + mapped_reconstruction + reconstruction_scatter": 0.009573015000000006, + "inversion_other + mapped_reconstruction": 0.00887603, + "inversion_other + mesh_construction": 0.005444554999999989, + "inversion_other + ray_trace_data_grid": 0.004786164999999999, + "border_relocator + inversion_other": 0.0033375650000000007, + "border_relocator + inversion_other + mesh_construction": 0.002490675000000004, + "chi_squared_evidence + inversion_other": 0.001796439999999996 + }, + "example_kernels": { + "curvature_matrix_F + psf_convolution_mapping_matrix": [ + "loop_divide_gather_fusion" + ], + "inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": [ + "loop_add_multiply_fusion" + ], + "inversion_other + regularization_H": [ + "input_transpose_fusion.3" + ], + "border_relocator + mesh_construction": [ + "loop_reduce_fusion.1", + "loop_select_fusion.5" + ], + "curvature_reg_reduce_gather + inversion_other": [ + "input_transpose_fusion.2" + ], + "border_relocator + inversion_other + mapping_matrix + mesh_construction": [ + "input_scatter_fusion.6", + "input_scatter_fusion.10" + ], + "border_relocator + ray_trace_data_grid": [ + "input_reduce_fusion.12", + "input_concatenate_fusion.4", + "input_reduce_fusion.11", + "loop_add_fusion.7" + ], + "border_relocator + pdip_solve": [ + "input_transpose_fusion.4" + ], + "inversion_other + mapping_matrix + regularization_H": [ + "input_scatter_fusion.4", + "input_scatter_fusion.5", + "input_scatter_fusion.2", + "input_scatter_fusion.3" + ], + "inversion_other + mapping_matrix + mesh_construction": [ + "input_scatter_fusion.7" + ] + }, + "prorated_estimate_ms": { + "curvature_matrix_F": 0.34787672, + "psf_convolution_mapping_matrix": 0.34787672, + "inversion_other": 0.08135158958333334, + "border_relocator": 0.040998277500000055, + "pdip_solve": 0.030404688750000016, + "mapped_reconstruction": 0.030019671250000015, + "mesh_construction": 0.028213445000000042, + "reconstruction_scatter": 0.025581656250000015, + "regularization_H": 0.02052964333333332, + "mapping_matrix": 0.014700750833333324, + "curvature_reg_reduce_gather": 0.012754305000000004, + "ray_trace_data_grid": 0.012594542500000007, + "chi_squared_evidence": 0.000898219999999998 + }, + "prorated_note": "ESTIMATE ONLY \u2014 a mixed fusion's time split equally across the stages its constituents span. Never summed into the measured table, never reconciled." + }, + "other_sources_ms": { + "copy.31": 0.030053394999998925, + "copy.32": 0.029770839999999087, + "copy.49": 0.028496110000001, + "copy.41": 0.028274354999999834, + "copy.50": 0.02822928499999978, + "copy.40": 0.028172664999999677, + "loop_reduce_window_fusion": 0.006531594999999978, + "loop_reduce_window_fusion.1": 0.004298990000000014, + "copy.69": 0.0017865349999999975, + "loop_broadcast_fusion.3": 0.001766694999999998, + "copy.90": 0.0016729150000000003, + "copy.33": 0.0015499100000000005, + "copy.42": 0.0015479550000000004, + "copy.24": 0.0015428550000000007 + }, + "device_span_ms": 41.082610515, + "device_busy_ms": 39.022476114999996, + "device_idle_ms": 2.0601344000000026, + "largest_idle_gaps": [ + { + "gap_ms": 0.042206, + "after": "input_concatenate_fusion.4", + "before": "custom-call.2" + }, + { + "gap_ms": 0.03459, + "after": "loop_add_fusion.5", + "before": "loop_select_fusion.4" + }, + { + "gap_ms": 0.033695, + "after": "loop_multiply_fusion.3", + "before": "eigh.0" + }, + { + "gap_ms": 0.025087, + "after": "copy.41", + "before": "loop_add_fusion.5" + }, + { + "gap_ms": 0.024959, + "after": "loop_broadcast_fusion.6", + "before": "loop_broadcast_fusion.8" + }, + { + "gap_ms": 0.023584, + "after": "while.28", + "before": "input_reduce_fusion" + }, + { + "gap_ms": 0.019967, + "after": "while.28", + "before": "input_reduce_fusion" + }, + { + "gap_ms": 0.018847, + "after": "eigh.0", + "before": "eigh.0" + } + ], + "kernel_ms": 38.92800149999999, + "sum_ms": 40.988135899999996, + "wall_ms": 41.086288839996996, + "host_outside_span_ms": 0.003678324996997162, + "reconciliation_pct": -0.23889463557840093, + "unjoined_ms": 0.0, + "unjoined_pct": 0.0, + "other_ms": 0.19372999999999985, + "other_pct": 0.4715198317240229, + "note": "Stage rows attribute the command-buffers-OFF program (see the module docstring): kernel times are the same, the launch overhead the CUDA graphs remove is not. sum_ms = kernel rows + device_idle_ms; the residual against wall_ms is host_outside_span_ms (dispatch before the first kernel, teardown after the last).", + "per_stage_ms_per_lane": { + "border_relocator": 0.08844750000000004, + "chi_squared_evidence": 0.010624, + "curvature_matrix_F": 4.323899, + "data_vector_D": 0.1172625, + "inversion_other": 1.866646, + "mapped_reconstruction": 0.11158, + "mapping_matrix": 0.141473, + "memset": 0.04895850000000003, + "mesh_construction": 0.38071449999999984, + "mixed_fusion": 0.993845, + "other": 0.19372999999999985, + "pdip_solve": 23.777701499999992, + "psf_convolution_mapping_matrix": 6.838433, + "ray_trace_data_grid": 0.012702999999999999, + "regularization_H": 0.021984 + }, + "per_lane_divisor": 1, + "host_callback": { + "pure_callback_span_ms": 0, + "qhull_ms": 0.0, + "callback_body_ms_note": "the OUTERMOST matching body event, not a sum: under the probe the body appears twice (the wrapper and the timed re-implementation it calls) and summing them would count the same work twice", + "events_by_name": { + "ThenExecuteCallback:GetEventForComputeStreamSyncPoint": { + "count": 200, + "ms": 0.3641773 + } + }, + "note": "HOST milliseconds per traced BATCH (the whole invocation), aggregated by name because the events nest. Not a row of the device table: the device pays for them as the idle gaps largest_idle_gaps names." + }, + "host_callback_ms": 0 + }, + "hlo_census": { + "status": "excluded", + "reason": "The legacy census anchors PyAutoArray source line numbers that moved after the phase-1 run. No batched attribution is published from unsupported anchors; the device-event table and wall reconciliation remain valid." + }, + "stage_map_provenance": [ + { + "label": "log_det_curvature_reg", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 850, + 882 + ], + "requires": { + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 884, + 896 + ] + }, + "function": null + }, + { + "label": "log_det_regularization", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 850, + 882 + ], + "requires": { + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 897, + 943 + ] + }, + "function": null + }, + { + "label": "curvature_reg_add", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 359, + 372 + ], + "requires": null, + "function": null + }, + { + "label": "curvature_reg_reduce_gather", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 374, + 398 + ], + "requires": null, + "function": null + }, + { + "label": "edge_subset_gather", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 606, + 614 + ], + "requires": null, + "function": null + }, + { + "label": "regularization_term", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 786, + 849 + ], + "requires": null, + "function": null + }, + { + "label": "mapped_reconstruction", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 722, + 785 + ], + "requires": null, + "function": null + }, + { + "label": "reconstruction_scatter", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 583, + 605 + ], + "requires": null, + "function": null + }, + { + "label": "reconstruction_scatter", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 615, + 721 + ], + "requires": null, + "function": null + }, + { + "label": "certified_active_set_solve", + "path": "likelihood_breakdown/active_set_steps.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "certified_active_set_solve", + "path": "likelihood_breakdown/library_solver_injection.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "pdip_solve", + "path": "PyAutoArray/autoarray/util/jax_nnls.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "pdip_solve", + "path": "PyAutoArray/autoarray/inversion/inversion/inversion_util.py", + "lines": [ + 256, + 488 + ], + "requires": null, + "function": null + }, + { + "label": "mapped_reconstruction", + "path": "PyAutoArray/autoarray/inversion/inversion/inversion_util.py", + "lines": [ + 156, + 200 + ], + "requires": null, + "function": null + }, + { + "label": "curvature_matrix_F", + "path": "PyAutoArray/autoarray/inversion/inversion/inversion_util.py", + "lines": [ + 12, + 155 + ], + "requires": null, + "function": null + }, + { + "label": "reconstruction_scatter", + "path": "PyAutoArray/autoarray/inversion/inversion/inversion_util.py", + "lines": [ + 201, + 255 + ], + "requires": null, + "function": null + }, + { + "label": "data_vector_D", + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py", + "lines": [ + 54, + 73 + ], + "requires": null, + "function": null + }, + { + "label": "curvature_matrix_F", + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py", + "lines": [ + 74, + 110 + ], + "requires": null, + "function": null + }, + { + "label": "data_vector_D", + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py", + "lines": null, + "requires": null, + "function": "data_vector_via_blurred_mapping_matrix_from" + }, + { + "label": "curvature_matrix_F", + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "likelihood_breakdown/psf_cube_injection.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": [ + 1086, + 1300 + ], + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": [ + 632, + 642 + ], + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": [ + 670, + 691 + ], + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": null, + "requires": { + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": [ + 1086, + 1300 + ] + }, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": null, + "requires": { + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py", + "lines": [ + 119, + 150 + ] + }, + "function": null + }, + { + "label": "psf_convolution_image", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py", + "lines": [ + 119, + 150 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_qhull_callback", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 139, + 172 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_seed_argmin", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 173, + 207 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_locate_walk", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 208, + 372 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_dual_areas", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 373, + 396 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_dual_areas", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 437, + 494 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_dual_areas", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 605, + 615 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_interpolation_weights", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 616, + 695 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_interpolation_weights", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 896, + 1000 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_construction", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "border_relocator", + "path": "PyAutoArray/autoarray/inversion/mesh/border_relocator.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "mesh_construction", + "path": "PyAutoArray/autoarray/inversion/mesh/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "mapping_matrix", + "path": "PyAutoArray/autoarray/inversion/mappers/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "mapping_matrix", + "path": "PyAutoArray/autoarray/inversion/mappings/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "mapping_matrix", + "path": "PyAutoArray/autoarray/inversion/linear_obj/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "regularization_H", + "path": "PyAutoArray/autoarray/inversion/regularization/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "chi_squared_evidence", + "path": "PyAutoArray/autoarray/fit/fit_util.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "chi_squared_evidence", + "path": "PyAutoArray/autoarray/fit/fit_dataset.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "ray_trace_mesh_grid", + "path": "PyAutoLens/autolens/lens/to_inversion.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "ray_trace_mesh_grid", + "path": "PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "mass_profile_deflections", + "path": "PyAutoGalaxy/autogalaxy/profiles/mass/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "light_profile_image", + "path": "PyAutoGalaxy/autogalaxy/profiles/light/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "light_profile_image", + "path": "PyAutoGalaxy/autogalaxy/operate/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "ray_trace_data_grid", + "path": "PyAutoLens/autolens/lens/tracer.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "ray_trace_data_grid", + "path": "PyAutoLens/autolens/lens/tracer_util.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "grids_and_structures", + "path": "PyAutoArray/autoarray/structures/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "grids_and_structures", + "path": "PyAutoArray/autoarray/operators/over_sampling/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "grids_and_structures", + "path": "PyAutoArray/autoarray/geometry/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "inversion_other", + "path": "PyAutoArray/autoarray/inversion/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "fit_imaging_other", + "path": "PyAutoLens/autolens/imaging/fit_imaging.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "fit_imaging_other", + "path": "PyAutoGalaxy/autogalaxy/imaging/fit_imaging.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "fit_imaging_other", + "path": "PyAutoArray/autoarray/fit/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "analysis_other", + "path": "PyAutoLens/autolens/analysis/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "analysis_other", + "path": "PyAutoGalaxy/autogalaxy/analysis/", + "lines": null, + "requires": null, + "function": null + } + ], + "trace_timing": { + "traced_wall_ms": 41.086288839996996, + "untraced_wall_ms": 40.075655470009224, + "profiler_overhead_ms": 1.0106333699877723, + "profiler_overhead_pct": 2.521813699950794 + }, + "jit_phases": { + "b_s3_pdip_library_likelihood_jit": { + "lower_s": 1.263260222000099, + "compile_s": 3.326210922001337, + "first_call_s": 0.11014884700125549, + "steady_per_call_s": 0.038847992199953295 + }, + "d_s3_certified_fallback_library_likelihood_jit": { + "lower_s": 0.4690879080008017, + "compile_s": 3.916042548000405, + "first_call_s": 0.046631790999526856, + "steady_per_call_s": 0.03021587149996776 + } + }, + "peak_bytes": { + "after_setup": 85616640, + "after_routes": 1197479168, + "after_all": 1885379840, + "note": "jax.devices()[0].memory_stats()['peak_bytes_in_use']; None on a backend that does not report it (CPU). Process-wide high-water marks." + }, + "note": "Every stage row is a MEASURED sum of GPU kernel durations joined to library source through the optimized HLO of ONE program \u2014 not arithmetic across compilations. The rows attribute the command-buffers-OFF program: kernel time is the same as production, the launch overhead the CUDA graphs remove is not, and command_buffers.* carries both walls and their delta. sum_ms = kernel rows + measured device_idle_ms; the residual against the wall is host_outside_span_ms and is reported, not absorbed. mixed_fusion.prorated_estimate_ms is an ESTIMATE and is never part of the table. No row may be quoted if reconciliation_pct is outside 5 % or unjoined_ms is non-zero.", + "vmap": { + "batch": 20, + "lanes_mode": "captured", + "arms": [ + "vmap", + "scalar" + ], + "draw_seed": 0, + "fallback": true, + "composition": "jax.jit(jax.vmap(fn))", + "composition_provenance": "Current Fitness._vmap after PyAutoFit#1638. Array 343376 used the retired jax.vmap(jax.jit(fn)) composition and is historical evidence only.", + "headline_arm": "scalar", + "lane_rtol": 1e-09, + "lanes": [ + { + "lane": 0, + "draw_name": "call00008_lane00", + "draw_kind": "captured", + "offsets": {}, + "log_likelihood_vmap": 22274.403488579483, + "log_likelihood_scalar": 22274.403488579374, + "log_likelihood_library_pdip": 22274.40348857942, + "log_likelihood_library_pdip_scalar": 22274.403488579374, + "rel_diff_vmap_vs_library_pdip": 2.776534049599521e-15, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 1.0913936421275139e-10, + "rel_diff": 4.899765969881518e-15, + "rel_diff_scalar_vs_library_pdip": 2.1232319202819867e-15, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 4.729372449219227e-11, + "rel_diff_library_pdip_vmap_vs_scalar": 2.1232319202819914e-15, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 1, + "draw_name": "call00008_lane01", + "draw_kind": "captured", + "offsets": {}, + "log_likelihood_vmap": 25020.10492726523, + "log_likelihood_scalar": 25020.10492704234, + "log_likelihood_library_pdip": 25020.10492726987, + "log_likelihood_library_pdip_scalar": 25020.104926941327, + "rel_diff_vmap_vs_library_pdip": 1.8538783080747323e-13, + "rel_diff_scalar_vs_library_pdip_scalar": 4.037238047268936e-12, + "abs_diff_nats": 2.2289168555289507e-07, + "rel_diff": 8.908503229816128e-12, + "rel_diff_scalar_vs_library_pdip": 9.093891060542586e-12, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 3.285422280896455e-07, + "rel_diff_library_pdip_vmap_vs_scalar": 1.3131129107930937e-11, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 2, + "draw_name": "call00008_lane02", + "draw_kind": "captured", + "offsets": {}, + "log_likelihood_vmap": -194152.90879836841, + "log_likelihood_scalar": -194152.9125420907, + "log_likelihood_library_pdip": -194152.899130086, + "log_likelihood_library_pdip_scalar": -194152.91556128353, + "rel_diff_vmap_vs_library_pdip": 4.9797260051850536e-08, + "rel_diff_scalar_vs_library_pdip_scalar": 1.5550592322457473e-08, + "abs_diff_nats": 0.0037437222781591117, + "rel_diff": 1.928233900352901e-08, + "rel_diff_scalar_vs_library_pdip": 6.907960038739581e-08, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 0.01643119752407074, + "rel_diff_library_pdip_vmap_vs_scalar": 8.46301868636338e-08, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 3, + "draw_name": "call00008_lane03", + "draw_kind": "captured", + "offsets": {}, + "log_likelihood_vmap": 21671.259367014, + "log_likelihood_scalar": 21671.25936701999, + "log_likelihood_library_pdip": 21671.259367015133, + "log_likelihood_library_pdip_scalar": 21671.259367019993, + "rel_diff_vmap_vs_library_pdip": 5.2207921553815836e-14, + "rel_diff_scalar_vs_library_pdip_scalar": 1.67871130398084e-16, + "abs_diff_nats": 5.9881131164729595e-09, + "rel_diff": 2.7631588063524635e-13, + "rel_diff_scalar_vs_library_pdip": 2.2410795908149242e-13, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 4.8603396862745285e-09, + "rel_diff_library_pdip_vmap_vs_scalar": 2.2427583021184024e-13, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 4, + "draw_name": "call00008_lane04", + "draw_kind": "captured", + "offsets": {}, + "log_likelihood_vmap": 19204.153254755838, + "log_likelihood_scalar": 19204.15325448881, + "log_likelihood_library_pdip": 19204.153254755838, + "log_likelihood_library_pdip_scalar": 19204.15325448881, + "rel_diff_vmap_vs_library_pdip": 0.0, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 2.6702764444053173e-07, + "rel_diff": 1.3904682018620958e-11, + "rel_diff_scalar_vs_library_pdip": 1.3904682018427618e-11, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 2.6702764444053173e-07, + "rel_diff_library_pdip_vmap_vs_scalar": 1.3904682018620958e-11, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 5, + "draw_name": "call00008_lane05", + "draw_kind": "captured", + "offsets": {}, + "log_likelihood_vmap": 19342.25587702078, + "log_likelihood_scalar": 19342.255876845524, + "log_likelihood_library_pdip": 19342.25587702078, + "log_likelihood_library_pdip_scalar": 19342.255876845524, + "rel_diff_vmap_vs_library_pdip": 0.0, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 1.7525599105283618e-07, + "rel_diff": 9.060783404413229e-12, + "rel_diff_scalar_vs_library_pdip": 9.060783404331131e-12, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 1.7525599105283618e-07, + "rel_diff_library_pdip_vmap_vs_scalar": 9.060783404413229e-12, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 6, + "draw_name": "call00008_lane06", + "draw_kind": "captured", + "offsets": {}, + "log_likelihood_vmap": 24443.790261355745, + "log_likelihood_scalar": 24443.790261355764, + "log_likelihood_library_pdip": 24443.790261355745, + "log_likelihood_library_pdip_scalar": 24443.790261355764, + "rel_diff_vmap_vs_library_pdip": 0.0, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 1.8189894035458565e-11, + "rel_diff": 7.441519437440006e-16, + "rel_diff_scalar_vs_library_pdip": 7.441519437440012e-16, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 1.8189894035458565e-11, + "rel_diff_library_pdip_vmap_vs_scalar": 7.441519437440006e-16, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 7, + "draw_name": "call00008_lane07", + "draw_kind": "captured", + "offsets": {}, + "log_likelihood_vmap": 28119.165446922867, + "log_likelihood_scalar": 28119.165446909064, + "log_likelihood_library_pdip": 28119.165446920997, + "log_likelihood_library_pdip_scalar": 28119.165446932093, + "rel_diff_vmap_vs_library_pdip": 6.649987925050221e-14, + "rel_diff_scalar_vs_library_pdip_scalar": 8.189576569173403e-13, + "abs_diff_nats": 1.3802491594105959e-08, + "rel_diff": 4.908570853628647e-13, + "rel_diff_scalar_vs_library_pdip": 4.243572061121542e-13, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 1.1095835361629725e-08, + "rel_diff_library_pdip_vmap_vs_scalar": 3.9460045080535354e-13, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 8, + "draw_name": "call00008_lane08", + "draw_kind": "captured", + "offsets": {}, + "log_likelihood_vmap": 28488.842567046293, + "log_likelihood_scalar": 28488.84256701068, + "log_likelihood_library_pdip": 28488.842567054002, + "log_likelihood_library_pdip_scalar": 28488.84256700428, + "rel_diff_vmap_vs_library_pdip": 2.7059284960710515e-13, + "rel_diff_scalar_vs_library_pdip_scalar": 2.2462143579977759e-13, + "abs_diff_nats": 3.561217454262078e-08, + "rel_diff": 1.25003936045681e-12, + "rel_diff_scalar_vs_library_pdip": 1.5206322100620144e-12, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 4.972025635652244e-08, + "rel_diff_library_pdip_vmap_vs_scalar": 1.7452536458644459e-12, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 9, + "draw_name": "call00008_lane09", + "draw_kind": "captured", + "offsets": {}, + "log_likelihood_vmap": 28760.406110555283, + "log_likelihood_scalar": 28760.406110619508, + "log_likelihood_library_pdip": 28760.406110565797, + "log_likelihood_library_pdip_scalar": 28760.406110619508, + "rel_diff_vmap_vs_library_pdip": 3.6556364023777046e-13, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 6.42248778603971e-08, + "rel_diff": 2.2331005206731997e-12, + "rel_diff_scalar_vs_library_pdip": 1.8675368804395996e-12, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 5.371111910790205e-08, + "rel_diff_library_pdip_vmap_vs_scalar": 1.867536880436112e-12, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 10, + "draw_name": "call00008_lane10", + "draw_kind": "captured", + "offsets": {}, + "log_likelihood_vmap": 19204.153236579965, + "log_likelihood_scalar": 19204.15323634958, + "log_likelihood_library_pdip": 19204.153236579965, + "log_likelihood_library_pdip_scalar": 19204.15323634958, + "rel_diff_vmap_vs_library_pdip": 0.0, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 2.30385921895504e-07, + "rel_diff": 1.1996671712628809e-11, + "rel_diff_scalar_vs_library_pdip": 1.199667171248489e-11, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 2.30385921895504e-07, + "rel_diff_library_pdip_vmap_vs_scalar": 1.1996671712628809e-11, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 11, + "draw_name": "call00008_lane11", + "draw_kind": "captured", + "offsets": {}, + "log_likelihood_vmap": 21293.017831633548, + "log_likelihood_scalar": 21293.017831633693, + "log_likelihood_library_pdip": 21293.017831633544, + "log_likelihood_library_pdip_scalar": 21293.017831633693, + "rel_diff_vmap_vs_library_pdip": 1.7085313297803295e-16, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 1.4551915228366852e-10, + "rel_diff": 6.83412531912127e-15, + "rel_diff_scalar_vs_library_pdip": 7.004978452099351e-15, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 1.4915713109076023e-10, + "rel_diff_library_pdip_vmap_vs_scalar": 7.0049784520993024e-15, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 12, + "draw_name": "call00008_lane12", + "draw_kind": "captured", + "offsets": {}, + "log_likelihood_vmap": 19204.210147488666, + "log_likelihood_scalar": 19204.21014710055, + "log_likelihood_library_pdip": 19204.210147488666, + "log_likelihood_library_pdip_scalar": 19204.21014710055, + "rel_diff_vmap_vs_library_pdip": 0.0, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 3.881141310557723e-07, + "rel_diff": 2.0209846074527033e-11, + "rel_diff_scalar_vs_library_pdip": 2.0209846074118597e-11, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 3.881141310557723e-07, + "rel_diff_library_pdip_vmap_vs_scalar": 2.0209846074527033e-11, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 13, + "draw_name": "call00008_lane13", + "draw_kind": "captured", + "offsets": {}, + "log_likelihood_vmap": -79994.54573004704, + "log_likelihood_scalar": -79994.5457330077, + "log_likelihood_library_pdip": -79994.54572669863, + "log_likelihood_library_pdip_scalar": -79994.54573300768, + "rel_diff_vmap_vs_library_pdip": 4.18579818854436e-11, + "rel_diff_scalar_vs_library_pdip_scalar": 3.6382268553498094e-16, + "abs_diff_nats": 2.960659912787378e-06, + "rel_diff": 3.701077224275976e-11, + "rel_diff_scalar_vs_library_pdip": 7.886875413112236e-11, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6.309041054919362e-06, + "rel_diff_library_pdip_vmap_vs_scalar": 7.886839030221656e-11, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 14, + "draw_name": "call00008_lane14", + "draw_kind": "captured", + "offsets": {}, + "log_likelihood_vmap": -194333.90675600112, + "log_likelihood_scalar": -194333.9747430571, + "log_likelihood_library_pdip": -194333.87509634363, + "log_likelihood_library_pdip_scalar": -194333.9725847055, + "rel_diff_vmap_vs_library_pdip": 1.6291373528756156e-07, + "rel_diff_scalar_vs_library_pdip_scalar": 1.1106403903967221e-08, + "abs_diff_nats": 0.06798705598339438, + "rel_diff": 3.4984647472622815e-07, + "rel_diff_scalar_vs_library_pdip": 5.127603894012043e-07, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 0.09748836187645793, + "rel_diff_library_pdip_vmap_vs_scalar": 5.016537282690761e-07, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 15, + "draw_name": "call00008_lane15", + "draw_kind": "captured", + "offsets": {}, + "log_likelihood_vmap": -154117.06898758275, + "log_likelihood_scalar": -154117.05935549492, + "log_likelihood_library_pdip": -154117.06260268396, + "log_likelihood_library_pdip_scalar": -154117.0566724533, + "rel_diff_vmap_vs_library_pdip": 4.1428889729629344e-08, + "rel_diff_scalar_vs_library_pdip_scalar": 1.7409115351693894e-08, + "abs_diff_nats": 0.009632087836507708, + "rel_diff": 6.249851818344004e-08, + "rel_diff_scalar_vs_library_pdip": 2.1069627136990225e-08, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 0.005930230661761016, + "rel_diff_library_pdip_vmap_vs_scalar": 3.847874329941689e-08, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 16, + "draw_name": "call00008_lane16", + "draw_kind": "captured", + "offsets": {}, + "log_likelihood_vmap": -189207.18534898525, + "log_likelihood_scalar": -189207.15924465825, + "log_likelihood_library_pdip": -189207.18664552493, + "log_likelihood_library_pdip_scalar": -189207.16341858282, + "rel_diff_vmap_vs_library_pdip": 6.852486406565928e-09, + "rel_diff_scalar_vs_library_pdip_scalar": 2.2060076843654988e-08, + "abs_diff_nats": 0.026104327000211924, + "rel_diff": 1.3796690941518328e-07, + "rel_diff_scalar_vs_library_pdip": 1.448193758414675e-07, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 0.023226942110341042, + "rel_diff_library_pdip_vmap_vs_scalar": 1.2275931677574015e-07, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 17, + "draw_name": "call00008_lane17", + "draw_kind": "captured", + "offsets": {}, + "log_likelihood_vmap": -31662.811729587163, + "log_likelihood_scalar": -31662.81173146797, + "log_likelihood_library_pdip": -31662.81173331123, + "log_likelihood_library_pdip_scalar": -31662.81173080481, + "rel_diff_vmap_vs_library_pdip": 1.176164634066526e-10, + "rel_diff_scalar_vs_library_pdip_scalar": 2.0944440639867264e-11, + "abs_diff_nats": 1.8808059394359589e-06, + "rel_diff": 5.940110295279705e-11, + "rel_diff_scalar_vs_library_pdip": 5.821536045731362e-11, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 2.5064218789339066e-06, + "rel_diff_library_pdip_vmap_vs_scalar": 7.91598011017892e-11, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 18, + "draw_name": "call00008_lane18", + "draw_kind": "captured", + "offsets": {}, + "log_likelihood_vmap": -187758.22143818816, + "log_likelihood_scalar": -187758.22019189468, + "log_likelihood_library_pdip": -187758.22018887085, + "log_likelihood_library_pdip_scalar": -187758.22006644896, + "rel_diff_vmap_vs_library_pdip": 6.653862139065917e-09, + "rel_diff_scalar_vs_library_pdip_scalar": 6.681236992144202e-10, + "abs_diff_nats": 0.001246293482836336, + "rel_diff": 6.6377572260888794e-09, + "rel_diff_scalar_vs_library_pdip": 1.6104912870136764e-11, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 0.00012242188677191734, + "rel_diff_library_pdip_vmap_vs_scalar": 6.520187863337827e-10, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 19, + "draw_name": "call00008_lane19", + "draw_kind": "captured", + "offsets": {}, + "log_likelihood_vmap": 21467.061750411012, + "log_likelihood_scalar": 21467.061750410772, + "log_likelihood_library_pdip": 21467.061750410907, + "log_likelihood_library_pdip_scalar": 21467.061750410772, + "rel_diff_vmap_vs_library_pdip": 4.91457036050312e-15, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 2.4010660126805305e-10, + "rel_diff": 1.118488426873131e-14, + "rel_diff_scalar_vs_library_pdip": 6.270313908228119e-15, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 1.3460521586239338e-10, + "rel_diff_library_pdip_vmap_vs_scalar": 6.2703139082281585e-15, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + } + ], + "lane_pins": [ + { + "pin": "lane 0: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 22274.403488579483, + "reference_value": 22274.40348857942, + "rel_diff": 2.776534049599521e-15, + "abs_diff_nats": 6.184563972055912e-11, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 0: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 22274.403488579374, + "reference_value": 22274.403488579374, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 0: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 22274.403488579483, + "reference_value": 22274.403488579374, + "rel_diff": 4.899765969881518e-15, + "abs_diff_nats": 1.0913936421275139e-10, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 0: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 22274.40348857942, + "reference_value": 22274.403488579374, + "rel_diff": 2.1232319202819914e-15, + "abs_diff_nats": 4.729372449219227e-11, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 1: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 25020.10492726523, + "reference_value": 25020.10492726987, + "rel_diff": 1.8538783080747323e-13, + "abs_diff_nats": 4.638422979041934e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 1: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 25020.10492704234, + "reference_value": 25020.104926941327, + "rel_diff": 4.037238047268936e-12, + "abs_diff_nats": 1.010121195577085e-07, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 1: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 25020.10492726523, + "reference_value": 25020.10492704234, + "rel_diff": 8.908503229816128e-12, + "abs_diff_nats": 2.2289168555289507e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 1: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 25020.10492726987, + "reference_value": 25020.104926941327, + "rel_diff": 1.3131129107930937e-11, + "abs_diff_nats": 3.285422280896455e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 2: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -194152.90879836841, + "reference_value": -194152.899130086, + "rel_diff": 4.9797260051850536e-08, + "abs_diff_nats": 0.009668282407801598, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 2: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -194152.9125420907, + "reference_value": -194152.91556128353, + "rel_diff": 1.5550592322457473e-08, + "abs_diff_nats": 0.0030191928381100297, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 2: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -194152.90879836841, + "reference_value": -194152.9125420907, + "rel_diff": 1.928233900352901e-08, + "abs_diff_nats": 0.0037437222781591117, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 2: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -194152.899130086, + "reference_value": -194152.91556128353, + "rel_diff": 8.46301868636338e-08, + "abs_diff_nats": 0.01643119752407074, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 3: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 21671.259367014, + "reference_value": 21671.259367015133, + "rel_diff": 5.2207921553815836e-14, + "abs_diff_nats": 1.1314114090055227e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 3: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 21671.25936701999, + "reference_value": 21671.259367019993, + "rel_diff": 1.67871130398084e-16, + "abs_diff_nats": 3.637978807091713e-12, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 3: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 21671.259367014, + "reference_value": 21671.25936701999, + "rel_diff": 2.7631588063524635e-13, + "abs_diff_nats": 5.9881131164729595e-09, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 3: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 21671.259367015133, + "reference_value": 21671.259367019993, + "rel_diff": 2.2427583021184024e-13, + "abs_diff_nats": 4.8603396862745285e-09, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 4: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 19204.153254755838, + "reference_value": 19204.153254755838, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 4: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 19204.15325448881, + "reference_value": 19204.15325448881, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 4: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 19204.153254755838, + "reference_value": 19204.15325448881, + "rel_diff": 1.3904682018620958e-11, + "abs_diff_nats": 2.6702764444053173e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 4: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 19204.153254755838, + "reference_value": 19204.15325448881, + "rel_diff": 1.3904682018620958e-11, + "abs_diff_nats": 2.6702764444053173e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 5: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 19342.25587702078, + "reference_value": 19342.25587702078, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 5: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 19342.255876845524, + "reference_value": 19342.255876845524, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 5: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 19342.25587702078, + "reference_value": 19342.255876845524, + "rel_diff": 9.060783404413229e-12, + "abs_diff_nats": 1.7525599105283618e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 5: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 19342.25587702078, + "reference_value": 19342.255876845524, + "rel_diff": 9.060783404413229e-12, + "abs_diff_nats": 1.7525599105283618e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 6: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 24443.790261355745, + "reference_value": 24443.790261355745, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 6: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 24443.790261355764, + "reference_value": 24443.790261355764, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 6: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 24443.790261355745, + "reference_value": 24443.790261355764, + "rel_diff": 7.441519437440006e-16, + "abs_diff_nats": 1.8189894035458565e-11, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 6: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 24443.790261355745, + "reference_value": 24443.790261355764, + "rel_diff": 7.441519437440006e-16, + "abs_diff_nats": 1.8189894035458565e-11, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 7: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 28119.165446922867, + "reference_value": 28119.165446920997, + "rel_diff": 6.649987925050221e-14, + "abs_diff_nats": 1.8699211068451405e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 7: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 28119.165446909064, + "reference_value": 28119.165446932093, + "rel_diff": 8.189576569173403e-13, + "abs_diff_nats": 2.3028405848890543e-08, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 7: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 28119.165446922867, + "reference_value": 28119.165446909064, + "rel_diff": 4.908570853628647e-13, + "abs_diff_nats": 1.3802491594105959e-08, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 7: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 28119.165446920997, + "reference_value": 28119.165446932093, + "rel_diff": 3.9460045080535354e-13, + "abs_diff_nats": 1.1095835361629725e-08, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 8: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 28488.842567046293, + "reference_value": 28488.842567054002, + "rel_diff": 2.7059284960710515e-13, + "abs_diff_nats": 7.70887709222734e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 8: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 28488.84256701068, + "reference_value": 28488.84256700428, + "rel_diff": 2.2462143579977759e-13, + "abs_diff_nats": 6.399204721674323e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 8: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 28488.842567046293, + "reference_value": 28488.84256701068, + "rel_diff": 1.25003936045681e-12, + "abs_diff_nats": 3.561217454262078e-08, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 8: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 28488.842567054002, + "reference_value": 28488.84256700428, + "rel_diff": 1.7452536458644459e-12, + "abs_diff_nats": 4.972025635652244e-08, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 9: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 28760.406110555283, + "reference_value": 28760.406110565797, + "rel_diff": 3.6556364023777046e-13, + "abs_diff_nats": 1.051375875249505e-08, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 9: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 28760.406110619508, + "reference_value": 28760.406110619508, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 9: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 28760.406110555283, + "reference_value": 28760.406110619508, + "rel_diff": 2.2331005206731997e-12, + "abs_diff_nats": 6.42248778603971e-08, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 9: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 28760.406110565797, + "reference_value": 28760.406110619508, + "rel_diff": 1.867536880436112e-12, + "abs_diff_nats": 5.371111910790205e-08, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 10: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 19204.153236579965, + "reference_value": 19204.153236579965, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 10: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 19204.15323634958, + "reference_value": 19204.15323634958, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 10: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 19204.153236579965, + "reference_value": 19204.15323634958, + "rel_diff": 1.1996671712628809e-11, + "abs_diff_nats": 2.30385921895504e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 10: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 19204.153236579965, + "reference_value": 19204.15323634958, + "rel_diff": 1.1996671712628809e-11, + "abs_diff_nats": 2.30385921895504e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 11: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 21293.017831633548, + "reference_value": 21293.017831633544, + "rel_diff": 1.7085313297803295e-16, + "abs_diff_nats": 3.637978807091713e-12, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 11: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 21293.017831633693, + "reference_value": 21293.017831633693, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 11: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 21293.017831633548, + "reference_value": 21293.017831633693, + "rel_diff": 6.83412531912127e-15, + "abs_diff_nats": 1.4551915228366852e-10, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 11: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 21293.017831633544, + "reference_value": 21293.017831633693, + "rel_diff": 7.0049784520993024e-15, + "abs_diff_nats": 1.4915713109076023e-10, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 12: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 19204.210147488666, + "reference_value": 19204.210147488666, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 12: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 19204.21014710055, + "reference_value": 19204.21014710055, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 12: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 19204.210147488666, + "reference_value": 19204.21014710055, + "rel_diff": 2.0209846074527033e-11, + "abs_diff_nats": 3.881141310557723e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 12: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 19204.210147488666, + "reference_value": 19204.21014710055, + "rel_diff": 2.0209846074527033e-11, + "abs_diff_nats": 3.881141310557723e-07, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 13: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -79994.54573004704, + "reference_value": -79994.54572669863, + "rel_diff": 4.18579818854436e-11, + "abs_diff_nats": 3.348410245962441e-06, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 13: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -79994.5457330077, + "reference_value": -79994.54573300768, + "rel_diff": 3.6382268553498094e-16, + "abs_diff_nats": 2.9103830456733704e-11, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 13: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -79994.54573004704, + "reference_value": -79994.5457330077, + "rel_diff": 3.701077224275976e-11, + "abs_diff_nats": 2.960659912787378e-06, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 13: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -79994.54572669863, + "reference_value": -79994.54573300768, + "rel_diff": 7.886839030221656e-11, + "abs_diff_nats": 6.309041054919362e-06, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 14: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -194333.90675600112, + "reference_value": -194333.87509634363, + "rel_diff": 1.6291373528756156e-07, + "abs_diff_nats": 0.03165965748485178, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 14: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -194333.9747430571, + "reference_value": -194333.9725847055, + "rel_diff": 1.1106403903967221e-08, + "abs_diff_nats": 0.0021583515917882323, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 14: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -194333.90675600112, + "reference_value": -194333.9747430571, + "rel_diff": 3.4984647472622815e-07, + "abs_diff_nats": 0.06798705598339438, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 14: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -194333.87509634363, + "reference_value": -194333.9725847055, + "rel_diff": 5.016537282690761e-07, + "abs_diff_nats": 0.09748836187645793, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 15: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -154117.06898758275, + "reference_value": -154117.06260268396, + "rel_diff": 4.1428889729629344e-08, + "abs_diff_nats": 0.0063848987920209765, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 15: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -154117.05935549492, + "reference_value": -154117.0566724533, + "rel_diff": 1.7409115351693894e-08, + "abs_diff_nats": 0.0026830416172742844, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 15: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -154117.06898758275, + "reference_value": -154117.05935549492, + "rel_diff": 6.249851818344004e-08, + "abs_diff_nats": 0.009632087836507708, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 15: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -154117.06260268396, + "reference_value": -154117.0566724533, + "rel_diff": 3.847874329941689e-08, + "abs_diff_nats": 0.005930230661761016, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 16: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -189207.18534898525, + "reference_value": -189207.18664552493, + "rel_diff": 6.852486406565928e-09, + "abs_diff_nats": 0.001296539674513042, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 16: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -189207.15924465825, + "reference_value": -189207.16341858282, + "rel_diff": 2.2060076843654988e-08, + "abs_diff_nats": 0.004173924564383924, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 16: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -189207.18534898525, + "reference_value": -189207.15924465825, + "rel_diff": 1.3796690941518328e-07, + "abs_diff_nats": 0.026104327000211924, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 16: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -189207.18664552493, + "reference_value": -189207.16341858282, + "rel_diff": 1.2275931677574015e-07, + "abs_diff_nats": 0.023226942110341042, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 17: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -31662.811729587163, + "reference_value": -31662.81173331123, + "rel_diff": 1.176164634066526e-10, + "abs_diff_nats": 3.7240679375827312e-06, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 17: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -31662.81173146797, + "reference_value": -31662.81173080481, + "rel_diff": 2.0944440639867264e-11, + "abs_diff_nats": 6.631598807871342e-07, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 17: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -31662.811729587163, + "reference_value": -31662.81173146797, + "rel_diff": 5.940110295279705e-11, + "abs_diff_nats": 1.8808059394359589e-06, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 17: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -31662.81173331123, + "reference_value": -31662.81173080481, + "rel_diff": 7.91598011017892e-11, + "abs_diff_nats": 2.5064218789339066e-06, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 18: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -187758.22143818816, + "reference_value": -187758.22018887085, + "rel_diff": 6.653862139065917e-09, + "abs_diff_nats": 0.0012493173126131296, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 18: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -187758.22019189468, + "reference_value": -187758.22006644896, + "rel_diff": 6.681236992144202e-10, + "abs_diff_nats": 0.00012544571654871106, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 18: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -187758.22143818816, + "reference_value": -187758.22019189468, + "rel_diff": 6.6377572260888794e-09, + "abs_diff_nats": 0.001246293482836336, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 18: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -187758.22018887085, + "reference_value": -187758.22006644896, + "rel_diff": 6.520187863337827e-10, + "abs_diff_nats": 0.00012242188677191734, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 19: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 21467.061750411012, + "reference_value": 21467.061750410907, + "rel_diff": 4.91457036050312e-15, + "abs_diff_nats": 1.0550138540565968e-10, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 19: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 21467.061750410772, + "reference_value": 21467.061750410772, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 19: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 21467.061750411012, + "reference_value": 21467.061750410772, + "rel_diff": 1.118488426873131e-14, + "abs_diff_nats": 2.4010660126805305e-10, + "within_rtol": true, + "status": "RECORDED" + }, + { + "pin": "lane 19: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 21467.061750410907, + "reference_value": 21467.061750410772, + "rel_diff": 6.2703139082281585e-15, + "abs_diff_nats": 1.3460521586239338e-10, + "within_rtol": true, + "status": "RECORDED" + } + ], + "lanes_failed": 5, + "arm_rows": { + "vmap": { + "arm": "vmap", + "program": "jax.jit(jax.vmap(fn))", + "stands_for": "Nautilus(use_jax_vmap=True) \u2014 Fitness._vmap", + "hlo_source": "jax.jit(jax.vmap(fn)).lower(batched_tree) \u2014 the exact current Fitness._vmap composition (PyAutoFit#1638)", + "batch_wall_ms": 339.10361109992664, + "wall_production_nesting_ms": 339.10361109992664, + "wall_aot_command_buffers_on_ms": 339.0997643000446, + "wall_aot_command_buffers_off_ms": 339.75367820021347, + "command_buffer_delta_ms": 0.6539139001688454, + "production_nesting_vs_aot_on_delta_ms": 0.0038467998820124194, + "production_nesting_vs_aot_on_delta_pct": 0.001134415380663216, + "wall_per_lane_ms": 16.955180554996332, + "wall_per_lane_command_buffers_off_ms": 16.987683910010674, + "traced_batch_wall_ms": 346.54983739965246, + "untraced_batch_wall_ms": 339.70216369998525, + "traced_wall_per_lane_ms": 17.327491869982623, + "callback_count_per_call": 0.0, + "callback_count_per_lane": 0.0, + "callback_expectation": "0 \u2014 the rectangular mesh has no qhull host callback (asserted)", + "host_qhull_ms": 0.0, + "host_tables_ms": 0.0, + "host_qhull_ms_per_lane": 0.0, + "host_tables_ms_per_lane": 0.0, + "host_callback_probe": { + "calls": 0, + "qhull_ms_total": 0.0, + "tables_ms_total": 0.0, + "total_ms_total": 0.0, + "qhull_ms_mean": 0.0, + "tables_ms_mean": 0.0, + "total_ms_mean": 0.0, + "non_finite_calls": 0, + "n_points": [] + }, + "host_callback_records_first": [], + "device_idle_ms": 18.030774699999995, + "device_idle_ms_per_lane": 0.9015387349999997, + "trace": { + "parser": "ProfileData.from_file(xplane) + as_text() + stack_frame_index(proto field 17)", + "stage_audit": { + "mesh_construction": [ + { + "instruction": "fusion.2", + "ms": 0.1482466, + "opcode": "fusion", + "shape": "(f64[15361,2]{1,0}, s64[15361,2]{1,0}, s32[15361,2]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:227", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:227 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_select_fusion", + "ms": 0.038936399999999975, + "opcode": "fusion", + "shape": "(u32[2,15361]{1,0}, u32[2,15361]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69 (forward_interp)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:573 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/abstract.py:36 (AbstractInterpolator.mappings)" + ] + }, + { + "instruction": "loop_select_fusion.1", + "ms": 0.034629399999999984, + "opcode": "fusion", + "shape": "(u32[15361]{0}, u32[15361]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_select_fusion.4", + "ms": 0.03454899999999998, + "opcode": "fusion", + "shape": "(u32[15361]{0}, u32[15361]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_add_fusion.3", + "ms": 0.021199699999999974, + "opcode": "fusion", + "shape": "s64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_add_fusion", + "ms": 0.020472700000000003, + "opcode": "fusion", + "shape": "s64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69 (forward_interp)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:573 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/abstract.py:36 (AbstractInterpolator.mappings)" + ] + } + ], + "mixed_fusion": [ + { + "instruction": "loop_add_multiply_fusion", + "ms": 2.2857649999999996, + "opcode": "fusion", + "shape": "(f64[20,1369,1369]{2,1,0}, f64[20,1369,1369]{2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:61", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:61 (initialize)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:72 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:508 (reconstruction_positive_only_from)" + ] + }, + { + "instruction": "input_transpose_fusion.2", + "ms": 1.286784, + "opcode": "fusion", + "shape": "(f64[20,1521,1521]{2,1,0}, f64[20,1521,1521]{2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1157 (AbstractInversion.log_det_regularization_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:348 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "loop_divide_gather_fusion", + "ms": 0.6965449, + "opcode": "fusion", + "shape": "(f64[15361,1521]{1,0}, f64[15361,1,1,1521]{3,2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_transpose_fusion.4", + "ms": 0.3668204, + "opcode": "fusion", + "shape": "f64[20,1369,1369]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:62", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:62 (initialize)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:72 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:508 (reconstruction_positive_only_from)" + ] + }, + { + "instruction": "input_reduce_fusion.11", + "ms": 0.1230032, + "opcode": "fusion", + "shape": "f64[92,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123 (data_vector_via_blurred_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:67 (InversionImagingMapping.data_vector)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:699 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_reduce_fusion.2", + "ms": 0.027102900000000003, + "opcode": "fusion", + "shape": "f64[92,2]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:556", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:556 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/abstract.py:36 (AbstractInterpolator.mappings)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:167 (Mapper.pix_indexes_for_sub_slim_index)" + ] + } + ], + "ray_trace_data_grid": [ + { + "instruction": "input_reduce_fusion.20", + "ms": 0.0028063999999999993, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:506", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:506 (FlatLambdaCDM._simpson_1d)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:644 (FlatLambdaCDM.angular_diameter_distance_kpc_z1z2)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:151 (LensingCosmology.angular_diameter_distance_between_redshifts_in_kpc_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:355 (LensingCosmology.scaling_factor_between_redshifts_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer_util.py:252 (traced_grid_2d_list_from)" + ] + }, + { + "instruction": "input_reduce_fusion.18", + "ms": 0.0027552, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:506", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:506 (FlatLambdaCDM._simpson_1d)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:644 (FlatLambdaCDM.angular_diameter_distance_kpc_z1z2)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:133 (LensingCosmology.angular_diameter_distance_to_earth_in_kpc_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:362 (LensingCosmology.scaling_factor_between_redshifts_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer_util.py:252 (traced_grid_2d_list_from)" + ] + }, + { + "instruction": "input_reduce_fusion.21", + "ms": 0.0025821000000000004, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:503", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:503 (FlatLambdaCDM._simpson_1d)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:644 (FlatLambdaCDM.angular_diameter_distance_kpc_z1z2)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:151 (LensingCosmology.angular_diameter_distance_between_redshifts_in_kpc_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:355 (LensingCosmology.scaling_factor_between_redshifts_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer_util.py:252 (traced_grid_2d_list_from)" + ] + }, + { + "instruction": "input_reduce_fusion.19", + "ms": 0.0025790000000000006, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:503", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:503 (FlatLambdaCDM._simpson_1d)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:644 (FlatLambdaCDM.angular_diameter_distance_kpc_z1z2)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:133 (LensingCosmology.angular_diameter_distance_to_earth_in_kpc_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:362 (LensingCosmology.scaling_factor_between_redshifts_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer_util.py:252 (traced_grid_2d_list_from)" + ] + }, + { + "instruction": "loop_divide_fusion.4", + "ms": 0.0025503, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:380", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:380 (LensingCosmology.scaling_factor_between_redshifts_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer_util.py:252 (traced_grid_2d_list_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer.py:632 (Tracer.traced_grid_2d_list_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/structures/decorators/abstract.py:93 (AbstractMaker.evaluate_func)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/structures/decorators/abstract.py:110 (AbstractMaker.result)" + ] + } + ], + "border_relocator": [ + { + "instruction": "eigh.0", + "ms": 0.07431979999999992, + "opcode": "custom-call", + "shape": "(f64[2,2]{0,1}, f64[2]{0}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "custom-call.3", + "ms": 0.0079866, + "opcode": "custom-call", + "shape": "(f64[2,2]{1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_select_sine_fusion", + "ms": 0.0036478, + "opcode": "fusion", + "shape": "(f64[], f64[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:301", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:301 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:423 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_reduce_fusion.23", + "ms": 0.0017247000000000002, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:256", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:256 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_multiply_fusion.4", + "ms": 0.0015582999999999997, + "opcode": "fusion", + "shape": "f64[2,2]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + } + ], + "other": [ + { + "instruction": "copy.33", + "ms": 0.02978110000000007, + "opcode": "copy", + "shape": "u32[2,15361]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.34", + "ms": 0.029746800000000066, + "opcode": "copy", + "shape": "u32[2,15361]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.52", + "ms": 0.028548900000000037, + "opcode": "copy", + "shape": "u32[15361]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.42", + "ms": 0.02852090000000004, + "opcode": "copy", + "shape": "u32[15361]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.43", + "ms": 0.0283273, + "opcode": "copy", + "shape": "u32[15361]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.51", + "ms": 0.02815969999999999, + "opcode": "copy", + "shape": "u32[15361]{0}", + "source": "", + "stack": [] + } + ], + "mapping_matrix": [ + { + "instruction": "loop_broadcast_fusion.1", + "ms": 0.13637529999999998, + "opcode": "fusion", + "shape": "f64[15361,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:342", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:342 (mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:283 (Mapper.mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:91 (AbstractInversionImaging._mapping_matrix_for_convolution_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:137 (AbstractInversionImaging.operated_mapping_matrix_list)" + ] + }, + { + "instruction": "input_reduce_fusion.28", + "ms": 0.0029118000000000004, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:362 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + }, + { + "instruction": "loop_divide_fusion.3", + "ms": 0.0023327, + "opcode": "fusion", + "shape": "f64[1521]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:92", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:92 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:362 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + }, + { + "instruction": "loop_divide_fusion.2", + "ms": 0.002272, + "opcode": "fusion", + "shape": "f64[1521]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:95", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:95 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:362 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + } + ], + "psf_convolution_mapping_matrix": [ + { + "instruction": "fft.14.0", + "ms": 1.7837563, + "opcode": "fft", + "shape": "f64[1521,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:303 (AbstractInversion.operated_mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:68 (InversionImagingMapping.data_vector)" + ] + }, + { + "instruction": "input_scatter_fusion", + "ms": 1.4241543, + "opcode": "fusion", + "shape": "f64[1521,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:303 (AbstractInversion.operated_mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:68 (InversionImagingMapping.data_vector)" + ] + }, + { + "instruction": "fft.10.0", + "ms": 1.3809914, + "opcode": "fft", + "shape": "c128[1521,180,91]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:303 (AbstractInversion.operated_mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:68 (InversionImagingMapping.data_vector)" + ] + }, + { + "instruction": "fft.12.0", + "ms": 0.9925877, + "opcode": "fft", + "shape": "c128[1521,91,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:303 (AbstractInversion.operated_mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:68 (InversionImagingMapping.data_vector)" + ] + }, + { + "instruction": "input_transpose_fusion.3", + "ms": 0.5221712, + "opcode": "fusion", + "shape": "c128[1521,91,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:303 (AbstractInversion.operated_mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:68 (InversionImagingMapping.data_vector)" + ] + }, + { + "instruction": "wrapped_transpose.2", + "ms": 0.5061173000000001, + "opcode": "fusion", + "shape": "c128[1521,180,91]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:303 (AbstractInversion.operated_mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:68 (InversionImagingMapping.data_vector)" + ] + } + ], + "curvature_matrix_F": [ + { + "instruction": "custom-call.4", + "ms": 4.3622745, + "opcode": "custom-call", + "shape": "(f64[1521,1521]{1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "regularization_H": [ + { + "instruction": "wrapped_broadcast", + "ms": 0.5881397, + "opcode": "fusion", + "shape": "f64[20,1521,1521]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:124", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:124 (weighted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:366 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_broadcast_fusion.3", + "ms": 0.014933800000000002, + "opcode": "fusion", + "shape": "f64[1521,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:111", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:111 (weighted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:366 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_scatter_fusion.7", + "ms": 0.0025503999999999995, + "opcode": "fusion", + "shape": "f64[1521,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:123 (weighted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:366 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "inversion_other": [ + { + "instruction": "cholesky.60", + "ms": 7.454745899999942, + "opcode": "custom-call", + "shape": "(f64[20,1521,1521]{1,2,0}, s32[20]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1078 (AbstractInversion.log_det_curvature_reg_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:347 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "cholesky.70", + "ms": 7.413237999999955, + "opcode": "custom-call", + "shape": "(f64[20,1521,1521]{1,2,0}, s32[20]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1157 (AbstractInversion.log_det_regularization_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:348 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "input_reduce_fusion.16", + "ms": 0.21190530000000002, + "opcode": "fusion", + "shape": "f64[20,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:946", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:946 (AbstractInversion.regularization_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:346 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)", + "/mnt/ral/jnightin/autolens_profiling_wt/certified-solver-phase-c1-lane-rate/scripts/imaging/likelihood_breakdown/fixed_light_trace.py:1195 (_captured_likelihood_fn.._likelihood)" + ] + }, + { + "instruction": "loop_reduce_window_fusion.3", + "ms": 0.006486100000000001, + "opcode": "fusion", + "shape": "s64[6,16]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "input_reduce_fusion.25", + "ms": 0.0053532, + "opcode": "fusion", + "shape": "f64[20]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:944", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:944 (AbstractInversion.regularization_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:346 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)", + "/mnt/ral/jnightin/autolens_profiling_wt/certified-solver-phase-c1-lane-rate/scripts/imaging/likelihood_breakdown/fixed_light_trace.py:1195 (_captured_likelihood_fn.._likelihood)" + ] + }, + { + "instruction": "input_reduce_fusion.12", + "ms": 0.005103700000000001, + "opcode": "fusion", + "shape": "f64[20]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:985", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:985 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1157 (AbstractInversion.log_det_regularization_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:348 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + } + ], + "data_vector_D": [ + { + "instruction": "input_reduce_fusion.27", + "ms": 0.003753399999999999, + "opcode": "fusion", + "shape": "f64[1521]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123 (data_vector_via_blurred_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:67 (InversionImagingMapping.data_vector)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:699 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "pdip_solve": [ + { + "instruction": "cholesky.20", + "ms": 129.13674789997756, + "opcode": "custom-call", + "shape": "(f64[20,1369,1369]{1,2,0}, s32[20]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:106", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:106 (factorize_kkt)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:212 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve", + "ms": 36.37951400000247, + "opcode": "custom-call", + "shape": "(f64[20,1369,1]{1,2,0}, s8[320]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:213 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve.2", + "ms": 33.65921420000113, + "opcode": "custom-call", + "shape": "(f64[20,1369,1]{1,2,0}, s8[320]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:217 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve.3", + "ms": 32.80842669999944, + "opcode": "custom-call", + "shape": "(f64[20,1369,1]{1,2,0}, s8[320]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:217 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve.1", + "ms": 32.49481810000139, + "opcode": "custom-call", + "shape": "(f64[20,1369,1]{1,2,0}, s8[320]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:213 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "loop_add_fusion.2", + "ms": 8.711086199999997, + "opcode": "fusion", + "shape": "f64[20,1369,1369]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:107", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:107 (factorize_kkt)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:212 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + } + ], + "fit_imaging_other": [ + { + "instruction": "custom-call.5", + "ms": 0.2037871, + "opcode": "custom-call", + "shape": "(f64[20,15361]{1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:305", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:305 (AbstractNDArray.__add__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:57 (unwrap_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:35 (to_new_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:58 (AbstractFit.residual_map)" + ] + } + ], + "chi_squared_evidence": [ + { + "instruction": "loop_divide_fusion", + "ms": 0.0098014, + "opcode": "fusion", + "shape": "f64[20,15361]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:352", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:352 (AbstractNDArray.__truediv__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:57 (unwrap_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:35 (to_new_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:78 (chi_squared_map_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:78 (AbstractFit.chi_squared_map)" + ] + }, + { + "instruction": "input_reduce_fusion.17", + "ms": 0.0042399, + "opcode": "fusion", + "shape": "f64[20]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:90", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:90 (chi_squared_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:87 (AbstractFit.chi_squared)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:293 (FitDataset.chi_squared)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:345 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)" + ] + }, + { + "instruction": "input_reduce_fusion.26", + "ms": 0.003971200000000001, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:104", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:104 (noise_normalization_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:98 (AbstractFit.noise_normalization)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:306 (FitDataset.noise_normalization)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:349 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)" + ] + } + ] + }, + "stage_audit_note": "The HLO instructions that contributed most of each stage's milliseconds, with their full source stack. A stage row is only as good as the rules that built it; this is how a reader checks a row against the HLO instead of trusting it.", + "untraced_wall_ms": 339.70216369998525, + "reconciliation_vs_untraced_pct": 1.9838300193945109, + "wall_basis": "wall_ms is the TRACED run's wall, the run these kernel durations came from. untraced_wall_ms is the same executable without the profiler; the difference is the profiler's overhead and belongs in neither the stages nor the idle row.", + "calls": 10, + "call_split": "per-call (first-instruction recurrence)", + "call_blocks": 10, + "events": 153140, + "streams": [ + "Stream #14(MemcpyH2D,Compute,MemcpyD2H,MemcpyD2D)" + ], + "per_stage_ms": { + "border_relocator": { + "median_ms": 0.08922900000000002, + "min_ms": 0.08898699999999998, + "max_ms": 0.089595 + }, + "chi_squared_evidence": { + "median_ms": 0.0179675, + "min_ms": 0.017856, + "max_ms": 0.01824 + }, + "curvature_matrix_F": { + "median_ms": 4.347635, + "min_ms": 4.298933, + "max_ms": 4.450415 + }, + "data_vector_D": { + "median_ms": 0.003711, + "min_ms": 0.00368, + "max_ms": 0.004064 + }, + "fit_imaging_other": { + "median_ms": 0.20356000000000002, + "min_ms": 0.202903, + "max_ms": 0.204984 + }, + "inversion_other": { + "median_ms": 15.120502499999994, + "min_ms": 15.105346000000004, + "max_ms": 15.145547999999996 + }, + "mapping_matrix": { + "median_ms": 0.143898, + "min_ms": 0.143833, + "max_ms": 0.143931 + }, + "mesh_construction": { + "median_ms": 0.38174699999999995, + "min_ms": 0.3789579999999999, + "max_ms": 0.382571 + }, + "mixed_fusion": { + "median_ms": 4.934969499999999, + "min_ms": 4.928668, + "max_ms": 4.9390659999999995 + }, + "other": { + "median_ms": 0.19282349999999981, + "min_ms": 0.19251099999999982, + "max_ms": 0.1929849999999998 + }, + "pdip_solve": { + "median_ms": 295.52654799999823, + "min_ms": 295.43864599999813, + "max_ms": 295.6348649999981 + }, + "psf_convolution_mapping_matrix": { + "median_ms": 6.8293435, + "min_ms": 6.821425000000001, + "max_ms": 6.840367 + }, + "ray_trace_data_grid": { + "median_ms": 0.013248000000000001, + "min_ms": 0.013182, + "max_ms": 0.01344 + }, + "regularization_H": { + "median_ms": 0.60532, + "min_ms": 0.604616, + "max_ms": 0.607047 + } + }, + "stage_order": [ + "ray_trace_data_grid", + "border_relocator", + "mesh_construction", + "mapping_matrix", + "psf_convolution_mapping_matrix", + "data_vector_D", + "curvature_matrix_F", + "regularization_H", + "pdip_solve", + "chi_squared_evidence", + "inversion_other", + "fit_imaging_other", + "mixed_fusion", + "other" + ], + "mixed_fusion": { + "ms": 4.934969499999999, + "constituent_stage_sets": { + "curvature_reg_reduce_gather + inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": 2.2857649999999996, + "curvature_reg_reduce_gather + inversion_other + regularization_H": 1.286784, + "curvature_matrix_F + psf_convolution_mapping_matrix": 0.6965449, + "border_relocator + pdip_solve": 0.3668204, + "data_vector_D + psf_convolution_mapping_matrix": 0.1230032, + "inversion_other + mapping_matrix + regularization_H": 0.0371411, + "border_relocator + mesh_construction": 0.030446600000000004, + "border_relocator + inversion_other + mapping_matrix + mesh_construction": 0.0224119, + "border_relocator + ray_trace_data_grid": 0.0214297, + "inversion_other + mapping_matrix + mesh_construction": 0.015864999999999997, + "border_relocator + inversion_other + pdip_solve": 0.0101405, + "inversion_other + mapped_reconstruction": 0.0085723, + "inversion_other + mapped_reconstruction + reconstruction_scatter": 0.0078846, + "curvature_reg_reduce_gather + inversion_other + mapped_reconstruction + reconstruction_scatter": 0.007580399999999999, + "inversion_other + mesh_construction": 0.005462399999999998, + "inversion_other + ray_trace_data_grid": 0.0048092000000000005, + "border_relocator + inversion_other + mesh_construction": 0.0027295000000000006, + "chi_squared_evidence + inversion_other": 0.0019584 + }, + "example_kernels": { + "curvature_reg_reduce_gather + inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": [ + "loop_add_multiply_fusion" + ], + "curvature_reg_reduce_gather + inversion_other + regularization_H": [ + "input_transpose_fusion.2" + ], + "curvature_matrix_F + psf_convolution_mapping_matrix": [ + "loop_divide_gather_fusion" + ], + "border_relocator + pdip_solve": [ + "input_transpose_fusion.4" + ], + "data_vector_D + psf_convolution_mapping_matrix": [ + "input_reduce_fusion.11" + ], + "inversion_other + mapping_matrix + regularization_H": [ + "input_scatter_fusion.3", + "input_scatter_fusion.4", + "input_scatter_fusion.1", + "input_scatter_fusion.2" + ], + "border_relocator + mesh_construction": [ + "loop_reduce_fusion.2", + "loop_select_fusion.5" + ], + "border_relocator + inversion_other + mapping_matrix + mesh_construction": [ + "input_scatter_fusion.8", + "input_scatter_fusion.5" + ], + "border_relocator + ray_trace_data_grid": [ + "input_reduce_fusion.15", + "input_concatenate_fusion.5", + "input_reduce_fusion.14", + "loop_add_fusion.5" + ], + "inversion_other + mapping_matrix + mesh_construction": [ + "input_scatter_fusion.6" + ] + }, + "prorated_estimate_ms": { + "inversion_other": 0.9285671249999998, + "curvature_reg_reduce_gather": 0.8879760999999999, + "pdip_solve": 0.6439433666666665, + "mapped_reconstruction": 0.4659624499999999, + "reconstruction_scatter": 0.46167629999999993, + "regularization_H": 0.4413083666666666, + "psf_convolution_mapping_matrix": 0.40977405, + "curvature_matrix_F": 0.34827245, + "border_relocator": 0.219241325, + "data_vector_D": 0.0615016, + "mesh_construction": 0.029755641666666666, + "mapping_matrix": 0.023271675, + "ray_trace_data_grid": 0.01311945, + "chi_squared_evidence": 0.0009792 + }, + "prorated_note": "ESTIMATE ONLY \u2014 a mixed fusion's time split equally across the stages its constituents span. Never summed into the measured table, never reconciled." + }, + "other_sources_ms": { + "copy.33": 0.02978110000000007, + "copy.34": 0.029746800000000066, + "copy.52": 0.028548900000000037, + "copy.42": 0.02852090000000004, + "copy.43": 0.0283273, + "copy.51": 0.02815969999999999, + "loop_reduce_window_fusion": 0.006348299999999999, + "loop_reduce_window_fusion.1": 0.0043326, + "loop_broadcast_fusion.4": 0.0020446, + "loop_broadcast_fusion.2": 0.0020159999999999996, + "copy.90": 0.0018048, + "copy.44": 0.0015806999999999998, + "copy.26": 0.0015677999999999998 + }, + "device_span_ms": 346.4577792, + "device_busy_ms": 328.4270045, + "device_idle_ms": 18.030774699999995, + "largest_idle_gaps": [ + { + "gap_ms": 0.064094, + "after": "loop_broadcast_fusion.8", + "before": "loop_broadcast_fusion.10" + }, + { + "gap_ms": 0.042015, + "after": "input_concatenate_fusion.5", + "before": "custom-call.3" + }, + { + "gap_ms": 0.02803, + "after": "loop_add_fusion.3", + "before": "loop_select_fusion.4" + }, + { + "gap_ms": 0.026143, + "after": "copy.52", + "before": "loop_add_fusion.1" + }, + { + "gap_ms": 0.025855, + "after": "loop_multiply_fusion.4", + "before": "eigh.0" + }, + { + "gap_ms": 0.025855, + "after": "eigh.0", + "before": "eigh.0" + }, + { + "gap_ms": 0.024223, + "after": "loop_add_fusion.4", + "before": "input_concatenate_fusion.1" + }, + { + "gap_ms": 0.018111, + "after": "while.52", + "before": "input_reduce_fusion" + } + ], + "kernel_ms": 328.41050249999824, + "sum_ms": 346.44127719999824, + "wall_ms": 346.54983739965246, + "host_outside_span_ms": 0.0920581996524561, + "reconciliation_pct": -0.031325999304690426, + "unjoined_ms": 0.0, + "unjoined_pct": 0.0, + "other_ms": 0.19282349999999981, + "other_pct": 0.055640914867211295, + "note": "Stage rows attribute the command-buffers-OFF program (see the module docstring): kernel times are the same, the launch overhead the CUDA graphs remove is not. sum_ms = kernel rows + device_idle_ms; the residual against wall_ms is host_outside_span_ms (dispatch before the first kernel, teardown after the last).", + "per_stage_ms_per_lane": { + "border_relocator": 0.0044614500000000005, + "chi_squared_evidence": 0.0008983750000000001, + "curvature_matrix_F": 0.21738175, + "data_vector_D": 0.00018554999999999998, + "fit_imaging_other": 0.010178000000000001, + "inversion_other": 0.7560251249999996, + "mapping_matrix": 0.0071949, + "mesh_construction": 0.019087349999999996, + "mixed_fusion": 0.24674847499999997, + "other": 0.009641174999999991, + "pdip_solve": 14.77632739999991, + "psf_convolution_mapping_matrix": 0.341467175, + "ray_trace_data_grid": 0.0006624000000000001, + "regularization_H": 0.030265999999999998 + }, + "per_lane_divisor": 20, + "host_callback": { + "pure_callback_span_ms": 0, + "qhull_ms": 0.0, + "callback_body_ms_note": "the OUTERMOST matching body event, not a sum: under the probe the body appears twice (the wrapper and the timed re-implementation it calls) and summing them would count the same work twice", + "events_by_name": { + "ThenExecuteCallback:GetEventForComputeStreamSyncPoint": { + "count": 10, + "ms": 0.0198428 + } + }, + "note": "HOST milliseconds per traced BATCH (the whole invocation), aggregated by name because the events nest. Not a row of the device table: the device pays for them as the idle gaps largest_idle_gaps names." + }, + "host_callback_ms": 0 + }, + "hlo_census": { + "status": "excluded", + "reason": "The legacy census anchors PyAutoArray source line numbers that moved after the phase-1 run. No batched attribution is published from unsupported anchors; the device-event table and wall reconciliation remain valid." + }, + "trace_split": { + "expected_calls": 10, + "executions_per_invocation": 1, + "method": "per-call (first-instruction recurrence)", + "note": "DECIDED IN CODE: the scalar arm's trace is split by trace_calls * B, so every lane's execution is its own block and the per-stage median is taken over all of them. The vmap arm's is split by trace_calls, one block per batched execution, and per_stage_ms_per_lane divides those rows by B." + } + }, + "scalar": { + "arm": "scalar", + "program": "jax.jit(fn), called B times", + "stands_for": "Nautilus(use_jax_vmap=False, use_jax_jit=True). Plain use_jax_vmap=False is UNJITTED and is NOT this arm", + "hlo_source": "jax.jit(fn).lower(lane_trees[0]) \u2014 the same program phase 1 traced", + "batch_wall_ms": 795.0810878999619, + "wall_production_nesting_ms": 795.0810878999619, + "wall_aot_command_buffers_on_ms": 795.4915517999325, + "wall_aot_command_buffers_off_ms": 801.7241957997612, + "command_buffer_delta_ms": 6.232643999828724, + "production_nesting_vs_aot_on_delta_ms": -0.4104638999706367, + "production_nesting_vs_aot_on_delta_pct": -0.051598775504515866, + "wall_per_lane_ms": 39.75405439499809, + "wall_per_lane_command_buffers_off_ms": 40.08620978998806, + "traced_batch_wall_ms": 821.7257767999399, + "untraced_batch_wall_ms": 801.5131094001845, + "traced_wall_per_lane_ms": 41.086288839996996, + "callback_count_per_call": 0.0, + "callback_count_per_lane": 0.0, + "callback_expectation": "0 \u2014 the rectangular mesh has no qhull host callback (asserted)", + "host_qhull_ms": 0.0, + "host_tables_ms": 0.0, + "host_qhull_ms_per_lane": 0.0, + "host_tables_ms_per_lane": 0.0, + "host_callback_probe": { + "calls": 0, + "qhull_ms_total": 0.0, + "tables_ms_total": 0.0, + "total_ms_total": 0.0, + "qhull_ms_mean": 0.0, + "tables_ms_mean": 0.0, + "total_ms_mean": 0.0, + "non_finite_calls": 0, + "n_points": [] + }, + "host_callback_records_first": [], + "device_idle_ms": 2.0601344000000026, + "device_idle_ms_per_lane": 2.0601344000000026, + "trace": { + "parser": "ProfileData.from_file(xplane) + as_text() + stack_frame_index(proto field 17)", + "stage_audit": { + "mesh_construction": [ + { + "instruction": "fusion.2", + "ms": 0.14776041999999864, + "opcode": "fusion", + "shape": "(f64[15361,2]{1,0}, s64[15361,2]{1,0}, s32[15361,2]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:227", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:227 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_select_fusion", + "ms": 0.03910720499999924, + "opcode": "fusion", + "shape": "(u32[2,15361]{1,0}, u32[2,15361]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69 (forward_interp)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:573 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/abstract.py:36 (AbstractInterpolator.mappings)" + ] + }, + { + "instruction": "loop_select_fusion.4", + "ms": 0.03448014500000072, + "opcode": "fusion", + "shape": "(u32[15361]{0}, u32[15361]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_select_fusion.1", + "ms": 0.03444267500000079, + "opcode": "fusion", + "shape": "(u32[15361]{0}, u32[15361]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_add_fusion", + "ms": 0.0211928600000002, + "opcode": "fusion", + "shape": "s64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69 (forward_interp)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:573 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/abstract.py:36 (AbstractInterpolator.mappings)" + ] + }, + { + "instruction": "loop_add_fusion.5", + "ms": 0.020496519999999983, + "opcode": "fusion", + "shape": "s64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "mixed_fusion": [ + { + "instruction": "loop_divide_gather_fusion", + "ms": 0.69575344, + "opcode": "fusion", + "shape": "(f64[15361,1,1,1521]{3,2,1,0}, f64[15361,1,1,1521]{3,2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_add_multiply_fusion", + "ms": 0.08956260500000006, + "opcode": "fusion", + "shape": "(f64[1369,1369]{1,0}, f64[1369,1369]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:61", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:61 (initialize)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:72 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:508 (reconstruction_positive_only_from)" + ] + }, + { + "instruction": "input_transpose_fusion.3", + "ms": 0.030728550000000007, + "opcode": "fusion", + "shape": "f64[1521,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1157 (AbstractInversion.log_det_regularization_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:348 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "loop_reduce_fusion.1", + "ms": 0.02684907500000007, + "opcode": "fusion", + "shape": "f64[92,2]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:556", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:556 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/abstract.py:36 (AbstractInterpolator.mappings)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:167 (Mapper.pix_indexes_for_sub_slim_index)" + ] + }, + { + "instruction": "input_transpose_fusion.2", + "ms": 0.025508610000000008, + "opcode": "fusion", + "shape": "f64[1521,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1078 (AbstractInversion.log_det_curvature_reg_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:347 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "input_transpose_fusion.4", + "ms": 0.016028075000000003, + "opcode": "fusion", + "shape": "f64[1369,1369]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:62", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:62 (initialize)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:72 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:508 (reconstruction_positive_only_from)" + ] + } + ], + "ray_trace_data_grid": [ + { + "instruction": "input_reduce_fusion.14", + "ms": 0.002696569999999995, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:506", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:506 (FlatLambdaCDM._simpson_1d)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:644 (FlatLambdaCDM.angular_diameter_distance_kpc_z1z2)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:133 (LensingCosmology.angular_diameter_distance_to_earth_in_kpc_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:362 (LensingCosmology.scaling_factor_between_redshifts_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer_util.py:252 (traced_grid_2d_list_from)" + ] + }, + { + "instruction": "input_reduce_fusion.16", + "ms": 0.002675815, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:506", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:506 (FlatLambdaCDM._simpson_1d)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:644 (FlatLambdaCDM.angular_diameter_distance_kpc_z1z2)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:151 (LensingCosmology.angular_diameter_distance_between_redshifts_in_kpc_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:355 (LensingCosmology.scaling_factor_between_redshifts_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer_util.py:252 (traced_grid_2d_list_from)" + ] + }, + { + "instruction": "input_reduce_fusion.15", + "ms": 0.0025711899999999975, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:503", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:503 (FlatLambdaCDM._simpson_1d)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:644 (FlatLambdaCDM.angular_diameter_distance_kpc_z1z2)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:133 (LensingCosmology.angular_diameter_distance_to_earth_in_kpc_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:362 (LensingCosmology.scaling_factor_between_redshifts_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer_util.py:252 (traced_grid_2d_list_from)" + ] + }, + { + "instruction": "input_reduce_fusion.17", + "ms": 0.0025629949999999993, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:503", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:503 (FlatLambdaCDM._simpson_1d)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:644 (FlatLambdaCDM.angular_diameter_distance_kpc_z1z2)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:151 (LensingCosmology.angular_diameter_distance_between_redshifts_in_kpc_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:355 (LensingCosmology.scaling_factor_between_redshifts_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer_util.py:252 (traced_grid_2d_list_from)" + ] + }, + { + "instruction": "loop_divide_fusion.2", + "ms": 0.0022049500000000007, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:380", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:380 (LensingCosmology.scaling_factor_between_redshifts_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer_util.py:252 (traced_grid_2d_list_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer.py:632 (Tracer.traced_grid_2d_list_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/structures/decorators/abstract.py:93 (AbstractMaker.evaluate_func)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/structures/decorators/abstract.py:110 (AbstractMaker.result)" + ] + } + ], + "border_relocator": [ + { + "instruction": "eigh.0", + "ms": 0.07413607500000029, + "opcode": "custom-call", + "shape": "(f64[2,2]{0,1}, f64[2]{0}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "custom-call.2", + "ms": 0.007901840000000005, + "opcode": "custom-call", + "shape": "(f64[2,2]{1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_select_sine_fusion", + "ms": 0.003288144999999991, + "opcode": "fusion", + "shape": "(f64[], f64[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:301", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:301 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:423 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_reduce_fusion.19", + "ms": 0.0015626899999999979, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:256", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:256 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_multiply_fusion.3", + "ms": 0.0015486099999999984, + "opcode": "fusion", + "shape": "f64[2,2]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + } + ], + "other": [ + { + "instruction": "copy.31", + "ms": 0.030053394999998925, + "opcode": "copy", + "shape": "u32[2,15361]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.32", + "ms": 0.029770839999999087, + "opcode": "copy", + "shape": "u32[2,15361]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.49", + "ms": 0.028496110000001, + "opcode": "copy", + "shape": "u32[15361]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.41", + "ms": 0.028274354999999834, + "opcode": "copy", + "shape": "u32[15361]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.50", + "ms": 0.02822928499999978, + "opcode": "copy", + "shape": "u32[15361]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.40", + "ms": 0.028172664999999677, + "opcode": "copy", + "shape": "u32[15361]{0}", + "source": "", + "stack": [] + } + ], + "mapping_matrix": [ + { + "instruction": "loop_broadcast_fusion.1", + "ms": 0.13632439000000002, + "opcode": "fusion", + "shape": "f64[15361,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:342", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:342 (mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:283 (Mapper.mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:91 (AbstractInversionImaging._mapping_matrix_for_convolution_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:137 (AbstractInversionImaging.operated_mapping_matrix_list)" + ] + }, + { + "instruction": "input_reduce_fusion.25", + "ms": 0.002810670000000008, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:362 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + }, + { + "instruction": "loop_divide_fusion.1", + "ms": 0.0023362750000000035, + "opcode": "fusion", + "shape": "f64[1521]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:92", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:92 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:362 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + } + ], + "regularization_H": [ + { + "instruction": "loop_broadcast_fusion.2", + "ms": 0.01918764500000001, + "opcode": "fusion", + "shape": "(f64[1521,1521]{1,0}, f64[1521,1521]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:111", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:111 (weighted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:366 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_scatter_fusion.8", + "ms": 0.0028247199999999997, + "opcode": "fusion", + "shape": "f64[1521,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:123 (weighted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:366 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "psf_convolution_mapping_matrix": [ + { + "instruction": "fft.19.0", + "ms": 1.7800637849999974, + "opcode": "fft", + "shape": "f64[1521,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_scatter_fusion", + "ms": 1.4226850849999995, + "opcode": "fusion", + "shape": "f64[1521,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.15.0", + "ms": 1.382435984999998, + "opcode": "fft", + "shape": "c128[1521,180,91]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.17.0", + "ms": 0.9923389550000007, + "opcode": "fft", + "shape": "c128[1521,91,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_transpose_fusion.1", + "ms": 0.5223432699999999, + "opcode": "fusion", + "shape": "c128[1521,91,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "wrapped_transpose.2", + "ms": 0.5055582950000004, + "opcode": "fusion", + "shape": "c128[1521,180,91]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + } + ], + "curvature_matrix_F": [ + { + "instruction": "cublas-lt-matmul.2", + "ms": 4.346808074999999, + "opcode": "custom-call", + "shape": "(f64[1521,1521]{1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "data_vector_D": [ + { + "instruction": "input_reduce_fusion.7", + "ms": 0.11361031000000008, + "opcode": "fusion", + "shape": "f64[92,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123 (data_vector_via_blurred_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:67 (InversionImagingMapping.data_vector)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:699 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_reduce_fusion.23", + "ms": 0.0037116350000000026, + "opcode": "fusion", + "shape": "f64[1521]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123 (data_vector_via_blurred_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:67 (InversionImagingMapping.data_vector)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:699 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "inversion_other": [ + { + "instruction": "cholesky.60", + "ms": 0.9182449849999995, + "opcode": "custom-call", + "shape": "(f64[1521,1521]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1078 (AbstractInversion.log_det_curvature_reg_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:347 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "cholesky.70", + "ms": 0.9018989549999996, + "opcode": "custom-call", + "shape": "(f64[1521,1521]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1157 (AbstractInversion.log_det_regularization_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:348 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "input_reduce_fusion.13", + "ms": 0.01896757500000001, + "opcode": "fusion", + "shape": "f64[1521]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:946", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:946 (AbstractInversion.regularization_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:346 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)", + "/mnt/ral/jnightin/autolens_profiling_wt/certified-solver-phase-c1-lane-rate/scripts/imaging/likelihood_breakdown/fixed_light_trace.py:1195 (_captured_likelihood_fn.._likelihood)" + ] + }, + { + "instruction": "loop_reduce_window_fusion.3", + "ms": 0.005836709999999998, + "opcode": "fusion", + "shape": "s64[6,16]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "input_scatter_fusion.11", + "ms": 0.003847810000000003, + "opcode": "fusion", + "shape": "pred[1521]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:526", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:526 (AbstractInversion.zeroed_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:567 (AbstractInversion.solve_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:684 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_reduce_window_fusion.2", + "ms": 0.003013245000000001, + "opcode": "fusion", + "shape": "s64[86,16]{1,0}", + "source": "", + "stack": [] + } + ], + "pdip_solve": [ + { + "instruction": "cholesky.20", + "ms": 13.442404870000248, + "opcode": "custom-call", + "shape": "(f64[1369,1369]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:106", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:106 (factorize_kkt)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:212 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve", + "ms": 2.0498154249999825, + "opcode": "custom-call", + "shape": "(f64[1369,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:213 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve.2", + "ms": 1.9589206850000624, + "opcode": "custom-call", + "shape": "(f64[1369,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:217 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve.3", + "ms": 1.9444542300001024, + "opcode": "custom-call", + "shape": "(f64[1369,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:217 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve.1", + "ms": 1.8951437750001001, + "opcode": "custom-call", + "shape": "(f64[1369,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:213 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "cholesky.40", + "ms": 0.8452861800000001, + "opcode": "custom-call", + "shape": "(f64[1369,1369]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:62", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:62 (initialize)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:72 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:508 (reconstruction_positive_only_from)" + ] + } + ], + "mapped_reconstruction": [ + { + "instruction": "input_reduce_fusion.10", + "ms": 0.11159355000000003, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163 (mapped_reconstructed_data_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:120 (InversionImagingMapping._mapped_reconstructed_data_dict_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:196 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + } + ], + "chi_squared_evidence": [ + { + "instruction": "input_reduce_fusion.22", + "ms": 0.003904100000000003, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:104", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:104 (noise_normalization_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:98 (AbstractFit.noise_normalization)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:306 (FitDataset.noise_normalization)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:349 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)" + ] + }, + { + "instruction": "input_reduce_fusion.24", + "ms": 0.003776604999999993, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:90", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:90 (chi_squared_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:87 (AbstractFit.chi_squared)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:293 (FitDataset.chi_squared)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:345 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)" + ] + }, + { + "instruction": "loop_multiply_fusion.2", + "ms": 0.0029628499999999995, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:300", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:300 (AbstractNDArray.__pow__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:60 (unwrap_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:35 (to_new_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:78 (chi_squared_map_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:78 (AbstractFit.chi_squared_map)" + ] + } + ] + }, + "stage_audit_note": "The HLO instructions that contributed most of each stage's milliseconds, with their full source stack. A stage row is only as good as the rules that built it; this is how a reader checks a row against the HLO instead of trusting it.", + "untraced_wall_ms": 40.075655470009224, + "reconciliation_vs_untraced_pct": 2.2768945867239294, + "wall_basis": "wall_ms is the TRACED run's wall, the run these kernel durations came from. untraced_wall_ms is the same executable without the profiler; the difference is the profiler's overhead and belongs in neither the stages nor the idle row.", + "calls": 200, + "call_split": "per-call (first-instruction recurrence)", + "call_blocks": 200, + "events": 179960, + "streams": [ + "Stream #14(MemcpyD2D,MemcpyH2D,Compute,MemcpyD2H,Memset)" + ], + "per_stage_ms": { + "border_relocator": { + "median_ms": 0.08844750000000004, + "min_ms": 0.08780900000000001, + "max_ms": 0.08930800000000001 + }, + "chi_squared_evidence": { + "median_ms": 0.010624, + "min_ms": 0.010304, + "max_ms": 0.011103 + }, + "curvature_matrix_F": { + "median_ms": 4.323899, + "min_ms": 4.291949, + "max_ms": 4.497648 + }, + "data_vector_D": { + "median_ms": 0.1172625, + "min_ms": 0.116354, + "max_ms": 0.118491 + }, + "inversion_other": { + "median_ms": 1.866646, + "min_ms": 1.8507090000000002, + "max_ms": 1.8894960000000003 + }, + "mapped_reconstruction": { + "median_ms": 0.11158, + "min_ms": 0.110881, + "max_ms": 0.112673 + }, + "mapping_matrix": { + "median_ms": 0.141473, + "min_ms": 0.141378, + "max_ms": 0.141569 + }, + "memset": { + "median_ms": 0.04895850000000003, + "min_ms": 0.032607, + "max_ms": 0.066333 + }, + "mesh_construction": { + "median_ms": 0.38071449999999984, + "min_ms": 0.3782580000000003, + "max_ms": 0.38289599999999974 + }, + "mixed_fusion": { + "median_ms": 0.993845, + "min_ms": 0.9919620000000001, + "max_ms": 0.996029 + }, + "other": { + "median_ms": 0.19372999999999985, + "min_ms": 0.19275899999999985, + "max_ms": 0.1941779999999998 + }, + "pdip_solve": { + "median_ms": 23.777701499999992, + "min_ms": 15.245406000000001, + "max_ms": 32.29393599999996 + }, + "psf_convolution_mapping_matrix": { + "median_ms": 6.838433, + "min_ms": 6.816744, + "max_ms": 6.855515 + }, + "ray_trace_data_grid": { + "median_ms": 0.012702999999999999, + "min_ms": 0.012607, + "max_ms": 0.01296 + }, + "regularization_H": { + "median_ms": 0.021984, + "min_ms": 0.021408, + "max_ms": 0.022784 + } + }, + "stage_order": [ + "ray_trace_data_grid", + "border_relocator", + "mesh_construction", + "mapping_matrix", + "psf_convolution_mapping_matrix", + "data_vector_D", + "curvature_matrix_F", + "regularization_H", + "pdip_solve", + "mapped_reconstruction", + "chi_squared_evidence", + "inversion_other", + "mixed_fusion", + "other", + "memset" + ], + "mixed_fusion": { + "ms": 0.993845, + "constituent_stage_sets": { + "curvature_matrix_F + psf_convolution_mapping_matrix": 0.69575344, + "inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": 0.08956260500000006, + "inversion_other + regularization_H": 0.030728550000000007, + "border_relocator + mesh_construction": 0.030251120000000083, + "curvature_reg_reduce_gather + inversion_other": 0.025508610000000008, + "border_relocator + inversion_other + mapping_matrix + mesh_construction": 0.020632850000000015, + "border_relocator + ray_trace_data_grid": 0.020402920000000015, + "border_relocator + pdip_solve": 0.016028075000000003, + "inversion_other + mapping_matrix + regularization_H": 0.015496104999999948, + "inversion_other + mapping_matrix + mesh_construction": 0.013131510000000011, + "inversion_other + mapped_reconstruction + reconstruction_scatter": 0.009573015000000006, + "inversion_other + mapped_reconstruction": 0.00887603, + "inversion_other + mesh_construction": 0.005444554999999989, + "inversion_other + ray_trace_data_grid": 0.004786164999999999, + "border_relocator + inversion_other": 0.0033375650000000007, + "border_relocator + inversion_other + mesh_construction": 0.002490675000000004, + "chi_squared_evidence + inversion_other": 0.001796439999999996 + }, + "example_kernels": { + "curvature_matrix_F + psf_convolution_mapping_matrix": [ + "loop_divide_gather_fusion" + ], + "inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": [ + "loop_add_multiply_fusion" + ], + "inversion_other + regularization_H": [ + "input_transpose_fusion.3" + ], + "border_relocator + mesh_construction": [ + "loop_reduce_fusion.1", + "loop_select_fusion.5" + ], + "curvature_reg_reduce_gather + inversion_other": [ + "input_transpose_fusion.2" + ], + "border_relocator + inversion_other + mapping_matrix + mesh_construction": [ + "input_scatter_fusion.6", + "input_scatter_fusion.10" + ], + "border_relocator + ray_trace_data_grid": [ + "input_reduce_fusion.12", + "input_concatenate_fusion.4", + "input_reduce_fusion.11", + "loop_add_fusion.7" + ], + "border_relocator + pdip_solve": [ + "input_transpose_fusion.4" + ], + "inversion_other + mapping_matrix + regularization_H": [ + "input_scatter_fusion.4", + "input_scatter_fusion.5", + "input_scatter_fusion.2", + "input_scatter_fusion.3" + ], + "inversion_other + mapping_matrix + mesh_construction": [ + "input_scatter_fusion.7" + ] + }, + "prorated_estimate_ms": { + "curvature_matrix_F": 0.34787672, + "psf_convolution_mapping_matrix": 0.34787672, + "inversion_other": 0.08135158958333334, + "border_relocator": 0.040998277500000055, + "pdip_solve": 0.030404688750000016, + "mapped_reconstruction": 0.030019671250000015, + "mesh_construction": 0.028213445000000042, + "reconstruction_scatter": 0.025581656250000015, + "regularization_H": 0.02052964333333332, + "mapping_matrix": 0.014700750833333324, + "curvature_reg_reduce_gather": 0.012754305000000004, + "ray_trace_data_grid": 0.012594542500000007, + "chi_squared_evidence": 0.000898219999999998 + }, + "prorated_note": "ESTIMATE ONLY \u2014 a mixed fusion's time split equally across the stages its constituents span. Never summed into the measured table, never reconciled." + }, + "other_sources_ms": { + "copy.31": 0.030053394999998925, + "copy.32": 0.029770839999999087, + "copy.49": 0.028496110000001, + "copy.41": 0.028274354999999834, + "copy.50": 0.02822928499999978, + "copy.40": 0.028172664999999677, + "loop_reduce_window_fusion": 0.006531594999999978, + "loop_reduce_window_fusion.1": 0.004298990000000014, + "copy.69": 0.0017865349999999975, + "loop_broadcast_fusion.3": 0.001766694999999998, + "copy.90": 0.0016729150000000003, + "copy.33": 0.0015499100000000005, + "copy.42": 0.0015479550000000004, + "copy.24": 0.0015428550000000007 + }, + "device_span_ms": 41.082610515, + "device_busy_ms": 39.022476114999996, + "device_idle_ms": 2.0601344000000026, + "largest_idle_gaps": [ + { + "gap_ms": 0.042206, + "after": "input_concatenate_fusion.4", + "before": "custom-call.2" + }, + { + "gap_ms": 0.03459, + "after": "loop_add_fusion.5", + "before": "loop_select_fusion.4" + }, + { + "gap_ms": 0.033695, + "after": "loop_multiply_fusion.3", + "before": "eigh.0" + }, + { + "gap_ms": 0.025087, + "after": "copy.41", + "before": "loop_add_fusion.5" + }, + { + "gap_ms": 0.024959, + "after": "loop_broadcast_fusion.6", + "before": "loop_broadcast_fusion.8" + }, + { + "gap_ms": 0.023584, + "after": "while.28", + "before": "input_reduce_fusion" + }, + { + "gap_ms": 0.019967, + "after": "while.28", + "before": "input_reduce_fusion" + }, + { + "gap_ms": 0.018847, + "after": "eigh.0", + "before": "eigh.0" + } + ], + "kernel_ms": 38.92800149999999, + "sum_ms": 40.988135899999996, + "wall_ms": 41.086288839996996, + "host_outside_span_ms": 0.003678324996997162, + "reconciliation_pct": -0.23889463557840093, + "unjoined_ms": 0.0, + "unjoined_pct": 0.0, + "other_ms": 0.19372999999999985, + "other_pct": 0.4715198317240229, + "note": "Stage rows attribute the command-buffers-OFF program (see the module docstring): kernel times are the same, the launch overhead the CUDA graphs remove is not. sum_ms = kernel rows + device_idle_ms; the residual against wall_ms is host_outside_span_ms (dispatch before the first kernel, teardown after the last).", + "per_stage_ms_per_lane": { + "border_relocator": 0.08844750000000004, + "chi_squared_evidence": 0.010624, + "curvature_matrix_F": 4.323899, + "data_vector_D": 0.1172625, + "inversion_other": 1.866646, + "mapped_reconstruction": 0.11158, + "mapping_matrix": 0.141473, + "memset": 0.04895850000000003, + "mesh_construction": 0.38071449999999984, + "mixed_fusion": 0.993845, + "other": 0.19372999999999985, + "pdip_solve": 23.777701499999992, + "psf_convolution_mapping_matrix": 6.838433, + "ray_trace_data_grid": 0.012702999999999999, + "regularization_H": 0.021984 + }, + "per_lane_divisor": 1, + "host_callback": { + "pure_callback_span_ms": 0, + "qhull_ms": 0.0, + "callback_body_ms_note": "the OUTERMOST matching body event, not a sum: under the probe the body appears twice (the wrapper and the timed re-implementation it calls) and summing them would count the same work twice", + "events_by_name": { + "ThenExecuteCallback:GetEventForComputeStreamSyncPoint": { + "count": 200, + "ms": 0.3641773 + } + }, + "note": "HOST milliseconds per traced BATCH (the whole invocation), aggregated by name because the events nest. Not a row of the device table: the device pays for them as the idle gaps largest_idle_gaps names." + }, + "host_callback_ms": 0 + }, + "hlo_census": { + "status": "excluded", + "reason": "The legacy census anchors PyAutoArray source line numbers that moved after the phase-1 run. No batched attribution is published from unsupported anchors; the device-event table and wall reconciliation remain valid." + }, + "trace_split": { + "expected_calls": 200, + "executions_per_invocation": 20, + "method": "per-call (first-instruction recurrence)", + "note": "DECIDED IN CODE: the scalar arm's trace is split by trace_calls * B, so every lane's execution is its own block and the per-stage median is taken over all of them. The vmap arm's is split by trace_calls, one block per batched execution, and per_stage_ms_per_lane divides those rows by B." + } + } + }, + "certification_report": { + "source": "vmap arm, library solve observed through its stats= out-dict (PyAutoArray #566) and jax.debug.callback(..., ordered=True); ordered because the unordered batching rule returns the lanes permuted. Untimed, separately compiled; max rel diff of its log likelihoods vs the timed arm's: 1.987e-07", + "rows": 0, + "pdip_iter": "NOT AVAILABLE per lane without changing library numerics. The fallback branch calls the library's own reconstruction_positive_only_from, which returns the solution alone \u2014 jax_nnls.solve_nnls' iteration count is discarded inside the library's custom_vjp primal. The PDIP while_loop's cost is in the pdip_solve stage row of each arm's device table instead, which is a max-over-lanes quantity under vmap because every lane runs the same fixed kernel sequence.", + "passes_semantics": "library `passes`: restricted active-set passes run (jax_active_set.solve_certified)" + }, + "lane_construction": { + "draws_sha256": "8cddafd199e104718f58a97cf7a1ab5896f14415cfb2b1c64230c78557388dba", + "lane_rows": [ + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179 + ], + "calls": [ + 8 + ], + "stage": "pix2", + "regularization_range": { + "galaxies.source.pixelization.regularization.inner_coefficient": { + "min": 1.0935169824695694e-06, + "max": 138.59890275651458 + }, + "galaxies.source.pixelization.regularization.outer_coefficient": { + "min": 3.114197989844157e-06, + "max": 74.49747633293859 + }, + "galaxies.source.pixelization.regularization.signal_scale": { + "min": 0.035325131608288984, + "max": 0.993503904012744 + } + }, + "phases": [ + "exploration" + ], + "window_rule": "nautilus_batches.timed_window: consecutive captured calls, in call order, from the FIRST call that is not a prior batch, concatenated and truncated to B; at B == n_batch exactly one real Nautilus batch. Falls back to the latest B lanes if the post-prior lanes run out; never repeats a lane.", + "note": "Lane k is captured lane lane_rows[k]: the mass AND shear of a real Nautilus proposal (nautilus_batch_capture.py), lens light fixed at S3, the S3 light-subtracted dataset shared by every lane. `offsets` in the lane table are the mass offsets from the fiducial; the shear is in the capture file." + }, + "captured": { + "batches_path": "/mnt/ral/jnightin/autolens_profiling_wt/certified-solver-phase-c1-lane-rate/results/breakdown/imaging/nautilus_batches_rectangular_pix2.npz", + "batches_sha256": "77f052c40d028d2e54ab6efb1c3f1d7bdf1922da01e74916f7b206db0259df03", + "schema_version": 2, + "n_calls": 142, + "n_lanes": 2840, + "call_sizes_seen": [ + 20 + ], + "calls_by_phase": { + "prior": 8, + "exploration": 134 + }, + "parameter_paths": [ + "galaxies.source.pixelization.regularization.inner_coefficient", + "galaxies.source.pixelization.regularization.outer_coefficient", + "galaxies.source.pixelization.regularization.signal_scale" + ], + "stage": "pix2", + "regularization": { + "class": "Adapt", + "free": true, + "priors": { + "inner_coefficient": [ + "LogUniform", + 1e-06, + 1000000.0 + ], + "outer_coefficient": [ + "LogUniform", + 1e-06, + 1000000.0 + ], + "signal_scale": [ + "Uniform", + 0.0, + 1.0 + ] + }, + "priors_source": "PyAutoGalaxy packaged config/priors/regularization (adapt_split.yaml / adapt.yaml / constant.yaml); adapt_split.yaml and adapt.yaml are identical to euclid_strong_lens_modeling_pipeline/config/priors/regularization/'s copies" + }, + "nautilus": { + "departures_from_production": [ + "mass/shear fixed at the S3 fiducial, not at a source_pix_1 result", + "no positions likelihood", + "the cell's mesh (39x39 RectangularBilinearAdaptImage, weight_power 1, weight_floor 0) fixed in both stages; source_pix_1 uses RectangularBilinearAdaptDensity, source_pix_2 frees weight_power / weight_floor", + "seeded (production passes no seed)", + "quick updates disabled (iterations_per_quick_update=1e12; render-only)", + "NullPaths: no output directory, so no checkpoint and one Sampler.run call", + "post-fit perform_update skipped (samples / latent variables never built)" + ], + "n_batch": 20, + "n_like_max": 40000, + "n_live": 75, + "number_of_cores": 1, + "production_reference": "euclid_strong_lens_modeling_pipeline/scripts/full_model.py source_pix_1 (n_live=150) / source_pix_2 (n_live=75): af.Nautilus(n_batch=20, **SettingsSearch.search_dict) with use_jax_vmap=True and number_of_cores=1 (SettingsSearch defaults)", + "production_stage": "source_pix_2", + "seed": 1, + "stage": "pix2", + "use_jax_vmap": true, + "version": "1.0.5" + }, + "capture_fit_status": "sampling complete (n_like_max or convergence); post-fit result skipped", + "capture_library_revisions": { + "PyAutoArray": { + "head": "3de624b5b91a4efa130dc3cb0a3a0f06f85025a3", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoArray" + }, + "PyAutoFit": { + "head": "dd9fbe0aab60c4a57702b1444ca031b317c91331", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoFit" + }, + "PyAutoGalaxy": { + "head": "70a61e26cd715cefe7012a38285698091246a8a4", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy" + }, + "PyAutoLens": { + "head": "86054bbc19baa2f710a12e04a94fa27ab37cc354", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoLens" + }, + "PyAutoNerves": { + "head": "1fa613aa8d89a79613009fb66f5b4e2d21deb57a", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoNerves" + } + }, + "fingerprint_check": { + "fields": [ + "mesh", + "source_pixels", + "dataset_sha256", + "regularization_class", + "regularization_s0_fiducial", + "border_relocator", + "use_mixed_precision", + "log_evidence_s3_library" + ], + "not_identity": "the regularization coefficients: free per lane since the capture frees them", + "log_evidence_s3_library_rel_diff": 0.0, + "passed": true + }, + "timed_window_vs_capture_pdip": { + "reference": "the capture's own figure of merit (library PDIP, Fitness.call_wrap jax.jit(jax.vmap(call)) over parameter vectors) for the same lanes", + "compared_against": "this cell's jit(vmap) library-PDIP reference", + "n_compared": 20, + "max_rel_diff": 8.159661529302773e-08, + "max_abs_diff_nats": 0.01585698773851618, + "gated": false, + "note": "RECORDED, NOT GATED: proves the lane trees rebuilt here are the models the sampler evaluated (a wrong parameter mapping shows up as nats, not 1e-10)." + } + }, + "matched": { + "vmap_wall_per_lane_ms": 16.955180554996332, + "scalar_wall_per_lane_ms": 39.75405439499809, + "speedup_vmap_over_scalar": 2.344655326202552, + "note": "Both walls are the PRODUCTION nesting of their arm, measured in one process on the same B lanes with the SAME library Settings (no injection). A speedup below 1 means the batch is slower per lane than B sequential jitted calls." + }, + "solver_source": "library", + "solver": "pdip", + "certified_fallback": "pdip", + "certified_pass_budget": 16, + "certified_pass_budget_basis": "config default (Settings().certified_pass_budget)", + "certified_tau_rel": 1e-09, + "solver_used": "pdip", + "solver_check": { + "solver_used": "pdip", + "solver_used_source": "AbstractInversion.positive_only_solver_used on the fiducial S3 inversion, built eagerly on the JAX backend (AnalysisImaging(use_jax=True).fit_from) with the arms' Settings", + "reference_solver_used": "pdip", + "traced_solver_kwargs_jax": [ + "pdip" + ], + "observed_calls_jax": 1, + "report_rows": 0, + "report_vs_timed_arm_max_rel_diff": 1.986679833474363e-07 + }, + "lanes_certified": [ + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null + ], + "lanes_passes": [ + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null + ], + "uncertified_lanes": null, + "per_lane_certification_note": "Not applicable: a library-PDIP row has no certificate or pass count.", + "gate": { + "pre_registered": true, + "gated": [ + "per lane: jit(vmap) arm vs jit(vmap) library PDIP <= lane_rtol relative", + "per lane: scalar jit arm vs scalar jit library PDIP <= lane_rtol relative" + ], + "recorded_not_gated": [ + "per lane: jit(vmap) arm vs scalar jit arm (rel_diff, abs_diff_nats)", + "per lane: jit(vmap) library PDIP vs scalar jit library PDIP", + "uncertified_lanes (certified_fallback=none rows)" + ], + "lanes_failed": 5, + "passed": false, + "policy_eligible": false, + "note": "Pre-registered before submission (module docstring; submit header). Phase 3 (results/notes/hst_gpu_residue_phase3_psf_2026_09.md) placed phase 2's ~2.5e-9 certified-vs-PDIP residual BETWEEN the jit(vmap) and scalar-jit compositions, not in the solver \u2014 so each arm is gated against the library-PDIP reference of its OWN composition, and the cross-composition difference is recorded with its nats. A certified_fallback=none row is policy-eligible only if every lane certifies AND passes the gate. Timing is never gated." + }, + "library_revisions": { + "PyAutoArray": { + "head": "3de624b5b91a4efa130dc3cb0a3a0f06f85025a3", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoArray", + "module_file": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/__init__.py" + }, + "PyAutoFit": { + "head": "dd9fbe0aab60c4a57702b1444ca031b317c91331", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoFit", + "module_file": "/mnt/ral/jnightin/PyAuto/PyAutoFit/autofit/__init__.py" + }, + "PyAutoGalaxy": { + "head": "70a61e26cd715cefe7012a38285698091246a8a4", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy", + "module_file": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/__init__.py" + }, + "PyAutoLens": { + "head": "86054bbc19baa2f710a12e04a94fa27ab37cc354", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoLens", + "module_file": "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/__init__.py" + }, + "autoarray_file": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/__init__.py" + } + }, + "headline_arm_note": "`trace`, `hlo_census`, `command_buffers` and `trace_timing` above describe the scalar arm \u2014 the program phase 1 traced. Both arms' full blocks, the lane table and the matched comparison are under `vmap`." +} \ No newline at end of file diff --git a/results/breakdown/imaging/fixed_light_trace_rectangular_jitvmap20_captured_pix2_libpdip_fbon_b16_hpc_a100_fp64_fixed_light_trace.png b/results/breakdown/imaging/fixed_light_trace_rectangular_jitvmap20_captured_pix2_libpdip_fbon_b16_hpc_a100_fp64_fixed_light_trace.png new file mode 100644 index 000000000..1ba8669c4 Binary files /dev/null and b/results/breakdown/imaging/fixed_light_trace_rectangular_jitvmap20_captured_pix2_libpdip_fbon_b16_hpc_a100_fp64_fixed_light_trace.png differ diff --git a/results/breakdown/imaging/fixed_light_trace_rectangular_jitvmap50_captured_pix1_libcertified_fboff_b16_hpc_a100_fp64_fixed_light_trace.json b/results/breakdown/imaging/fixed_light_trace_rectangular_jitvmap50_captured_pix1_libcertified_fboff_b16_hpc_a100_fp64_fixed_light_trace.json new file mode 100644 index 000000000..a9bfb031b --- /dev/null +++ b/results/breakdown/imaging/fixed_light_trace_rectangular_jitvmap50_captured_pix1_libcertified_fboff_b16_hpc_a100_fp64_fixed_light_trace.json @@ -0,0 +1,7711 @@ +{ + "device": { + "backend": "gpu", + "device": "cuda:0", + "hostname": "euclid-ral-gpu-2", + "xla_flags": "--xla_disable_hlo_passes=constant_folding --xla_gpu_autotune_level=0 --xla_gpu_enable_triton_gemm=false", + "omp_num_threads": null, + "cpu_count": 124, + "jax_compilation_cache_dir": "/mnt/ral/jnightin/autolens_profiling_wt/certified-solver-phase-c1-lane-rate/output/jax_cache/fixed_light_lanerate_rectangular_pix1_time_50_certified_off_350768_28", + "autotune_cache_entries_at_start": 0, + "cache_fresh": true, + "nvidia_smi": "NVIDIA A100 80GB PCIe, 61393 MiB, 81920 MiB" + }, + "machine": { + "cpu_model": "AMD EPYC 7702 64-Core Processor", + "cpu_count_os": 124, + "nproc": 4, + "nproc_all": 124, + "nproc_note": "GNU nproc honours OMP_NUM_THREADS, so `nproc` can print 1 on a multi-core host; `nproc_all` is the core count.", + "ram_total": "928298204 kB", + "kernel": "5.14.0-687.50.1.el9_8.x86_64", + "platform": "Linux-5.14.0-687.50.1.el9_8.x86_64-x86_64-with-glibc2.34", + "python": "3.12.4", + "jax_thread_env": { + "NPROC": null + }, + "blas_thread_env": { + "OMP_NUM_THREADS": null, + "OPENBLAS_NUM_THREADS": null, + "MKL_NUM_THREADS": null, + "VECLIB_MAXIMUM_THREADS": null, + "NUMEXPR_NUM_THREADS": null + }, + "thread_env_note": "NPROC sizes XLA's CPU intra-op pool (the JAX rows); the BLAS knobs pin OpenBLAS/MKL/OpenMP (the numpy/scipy rows) and do not touch JAX. Two disjoint families; both are recorded on every CPU timing.", + "gpu": "NVIDIA A100 80GB PCIe, 81920 MiB, 610.57.04" + }, + "precision": "fp64", + "configuration": { + "pixel_scale_arcsec": 0.05, + "mask_radius_arcsec": 3.5, + "image_pixels_masked": 15361, + "over_sampled_pixels": 62752, + "mesh": "rectangular", + "mesh_shape": [ + 39, + 39 + ], + "source_pixels": 1521, + "source_pixels_requested": null, + "dataset": "hst", + "dataset_sha256": { + "data.fits": "e4e833a28e9c6f6fb023cd85c0d3dde74068720256bc77a240633500e5b04fac", + "noise_map.fits": "315c6266a0acd3ac9c8da82fcd2b45a08697362481fd7a35072bab1658530ba3", + "psf.fits": "8389ba0e8bf4a09b4a561cfc246181a2fb944ed396754cd0ff76fdd22910d303" + }, + "cell_source_sha256": "06a162fcdae6b329384ec33322f443df07215d86e56f0505ac15b3d3473eb432", + "inversion_path": "dense", + "pass_budget": 11, + "pass_budget_basis": "phase 3 (autolens_profiling#255): the smallest ZERO-fallback budget per mesh, the budget a production run fixes. NOT phase 0's certifying budget (2 for Delaunay), which falls back on 67.5 % of a graded draw set and is not a production cost.", + "border_relocator_mode": "cell", + "border_relocator": true, + "border_relocator_note": "'cell' is use_border_relocator=True, which every profiling cell in this family forces; 'library' passes None and takes the shipped config default, which is what production runs. The resolved boolean is what this leg actually ran.", + "routes_selected": [ + "b", + "d" + ], + "trace_calls": 10, + "command_buffers_traced": "off", + "use_mixed_precision": false, + "tau_rel": 1e-09, + "regularization": { + "scheme": "constant", + "coefficient": 1.0 + }, + "thread_env": { + "n_threads": null, + "vars": [ + "OPENBLAS_NUM_THREADS", + "MKL_NUM_THREADS", + "OMP_NUM_THREADS", + "VECLIB_MAXIMUM_THREADS", + "NUMEXPR_NUM_THREADS" + ], + "set_to": null, + "preexisting": {}, + "overridden": {}, + "note": "Not pinned (legacy variant): recorded as found." + }, + "over_sample_size_lp_rule": { + "sub_size_list": [ + 4, + 2, + 2 + ], + "radial_list": [ + 0.3, + 0.6 + ], + "centre": [ + 0.0, + 0.0 + ] + }, + "vmap_batch": 50, + "lanes": "captured", + "arms": [ + "vmap", + "scalar" + ], + "fallback": "off", + "draw_seed": 0, + "vmap_composition": "jax.jit(jax.vmap(fn))", + "lane_rtol": 1e-09, + "vmap_flags_note": "Strict ProfileCLI.parse_cell_args rejects unknown flags. These keys record the exact batching program and prevent historical vmap(jit) artifacts from being mistaken for current jit(vmap) measurements.", + "solver_source": "library", + "solver": "certified", + "certified_fallback": "none", + "certified_pass_budget": 16, + "captured_pass": "time", + "batches": "/mnt/ral/jnightin/autolens_profiling_wt/certified-solver-phase-c1-lane-rate/results/breakdown/imaging/nautilus_batches_rectangular_pix1.npz" + }, + "solver_injection": { + "patched": null, + "part_v": "none \u2014 library mode selects the solver through al.Settings", + "part_b_route_d": { + "patched": "autoarray.inversion.inversion.inversion_util.reconstruction_positive_only_from", + "pass_budget": 11, + "fallback": true + }, + "note": "Library mode (phase B, #300): PART V's arms and references run the library's own positive-only solve, selected by Settings(positive_only_solver, certified_fallback, certified_pass_budget); nothing is injected. PART B's single-call route d (the fiducial d == b pin) still uses the phase-1 harness injection at the phase-3 budget and is not a phase-B row. The untimed certification report observes the library solve (library_solver_observed) without changing it." + }, + "routes": { + "b_s3_pdip": { + "label": "S3 PDIP (source-only)", + "status": "ok", + "solver": "library", + "ms": 39.0138995997404, + "log_likelihood": 28622.39485118912 + }, + "d_s3_certified_fallback": { + "label": "S3 certified active set, budget 11, PDIP fallback", + "status": "ok", + "solver": "harness-injected certified active set", + "pass_budget": 11, + "fallback": true, + "injected_solver_calls_jax": 1, + "injected_solver_calls_numpy": 0, + "ms": 30.289488899870776, + "log_likelihood": 28622.394851189252 + } + }, + "equivalence_pins": [ + { + "pin": "route d (certified, fallback) == route b (library PDIP)", + "route": "d_s3_certified_fallback", + "reference": "b_s3_pdip", + "expectation": "the certified active set returns the library's own positive solution", + "rtol": 1e-09, + "got": 28622.394851189252, + "reference_value": 28622.39485118912, + "rel_diff": 4.575691088611358e-15, + "status": "PASS" + } + ], + "equivalence_rtol": 1e-09, + "reference": { + "log_evidence_s0_library": 28622.394851199875, + "log_evidence_s3_library": 28622.39485119987, + "s3": { + "n_params": 1521, + "n_mapper": 1521, + "n_funcs": 0, + "edge_zeroed_pixels": 152, + "subtracted_light_flux": 5253.476646922047 + } + }, + "command_buffers": { + "wall_on_ms": 1514.7168845000124, + "wall_off_ms": 1522.5663895998878, + "command_buffer_delta_ms": 7.849505099875387, + "command_buffer_delta_pct": 0.5182159900770105, + "traced": "off", + "compiler_option": "xla_gpu_enable_command_buffer", + "probe": { + "note": "Not taken in --vmap-batch mode: the CUPTI-inside-a-CUDA-graph probe is a phase-1 diagnostic about the JOIN, and this mode already compiles and times both the command-buffers ON and OFF executable of every arm." + }, + "note": "ONE lowering, TWO compilations, one process. wall_on_ms is the PRODUCTION program (CUDA graphs as XLA ships them) and is the number comparable to phase 5's row; wall_off_ms is the graph-less program the stage rows attribute. The delta is the launch overhead the graphs remove \u2014 it lands in device_idle and host_outside_span, not in any stage. Reconciliation is computed against wall_off_ms." + }, + "trace": { + "parser": "ProfileData.from_file(xplane) + as_text() + stack_frame_index(proto field 17)", + "stage_audit": { + "mesh_construction": [ + { + "instruction": "fusion.2", + "ms": 0.14865272400000118, + "opcode": "fusion", + "shape": "(f64[15361,2]{1,0}, s64[15361,2]{1,0}, s32[15361,2]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:227", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:227 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_select_fusion", + "ms": 0.03990305000000044, + "opcode": "fusion", + "shape": "(u32[2,15361]{1,0}, u32[2,15361]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69 (forward_interp)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:573 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/abstract.py:36 (AbstractInterpolator.mappings)" + ] + }, + { + "instruction": "loop_select_fusion.3", + "ms": 0.03491354000000164, + "opcode": "fusion", + "shape": "(u32[15361]{0}, u32[15361]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_select_fusion.1", + "ms": 0.034854642000001074, + "opcode": "fusion", + "shape": "(u32[15361]{0}, u32[15361]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_add_fusion", + "ms": 0.02123899399999892, + "opcode": "fusion", + "shape": "s64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69 (forward_interp)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:573 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/abstract.py:36 (AbstractInterpolator.mappings)" + ] + }, + { + "instruction": "loop_add_fusion.3", + "ms": 0.020892201999998927, + "opcode": "fusion", + "shape": "s64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "mixed_fusion": [ + { + "instruction": "loop_divide_gather_fusion", + "ms": 0.6997904080000003, + "opcode": "fusion", + "shape": "(f64[15361,1,1,1521]{3,2,1,0}, f64[15361,1,1,1521]{3,2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_broadcast_fusion.3", + "ms": 0.2340538659999999, + "opcode": "fusion", + "shape": "f64[1521,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_multiply_transpose_fusion", + "ms": 0.18579691600000012, + "opcode": "fusion", + "shape": "(f64[1369,1369]{1,0}, f64[1369,1369]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:237 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:274 (_certified_positive_only_from)" + ] + }, + { + "instruction": "loop_broadcast_fusion", + "ms": 0.13677011399999983, + "opcode": "fusion", + "shape": "f64[15361,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:342", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:342 (mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:283 (Mapper.mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:91 (AbstractInversionImaging._mapping_matrix_for_convolution_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:137 (AbstractInversionImaging.operated_mapping_matrix_list)" + ] + }, + { + "instruction": "input_reduce_fusion.3", + "ms": 0.1131612719999999, + "opcode": "fusion", + "shape": "f64[92,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123 (data_vector_via_blurred_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:67 (InversionImagingMapping.data_vector)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:699 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_reduce_fusion.6", + "ms": 0.1122415519999999, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163 (mapped_reconstructed_data_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:120 (InversionImagingMapping._mapped_reconstructed_data_dict_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:196 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + } + ], + "border_relocator": [ + { + "instruction": "eigh.0", + "ms": 0.07425517200000112, + "opcode": "custom-call", + "shape": "(f64[2,2]{0,1}, f64[2]{0}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "custom-call.2", + "ms": 0.007952388, + "opcode": "custom-call", + "shape": "(f64[2,2]{1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_reduce_fusion.7", + "ms": 0.005193084000000002, + "opcode": "fusion", + "shape": "(f64[], f64[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:270", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:270 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_add_fusion.5", + "ms": 0.003725669999999971, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:423 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_concatenate_fusion.4", + "ms": 0.0023425419999999982, + "opcode": "fusion", + "shape": "f64[392,2]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:238", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:238 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_reduce_fusion.14", + "ms": 0.0015956020000000063, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:256", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:256 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + } + ], + "other": [ + { + "instruction": "copy.41", + "ms": 0.030521391999997826, + "opcode": "copy", + "shape": "u32[2,15361]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.42", + "ms": 0.030116698000002457, + "opcode": "copy", + "shape": "u32[2,15361]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.51", + "ms": 0.02889419599999723, + "opcode": "copy", + "shape": "u32[15361]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.59", + "ms": 0.028589215999998016, + "opcode": "copy", + "shape": "u32[15361]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.60", + "ms": 0.028553227999998373, + "opcode": "copy", + "shape": "u32[15361]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.50", + "ms": 0.028413555999999673, + "opcode": "copy", + "shape": "u32[15361]{0}", + "source": "", + "stack": [] + } + ], + "pdip_solve": [ + { + "instruction": "cholesky.40", + "ms": 8.388080266000578, + "opcode": "custom-call", + "shape": "(f64[1369,1369]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "triangular-solve.1", + "ms": 1.4824488780000251, + "opcode": "custom-call", + "shape": "(f64[1369,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "triangular-solve", + "ms": 1.2510066259999706, + "opcode": "custom-call", + "shape": "(f64[1369,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "cholesky.60", + "ms": 0.848715702000006, + "opcode": "custom-call", + "shape": "(f64[1369,1369]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:237 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:274 (_certified_positive_only_from)" + ] + }, + { + "instruction": "cholesky.70", + "ms": 0.8414831860000013, + "opcode": "custom-call", + "shape": "(f64[1369,1369]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:297 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:274 (_certified_positive_only_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:496 (reconstruction_positive_only_from)" + ] + }, + { + "instruction": "input_transpose_fusion.1", + "ms": 0.2931368800000001, + "opcode": "fusion", + "shape": "f64[1369,1369]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + } + ], + "mapping_matrix": [ + { + "instruction": "input_reduce_fusion.20", + "ms": 0.0028691320000000012, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:362 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + } + ], + "regularization_H": [ + { + "instruction": "input_scatter_fusion.8", + "ms": 0.0027349520000000023, + "opcode": "fusion", + "shape": "f64[1521,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:123 (weighted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:366 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "psf_convolution_mapping_matrix": [ + { + "instruction": "fft.19.0", + "ms": 1.7866187120000045, + "opcode": "fft", + "shape": "f64[1521,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_scatter_fusion", + "ms": 1.4326050059999993, + "opcode": "fusion", + "shape": "f64[1521,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.15.0", + "ms": 1.3864641500000001, + "opcode": "fft", + "shape": "c128[1521,180,91]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.17.0", + "ms": 0.9926501499999998, + "opcode": "fft", + "shape": "c128[1521,91,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_transpose_fusion.2", + "ms": 0.5220470079999998, + "opcode": "fusion", + "shape": "c128[1521,91,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "wrapped_transpose.2", + "ms": 0.5074127339999994, + "opcode": "fusion", + "shape": "c128[1521,180,91]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + } + ], + "curvature_matrix_F": [ + { + "instruction": "cublas-lt-matmul.2", + "ms": 4.4417995759999975, + "opcode": "custom-call", + "shape": "(f64[1521,1521]{1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "inversion_other": [ + { + "instruction": "cholesky.80", + "ms": 0.9229844880000048, + "opcode": "custom-call", + "shape": "(f64[1521,1521]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1078 (AbstractInversion.log_det_curvature_reg_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:347 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "cholesky.90", + "ms": 0.905939808000005, + "opcode": "custom-call", + "shape": "(f64[1521,1521]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1157 (AbstractInversion.log_det_regularization_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:348 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "loop_reduce_window_fusion.3", + "ms": 0.005840461999999993, + "opcode": "fusion", + "shape": "s64[6,16]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "loop_reduce_window_fusion.2", + "ms": 0.0031031420000000166, + "opcode": "fusion", + "shape": "s64[86,16]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "input_scatter_fusion.9", + "ms": 0.0025660959999999925, + "opcode": "fusion", + "shape": "s64[1369]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527 (AbstractInversion.zeroed_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:567 (AbstractInversion.solve_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:684 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_broadcast_fusion.4", + "ms": 0.0019140040000000078, + "opcode": "fusion", + "shape": "(s64[1369]{0}, s64[1369]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527 (AbstractInversion.zeroed_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:567 (AbstractInversion.solve_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:684 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "chi_squared_evidence": [ + { + "instruction": "loop_multiply_fusion", + "ms": 0.00300911600000001, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:300", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:300 (AbstractNDArray.__pow__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:60 (unwrap_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:35 (to_new_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:78 (chi_squared_map_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:78 (AbstractFit.chi_squared_map)" + ] + } + ] + }, + "stage_audit_note": "The HLO instructions that contributed most of each stage's milliseconds, with their full source stack. A stage row is only as good as the rules that built it; this is how a reader checks a row against the HLO instead of trusting it.", + "untraced_wall_ms": 30.40535149400239, + "reconciliation_vs_untraced_pct": -0.2916348525682433, + "wall_basis": "wall_ms is the TRACED run's wall, the run these kernel durations came from. untraced_wall_ms is the same executable without the profiler; the difference is the profiler's overhead and belongs in neither the stages nor the idle row.", + "calls": 500, + "call_split": "per-call (first-instruction recurrence)", + "call_blocks": 500, + "events": 272080, + "streams": [ + "Stream #14(MemcpyD2D,MemcpyH2D,Compute,MemcpyD2H,Memset)" + ], + "per_stage_ms": { + "border_relocator": { + "median_ms": 0.09659300000000001, + "min_ms": 0.09561700000000004, + "max_ms": 0.099073 + }, + "chi_squared_evidence": { + "median_ms": 0.003008, + "min_ms": 0.002816, + "max_ms": 0.003328 + }, + "curvature_matrix_F": { + "median_ms": 4.4236485, + "min_ms": 4.400542, + "max_ms": 4.636308 + }, + "inversion_other": { + "median_ms": 1.841072, + "min_ms": 1.826069, + "max_ms": 1.9067720000000001 + }, + "mapping_matrix": { + "median_ms": 0.00288, + "min_ms": 0.002848, + "max_ms": 0.002944 + }, + "memset": { + "median_ms": 0.0350405, + "min_ms": 0.011968, + "max_ms": 0.05760000000000001 + }, + "mesh_construction": { + "median_ms": 0.3447720000000002, + "min_ms": 0.3416020000000002, + "max_ms": 0.3535709999999998 + }, + "mixed_fusion": { + "median_ms": 1.853939, + "min_ms": 1.8465799999999999, + "max_ms": 1.891508 + }, + "other": { + "median_ms": 0.18137899999999982, + "min_ms": 0.1807699999999998, + "max_ms": 0.186018 + }, + "pdip_solve": { + "median_ms": 13.128240999999997, + "min_ms": 3.473879999999999, + "max_ms": 22.134456 + }, + "psf_convolution_mapping_matrix": { + "median_ms": 6.6239445, + "min_ms": 6.600748000000001, + "max_ms": 6.698123 + }, + "regularization_H": { + "median_ms": 0.002752, + "min_ms": 0.002432, + "max_ms": 0.003168 + } + }, + "stage_order": [ + "border_relocator", + "mesh_construction", + "mapping_matrix", + "psf_convolution_mapping_matrix", + "curvature_matrix_F", + "regularization_H", + "pdip_solve", + "chi_squared_evidence", + "inversion_other", + "mixed_fusion", + "other", + "memset" + ], + "mixed_fusion": { + "ms": 1.853939, + "constituent_stage_sets": { + "curvature_matrix_F + psf_convolution_mapping_matrix": 0.6997904080000003, + "pdip_solve + psf_convolution_mapping_matrix": 0.2340538659999999, + "inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": 0.18579691600000012, + "mapping_matrix + pdip_solve": 0.13912342400000025, + "data_vector_D + pdip_solve": 0.1168778539999999, + "mapped_reconstruction + pdip_solve": 0.1122415519999999, + "border_relocator + pdip_solve": 0.07106790599999938, + "mesh_construction + pdip_solve": 0.038806105999999736, + "inversion_other + regularization_H": 0.031179562000000022, + "inversion_other + pdip_solve": 0.03016045599999991, + "border_relocator + mesh_construction + pdip_solve": 0.02712814000000007, + "curvature_reg_reduce_gather + inversion_other": 0.02572668, + "border_relocator + inversion_other + mapping_matrix + mesh_construction + pdip_solve": 0.020535173999999996, + "pdip_solve + regularization_H": 0.019280443999999994, + "inversion_other + mapping_matrix + pdip_solve + regularization_H": 0.015660994000000022, + "pdip_solve + ray_trace_data_grid": 0.012883523999999811, + "inversion_other + mapping_matrix + mesh_construction": 0.012825798000000005, + "grids_and_structures + mass_profile_deflections + pdip_solve": 0.009956641999999995, + "inversion_other + mapped_reconstruction + reconstruction_scatter": 0.009749429999999988, + "inversion_other + mapped_reconstruction + pdip_solve": 0.00894696200000002, + "chi_squared_evidence + pdip_solve": 0.007718110000000024, + "inversion_other + mesh_construction + pdip_solve": 0.005586160000000008, + "grids_and_structures + mass_profile_deflections + ray_trace_data_grid": 0.005243109999999996, + "inversion_other + pdip_solve + ray_trace_data_grid": 0.004758323999999977, + "border_relocator + mesh_construction": 0.0036772119999999887, + "border_relocator + inversion_other": 0.0033764159999999945, + "border_relocator + inversion_other + mesh_construction + pdip_solve": 0.002481636000000009, + "chi_squared_evidence + inversion_other": 0.0018078900000000064 + }, + "example_kernels": { + "curvature_matrix_F + psf_convolution_mapping_matrix": [ + "loop_divide_gather_fusion" + ], + "pdip_solve + psf_convolution_mapping_matrix": [ + "loop_broadcast_fusion.3" + ], + "inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": [ + "input_multiply_transpose_fusion" + ], + "mapping_matrix + pdip_solve": [ + "loop_divide_fusion.1", + "loop_broadcast_fusion" + ], + "data_vector_D + pdip_solve": [ + "input_reduce_fusion.3", + "input_reduce_fusion.18" + ], + "mapped_reconstruction + pdip_solve": [ + "input_reduce_fusion.6" + ], + "border_relocator + pdip_solve": [ + "input_reduce_fusion.8", + "loop_select_sine_fusion", + "input_concatenate_fusion.1", + "input_transpose_fusion.6" + ], + "mesh_construction + pdip_solve": [ + "loop_multiply_fusion.2", + "loop_pad_fusion", + "loop_reduce_fusion", + "triton_softmax.1" + ], + "inversion_other + regularization_H": [ + "input_transpose_fusion.4" + ], + "inversion_other + pdip_solve": [ + "input_scatter_fusion.11", + "input_reduce_fusion.9", + "input_reduce_fusion.16", + "input_reduce_fusion.4" + ] + }, + "prorated_estimate_ms": { + "psf_convolution_mapping_matrix": 0.46692213700000007, + "pdip_solve": 0.46499061829999944, + "curvature_matrix_F": 0.3498952040000001, + "inversion_other": 0.1151729813, + "mapped_reconstruction": 0.10880213566666666, + "mapping_matrix": 0.08185926130000014, + "data_vector_D": 0.05843892699999995, + "border_relocator": 0.05283092413333303, + "reconstruction_scatter": 0.04969903900000003, + "mesh_construction": 0.041149135466666556, + "regularization_H": 0.029145251500000014, + "curvature_reg_reduce_gather": 0.01286334, + "ray_trace_data_grid": 0.009775573333333232, + "grids_and_structures": 0.005066583999999997, + "mass_profile_deflections": 0.005066583999999997, + "chi_squared_evidence": 0.0047630000000000155 + }, + "prorated_note": "ESTIMATE ONLY \u2014 a mixed fusion's time split equally across the stages its constituents span. Never summed into the measured table, never reconciled." + }, + "other_sources_ms": { + "copy.41": 0.030521391999997826, + "copy.42": 0.030116698000002457, + "copy.51": 0.02889419599999723, + "copy.59": 0.028589215999998016, + "copy.60": 0.028553227999998373, + "copy.50": 0.028413555999999673, + "copy.95": 0.00181909400000001, + "copy.96": 0.0017872239999999974, + "copy.34": 0.0015228879999999955, + "copy.52": 0.0015152099999999967 + }, + "device_span_ms": 31.52167606, + "device_busy_ms": 29.742266668, + "device_idle_ms": 1.7794093920000016, + "largest_idle_gaps": [ + { + "gap_ms": 0.154401, + "after": "loop_add_fusion", + "before": "loop_select_fusion" + }, + { + "gap_ms": 0.041856, + "after": "input_concatenate_fusion.4", + "before": "custom-call.2" + }, + { + "gap_ms": 0.031489, + "after": "loop_add_fusion.3", + "before": "loop_select_fusion.3" + }, + { + "gap_ms": 0.030305, + "after": "loop_multiply_fusion.1", + "before": "eigh.0" + }, + { + "gap_ms": 0.029153, + "after": "copy.59", + "before": "copy.60" + }, + { + "gap_ms": 0.027296, + "after": "loop_broadcast_fusion.6", + "before": "loop_broadcast_fusion.8" + }, + { + "gap_ms": 0.01968, + "after": "eigh.0", + "before": "eigh.0" + }, + { + "gap_ms": 0.019328, + "after": "while.26", + "before": "input_transpose_fusion" + } + ], + "kernel_ms": 28.537269499999997, + "sum_ms": 30.316678892, + "wall_ms": 31.523161564000475, + "host_outside_span_ms": 0.0014855040004739806, + "reconciliation_pct": -3.827289561521272, + "unjoined_ms": 0.0, + "unjoined_pct": 0.0, + "other_ms": 0.18137899999999982, + "other_pct": 0.5753832769335391, + "note": "Stage rows attribute the command-buffers-OFF program (see the module docstring): kernel times are the same, the launch overhead the CUDA graphs remove is not. sum_ms = kernel rows + device_idle_ms; the residual against wall_ms is host_outside_span_ms (dispatch before the first kernel, teardown after the last).", + "per_stage_ms_per_lane": { + "border_relocator": 0.09659300000000001, + "chi_squared_evidence": 0.003008, + "curvature_matrix_F": 4.4236485, + "inversion_other": 1.841072, + "mapping_matrix": 0.00288, + "memset": 0.0350405, + "mesh_construction": 0.3447720000000002, + "mixed_fusion": 1.853939, + "other": 0.18137899999999982, + "pdip_solve": 13.128240999999997, + "psf_convolution_mapping_matrix": 6.6239445, + "regularization_H": 0.002752 + }, + "per_lane_divisor": 1, + "host_callback": { + "pure_callback_span_ms": 0, + "qhull_ms": 0.0, + "callback_body_ms_note": "the OUTERMOST matching body event, not a sum: under the probe the body appears twice (the wrapper and the timed re-implementation it calls) and summing them would count the same work twice", + "events_by_name": { + "ThenExecuteCallback:GetEventForComputeStreamSyncPoint": { + "count": 500, + "ms": 1.3023799000000011 + } + }, + "note": "HOST milliseconds per traced BATCH (the whole invocation), aggregated by name because the events nest. Not a row of the device table: the device pays for them as the idle gaps largest_idle_gaps names." + }, + "host_callback_ms": 0 + }, + "hlo_census": { + "status": "excluded", + "reason": "The legacy census anchors PyAutoArray source line numbers that moved after the phase-1 run. No batched attribution is published from unsupported anchors; the device-event table and wall reconciliation remain valid." + }, + "stage_map_provenance": [ + { + "label": "log_det_curvature_reg", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 850, + 882 + ], + "requires": { + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 884, + 896 + ] + }, + "function": null + }, + { + "label": "log_det_regularization", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 850, + 882 + ], + "requires": { + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 897, + 943 + ] + }, + "function": null + }, + { + "label": "curvature_reg_add", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 359, + 372 + ], + "requires": null, + "function": null + }, + { + "label": "curvature_reg_reduce_gather", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 374, + 398 + ], + "requires": null, + "function": null + }, + { + "label": "edge_subset_gather", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 606, + 614 + ], + "requires": null, + "function": null + }, + { + "label": "regularization_term", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 786, + 849 + ], + "requires": null, + "function": null + }, + { + "label": "mapped_reconstruction", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 722, + 785 + ], + "requires": null, + "function": null + }, + { + "label": "reconstruction_scatter", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 583, + 605 + ], + "requires": null, + "function": null + }, + { + "label": "reconstruction_scatter", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 615, + 721 + ], + "requires": null, + "function": null + }, + { + "label": "certified_active_set_solve", + "path": "likelihood_breakdown/active_set_steps.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "certified_active_set_solve", + "path": "likelihood_breakdown/library_solver_injection.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "pdip_solve", + "path": "PyAutoArray/autoarray/util/jax_nnls.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "pdip_solve", + "path": "PyAutoArray/autoarray/inversion/inversion/inversion_util.py", + "lines": [ + 256, + 488 + ], + "requires": null, + "function": null + }, + { + "label": "mapped_reconstruction", + "path": "PyAutoArray/autoarray/inversion/inversion/inversion_util.py", + "lines": [ + 156, + 200 + ], + "requires": null, + "function": null + }, + { + "label": "curvature_matrix_F", + "path": "PyAutoArray/autoarray/inversion/inversion/inversion_util.py", + "lines": [ + 12, + 155 + ], + "requires": null, + "function": null + }, + { + "label": "reconstruction_scatter", + "path": "PyAutoArray/autoarray/inversion/inversion/inversion_util.py", + "lines": [ + 201, + 255 + ], + "requires": null, + "function": null + }, + { + "label": "data_vector_D", + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py", + "lines": [ + 54, + 73 + ], + "requires": null, + "function": null + }, + { + "label": "curvature_matrix_F", + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py", + "lines": [ + 74, + 110 + ], + "requires": null, + "function": null + }, + { + "label": "data_vector_D", + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py", + "lines": null, + "requires": null, + "function": "data_vector_via_blurred_mapping_matrix_from" + }, + { + "label": "curvature_matrix_F", + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "likelihood_breakdown/psf_cube_injection.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": [ + 1086, + 1300 + ], + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": [ + 632, + 642 + ], + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": [ + 670, + 691 + ], + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": null, + "requires": { + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": [ + 1086, + 1300 + ] + }, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": null, + "requires": { + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py", + "lines": [ + 119, + 150 + ] + }, + "function": null + }, + { + "label": "psf_convolution_image", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py", + "lines": [ + 119, + 150 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_qhull_callback", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 139, + 172 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_seed_argmin", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 173, + 207 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_locate_walk", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 208, + 372 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_dual_areas", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 373, + 396 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_dual_areas", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 437, + 494 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_dual_areas", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 605, + 615 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_interpolation_weights", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 616, + 695 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_interpolation_weights", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 896, + 1000 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_construction", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "border_relocator", + "path": "PyAutoArray/autoarray/inversion/mesh/border_relocator.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "mesh_construction", + "path": "PyAutoArray/autoarray/inversion/mesh/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "mapping_matrix", + "path": "PyAutoArray/autoarray/inversion/mappers/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "mapping_matrix", + "path": "PyAutoArray/autoarray/inversion/mappings/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "mapping_matrix", + "path": "PyAutoArray/autoarray/inversion/linear_obj/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "regularization_H", + "path": "PyAutoArray/autoarray/inversion/regularization/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "chi_squared_evidence", + "path": "PyAutoArray/autoarray/fit/fit_util.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "chi_squared_evidence", + "path": "PyAutoArray/autoarray/fit/fit_dataset.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "ray_trace_mesh_grid", + "path": "PyAutoLens/autolens/lens/to_inversion.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "ray_trace_mesh_grid", + "path": "PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "mass_profile_deflections", + "path": "PyAutoGalaxy/autogalaxy/profiles/mass/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "light_profile_image", + "path": "PyAutoGalaxy/autogalaxy/profiles/light/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "light_profile_image", + "path": "PyAutoGalaxy/autogalaxy/operate/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "ray_trace_data_grid", + "path": "PyAutoLens/autolens/lens/tracer.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "ray_trace_data_grid", + "path": "PyAutoLens/autolens/lens/tracer_util.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "grids_and_structures", + "path": "PyAutoArray/autoarray/structures/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "grids_and_structures", + "path": "PyAutoArray/autoarray/operators/over_sampling/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "grids_and_structures", + "path": "PyAutoArray/autoarray/geometry/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "inversion_other", + "path": "PyAutoArray/autoarray/inversion/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "fit_imaging_other", + "path": "PyAutoLens/autolens/imaging/fit_imaging.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "fit_imaging_other", + "path": "PyAutoGalaxy/autogalaxy/imaging/fit_imaging.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "fit_imaging_other", + "path": "PyAutoArray/autoarray/fit/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "analysis_other", + "path": "PyAutoLens/autolens/analysis/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "analysis_other", + "path": "PyAutoGalaxy/autogalaxy/analysis/", + "lines": null, + "requires": null, + "function": null + } + ], + "trace_timing": { + "traced_wall_ms": 31.523161564000475, + "untraced_wall_ms": 30.40535149400239, + "profiler_overhead_ms": 1.117810069998086, + "profiler_overhead_pct": 3.6763596376071486 + }, + "jit_phases": { + "b_s3_pdip_library_likelihood_jit": { + "lower_s": 1.2784735479981464, + "compile_s": 3.34788791399842, + "first_call_s": 0.11560838299919851, + "steady_per_call_s": 0.0390138995997404 + }, + "d_s3_certified_fallback_library_likelihood_jit": { + "lower_s": 0.47541843600265565, + "compile_s": 3.8733840419990884, + "first_call_s": 0.04699270399942179, + "steady_per_call_s": 0.030289488899870775 + } + }, + "peak_bytes": { + "after_setup": 85616640, + "after_routes": 1197479168, + "after_all": 59620976128, + "note": "jax.devices()[0].memory_stats()['peak_bytes_in_use']; None on a backend that does not report it (CPU). Process-wide high-water marks." + }, + "note": "Every stage row is a MEASURED sum of GPU kernel durations joined to library source through the optimized HLO of ONE program \u2014 not arithmetic across compilations. The rows attribute the command-buffers-OFF program: kernel time is the same as production, the launch overhead the CUDA graphs remove is not, and command_buffers.* carries both walls and their delta. sum_ms = kernel rows + measured device_idle_ms; the residual against the wall is host_outside_span_ms and is reported, not absorbed. mixed_fusion.prorated_estimate_ms is an ESTIMATE and is never part of the table. No row may be quoted if reconciliation_pct is outside 5 % or unjoined_ms is non-zero.", + "vmap": { + "batch": 50, + "lanes_mode": "captured", + "arms": [ + "vmap", + "scalar" + ], + "draw_seed": 0, + "fallback": false, + "composition": "jax.jit(jax.vmap(fn))", + "composition_provenance": "Current Fitness._vmap after PyAutoFit#1638. Array 343376 used the retired jax.vmap(jax.jit(fn)) composition and is historical evidence only.", + "headline_arm": "scalar", + "lane_rtol": 1e-09, + "lanes": [ + { + "lane": 0, + "draw_name": "call00015_lane00", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.0017002711605432041, + "centre_1": -0.009377257327484623, + "ell_comps_0": -0.002548851608736212, + "ell_comps_1": -0.004262475027349674, + "einstein_radius": -0.0230617600435421 + }, + "log_likelihood_vmap": 12355.798817552622, + "log_likelihood_scalar": 18463.28806683203, + "log_likelihood_library_pdip": 12361.442851754779, + "log_likelihood_library_pdip_scalar": 18463.078970707007, + "rel_diff_vmap_vs_library_pdip": 0.00045658377180094573, + "rel_diff_scalar_vs_library_pdip_scalar": 1.1325095091301208e-05, + "abs_diff_nats": 6107.489249279406, + "rel_diff": 0.33079098517945305, + "rel_diff_scalar_vs_library_pdip": 0.49361917441628245, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6101.636118952229, + "rel_diff_library_pdip_vmap_vs_scalar": 0.3304777133127638, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 1, + "draw_name": "call00015_lane01", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.00044835385344320865, + "centre_1": -0.003464237160596487, + "ell_comps_0": -0.0010036884316776545, + "ell_comps_1": 0.0020035511501456356, + "einstein_radius": -0.05761540720338343 + }, + "log_likelihood_vmap": 9531.981106652354, + "log_likelihood_scalar": 15734.7047905047, + "log_likelihood_library_pdip": 9549.7408319842, + "log_likelihood_library_pdip_scalar": 15734.21749633948, + "rel_diff_vmap_vs_library_pdip": 0.0018597075715776645, + "rel_diff_scalar_vs_library_pdip_scalar": 3.0970346338130175e-05, + "abs_diff_nats": 6202.723683852346, + "rel_diff": 0.3942065495626874, + "rel_diff_scalar_vs_library_pdip": 0.6476577812254009, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6184.476664355279, + "rel_diff_library_pdip_vmap_vs_scalar": 0.39305905525928314, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 2, + "draw_name": "call00015_lane02", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.0017572218110215735, + "centre_1": 0.0022774942133795186, + "ell_comps_0": 0.0023932647815035485, + "ell_comps_1": -0.011727950927316913, + "einstein_radius": -0.027234805142873908 + }, + "log_likelihood_vmap": 12685.748337404904, + "log_likelihood_scalar": 18704.474460339556, + "log_likelihood_library_pdip": 12681.013488957102, + "log_likelihood_library_pdip_scalar": 18706.16598652238, + "rel_diff_vmap_vs_library_pdip": 0.000373380917221302, + "rel_diff_scalar_vs_library_pdip_scalar": 9.042612922626992e-05, + "abs_diff_nats": 6018.726122934651, + "rel_diff": 0.3217800177009298, + "rel_diff_scalar_vs_library_pdip": 0.47499838846696385, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6025.152497565279, + "rel_diff_library_pdip_vmap_vs_scalar": 0.3220944634997009, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 3, + "draw_name": "call00015_lane03", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.002862791114730316, + "centre_1": 0.0038524808804676603, + "ell_comps_0": 0.006111415425061918, + "ell_comps_1": -0.022191169695991525, + "einstein_radius": -0.03531000166767062 + }, + "log_likelihood_vmap": 25946.74076876594, + "log_likelihood_scalar": -22166.22174910245, + "log_likelihood_library_pdip": 25946.740796097918, + "log_likelihood_library_pdip_scalar": -22166.221747118398, + "rel_diff_vmap_vs_library_pdip": 1.0533877283231556e-09, + "rel_diff_scalar_vs_library_pdip_scalar": 8.950789181016597e-11, + "abs_diff_nats": 48112.96251786839, + "rel_diff": 2.1705531534627265, + "rel_diff_scalar_vs_library_pdip": 1.8542969586544753, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 48112.962543216316, + "rel_diff_library_pdip_vmap_vs_scalar": 2.170553154800546, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": true, + "passes": 5, + "pdip_iter": null + }, + { + "lane": 4, + "draw_name": "call00015_lane04", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.0017545152650242774, + "centre_1": 0.005096768299803747, + "ell_comps_0": 0.00015519416981613077, + "ell_comps_1": 0.007279341501820333, + "einstein_radius": -0.03249658545615719 + }, + "log_likelihood_vmap": -191783.9796111592, + "log_likelihood_scalar": NaN, + "log_likelihood_library_pdip": -191783.9535693777, + "log_likelihood_library_pdip_scalar": -194384.85624250013, + "rel_diff_vmap_vs_library_pdip": 1.3578707179042456e-07, + "rel_diff_scalar_vs_library_pdip_scalar": NaN, + "abs_diff_nats": NaN, + "rel_diff": NaN, + "rel_diff_scalar_vs_library_pdip": NaN, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 2600.902673122415, + "rel_diff_library_pdip_vmap_vs_scalar": 0.013380171292138733, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": true, + "passes": 1, + "pdip_iter": null + }, + { + "lane": 5, + "draw_name": "call00015_lane05", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.0009851407640018856, + "centre_1": 0.002274591191563648, + "ell_comps_0": 0.006006903437417319, + "ell_comps_1": 0.008497457839948512, + "einstein_radius": -0.07242218866013372 + }, + "log_likelihood_vmap": 8557.29119813037, + "log_likelihood_scalar": 14761.660929765752, + "log_likelihood_library_pdip": 8554.981568652838, + "log_likelihood_library_pdip_scalar": 14761.66092976493, + "rel_diff_vmap_vs_library_pdip": 0.0002699748046207791, + "rel_diff_scalar_vs_library_pdip_scalar": 5.56972019825292e-14, + "abs_diff_nats": 6204.369731635383, + "rel_diff": 0.42030295650029115, + "rel_diff_scalar_vs_library_pdip": 0.7255047028804162, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6206.679361112092, + "rel_diff_library_pdip_vmap_vs_scalar": 0.42045941785569313, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 6, + "draw_name": "call00015_lane06", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.002713857824416392, + "centre_1": 0.00891817739575143, + "ell_comps_0": 0.001298959041684998, + "ell_comps_1": -0.0098959428603974, + "einstein_radius": 0.04379561090121875 + }, + "log_likelihood_vmap": 22689.445185632158, + "log_likelihood_scalar": 21597.12687122962, + "log_likelihood_library_pdip": 22689.445185631354, + "log_likelihood_library_pdip_scalar": 21597.12687123037, + "rel_diff_vmap_vs_library_pdip": 3.543468382719279e-14, + "rel_diff_scalar_vs_library_pdip_scalar": 3.486860162270664e-14, + "abs_diff_nats": 1092.3183144025388, + "rel_diff": 0.050577019846915795, + "rel_diff_scalar_vs_library_pdip": 0.04814213417141959, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 1092.3183144009818, + "rel_diff_library_pdip_vmap_vs_scalar": 0.05057701984684194, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 14, + "pdip_iter": null + }, + { + "lane": 7, + "draw_name": "call00015_lane07", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.01063269420288399, + "centre_1": -0.0015469073410711704, + "ell_comps_0": -0.012689283848227026, + "ell_comps_1": 0.0004952469855790744, + "einstein_radius": 0.02732727396499479 + }, + "log_likelihood_vmap": 26407.81077655307, + "log_likelihood_scalar": 7413.159096556694, + "log_likelihood_library_pdip": 26407.81077598098, + "log_likelihood_library_pdip_scalar": 7413.159096633615, + "rel_diff_vmap_vs_library_pdip": 2.1663679816637724e-11, + "rel_diff_scalar_vs_library_pdip_scalar": 1.0376335229615929e-11, + "abs_diff_nats": 18994.651679996376, + "rel_diff": 2.562288416124661, + "rel_diff_scalar_vs_library_pdip": 0.719281573188972, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 18994.651679347364, + "rel_diff_library_pdip_vmap_vs_scalar": 2.5622884160105253, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 7, + "pdip_iter": null + }, + { + "lane": 8, + "draw_name": "call00015_lane08", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.003586333218755102, + "centre_1": 0.0002442650473125539, + "ell_comps_0": -0.0025095685188555317, + "ell_comps_1": 0.008402687166147546, + "einstein_radius": 0.003809182535237543 + }, + "log_likelihood_vmap": 13032.795371354128, + "log_likelihood_scalar": 19066.42135821115, + "log_likelihood_library_pdip": 13032.333063604052, + "log_likelihood_library_pdip_scalar": 19060.20267912919, + "rel_diff_vmap_vs_library_pdip": 3.547390538748126e-05, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0003262651078086841, + "abs_diff_nats": 6033.625986857023, + "rel_diff": 0.31645298682432504, + "rel_diff_scalar_vs_library_pdip": 0.46300906101446665, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6027.869615525138, + "rel_diff_library_pdip_vmap_vs_scalar": 0.3162542244173311, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 9, + "draw_name": "call00015_lane09", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.004569070502203608, + "centre_1": -0.0008437281377326854, + "ell_comps_0": 0.016330335737132294, + "ell_comps_1": 0.007271610957481866, + "einstein_radius": -0.0644363448871137 + }, + "log_likelihood_vmap": 6405.689679607356, + "log_likelihood_scalar": 12781.026354229361, + "log_likelihood_library_pdip": 6404.941310219961, + "log_likelihood_library_pdip_scalar": 12782.70332143049, + "rel_diff_vmap_vs_library_pdip": 0.00011684250505160856, + "rel_diff_scalar_vs_library_pdip_scalar": 0.00013119034049059443, + "abs_diff_nats": 6375.336674622005, + "rel_diff": 0.49881257560448944, + "rel_diff_scalar_vs_library_pdip": 0.9954946868655116, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6377.762011210529, + "rel_diff_library_pdip_vmap_vs_scalar": 0.4989368720244072, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 10, + "draw_name": "call00015_lane10", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.00041413552102611065, + "centre_1": -0.004015077828810355, + "ell_comps_0": 0.005329766760357603, + "ell_comps_1": 0.01667480963359283, + "einstein_radius": 0.011021193939315443 + }, + "log_likelihood_vmap": 19838.449692843376, + "log_likelihood_scalar": 25442.236800482453, + "log_likelihood_library_pdip": 19837.830792808098, + "log_likelihood_library_pdip_scalar": 25442.236800481303, + "rel_diff_vmap_vs_library_pdip": 3.1197969260991834e-05, + "rel_diff_scalar_vs_library_pdip_scalar": 4.518475761609269e-14, + "abs_diff_nats": 5603.787107639077, + "rel_diff": 0.22025528461132843, + "rel_diff_scalar_vs_library_pdip": 0.2825110298705717, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 5604.406007673206, + "rel_diff_library_pdip_vmap_vs_scalar": 0.22027961030404308, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 11, + "draw_name": "call00015_lane11", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.00234856906735493, + "centre_1": -0.0005637310462631455, + "ell_comps_0": 0.002190699592912508, + "ell_comps_1": -0.01675931647125419, + "einstein_radius": -0.1186639473801736 + }, + "log_likelihood_vmap": -9794.265192699473, + "log_likelihood_scalar": -3234.4716141754543, + "log_likelihood_library_pdip": -9841.364133505398, + "log_likelihood_library_pdip_scalar": -3234.481430921878, + "rel_diff_vmap_vs_library_pdip": 0.0047858142597909095, + "rel_diff_scalar_vs_library_pdip_scalar": 3.035029457904832e-06, + "abs_diff_nats": 6559.793578524019, + "rel_diff": 2.0280881581322117, + "rel_diff_scalar_vs_library_pdip": 0.6713390978834387, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6606.88270258352, + "rel_diff_library_pdip_vmap_vs_scalar": 2.0426404799920133, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 12, + "draw_name": "call00015_lane12", + "draw_kind": "captured", + "offsets": { + "centre_0": -9.326736988388313e-05, + "centre_1": -0.0013488200741109593, + "ell_comps_0": 0.00997667014421897, + "ell_comps_1": -0.014348588092779897, + "einstein_radius": -0.02126731799195114 + }, + "log_likelihood_vmap": 12863.149436638698, + "log_likelihood_scalar": 18887.3073475926, + "log_likelihood_library_pdip": 12864.38878979598, + "log_likelihood_library_pdip_scalar": 18883.93355609074, + "rel_diff_vmap_vs_library_pdip": 9.633983996695111e-05, + "rel_diff_scalar_vs_library_pdip_scalar": 0.00017865936097687714, + "abs_diff_nats": 6024.157910953902, + "rel_diff": 0.31895271253272367, + "rel_diff_scalar_vs_library_pdip": 0.4681853647469045, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6019.544766294759, + "rel_diff_library_pdip_vmap_vs_scalar": 0.3187654070278828, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 13, + "draw_name": "call00015_lane13", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.007013568613743564, + "centre_1": 0.004528745612839986, + "ell_comps_0": -0.018496405934026655, + "ell_comps_1": 0.0014830576999261711, + "einstein_radius": -0.04673040108359361 + }, + "log_likelihood_vmap": 18258.384787864205, + "log_likelihood_scalar": 23869.488067817765, + "log_likelihood_library_pdip": 18253.35270616101, + "log_likelihood_library_pdip_scalar": 23869.4880678158, + "rel_diff_vmap_vs_library_pdip": 0.0002756798591578703, + "rel_diff_scalar_vs_library_pdip_scalar": 8.230208164700238e-14, + "abs_diff_nats": 5611.103279953561, + "rel_diff": 0.23507430339567179, + "rel_diff_scalar_vs_library_pdip": 0.3076769211697286, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 5616.135361654789, + "rel_diff_library_pdip_vmap_vs_scalar": 0.23528511988605455, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 14, + "draw_name": "call00015_lane14", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.005108692197125562, + "centre_1": -0.010240010499870703, + "ell_comps_0": -0.00684600823433492, + "ell_comps_1": -0.002573928604858717, + "einstein_radius": -0.0214638151942923 + }, + "log_likelihood_vmap": 3734.10078911233, + "log_likelihood_scalar": -177849.65600841062, + "log_likelihood_library_pdip": 3734.1555286950024, + "log_likelihood_library_pdip_scalar": -177849.31090557046, + "rel_diff_vmap_vs_library_pdip": 1.465915981587744e-05, + "rel_diff_scalar_vs_library_pdip_scalar": 1.940422700567279e-06, + "abs_diff_nats": 181583.75679752295, + "rel_diff": 1.020995828009562, + "rel_diff_scalar_vs_library_pdip": 48.62781160070341, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 181583.46643426546, + "rel_diff_library_pdip_vmap_vs_scalar": 1.0209961765366504, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": true, + "passes": 5, + "pdip_iter": null + }, + { + "lane": 15, + "draw_name": "call00015_lane15", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.0015375882948530809, + "centre_1": 0.00010861850037634777, + "ell_comps_0": 0.010624594413718456, + "ell_comps_1": -0.00030576693661378264, + "einstein_radius": 0.018140577124415858 + }, + "log_likelihood_vmap": 25472.292467859894, + "log_likelihood_scalar": 25794.985439516375, + "log_likelihood_library_pdip": 25472.29246785237, + "log_likelihood_library_pdip_scalar": 25794.985439523887, + "rel_diff_vmap_vs_library_pdip": 2.953538705854838e-13, + "rel_diff_scalar_vs_library_pdip_scalar": 2.912359169287846e-13, + "abs_diff_nats": 322.69297165648095, + "rel_diff": 0.012509910983013567, + "rel_diff_scalar_vs_library_pdip": 0.012668391432426549, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 322.6929716715167, + "rel_diff_library_pdip_vmap_vs_scalar": 0.012509910983592819, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 7, + "pdip_iter": null + }, + { + "lane": 16, + "draw_name": "call00015_lane16", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.001227759218702405, + "centre_1": 0.016003430753678986, + "ell_comps_0": 0.012636219938870381, + "ell_comps_1": -0.00698902153230205, + "einstein_radius": -0.05127757912787545 + }, + "log_likelihood_vmap": 9904.087959335855, + "log_likelihood_scalar": 16093.515739269482, + "log_likelihood_library_pdip": 9903.117799881376, + "log_likelihood_library_pdip_scalar": 16088.259041698664, + "rel_diff_vmap_vs_library_pdip": 9.796505242926456e-05, + "rel_diff_scalar_vs_library_pdip_scalar": 0.00032674123142803117, + "abs_diff_nats": 6189.427779933627, + "rel_diff": 0.38459140191666896, + "rel_diff_scalar_vs_library_pdip": 0.6250958601605503, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6185.141241817288, + "rel_diff_library_pdip_vmap_vs_scalar": 0.3844506248803062, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 17, + "draw_name": "call00015_lane17", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.005083750984013619, + "centre_1": 0.0010204202759534836, + "ell_comps_0": -0.00849477917205129, + "ell_comps_1": 0.011231146696452643, + "einstein_radius": 0.01601143147676365 + }, + "log_likelihood_vmap": NaN, + "log_likelihood_scalar": NaN, + "log_likelihood_library_pdip": NaN, + "log_likelihood_library_pdip_scalar": NaN, + "rel_diff_vmap_vs_library_pdip": NaN, + "rel_diff_scalar_vs_library_pdip_scalar": NaN, + "abs_diff_nats": NaN, + "rel_diff": NaN, + "rel_diff_scalar_vs_library_pdip": NaN, + "abs_diff_library_pdip_vmap_vs_scalar_nats": NaN, + "rel_diff_library_pdip_vmap_vs_scalar": NaN, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": true, + "passes": 3, + "pdip_iter": null + }, + { + "lane": 18, + "draw_name": "call00015_lane18", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.0024988577690690035, + "centre_1": -0.001222125045613948, + "ell_comps_0": -0.01895695410631662, + "ell_comps_1": -0.0031279904204321676, + "einstein_radius": 0.01799244839027403 + }, + "log_likelihood_vmap": 12511.422048227185, + "log_likelihood_scalar": 18622.43365615711, + "log_likelihood_library_pdip": 12512.778742279312, + "log_likelihood_library_pdip_scalar": 18620.968710155976, + "rel_diff_vmap_vs_library_pdip": 0.0001084246816850297, + "rel_diff_scalar_vs_library_pdip_scalar": 7.867184698807396e-05, + "abs_diff_nats": 6111.011607929926, + "rel_diff": 0.3281532221171023, + "rel_diff_scalar_vs_library_pdip": 0.48827323168705467, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6108.189967876664, + "rel_diff_library_pdip_vmap_vs_scalar": 0.32802750828667815, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 19, + "draw_name": "call00015_lane19", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.010541543200940506, + "centre_1": -0.008441200101276233, + "ell_comps_0": 0.007996538161425107, + "ell_comps_1": 0.0034133978687523603, + "einstein_radius": -0.09425697178670522 + }, + "log_likelihood_vmap": 866.5864121829654, + "log_likelihood_scalar": 7274.7693668941465, + "log_likelihood_library_pdip": 841.7604744383425, + "log_likelihood_library_pdip_scalar": 7217.440786173451, + "rel_diff_vmap_vs_library_pdip": 0.029492876534964213, + "rel_diff_scalar_vs_library_pdip_scalar": 0.007943062148915846, + "abs_diff_nats": 6408.182954711181, + "rel_diff": 0.8808778163983305, + "rel_diff_scalar_vs_library_pdip": 7.642327108252706, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6375.680311735108, + "rel_diff_library_pdip_vmap_vs_scalar": 0.8833713362704805, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 20, + "draw_name": "call00016_lane00", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.005867542895042925, + "centre_1": -0.0036003092794745194, + "ell_comps_0": 0.007604733839451844, + "ell_comps_1": -0.020467070639514355, + "einstein_radius": -0.05806481349005321 + }, + "log_likelihood_vmap": -87664.80762364597, + "log_likelihood_scalar": -194096.30158077477, + "log_likelihood_library_pdip": -87665.09581702123, + "log_likelihood_library_pdip_scalar": -194096.27212379826, + "rel_diff_vmap_vs_library_pdip": 3.2874358097102683e-06, + "rel_diff_scalar_vs_library_pdip_scalar": 1.51764772129835e-07, + "abs_diff_nats": 106431.4939571288, + "rel_diff": 0.54834375044924, + "rel_diff_scalar_vs_library_pdip": 1.2140659263739566, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 106431.17630677704, + "rel_diff_library_pdip_vmap_vs_scalar": 0.5483421971076973, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": true, + "passes": 4, + "pdip_iter": null + }, + { + "lane": 21, + "draw_name": "call00016_lane01", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.0002320831105386773, + "centre_1": -0.00045439154934870857, + "ell_comps_0": -0.0009373257044041558, + "ell_comps_1": -0.002022036658350745, + "einstein_radius": -0.021310835332350786 + }, + "log_likelihood_vmap": -145323.6391940611, + "log_likelihood_scalar": NaN, + "log_likelihood_library_pdip": -145324.38055568963, + "log_likelihood_library_pdip_scalar": NaN, + "rel_diff_vmap_vs_library_pdip": 5.1014263792803485e-06, + "rel_diff_scalar_vs_library_pdip_scalar": NaN, + "abs_diff_nats": NaN, + "rel_diff": NaN, + "rel_diff_scalar_vs_library_pdip": NaN, + "abs_diff_library_pdip_vmap_vs_scalar_nats": NaN, + "rel_diff_library_pdip_vmap_vs_scalar": NaN, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": true, + "passes": 2, + "pdip_iter": null + }, + { + "lane": 22, + "draw_name": "call00016_lane02", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.003012817377174628, + "centre_1": 0.003045021384718303, + "ell_comps_0": 0.014529935343015603, + "ell_comps_1": 0.0009399886282723802, + "einstein_radius": 0.0733730645770998 + }, + "log_likelihood_vmap": 4258.8833518569445, + "log_likelihood_scalar": 10571.238212822274, + "log_likelihood_library_pdip": 4257.895598700154, + "log_likelihood_library_pdip_scalar": 10567.732718102652, + "rel_diff_vmap_vs_library_pdip": 0.00023198153498465285, + "rel_diff_scalar_vs_library_pdip_scalar": 0.000331716822627172, + "abs_diff_nats": 6312.35486096533, + "rel_diff": 0.5971254013847521, + "rel_diff_scalar_vs_library_pdip": 1.4827377674665043, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6309.8371194024985, + "rel_diff_library_pdip_vmap_vs_scalar": 0.5970852298898204, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 23, + "draw_name": "call00016_lane03", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.0005625414873401426, + "centre_1": -0.0026712523310752395, + "ell_comps_0": 0.0033797753961079327, + "ell_comps_1": -0.005313712669892466, + "einstein_radius": 0.007215069179382638 + }, + "log_likelihood_vmap": 26248.690080725322, + "log_likelihood_scalar": 25140.106250169072, + "log_likelihood_library_pdip": 26248.690080712113, + "log_likelihood_library_pdip_scalar": 25140.10625016907, + "rel_diff_vmap_vs_library_pdip": 5.032442002984571e-13, + "rel_diff_scalar_vs_library_pdip_scalar": 1.4470817151249102e-16, + "abs_diff_nats": 1108.5838305562502, + "rel_diff": 0.04409622694211146, + "rel_diff_scalar_vs_library_pdip": 0.04223387251456189, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 1108.5838305430443, + "rel_diff_library_pdip_vmap_vs_scalar": 0.04409622694158618, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 8, + "pdip_iter": null + }, + { + "lane": 24, + "draw_name": "call00016_lane04", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.0043072184823141684, + "centre_1": 0.006053631800564527, + "ell_comps_0": 0.012890552900425963, + "ell_comps_1": -0.007502151161552584, + "einstein_radius": 0.062452352201186834 + }, + "log_likelihood_vmap": 7910.153154125132, + "log_likelihood_scalar": 14135.042009156503, + "log_likelihood_library_pdip": 7900.668001758997, + "log_likelihood_library_pdip_scalar": 14131.499763663749, + "rel_diff_vmap_vs_library_pdip": 0.0012005506830590534, + "rel_diff_scalar_vs_library_pdip_scalar": 0.00025066309676924885, + "abs_diff_nats": 6224.888855031371, + "rel_diff": 0.4403870077640354, + "rel_diff_scalar_vs_library_pdip": 0.7890945431461607, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6230.831761904752, + "rel_diff_library_pdip_vmap_vs_scalar": 0.4409179397876832, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 25, + "draw_name": "call00016_lane05", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.0030737862156077662, + "centre_1": -0.00663154900697737, + "ell_comps_0": 0.009619752399897409, + "ell_comps_1": 0.003473222516242081, + "einstein_radius": 0.10148938946995334 + }, + "log_likelihood_vmap": 4214.89727101288, + "log_likelihood_scalar": -39972.18336545014, + "log_likelihood_library_pdip": 4214.897271012604, + "log_likelihood_library_pdip_scalar": -39972.18336546472, + "rel_diff_vmap_vs_library_pdip": 6.559742066324335e-14, + "rel_diff_scalar_vs_library_pdip_scalar": 3.6477914967790665e-13, + "abs_diff_nats": 44187.08063646302, + "rel_diff": 1.1054457604298897, + "rel_diff_scalar_vs_library_pdip": 10.483548659739236, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 44187.08063647732, + "rel_diff_library_pdip_vmap_vs_scalar": 1.1054457604298444, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 11, + "pdip_iter": null + }, + { + "lane": 26, + "draw_name": "call00016_lane06", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.004341357254970946, + "centre_1": -0.00831790119054492, + "ell_comps_0": 0.013271194675385727, + "ell_comps_1": 0.007143121048925718, + "einstein_radius": -0.03403515269856339 + }, + "log_likelihood_vmap": 12327.422320440019, + "log_likelihood_scalar": 18496.516906162957, + "log_likelihood_library_pdip": 12330.813525317957, + "log_likelihood_library_pdip_scalar": 18491.477137097572, + "rel_diff_vmap_vs_library_pdip": 0.00027501874640919045, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0002725455099135204, + "abs_diff_nats": 6169.094585722938, + "rel_diff": 0.3335273671805432, + "rel_diff_scalar_vs_library_pdip": 0.5000240550378457, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6160.663611779615, + "rel_diff_library_pdip_vmap_vs_scalar": 0.3331623301969804, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 27, + "draw_name": "call00016_lane07", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.0020237232058323484, + "centre_1": -0.004253084460605827, + "ell_comps_0": 0.0003981152674067054, + "ell_comps_1": 0.010712381327540496, + "einstein_radius": 0.05337705451403374 + }, + "log_likelihood_vmap": 23198.58442108401, + "log_likelihood_scalar": -3056.2632775569946, + "log_likelihood_library_pdip": 23198.584420878284, + "log_likelihood_library_pdip_scalar": -3056.263277652324, + "rel_diff_vmap_vs_library_pdip": 8.868114442184902e-12, + "rel_diff_scalar_vs_library_pdip_scalar": 3.1191552559653467e-11, + "abs_diff_nats": 26254.847698641006, + "rel_diff": 8.590505893729043, + "rel_diff_scalar_vs_library_pdip": 1.1317435246094765, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 26254.847698530608, + "rel_diff_library_pdip_vmap_vs_scalar": 8.59050589342497, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 8, + "pdip_iter": null + }, + { + "lane": 28, + "draw_name": "call00016_lane08", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.0057476736194228255, + "centre_1": 0.008141073378308437, + "ell_comps_0": -0.009529050432167334, + "ell_comps_1": 0.009276150055593011, + "einstein_radius": -0.015892796339859627 + }, + "log_likelihood_vmap": 24795.477251157718, + "log_likelihood_scalar": 25862.74634099713, + "log_likelihood_library_pdip": 24795.477251150307, + "log_likelihood_library_pdip_scalar": 25862.74634100312, + "rel_diff_vmap_vs_library_pdip": 2.988675214832588e-13, + "rel_diff_scalar_vs_library_pdip_scalar": 2.315343095245585e-13, + "abs_diff_nats": 1067.269089839414, + "rel_diff": 0.04126665729028164, + "rel_diff_scalar_vs_library_pdip": 0.043042893630825835, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 1067.2690898528126, + "rel_diff_library_pdip_vmap_vs_scalar": 0.04126665729079015, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 12, + "pdip_iter": null + }, + { + "lane": 29, + "draw_name": "call00016_lane09", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.003084920430777067, + "centre_1": 0.00015583680770681115, + "ell_comps_0": -0.0019086479387713726, + "ell_comps_1": 0.00331115264567712, + "einstein_radius": 0.05906796603811526 + }, + "log_likelihood_vmap": 16899.725838819133, + "log_likelihood_scalar": 22571.8868711896, + "log_likelihood_library_pdip": 16899.784149907602, + "log_likelihood_library_pdip_scalar": 22571.886871189417, + "rel_diff_vmap_vs_library_pdip": 3.4504043336774154e-06, + "rel_diff_scalar_vs_library_pdip_scalar": 8.058650186961555e-15, + "abs_diff_nats": 5672.161032370466, + "rel_diff": 0.2512931712239938, + "rel_diff_scalar_vs_library_pdip": 0.33563166671054845, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 5672.102721281815, + "rel_diff_library_pdip_vmap_vs_scalar": 0.25129058787378755, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 30, + "draw_name": "call00016_lane10", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.002767285132569693, + "centre_1": -0.004552229029232065, + "ell_comps_0": -0.0015080579051976115, + "ell_comps_1": -0.004551384501496932, + "einstein_radius": 0.02027269778755647 + }, + "log_likelihood_vmap": 12361.159654861469, + "log_likelihood_scalar": 18456.654040525296, + "log_likelihood_library_pdip": 12361.076296418425, + "log_likelihood_library_pdip_scalar": 18458.059022989044, + "rel_diff_vmap_vs_library_pdip": 6.743623374283984e-06, + "rel_diff_scalar_vs_library_pdip_scalar": 7.611756263201123e-05, + "abs_diff_nats": 6095.494385663827, + "rel_diff": 0.33025999036878206, + "rel_diff_scalar_vs_library_pdip": 0.4931267794110325, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6096.982726570619, + "rel_diff_library_pdip_vmap_vs_scalar": 0.3303154854460581, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 31, + "draw_name": "call00016_lane11", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.008103082773010941, + "centre_1": -0.001496996210041656, + "ell_comps_0": -0.009232329483646967, + "ell_comps_1": -0.007564169499060556, + "einstein_radius": -0.02624013973482553 + }, + "log_likelihood_vmap": 24357.983602748543, + "log_likelihood_scalar": 26925.60946634564, + "log_likelihood_library_pdip": 24357.983602747285, + "log_likelihood_library_pdip_scalar": 26925.609466343867, + "rel_diff_vmap_vs_library_pdip": 5.167671872115728e-14, + "rel_diff_scalar_vs_library_pdip_scalar": 6.579965000488572e-14, + "abs_diff_nats": 2567.6258635970953, + "rel_diff": 0.09535999052524233, + "rel_diff_scalar_vs_library_pdip": 0.10541208605250711, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 2567.6258635965823, + "rel_diff_library_pdip_vmap_vs_scalar": 0.09535999052522956, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 12, + "pdip_iter": null + }, + { + "lane": 32, + "draw_name": "call00016_lane12", + "draw_kind": "captured", + "offsets": { + "centre_0": 4.759711172546759e-05, + "centre_1": 0.0036654339222604716, + "ell_comps_0": 0.004022217919654, + "ell_comps_1": 0.01193757547850259, + "einstein_radius": 0.002395607277275502 + }, + "log_likelihood_vmap": 13066.321147846116, + "log_likelihood_scalar": 19083.337272127632, + "log_likelihood_library_pdip": 13062.078473348418, + "log_likelihood_library_pdip_scalar": 19082.159112472924, + "rel_diff_vmap_vs_library_pdip": 0.00032480852923636756, + "rel_diff_scalar_vs_library_pdip_scalar": 6.174142285282073e-05, + "abs_diff_nats": 6017.016124281516, + "rel_diff": 0.31530208990592706, + "rel_diff_scalar_vs_library_pdip": 0.46097248696406623, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6020.080639124506, + "rel_diff_library_pdip_vmap_vs_scalar": 0.3154821529178803, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 33, + "draw_name": "call00016_lane13", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.003846970544705924, + "centre_1": -0.0007374136612465206, + "ell_comps_0": 0.007065226735817748, + "ell_comps_1": -0.009165455995317547, + "einstein_radius": 0.09219663637797715 + }, + "log_likelihood_vmap": 8952.363820639304, + "log_likelihood_scalar": 6443.280922177721, + "log_likelihood_library_pdip": 8952.363820636896, + "log_likelihood_library_pdip_scalar": 6443.280922175298, + "rel_diff_vmap_vs_library_pdip": 2.6901743701959803e-13, + "rel_diff_scalar_vs_library_pdip_scalar": 3.7603418425920416e-13, + "abs_diff_nats": 2509.0828984615837, + "rel_diff": 0.3894107565332656, + "rel_diff_scalar_vs_library_pdip": 0.2802704345722929, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 2509.0828984615982, + "rel_diff_library_pdip_vmap_vs_scalar": 0.38941075653341434, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 34, + "draw_name": "call00016_lane14", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.0037825388019084288, + "centre_1": -0.003065771327334386, + "ell_comps_0": 0.011038948212531964, + "ell_comps_1": -0.0036160410925216925, + "einstein_radius": 0.014342279020181925 + }, + "log_likelihood_vmap": 17857.79019302607, + "log_likelihood_scalar": -135343.9500339164, + "log_likelihood_library_pdip": 17857.788178401064, + "log_likelihood_library_pdip_scalar": -135343.94816965773, + "rel_diff_vmap_vs_library_pdip": 1.1281492344638269e-07, + "rel_diff_scalar_vs_library_pdip_scalar": 1.3774229958583547e-08, + "abs_diff_nats": 153201.74022694246, + "rel_diff": 1.1319437639329355, + "rel_diff_scalar_vs_library_pdip": 8.578987312528124, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 153201.7363480588, + "rel_diff_library_pdip_vmap_vs_scalar": 1.131943750865135, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": true, + "passes": 5, + "pdip_iter": null + }, + { + "lane": 35, + "draw_name": "call00016_lane15", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.0017154498332041523, + "centre_1": 0.0011514055436451646, + "ell_comps_0": -0.0007443063599393077, + "ell_comps_1": -0.0023611448129624295, + "einstein_radius": -0.0311831287730564 + }, + "log_likelihood_vmap": 11389.943891870971, + "log_likelihood_scalar": 17579.388699807518, + "log_likelihood_library_pdip": 11386.703937364357, + "log_likelihood_library_pdip_scalar": 17571.275632183253, + "rel_diff_vmap_vs_library_pdip": 0.00028453839885860216, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0004617233144647108, + "abs_diff_nats": 6189.444807936547, + "rel_diff": 0.3520853263802237, + "rel_diff_scalar_vs_library_pdip": 0.5438522680933567, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6184.5716948188965, + "rel_diff_library_pdip_vmap_vs_scalar": 0.35197055832937585, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 36, + "draw_name": "call00016_lane16", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.003055539488297464, + "centre_1": 0.003051945877003319, + "ell_comps_0": -0.006735358389710178, + "ell_comps_1": -0.0012390584664703722, + "einstein_radius": 0.011663273859285228 + }, + "log_likelihood_vmap": 12569.581560232193, + "log_likelihood_scalar": 18668.58594192626, + "log_likelihood_library_pdip": 12572.966530240072, + "log_likelihood_library_pdip_scalar": 18664.94647956068, + "rel_diff_vmap_vs_library_pdip": 0.0002692260414228897, + "rel_diff_scalar_vs_library_pdip_scalar": 0.00019498916696949122, + "abs_diff_nats": 6099.004381694067, + "rel_diff": 0.32669878697115506, + "rel_diff_scalar_vs_library_pdip": 0.484819505168109, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6091.979949320608, + "rel_diff_library_pdip_vmap_vs_scalar": 0.3263861461371839, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 37, + "draw_name": "call00016_lane17", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.0077524538129402154, + "centre_1": -0.005118338666305982, + "ell_comps_0": 0.00027166766422631605, + "ell_comps_1": 0.016267874103674553, + "einstein_radius": -0.04229979729843336 + }, + "log_likelihood_vmap": 8850.506609608798, + "log_likelihood_scalar": 15119.697160196549, + "log_likelihood_library_pdip": 8851.033470262522, + "log_likelihood_library_pdip_scalar": 15118.859355707224, + "rel_diff_vmap_vs_library_pdip": 5.952532610964111e-05, + "rel_diff_scalar_vs_library_pdip_scalar": 5.541453026408008e-05, + "abs_diff_nats": 6269.190550587751, + "rel_diff": 0.4146373094754667, + "rel_diff_scalar_vs_library_pdip": 0.7082408750340086, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6267.825885444701, + "rel_diff_library_pdip_vmap_vs_scalar": 0.4145700239666994, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 38, + "draw_name": "call00016_lane18", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.0017903593057855822, + "centre_1": -0.010524614123222099, + "ell_comps_0": -0.014306999199314711, + "ell_comps_1": 0.007149289065143228, + "einstein_radius": -0.007747474284142131 + }, + "log_likelihood_vmap": 12877.368147197758, + "log_likelihood_scalar": 18913.042523157983, + "log_likelihood_library_pdip": 12878.633095268153, + "log_likelihood_library_pdip_scalar": 18915.856016800164, + "rel_diff_vmap_vs_library_pdip": 9.822067769440991e-05, + "rel_diff_scalar_vs_library_pdip_scalar": 0.00014873731538674842, + "abs_diff_nats": 6035.674375960225, + "rel_diff": 0.3191276267988016, + "rel_diff_scalar_vs_library_pdip": 0.46855977519128045, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6037.222921532011, + "rel_diff_library_pdip_vmap_vs_scalar": 0.31916202556046297, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 39, + "draw_name": "call00016_lane19", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.0053239296297389604, + "centre_1": 0.008576687228070626, + "ell_comps_0": 0.009980595085990314, + "ell_comps_1": 0.0007633634977672295, + "einstein_radius": 0.004680005976448909 + }, + "log_likelihood_vmap": 13070.463030634884, + "log_likelihood_scalar": 19091.996148226957, + "log_likelihood_library_pdip": 13069.925693660298, + "log_likelihood_library_pdip_scalar": 19083.97025057711, + "rel_diff_vmap_vs_library_pdip": 4.1112473565729e-05, + "rel_diff_scalar_vs_library_pdip_scalar": 0.00042055701955442633, + "abs_diff_nats": 6021.533117592073, + "rel_diff": 0.31539568051669037, + "rel_diff_scalar_vs_library_pdip": 0.4607578188059422, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6014.044556916811, + "rel_diff_library_pdip_vmap_vs_scalar": 0.31513592182082467, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 40, + "draw_name": "call00017_lane00", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.0008412347806356159, + "centre_1": 0.006598872995945007, + "ell_comps_0": 0.013900473273284593, + "ell_comps_1": -0.005813659391784079, + "einstein_radius": -0.06804976453398881 + }, + "log_likelihood_vmap": NaN, + "log_likelihood_scalar": NaN, + "log_likelihood_library_pdip": NaN, + "log_likelihood_library_pdip_scalar": NaN, + "rel_diff_vmap_vs_library_pdip": NaN, + "rel_diff_scalar_vs_library_pdip_scalar": NaN, + "abs_diff_nats": NaN, + "rel_diff": NaN, + "rel_diff_scalar_vs_library_pdip": NaN, + "abs_diff_library_pdip_vmap_vs_scalar_nats": NaN, + "rel_diff_library_pdip_vmap_vs_scalar": NaN, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": true, + "passes": 2, + "pdip_iter": null + }, + { + "lane": 41, + "draw_name": "call00017_lane01", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.003999508715210957, + "centre_1": -0.00769170199263835, + "ell_comps_0": 0.014831080350803293, + "ell_comps_1": 0.015077923229574103, + "einstein_radius": 0.015503022880488437 + }, + "log_likelihood_vmap": 26907.48078741519, + "log_likelihood_scalar": -186104.98818113992, + "log_likelihood_library_pdip": 26907.48084864327, + "log_likelihood_library_pdip_scalar": -186104.9881636147, + "rel_diff_vmap_vs_library_pdip": 2.275504059578514e-09, + "rel_diff_scalar_vs_library_pdip_scalar": 9.416846334113482e-11, + "abs_diff_nats": 213012.4689685551, + "rel_diff": 1.1445822653674687, + "rel_diff_scalar_vs_library_pdip": 7.916477585842961, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 213012.46901225796, + "rel_diff_library_pdip_vmap_vs_scalar": 1.1445822657100813, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": true, + "passes": 6, + "pdip_iter": null + }, + { + "lane": 42, + "draw_name": "call00017_lane02", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.004857416783423787, + "centre_1": 0.0006154585970558757, + "ell_comps_0": 0.015723761388199968, + "ell_comps_1": 0.004357231803243995, + "einstein_radius": 0.08960103667317854 + }, + "log_likelihood_vmap": 10018.611642410564, + "log_likelihood_scalar": 1850.3329082258497, + "log_likelihood_library_pdip": 10018.611642405358, + "log_likelihood_library_pdip_scalar": 1850.3329082256969, + "rel_diff_vmap_vs_library_pdip": 5.196276548851584e-13, + "rel_diff_scalar_vs_library_pdip_scalar": 8.257709151612546e-14, + "abs_diff_nats": 8168.278734184714, + "rel_diff": 4.414491412800244, + "rel_diff_scalar_vs_library_pdip": 0.8153104467694882, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 8168.278734179661, + "rel_diff_library_pdip_vmap_vs_scalar": 4.414491412797877, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 13, + "pdip_iter": null + }, + { + "lane": 43, + "draw_name": "call00017_lane03", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.0005909901072315682, + "centre_1": -0.0035249289321458922, + "ell_comps_0": -0.019570318149453904, + "ell_comps_1": -0.0022378854759100147, + "einstein_radius": 0.03831892100220591 + }, + "log_likelihood_vmap": 11779.880891035726, + "log_likelihood_scalar": 17931.309209143583, + "log_likelihood_library_pdip": 11776.717406871892, + "log_likelihood_library_pdip_scalar": 17930.42303106947, + "rel_diff_vmap_vs_library_pdip": 0.00026862189645371, + "rel_diff_scalar_vs_library_pdip_scalar": 4.9423154856860195e-05, + "abs_diff_nats": 6151.428318107857, + "rel_diff": 0.3430551693889202, + "rel_diff_scalar_vs_library_pdip": 0.5226067323888058, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6153.705624197577, + "rel_diff_library_pdip_vmap_vs_scalar": 0.34319913219752607, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 44, + "draw_name": "call00017_lane04", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.004632807269896779, + "centre_1": 0.0033795641333986453, + "ell_comps_0": 0.003716514023928419, + "ell_comps_1": 0.009570511240886145, + "einstein_radius": 0.05347929977212873 + }, + "log_likelihood_vmap": 9839.964065413951, + "log_likelihood_scalar": 16076.331040329904, + "log_likelihood_library_pdip": 9830.8899496474, + "log_likelihood_library_pdip_scalar": 16076.3203998807, + "rel_diff_vmap_vs_library_pdip": 0.0009230207858115768, + "rel_diff_scalar_vs_library_pdip_scalar": 6.618709343197445e-07, + "abs_diff_nats": 6236.366974915953, + "rel_diff": 0.38792227898710746, + "rel_diff_scalar_vs_library_pdip": 0.6352874584773991, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6245.4304502333, + "rel_diff_library_pdip_vmap_vs_scalar": 0.3884863137139047, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 45, + "draw_name": "call00017_lane05", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.0013313844569187569, + "centre_1": -0.0013834462375134267, + "ell_comps_0": 0.007876545038269143, + "ell_comps_1": 0.0004450456034152751, + "einstein_radius": -0.024930043243791555 + }, + "log_likelihood_vmap": 22630.02319510749, + "log_likelihood_scalar": 27238.298521573408, + "log_likelihood_library_pdip": 22630.021263048377, + "log_likelihood_library_pdip_scalar": 27238.298521573288, + "rel_diff_vmap_vs_library_pdip": 8.537593006539992e-08, + "rel_diff_scalar_vs_library_pdip_scalar": 4.407518352842116e-15, + "abs_diff_nats": 4608.275326465919, + "rel_diff": 0.169183670661956, + "rel_diff_scalar_vs_library_pdip": 0.2036355690946564, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 4608.277258524911, + "rel_diff_library_pdip_vmap_vs_scalar": 0.16918374159366312, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 46, + "draw_name": "call00017_lane06", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.00030258801276238025, + "centre_1": -0.007076618443973986, + "ell_comps_0": 0.0006107363200167637, + "ell_comps_1": 0.005821629725281707, + "einstein_radius": -0.03151259938944295 + }, + "log_likelihood_vmap": 19041.53126491436, + "log_likelihood_scalar": 24851.572007976785, + "log_likelihood_library_pdip": 19042.623793252533, + "log_likelihood_library_pdip_scalar": 24851.572007975705, + "rel_diff_vmap_vs_library_pdip": 5.7372783815648236e-05, + "rel_diff_scalar_vs_library_pdip_scalar": 4.3477318270227596e-14, + "abs_diff_nats": 5810.0407430624255, + "rel_diff": 0.2337896669553755, + "rel_diff_scalar_vs_library_pdip": 0.30504978083863454, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 5808.948214723172, + "rel_diff_library_pdip_vmap_vs_scalar": 0.23374570481331666, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 47, + "draw_name": "call00017_lane07", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.0020393356884617223, + "centre_1": 0.0023495909216404397, + "ell_comps_0": 0.012417419672426981, + "ell_comps_1": -0.006304388323220575, + "einstein_radius": 0.05447124763041211 + }, + "log_likelihood_vmap": NaN, + "log_likelihood_scalar": -194382.54416030622, + "log_likelihood_library_pdip": NaN, + "log_likelihood_library_pdip_scalar": -194382.4621931442, + "rel_diff_vmap_vs_library_pdip": NaN, + "rel_diff_scalar_vs_library_pdip_scalar": 4.216798218406816e-07, + "abs_diff_nats": NaN, + "rel_diff": NaN, + "rel_diff_scalar_vs_library_pdip": NaN, + "abs_diff_library_pdip_vmap_vs_scalar_nats": NaN, + "rel_diff_library_pdip_vmap_vs_scalar": NaN, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": true, + "passes": 1, + "pdip_iter": null + }, + { + "lane": 48, + "draw_name": "call00017_lane08", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.010490691068653586, + "centre_1": -0.0006585600890167999, + "ell_comps_0": -0.007252615449586587, + "ell_comps_1": 0.0052043671627278075, + "einstein_radius": -0.0051931933095421545 + }, + "log_likelihood_vmap": -6749.749083178773, + "log_likelihood_scalar": -194328.92306652112, + "log_likelihood_library_pdip": -6749.7516844481215, + "log_likelihood_library_pdip_scalar": -194328.912766814, + "rel_diff_vmap_vs_library_pdip": 3.8538741429689143e-07, + "rel_diff_scalar_vs_library_pdip_scalar": 5.300141381932154e-08, + "abs_diff_nats": 187579.17398334236, + "rel_diff": 0.9652663691195971, + "rel_diff_scalar_vs_library_pdip": 27.790529215210675, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 187579.16108236587, + "rel_diff_library_pdip_vmap_vs_scalar": 0.9652663538927554, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": true, + "passes": 3, + "pdip_iter": null + }, + { + "lane": 49, + "draw_name": "call00017_lane09", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.001929041523067183, + "centre_1": -0.0016089226404154909, + "ell_comps_0": -0.005705855480794712, + "ell_comps_1": 0.005684341952592878, + "einstein_radius": 0.011417498230541279 + }, + "log_likelihood_vmap": -193564.17624159838, + "log_likelihood_scalar": -194376.45086010778, + "log_likelihood_library_pdip": -193564.2186693637, + "log_likelihood_library_pdip_scalar": -194376.4508601136, + "rel_diff_vmap_vs_library_pdip": 2.191921916849246e-07, + "rel_diff_scalar_vs_library_pdip_scalar": 2.994583996975928e-14, + "abs_diff_nats": 812.2746185094002, + "rel_diff": 0.004178873597676666, + "rel_diff_scalar_vs_library_pdip": 0.004196189752050666, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 812.232190749899, + "rel_diff_library_pdip_vmap_vs_scalar": 0.0041786553214434195, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": true, + "passes": 3, + "pdip_iter": null + } + ], + "lane_pins": [ + { + "pin": "lane 0: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 12355.798817552622, + "reference_value": 12361.442851754779, + "rel_diff": 0.00045658377180094573, + "abs_diff_nats": 5.6440342021560355, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 0: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 18463.28806683203, + "reference_value": 18463.078970707007, + "rel_diff": 1.1325095091301208e-05, + "abs_diff_nats": 0.20909612502146047, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 0: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 12355.798817552622, + "reference_value": 18463.28806683203, + "rel_diff": 0.33079098517945305, + "abs_diff_nats": 6107.489249279406, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 0: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 12361.442851754779, + "reference_value": 18463.078970707007, + "rel_diff": 0.3304777133127638, + "abs_diff_nats": 6101.636118952229, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 1: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 9531.981106652354, + "reference_value": 9549.7408319842, + "rel_diff": 0.0018597075715776645, + "abs_diff_nats": 17.759725331845402, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 1: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 15734.7047905047, + "reference_value": 15734.21749633948, + "rel_diff": 3.0970346338130175e-05, + "abs_diff_nats": 0.48729416522110114, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 1: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 9531.981106652354, + "reference_value": 15734.7047905047, + "rel_diff": 0.3942065495626874, + "abs_diff_nats": 6202.723683852346, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 1: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 9549.7408319842, + "reference_value": 15734.21749633948, + "rel_diff": 0.39305905525928314, + "abs_diff_nats": 6184.476664355279, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 2: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 12685.748337404904, + "reference_value": 12681.013488957102, + "rel_diff": 0.000373380917221302, + "abs_diff_nats": 4.734848447802506, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 2: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 18704.474460339556, + "reference_value": 18706.16598652238, + "rel_diff": 9.042612922626992e-05, + "abs_diff_nats": 1.6915261828253279, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 2: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 12685.748337404904, + "reference_value": 18704.474460339556, + "rel_diff": 0.3217800177009298, + "abs_diff_nats": 6018.726122934651, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 2: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 12681.013488957102, + "reference_value": 18706.16598652238, + "rel_diff": 0.3220944634997009, + "abs_diff_nats": 6025.152497565279, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 3: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 25946.74076876594, + "reference_value": 25946.740796097918, + "rel_diff": 1.0533877283231556e-09, + "abs_diff_nats": 2.7331978344591334e-05, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 3: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -22166.22174910245, + "reference_value": -22166.221747118398, + "rel_diff": 8.950789181016597e-11, + "abs_diff_nats": 1.9840517779812217e-06, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 3: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 25946.74076876594, + "reference_value": -22166.22174910245, + "rel_diff": 2.1705531534627265, + "abs_diff_nats": 48112.96251786839, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 3: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 25946.740796097918, + "reference_value": -22166.221747118398, + "rel_diff": 2.170553154800546, + "abs_diff_nats": 48112.962543216316, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 4: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -191783.9796111592, + "reference_value": -191783.9535693777, + "rel_diff": 1.3578707179042456e-07, + "abs_diff_nats": 0.02604178147157654, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 4: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": NaN, + "reference_value": -194384.85624250013, + "rel_diff": NaN, + "abs_diff_nats": NaN, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 4: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -191783.9796111592, + "reference_value": NaN, + "rel_diff": NaN, + "abs_diff_nats": NaN, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 4: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -191783.9535693777, + "reference_value": -194384.85624250013, + "rel_diff": 0.013380171292138733, + "abs_diff_nats": 2600.902673122415, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 5: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 8557.29119813037, + "reference_value": 8554.981568652838, + "rel_diff": 0.0002699748046207791, + "abs_diff_nats": 2.3096294775314163, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 5: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 14761.660929765752, + "reference_value": 14761.66092976493, + "rel_diff": 5.56972019825292e-14, + "abs_diff_nats": 8.221832104027271e-10, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 5: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 8557.29119813037, + "reference_value": 14761.660929765752, + "rel_diff": 0.42030295650029115, + "abs_diff_nats": 6204.369731635383, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 5: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 8554.981568652838, + "reference_value": 14761.66092976493, + "rel_diff": 0.42045941785569313, + "abs_diff_nats": 6206.679361112092, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 6: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 22689.445185632158, + "reference_value": 22689.445185631354, + "rel_diff": 3.543468382719279e-14, + "abs_diff_nats": 8.039933163672686e-10, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 6: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 21597.12687122962, + "reference_value": 21597.12687123037, + "rel_diff": 3.486860162270664e-14, + "abs_diff_nats": 7.530616130679846e-10, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 6: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 22689.445185632158, + "reference_value": 21597.12687122962, + "rel_diff": 0.050577019846915795, + "abs_diff_nats": 1092.3183144025388, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 6: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 22689.445185631354, + "reference_value": 21597.12687123037, + "rel_diff": 0.05057701984684194, + "abs_diff_nats": 1092.3183144009818, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 7: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 26407.81077655307, + "reference_value": 26407.81077598098, + "rel_diff": 2.1663679816637724e-11, + "abs_diff_nats": 5.720903573092073e-07, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 7: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 7413.159096556694, + "reference_value": 7413.159096633615, + "rel_diff": 1.0376335229615929e-11, + "abs_diff_nats": 7.692142389714718e-08, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 7: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 26407.81077655307, + "reference_value": 7413.159096556694, + "rel_diff": 2.562288416124661, + "abs_diff_nats": 18994.651679996376, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 7: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 26407.81077598098, + "reference_value": 7413.159096633615, + "rel_diff": 2.5622884160105253, + "abs_diff_nats": 18994.651679347364, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 8: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 13032.795371354128, + "reference_value": 13032.333063604052, + "rel_diff": 3.547390538748126e-05, + "abs_diff_nats": 0.4623077500764339, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 8: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 19066.42135821115, + "reference_value": 19060.20267912919, + "rel_diff": 0.0003262651078086841, + "abs_diff_nats": 6.218679081961454, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 8: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 13032.795371354128, + "reference_value": 19066.42135821115, + "rel_diff": 0.31645298682432504, + "abs_diff_nats": 6033.625986857023, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 8: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 13032.333063604052, + "reference_value": 19060.20267912919, + "rel_diff": 0.3162542244173311, + "abs_diff_nats": 6027.869615525138, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 9: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 6405.689679607356, + "reference_value": 6404.941310219961, + "rel_diff": 0.00011684250505160856, + "abs_diff_nats": 0.7483693873946322, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 9: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 12781.026354229361, + "reference_value": 12782.70332143049, + "rel_diff": 0.00013119034049059443, + "abs_diff_nats": 1.6769672011287184, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 9: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 6405.689679607356, + "reference_value": 12781.026354229361, + "rel_diff": 0.49881257560448944, + "abs_diff_nats": 6375.336674622005, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 9: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 6404.941310219961, + "reference_value": 12782.70332143049, + "rel_diff": 0.4989368720244072, + "abs_diff_nats": 6377.762011210529, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 10: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 19838.449692843376, + "reference_value": 19837.830792808098, + "rel_diff": 3.1197969260991834e-05, + "abs_diff_nats": 0.6189000352787843, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 10: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 25442.236800482453, + "reference_value": 25442.236800481303, + "rel_diff": 4.518475761609269e-14, + "abs_diff_nats": 1.1496013030409813e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 10: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 19838.449692843376, + "reference_value": 25442.236800482453, + "rel_diff": 0.22025528461132843, + "abs_diff_nats": 5603.787107639077, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 10: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 19837.830792808098, + "reference_value": 25442.236800481303, + "rel_diff": 0.22027961030404308, + "abs_diff_nats": 5604.406007673206, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 11: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -9794.265192699473, + "reference_value": -9841.364133505398, + "rel_diff": 0.0047858142597909095, + "abs_diff_nats": 47.09894080592494, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 11: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -3234.4716141754543, + "reference_value": -3234.481430921878, + "rel_diff": 3.035029457904832e-06, + "abs_diff_nats": 0.009816746423894074, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 11: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -9794.265192699473, + "reference_value": -3234.4716141754543, + "rel_diff": 2.0280881581322117, + "abs_diff_nats": 6559.793578524019, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 11: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -9841.364133505398, + "reference_value": -3234.481430921878, + "rel_diff": 2.0426404799920133, + "abs_diff_nats": 6606.88270258352, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 12: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 12863.149436638698, + "reference_value": 12864.38878979598, + "rel_diff": 9.633983996695111e-05, + "abs_diff_nats": 1.2393531572815846, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 12: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 18887.3073475926, + "reference_value": 18883.93355609074, + "rel_diff": 0.00017865936097687714, + "abs_diff_nats": 3.3737915018609783, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 12: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 12863.149436638698, + "reference_value": 18887.3073475926, + "rel_diff": 0.31895271253272367, + "abs_diff_nats": 6024.157910953902, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 12: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 12864.38878979598, + "reference_value": 18883.93355609074, + "rel_diff": 0.3187654070278828, + "abs_diff_nats": 6019.544766294759, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 13: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 18258.384787864205, + "reference_value": 18253.35270616101, + "rel_diff": 0.0002756798591578703, + "abs_diff_nats": 5.032081703193398, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 13: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 23869.488067817765, + "reference_value": 23869.4880678158, + "rel_diff": 8.230208164700238e-14, + "abs_diff_nats": 1.964508555829525e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 13: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 18258.384787864205, + "reference_value": 23869.488067817765, + "rel_diff": 0.23507430339567179, + "abs_diff_nats": 5611.103279953561, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 13: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 18253.35270616101, + "reference_value": 23869.4880678158, + "rel_diff": 0.23528511988605455, + "abs_diff_nats": 5616.135361654789, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 14: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 3734.10078911233, + "reference_value": 3734.1555286950024, + "rel_diff": 1.465915981587744e-05, + "abs_diff_nats": 0.054739582672482356, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 14: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -177849.65600841062, + "reference_value": -177849.31090557046, + "rel_diff": 1.940422700567279e-06, + "abs_diff_nats": 0.3451028401614167, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 14: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 3734.10078911233, + "reference_value": -177849.65600841062, + "rel_diff": 1.020995828009562, + "abs_diff_nats": 181583.75679752295, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 14: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 3734.1555286950024, + "reference_value": -177849.31090557046, + "rel_diff": 1.0209961765366504, + "abs_diff_nats": 181583.46643426546, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 15: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 25472.292467859894, + "reference_value": 25472.29246785237, + "rel_diff": 2.953538705854838e-13, + "abs_diff_nats": 7.523340173065662e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 15: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 25794.985439516375, + "reference_value": 25794.985439523887, + "rel_diff": 2.912359169287846e-13, + "abs_diff_nats": 7.512426236644387e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 15: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 25472.292467859894, + "reference_value": 25794.985439516375, + "rel_diff": 0.012509910983013567, + "abs_diff_nats": 322.69297165648095, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 15: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 25472.29246785237, + "reference_value": 25794.985439523887, + "rel_diff": 0.012509910983592819, + "abs_diff_nats": 322.6929716715167, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 16: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 9904.087959335855, + "reference_value": 9903.117799881376, + "rel_diff": 9.796505242926456e-05, + "abs_diff_nats": 0.9701594544785621, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 16: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 16093.515739269482, + "reference_value": 16088.259041698664, + "rel_diff": 0.00032674123142803117, + "abs_diff_nats": 5.256697570817778, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 16: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 9904.087959335855, + "reference_value": 16093.515739269482, + "rel_diff": 0.38459140191666896, + "abs_diff_nats": 6189.427779933627, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 16: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 9903.117799881376, + "reference_value": 16088.259041698664, + "rel_diff": 0.3844506248803062, + "abs_diff_nats": 6185.141241817288, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 17: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": NaN, + "reference_value": NaN, + "rel_diff": NaN, + "abs_diff_nats": NaN, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 17: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": NaN, + "reference_value": NaN, + "rel_diff": NaN, + "abs_diff_nats": NaN, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 17: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": NaN, + "reference_value": NaN, + "rel_diff": NaN, + "abs_diff_nats": NaN, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 17: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": NaN, + "reference_value": NaN, + "rel_diff": NaN, + "abs_diff_nats": NaN, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 18: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 12511.422048227185, + "reference_value": 12512.778742279312, + "rel_diff": 0.0001084246816850297, + "abs_diff_nats": 1.3566940521268407, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 18: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 18622.43365615711, + "reference_value": 18620.968710155976, + "rel_diff": 7.867184698807396e-05, + "abs_diff_nats": 1.4649460011351039, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 18: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 12511.422048227185, + "reference_value": 18622.43365615711, + "rel_diff": 0.3281532221171023, + "abs_diff_nats": 6111.011607929926, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 18: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 12512.778742279312, + "reference_value": 18620.968710155976, + "rel_diff": 0.32802750828667815, + "abs_diff_nats": 6108.189967876664, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 19: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 866.5864121829654, + "reference_value": 841.7604744383425, + "rel_diff": 0.029492876534964213, + "abs_diff_nats": 24.825937744622934, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 19: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 7274.7693668941465, + "reference_value": 7217.440786173451, + "rel_diff": 0.007943062148915846, + "abs_diff_nats": 57.328580720695754, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 19: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 866.5864121829654, + "reference_value": 7274.7693668941465, + "rel_diff": 0.8808778163983305, + "abs_diff_nats": 6408.182954711181, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 19: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 841.7604744383425, + "reference_value": 7217.440786173451, + "rel_diff": 0.8833713362704805, + "abs_diff_nats": 6375.680311735108, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 20: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -87664.80762364597, + "reference_value": -87665.09581702123, + "rel_diff": 3.2874358097102683e-06, + "abs_diff_nats": 0.28819337525055744, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 20: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -194096.30158077477, + "reference_value": -194096.27212379826, + "rel_diff": 1.51764772129835e-07, + "abs_diff_nats": 0.029456976510118693, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 20: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -87664.80762364597, + "reference_value": -194096.30158077477, + "rel_diff": 0.54834375044924, + "abs_diff_nats": 106431.4939571288, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 20: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -87665.09581702123, + "reference_value": -194096.27212379826, + "rel_diff": 0.5483421971076973, + "abs_diff_nats": 106431.17630677704, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 21: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -145323.6391940611, + "reference_value": -145324.38055568963, + "rel_diff": 5.1014263792803485e-06, + "abs_diff_nats": 0.7413616285193712, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 21: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": NaN, + "reference_value": NaN, + "rel_diff": NaN, + "abs_diff_nats": NaN, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 21: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -145323.6391940611, + "reference_value": NaN, + "rel_diff": NaN, + "abs_diff_nats": NaN, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 21: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -145324.38055568963, + "reference_value": NaN, + "rel_diff": NaN, + "abs_diff_nats": NaN, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 22: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 4258.8833518569445, + "reference_value": 4257.895598700154, + "rel_diff": 0.00023198153498465285, + "abs_diff_nats": 0.9877531567908591, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 22: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 10571.238212822274, + "reference_value": 10567.732718102652, + "rel_diff": 0.000331716822627172, + "abs_diff_nats": 3.50549471962222, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 22: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 4258.8833518569445, + "reference_value": 10571.238212822274, + "rel_diff": 0.5971254013847521, + "abs_diff_nats": 6312.35486096533, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 22: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 4257.895598700154, + "reference_value": 10567.732718102652, + "rel_diff": 0.5970852298898204, + "abs_diff_nats": 6309.8371194024985, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 23: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 26248.690080725322, + "reference_value": 26248.690080712113, + "rel_diff": 5.032442002984571e-13, + "abs_diff_nats": 1.320950104855001e-08, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 23: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 25140.106250169072, + "reference_value": 25140.10625016907, + "rel_diff": 1.4470817151249102e-16, + "abs_diff_nats": 3.637978807091713e-12, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 23: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 26248.690080725322, + "reference_value": 25140.106250169072, + "rel_diff": 0.04409622694211146, + "abs_diff_nats": 1108.5838305562502, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 23: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 26248.690080712113, + "reference_value": 25140.10625016907, + "rel_diff": 0.04409622694158618, + "abs_diff_nats": 1108.5838305430443, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 24: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 7910.153154125132, + "reference_value": 7900.668001758997, + "rel_diff": 0.0012005506830590534, + "abs_diff_nats": 9.485152366134571, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 24: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 14135.042009156503, + "reference_value": 14131.499763663749, + "rel_diff": 0.00025066309676924885, + "abs_diff_nats": 3.542245492753864, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 24: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 7910.153154125132, + "reference_value": 14135.042009156503, + "rel_diff": 0.4403870077640354, + "abs_diff_nats": 6224.888855031371, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 24: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 7900.668001758997, + "reference_value": 14131.499763663749, + "rel_diff": 0.4409179397876832, + "abs_diff_nats": 6230.831761904752, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 25: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 4214.89727101288, + "reference_value": 4214.897271012604, + "rel_diff": 6.559742066324335e-14, + "abs_diff_nats": 2.764863893389702e-10, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 25: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -39972.18336545014, + "reference_value": -39972.18336546472, + "rel_diff": 3.6477914967790665e-13, + "abs_diff_nats": 1.4581019058823586e-08, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 25: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 4214.89727101288, + "reference_value": -39972.18336545014, + "rel_diff": 1.1054457604298897, + "abs_diff_nats": 44187.08063646302, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 25: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 4214.897271012604, + "reference_value": -39972.18336546472, + "rel_diff": 1.1054457604298444, + "abs_diff_nats": 44187.08063647732, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 26: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 12327.422320440019, + "reference_value": 12330.813525317957, + "rel_diff": 0.00027501874640919045, + "abs_diff_nats": 3.391204877938435, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 26: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 18496.516906162957, + "reference_value": 18491.477137097572, + "rel_diff": 0.0002725455099135204, + "abs_diff_nats": 5.039769065384462, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 26: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 12327.422320440019, + "reference_value": 18496.516906162957, + "rel_diff": 0.3335273671805432, + "abs_diff_nats": 6169.094585722938, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 26: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 12330.813525317957, + "reference_value": 18491.477137097572, + "rel_diff": 0.3331623301969804, + "abs_diff_nats": 6160.663611779615, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 27: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 23198.58442108401, + "reference_value": 23198.584420878284, + "rel_diff": 8.868114442184902e-12, + "abs_diff_nats": 2.0572770154103637e-07, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 27: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -3056.2632775569946, + "reference_value": -3056.263277652324, + "rel_diff": 3.1191552559653467e-11, + "abs_diff_nats": 9.532959666103125e-08, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 27: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 23198.58442108401, + "reference_value": -3056.2632775569946, + "rel_diff": 8.590505893729043, + "abs_diff_nats": 26254.847698641006, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 27: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 23198.584420878284, + "reference_value": -3056.263277652324, + "rel_diff": 8.59050589342497, + "abs_diff_nats": 26254.847698530608, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 28: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 24795.477251157718, + "reference_value": 24795.477251150307, + "rel_diff": 2.988675214832588e-13, + "abs_diff_nats": 7.410562830045819e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 28: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 25862.74634099713, + "reference_value": 25862.74634100312, + "rel_diff": 2.315343095245585e-13, + "abs_diff_nats": 5.9881131164729595e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 28: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 24795.477251157718, + "reference_value": 25862.74634099713, + "rel_diff": 0.04126665729028164, + "abs_diff_nats": 1067.269089839414, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 28: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 24795.477251150307, + "reference_value": 25862.74634100312, + "rel_diff": 0.04126665729079015, + "abs_diff_nats": 1067.2690898528126, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 29: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 16899.725838819133, + "reference_value": 16899.784149907602, + "rel_diff": 3.4504043336774154e-06, + "abs_diff_nats": 0.058311088469054084, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 29: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 22571.8868711896, + "reference_value": 22571.886871189417, + "rel_diff": 8.058650186961555e-15, + "abs_diff_nats": 1.8189894035458565e-10, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 29: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 16899.725838819133, + "reference_value": 22571.8868711896, + "rel_diff": 0.2512931712239938, + "abs_diff_nats": 5672.161032370466, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 29: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 16899.784149907602, + "reference_value": 22571.886871189417, + "rel_diff": 0.25129058787378755, + "abs_diff_nats": 5672.102721281815, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 30: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 12361.159654861469, + "reference_value": 12361.076296418425, + "rel_diff": 6.743623374283984e-06, + "abs_diff_nats": 0.083358443043835, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 30: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 18456.654040525296, + "reference_value": 18458.059022989044, + "rel_diff": 7.611756263201123e-05, + "abs_diff_nats": 1.4049824637477286, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 30: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 12361.159654861469, + "reference_value": 18456.654040525296, + "rel_diff": 0.33025999036878206, + "abs_diff_nats": 6095.494385663827, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 30: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 12361.076296418425, + "reference_value": 18458.059022989044, + "rel_diff": 0.3303154854460581, + "abs_diff_nats": 6096.982726570619, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 31: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 24357.983602748543, + "reference_value": 24357.983602747285, + "rel_diff": 5.167671872115728e-14, + "abs_diff_nats": 1.2587406672537327e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 31: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 26925.60946634564, + "reference_value": 26925.609466343867, + "rel_diff": 6.579965000488572e-14, + "abs_diff_nats": 1.7716956790536642e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 31: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 24357.983602748543, + "reference_value": 26925.60946634564, + "rel_diff": 0.09535999052524233, + "abs_diff_nats": 2567.6258635970953, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 31: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 24357.983602747285, + "reference_value": 26925.609466343867, + "rel_diff": 0.09535999052522956, + "abs_diff_nats": 2567.6258635965823, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 32: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 13066.321147846116, + "reference_value": 13062.078473348418, + "rel_diff": 0.00032480852923636756, + "abs_diff_nats": 4.242674497698317, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 32: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 19083.337272127632, + "reference_value": 19082.159112472924, + "rel_diff": 6.174142285282073e-05, + "abs_diff_nats": 1.178159654707997, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 32: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 13066.321147846116, + "reference_value": 19083.337272127632, + "rel_diff": 0.31530208990592706, + "abs_diff_nats": 6017.016124281516, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 32: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 13062.078473348418, + "reference_value": 19082.159112472924, + "rel_diff": 0.3154821529178803, + "abs_diff_nats": 6020.080639124506, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 33: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 8952.363820639304, + "reference_value": 8952.363820636896, + "rel_diff": 2.6901743701959803e-13, + "abs_diff_nats": 2.408341970294714e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 33: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 6443.280922177721, + "reference_value": 6443.280922175298, + "rel_diff": 3.7603418425920416e-13, + "abs_diff_nats": 2.422893885523081e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 33: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 8952.363820639304, + "reference_value": 6443.280922177721, + "rel_diff": 0.3894107565332656, + "abs_diff_nats": 2509.0828984615837, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 33: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 8952.363820636896, + "reference_value": 6443.280922175298, + "rel_diff": 0.38941075653341434, + "abs_diff_nats": 2509.0828984615982, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 34: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 17857.79019302607, + "reference_value": 17857.788178401064, + "rel_diff": 1.1281492344638269e-07, + "abs_diff_nats": 0.0020146250062680338, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 34: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -135343.9500339164, + "reference_value": -135343.94816965773, + "rel_diff": 1.3774229958583547e-08, + "abs_diff_nats": 0.0018642586655914783, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 34: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 17857.79019302607, + "reference_value": -135343.9500339164, + "rel_diff": 1.1319437639329355, + "abs_diff_nats": 153201.74022694246, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 34: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 17857.788178401064, + "reference_value": -135343.94816965773, + "rel_diff": 1.131943750865135, + "abs_diff_nats": 153201.7363480588, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 35: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 11389.943891870971, + "reference_value": 11386.703937364357, + "rel_diff": 0.00028453839885860216, + "abs_diff_nats": 3.2399545066145947, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 35: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 17579.388699807518, + "reference_value": 17571.275632183253, + "rel_diff": 0.0004617233144647108, + "abs_diff_nats": 8.113067624264659, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 35: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 11389.943891870971, + "reference_value": 17579.388699807518, + "rel_diff": 0.3520853263802237, + "abs_diff_nats": 6189.444807936547, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 35: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 11386.703937364357, + "reference_value": 17571.275632183253, + "rel_diff": 0.35197055832937585, + "abs_diff_nats": 6184.5716948188965, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 36: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 12569.581560232193, + "reference_value": 12572.966530240072, + "rel_diff": 0.0002692260414228897, + "abs_diff_nats": 3.3849700078790192, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 36: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 18668.58594192626, + "reference_value": 18664.94647956068, + "rel_diff": 0.00019498916696949122, + "abs_diff_nats": 3.639462365579675, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 36: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 12569.581560232193, + "reference_value": 18668.58594192626, + "rel_diff": 0.32669878697115506, + "abs_diff_nats": 6099.004381694067, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 36: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 12572.966530240072, + "reference_value": 18664.94647956068, + "rel_diff": 0.3263861461371839, + "abs_diff_nats": 6091.979949320608, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 37: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 8850.506609608798, + "reference_value": 8851.033470262522, + "rel_diff": 5.952532610964111e-05, + "abs_diff_nats": 0.5268606537247251, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 37: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 15119.697160196549, + "reference_value": 15118.859355707224, + "rel_diff": 5.541453026408008e-05, + "abs_diff_nats": 0.8378044893252081, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 37: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 8850.506609608798, + "reference_value": 15119.697160196549, + "rel_diff": 0.4146373094754667, + "abs_diff_nats": 6269.190550587751, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 37: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 8851.033470262522, + "reference_value": 15118.859355707224, + "rel_diff": 0.4145700239666994, + "abs_diff_nats": 6267.825885444701, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 38: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 12877.368147197758, + "reference_value": 12878.633095268153, + "rel_diff": 9.822067769440991e-05, + "abs_diff_nats": 1.2649480703948939, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 38: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 18913.042523157983, + "reference_value": 18915.856016800164, + "rel_diff": 0.00014873731538674842, + "abs_diff_nats": 2.813493642181129, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 38: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 12877.368147197758, + "reference_value": 18913.042523157983, + "rel_diff": 0.3191276267988016, + "abs_diff_nats": 6035.674375960225, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 38: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 12878.633095268153, + "reference_value": 18915.856016800164, + "rel_diff": 0.31916202556046297, + "abs_diff_nats": 6037.222921532011, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 39: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 13070.463030634884, + "reference_value": 13069.925693660298, + "rel_diff": 4.1112473565729e-05, + "abs_diff_nats": 0.5373369745866512, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 39: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 19091.996148226957, + "reference_value": 19083.97025057711, + "rel_diff": 0.00042055701955442633, + "abs_diff_nats": 8.025897649848048, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 39: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 13070.463030634884, + "reference_value": 19091.996148226957, + "rel_diff": 0.31539568051669037, + "abs_diff_nats": 6021.533117592073, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 39: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 13069.925693660298, + "reference_value": 19083.97025057711, + "rel_diff": 0.31513592182082467, + "abs_diff_nats": 6014.044556916811, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 40: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": NaN, + "reference_value": NaN, + "rel_diff": NaN, + "abs_diff_nats": NaN, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 40: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": NaN, + "reference_value": NaN, + "rel_diff": NaN, + "abs_diff_nats": NaN, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 40: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": NaN, + "reference_value": NaN, + "rel_diff": NaN, + "abs_diff_nats": NaN, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 40: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": NaN, + "reference_value": NaN, + "rel_diff": NaN, + "abs_diff_nats": NaN, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 41: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 26907.48078741519, + "reference_value": 26907.48084864327, + "rel_diff": 2.275504059578514e-09, + "abs_diff_nats": 6.122808190411888e-05, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 41: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -186104.98818113992, + "reference_value": -186104.9881636147, + "rel_diff": 9.416846334113482e-11, + "abs_diff_nats": 1.752522075548768e-05, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 41: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 26907.48078741519, + "reference_value": -186104.98818113992, + "rel_diff": 1.1445822653674687, + "abs_diff_nats": 213012.4689685551, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 41: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 26907.48084864327, + "reference_value": -186104.9881636147, + "rel_diff": 1.1445822657100813, + "abs_diff_nats": 213012.46901225796, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 42: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 10018.611642410564, + "reference_value": 10018.611642405358, + "rel_diff": 5.196276548851584e-13, + "abs_diff_nats": 5.205947672948241e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 42: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 1850.3329082258497, + "reference_value": 1850.3329082256969, + "rel_diff": 8.257709151612546e-14, + "abs_diff_nats": 1.5279510989785194e-10, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 42: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 10018.611642410564, + "reference_value": 1850.3329082258497, + "rel_diff": 4.414491412800244, + "abs_diff_nats": 8168.278734184714, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 42: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 10018.611642405358, + "reference_value": 1850.3329082256969, + "rel_diff": 4.414491412797877, + "abs_diff_nats": 8168.278734179661, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 43: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 11779.880891035726, + "reference_value": 11776.717406871892, + "rel_diff": 0.00026862189645371, + "abs_diff_nats": 3.1634841638333455, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 43: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 17931.309209143583, + "reference_value": 17930.42303106947, + "rel_diff": 4.9423154856860195e-05, + "abs_diff_nats": 0.886178074113559, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 43: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 11779.880891035726, + "reference_value": 17931.309209143583, + "rel_diff": 0.3430551693889202, + "abs_diff_nats": 6151.428318107857, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 43: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 11776.717406871892, + "reference_value": 17930.42303106947, + "rel_diff": 0.34319913219752607, + "abs_diff_nats": 6153.705624197577, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 44: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 9839.964065413951, + "reference_value": 9830.8899496474, + "rel_diff": 0.0009230207858115768, + "abs_diff_nats": 9.074115766550676, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 44: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 16076.331040329904, + "reference_value": 16076.3203998807, + "rel_diff": 6.618709343197445e-07, + "abs_diff_nats": 0.010640449203492608, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 44: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 9839.964065413951, + "reference_value": 16076.331040329904, + "rel_diff": 0.38792227898710746, + "abs_diff_nats": 6236.366974915953, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 44: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 9830.8899496474, + "reference_value": 16076.3203998807, + "rel_diff": 0.3884863137139047, + "abs_diff_nats": 6245.4304502333, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 45: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 22630.02319510749, + "reference_value": 22630.021263048377, + "rel_diff": 8.537593006539992e-08, + "abs_diff_nats": 0.0019320591127325315, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 45: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 27238.298521573408, + "reference_value": 27238.298521573288, + "rel_diff": 4.407518352842116e-15, + "abs_diff_nats": 1.2005330063402653e-10, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 45: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 22630.02319510749, + "reference_value": 27238.298521573408, + "rel_diff": 0.169183670661956, + "abs_diff_nats": 4608.275326465919, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 45: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 22630.021263048377, + "reference_value": 27238.298521573288, + "rel_diff": 0.16918374159366312, + "abs_diff_nats": 4608.277258524911, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 46: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 19041.53126491436, + "reference_value": 19042.623793252533, + "rel_diff": 5.7372783815648236e-05, + "abs_diff_nats": 1.0925283381729969, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 46: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 24851.572007976785, + "reference_value": 24851.572007975705, + "rel_diff": 4.3477318270227596e-14, + "abs_diff_nats": 1.0804797057062387e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 46: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 19041.53126491436, + "reference_value": 24851.572007976785, + "rel_diff": 0.2337896669553755, + "abs_diff_nats": 5810.0407430624255, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 46: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 19042.623793252533, + "reference_value": 24851.572007975705, + "rel_diff": 0.23374570481331666, + "abs_diff_nats": 5808.948214723172, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 47: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": NaN, + "reference_value": NaN, + "rel_diff": NaN, + "abs_diff_nats": NaN, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 47: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -194382.54416030622, + "reference_value": -194382.4621931442, + "rel_diff": 4.216798218406816e-07, + "abs_diff_nats": 0.08196716202655807, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 47: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": NaN, + "reference_value": -194382.54416030622, + "rel_diff": NaN, + "abs_diff_nats": NaN, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 47: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": NaN, + "reference_value": -194382.4621931442, + "rel_diff": NaN, + "abs_diff_nats": NaN, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 48: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -6749.749083178773, + "reference_value": -6749.7516844481215, + "rel_diff": 3.8538741429689143e-07, + "abs_diff_nats": 0.002601269348815549, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 48: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -194328.92306652112, + "reference_value": -194328.912766814, + "rel_diff": 5.300141381932154e-08, + "abs_diff_nats": 0.010299707122612745, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 48: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -6749.749083178773, + "reference_value": -194328.92306652112, + "rel_diff": 0.9652663691195971, + "abs_diff_nats": 187579.17398334236, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 48: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -6749.7516844481215, + "reference_value": -194328.912766814, + "rel_diff": 0.9652663538927554, + "abs_diff_nats": 187579.16108236587, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 49: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -193564.17624159838, + "reference_value": -193564.2186693637, + "rel_diff": 2.191921916849246e-07, + "abs_diff_nats": 0.04242776532191783, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 49: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -194376.45086010778, + "reference_value": -194376.4508601136, + "rel_diff": 2.994583996975928e-14, + "abs_diff_nats": 5.820766091346741e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 49: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -193564.17624159838, + "reference_value": -194376.45086010778, + "rel_diff": 0.004178873597676666, + "abs_diff_nats": 812.2746185094002, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 49: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -193564.2186693637, + "reference_value": -194376.4508601136, + "rel_diff": 0.0041786553214434195, + "abs_diff_nats": 812.232190749899, + "within_rtol": false, + "status": "RECORDED" + } + ], + "lanes_failed": 40, + "arm_rows": { + "vmap": { + "arm": "vmap", + "program": "jax.jit(jax.vmap(fn))", + "stands_for": "Nautilus(use_jax_vmap=True) \u2014 Fitness._vmap", + "hlo_source": "jax.jit(jax.vmap(fn)).lower(batched_tree) \u2014 the exact current Fitness._vmap composition (PyAutoFit#1638)", + "batch_wall_ms": 1103.6346154000057, + "wall_production_nesting_ms": 1103.6346154000057, + "wall_aot_command_buffers_on_ms": 1106.1460930999601, + "wall_aot_command_buffers_off_ms": 1108.119951000117, + "command_buffer_delta_ms": 1.9738579001568723, + "production_nesting_vs_aot_on_delta_ms": -2.511477699954412, + "production_nesting_vs_aot_on_delta_pct": -0.22704755869236298, + "wall_per_lane_ms": 22.072692308000114, + "wall_per_lane_command_buffers_off_ms": 22.16239902000234, + "traced_batch_wall_ms": 1114.548707600261, + "untraced_batch_wall_ms": 1110.4122429998824, + "traced_wall_per_lane_ms": 22.29097415200522, + "callback_count_per_call": 0.0, + "callback_count_per_lane": 0.0, + "callback_expectation": "0 \u2014 the rectangular mesh has no qhull host callback (asserted)", + "host_qhull_ms": 0.0, + "host_tables_ms": 0.0, + "host_qhull_ms_per_lane": 0.0, + "host_tables_ms_per_lane": 0.0, + "host_callback_probe": { + "calls": 0, + "qhull_ms_total": 0.0, + "tables_ms_total": 0.0, + "total_ms_total": 0.0, + "qhull_ms_mean": 0.0, + "tables_ms_mean": 0.0, + "total_ms_mean": 0.0, + "non_finite_calls": 0, + "n_points": [] + }, + "host_callback_records_first": [], + "device_idle_ms": 10.75437050000005, + "device_idle_ms_per_lane": 0.215087410000001, + "trace": { + "parser": "ProfileData.from_file(xplane) + as_text() + stack_frame_index(proto field 17)", + "stage_audit": { + "mixed_fusion": [ + { + "instruction": "loop_divide_gather_fusion", + "ms": 46.31462319999999, + "opcode": "fusion", + "shape": "(f64[15361,50,1,1,1521]{4,3,2,1,0}, f64[15361,50,1,1,1521]{4,3,2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_multiply_transpose_fusion", + "ms": 14.812229699999998, + "opcode": "fusion", + "shape": "(f64[50,1369,1369]{2,1,0}, f64[50,1369,1369]{2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:237 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:274 (_certified_positive_only_from)" + ] + }, + { + "instruction": "loop_broadcast_fusion", + "ms": 12.867647999999999, + "opcode": "fusion", + "shape": "f64[50,1521,180,180]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_reduce_fusion.3", + "ms": 6.275576300000001, + "opcode": "fusion", + "shape": "f64[92,50,1521]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123 (data_vector_via_blurred_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:67 (InversionImagingMapping.data_vector)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:699 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_reduce_fusion.6", + "ms": 5.5941685, + "opcode": "fusion", + "shape": "f64[15361,50]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163 (mapped_reconstructed_data_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:120 (InversionImagingMapping._mapped_reconstructed_data_dict_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:196 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "loop_broadcast_fusion.1", + "ms": 5.1478871999999996, + "opcode": "fusion", + "shape": "f64[15361,50,1521]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:353", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:353 (mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:283 (Mapper.mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:91 (AbstractInversionImaging._mapping_matrix_for_convolution_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:137 (AbstractInversionImaging.operated_mapping_matrix_list)" + ] + } + ], + "other": [ + { + "instruction": "copy.60", + "ms": 0.13756409999999997, + "opcode": "copy", + "shape": "u32[50,2,15361]{2,1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.61", + "ms": 0.12277740000000004, + "opcode": "copy", + "shape": "u32[50,2,15361]{2,1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.78", + "ms": 0.09009890000000005, + "opcode": "copy", + "shape": "u32[50,15361]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.70", + "ms": 0.08819800000000001, + "opcode": "copy", + "shape": "u32[50,15361]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.79", + "ms": 0.08803790000000003, + "opcode": "copy", + "shape": "u32[50,15361]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.69", + "ms": 0.08692470000000001, + "opcode": "copy", + "shape": "u32[50,15361]{1,0}", + "source": "", + "stack": [] + } + ], + "mesh_construction": [ + { + "instruction": "fusion.6", + "ms": 1.1860618999999992, + "opcode": "fusion", + "shape": "(f64[50,15361,2]{2,1,0}, s64[50,15361,2]{2,1,0}, s32[50,15361,2]{2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:227", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:227 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_select_fusion", + "ms": 0.5458021999999997, + "opcode": "fusion", + "shape": "(u32[50,2,15361]{2,1,0}, u32[50,2,15361]{2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69 (forward_interp)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:573 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/abstract.py:36 (AbstractInterpolator.mappings)" + ] + }, + { + "instruction": "loop_subtract_transpose_fusion", + "ms": 0.1560854, + "opcode": "fusion", + "shape": "(f64[50,15361,2]{2,1,0}, f64[1536100,1,1,1]{3,2,1,0}, f64[1536100,1,1,1]{3,2,1,0}, f64[50,15361,2]{2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69 (forward_interp)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:573 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/abstract.py:36 (AbstractInterpolator.mappings)" + ] + }, + { + "instruction": "loop_select_fusion.1", + "ms": 0.10342990000000005, + "opcode": "fusion", + "shape": "(u32[50,15361]{1,0}, u32[50,15361]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_select_fusion.2", + "ms": 0.10149390000000003, + "opcode": "fusion", + "shape": "(u32[50,15361]{1,0}, u32[50,15361]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_gather_fusion", + "ms": 0.0658748, + "opcode": "fusion", + "shape": "(f64[1536100,1,1,1]{3,2,1,0}, f64[1536100,1,1,1]{3,2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69 (forward_interp)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:573 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/abstract.py:36 (AbstractInterpolator.mappings)" + ] + } + ], + "border_relocator": [ + { + "instruction": "custom-call.2", + "ms": 0.042505299999999996, + "opcode": "custom-call", + "shape": "(f64[50,2,2]{2,1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_add_rsqrt_fusion", + "ms": 0.018156600000000002, + "opcode": "fusion", + "shape": "(f64[50,15361]{1,0}, f64[50,15361]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:311", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:311 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:423 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "eigh.0", + "ms": 0.0148962, + "opcode": "custom-call", + "shape": "(f64[50,2,2]{1,2,0}, f64[50,2]{1,0}, s32[50]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_reduce_fusion.7", + "ms": 0.0033728999999999994, + "opcode": "fusion", + "shape": "f64[50]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:270", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:270 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_reduce_fusion.8", + "ms": 0.0033599999999999997, + "opcode": "fusion", + "shape": "f64[50]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:269", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:269 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_abs_fusion", + "ms": 0.0029121000000000004, + "opcode": "fusion", + "shape": "(f64[50,392,1]{2,1,0}, f64[50,392,1]{2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:269", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:269 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + } + ], + "pdip_solve": [ + { + "instruction": "cholesky.44", + "ms": 173.52874479999815, + "opcode": "custom-call", + "shape": "(f64[50,1369,1369]{1,2,0}, s32[50]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "input_transpose_fusion.1", + "ms": 33.62312310000001, + "opcode": "fusion", + "shape": "f64[50,1369,1369]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "triangular-solve", + "ms": 29.195793299999607, + "opcode": "custom-call", + "shape": "(f64[50,1369,1]{1,2,0}, s8[800]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "triangular-solve.1", + "ms": 27.877855999999507, + "opcode": "custom-call", + "shape": "(f64[50,1369,1]{1,2,0}, s8[800]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "input_transpose_fusion", + "ms": 19.737108300000006, + "opcode": "fusion", + "shape": "f64[50,1369,1369]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "cholesky.66", + "ms": 11.499952899999968, + "opcode": "custom-call", + "shape": "(f64[50,1369,1369]{1,2,0}, s32[50]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:237 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:274 (_certified_positive_only_from)" + ] + } + ], + "psf_convolution_mapping_matrix": [ + { + "instruction": "input_scatter_fusion", + "ms": 83.8274412, + "opcode": "fusion", + "shape": "f64[50,1521,180,180]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.25.0", + "ms": 77.39761989999998, + "opcode": "fft", + "shape": "c128[50,1521,180,91]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.27.0", + "ms": 49.707104900000004, + "opcode": "fft", + "shape": "c128[50,1521,91,180]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.29.0", + "ms": 47.9236275, + "opcode": "fft", + "shape": "f64[50,1521,180,180]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_transpose_fusion.3", + "ms": 26.7264556, + "opcode": "fusion", + "shape": "c128[50,1521,91,180]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "wrapped_transpose.2", + "ms": 25.0831124, + "opcode": "fusion", + "shape": "c128[50,1521,180,91]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + } + ], + "regularization_H": [ + { + "instruction": "wrapped_broadcast", + "ms": 1.0808440000000001, + "opcode": "fusion", + "shape": "f64[50,1521,1521]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:124", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:124 (weighted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:366 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_scatter_fusion.7", + "ms": 0.002816, + "opcode": "fusion", + "shape": "f64[1521,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:123 (weighted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:366 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "mapping_matrix": [ + { + "instruction": "input_scatter_fusion.5", + "ms": 0.18839350000000002, + "opcode": "fusion", + "shape": "f64[50,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:71", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:71 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:362 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + }, + { + "instruction": "input_reduce_fusion.20", + "ms": 0.0039328, + "opcode": "fusion", + "shape": "f64[50]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:362 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + }, + { + "instruction": "loop_compare_fusion.4", + "ms": 0.0018624999999999998, + "opcode": "fusion", + "shape": "pred[4]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:54", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:54 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:362 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + } + ], + "curvature_matrix_F": [ + { + "instruction": "cublas-lt-matmul.2", + "ms": 331.69328370000005, + "opcode": "custom-call", + "shape": "(f64[50,1521,1521]{2,1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "inversion_other": [ + { + "instruction": "cholesky.88", + "ms": 17.74595490000001, + "opcode": "custom-call", + "shape": "(f64[50,1521,1521]{1,2,0}, s32[50]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1078 (AbstractInversion.log_det_curvature_reg_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:347 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "cholesky.99", + "ms": 16.84057940000005, + "opcode": "custom-call", + "shape": "(f64[50,1521,1521]{1,2,0}, s32[50]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1157 (AbstractInversion.log_det_regularization_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:348 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "loop_reduce_window_fusion.3", + "ms": 0.0069313, + "opcode": "fusion", + "shape": "s64[6,16]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "loop_reduce_window_fusion.2", + "ms": 0.0037344, + "opcode": "fusion", + "shape": "s64[86,16]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "input_scatter_fusion.9", + "ms": 0.0031041999999999997, + "opcode": "fusion", + "shape": "s64[1369]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527 (AbstractInversion.zeroed_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:567 (AbstractInversion.solve_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:684 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_broadcast_fusion.5", + "ms": 0.0021471, + "opcode": "fusion", + "shape": "(s64[1369]{0}, s64[1369]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527 (AbstractInversion.zeroed_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:567 (AbstractInversion.solve_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:684 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ] + }, + "stage_audit_note": "The HLO instructions that contributed most of each stage's milliseconds, with their full source stack. A stage row is only as good as the rules that built it; this is how a reader checks a row against the HLO instead of trusting it.", + "untraced_wall_ms": 1110.4122429998824, + "reconciliation_vs_untraced_pct": 0.35855174735470946, + "wall_basis": "wall_ms is the TRACED run's wall, the run these kernel durations came from. untraced_wall_ms is the same executable without the profiler; the difference is the profiler's overhead and belongs in neither the stages nor the idle row.", + "calls": 10, + "call_split": "per-call (first-instruction recurrence)", + "call_blocks": 10, + "events": 89150, + "streams": [ + "Stream #14(MemcpyD2H,Compute,MemcpyD2D)" + ], + "per_stage_ms": { + "border_relocator": { + "median_ms": 0.0933595, + "min_ms": 0.09219299999999997, + "max_ms": 0.094337 + }, + "curvature_matrix_F": { + "median_ms": 331.633068, + "min_ms": 330.008052, + "max_ms": 333.730543 + }, + "inversion_other": { + "median_ms": 34.63389449999994, + "min_ms": 34.17402799999994, + "max_ms": 34.99659600000004 + }, + "mapping_matrix": { + "median_ms": 0.19423849999999998, + "min_ms": 0.189826, + "max_ms": 0.197922 + }, + "mesh_construction": { + "median_ms": 2.4417040000000028, + "min_ms": 2.408893000000003, + "max_ms": 2.466364000000002 + }, + "mixed_fusion": { + "median_ms": 100.10805250000001, + "min_ms": 99.41246600000001, + "max_ms": 101.03233599999997 + }, + "other": { + "median_ms": 0.7372134999999997, + "min_ms": 0.7327109999999998, + "max_ms": 0.742604 + }, + "pdip_solve": { + "median_ms": 322.1341019999991, + "min_ms": 321.2485440000036, + "max_ms": 322.77402799999817 + }, + "psf_convolution_mapping_matrix": { + "median_ms": 310.5802395, + "min_ms": 310.30391399999996, + "max_ms": 311.354084 + }, + "regularization_H": { + "median_ms": 1.0834030000000001, + "min_ms": 1.081483, + "max_ms": 1.08733 + } + }, + "stage_order": [ + "border_relocator", + "mesh_construction", + "mapping_matrix", + "psf_convolution_mapping_matrix", + "curvature_matrix_F", + "regularization_H", + "pdip_solve", + "inversion_other", + "mixed_fusion", + "other" + ], + "mixed_fusion": { + "ms": 100.10805250000001, + "constituent_stage_sets": { + "curvature_matrix_F + psf_convolution_mapping_matrix": 46.31462319999999, + "inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": 14.812229699999998, + "pdip_solve + psf_convolution_mapping_matrix": 12.867647999999999, + "data_vector_D + pdip_solve": 6.318228900000001, + "mapped_reconstruction + pdip_solve": 5.5941685, + "mapping_matrix + pdip_solve": 5.1519991, + "border_relocator + pdip_solve": 4.298563000000001, + "curvature_reg_reduce_gather + inversion_other": 1.5686290999999999, + "inversion_other + regularization_H": 1.5644631, + "inversion_other + pdip_solve": 0.5718492000000001, + "border_relocator + mapping_matrix + mesh_construction + pdip_solve": 0.3117552, + "mapping_matrix + mesh_construction + pdip_solve": 0.21894059999999999, + "mesh_construction + pdip_solve": 0.15894019999999998, + "inversion_other + pdip_solve + regularization_H": 0.09426879999999997, + "border_relocator + mesh_construction": 0.0658974, + "grids_and_structures + mass_profile_deflections + ray_trace_data_grid": 0.0621504, + "inversion_other + mapping_matrix": 0.0340414, + "grids_and_structures + mass_profile_deflections + pdip_solve + ray_trace_data_grid": 0.0273085, + "inversion_other + mapped_reconstruction + reconstruction_scatter": 0.026073500000000003, + "border_relocator + inversion_other + pdip_solve": 0.018281500000000003, + "chi_squared_evidence + pdip_solve": 0.016486200000000003, + "pdip_solve + regularization_H": 0.0161439, + "pdip_solve + ray_trace_data_grid": 0.013199899999999994, + "inversion_other + mapped_reconstruction": 0.0121218, + "border_relocator + mesh_construction + pdip_solve": 0.0091104, + "mapping_matrix + pdip_solve + regularization_H": 0.005571199999999999, + "inversion_other + pdip_solve + ray_trace_data_grid": 0.005020800000000001, + "grids_and_structures + mass_profile_deflections + pdip_solve": 0.0049023999999999995, + "border_relocator + inversion_other + mapping_matrix + mesh_construction": 0.0032128, + "mapping_matrix + mesh_construction": 0.0024129, + "chi_squared_evidence + inversion_other": 0.00232, + "inversion_other + mesh_construction": 0.001904 + }, + "example_kernels": { + "curvature_matrix_F + psf_convolution_mapping_matrix": [ + "loop_divide_gather_fusion" + ], + "inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": [ + "input_multiply_transpose_fusion" + ], + "pdip_solve + psf_convolution_mapping_matrix": [ + "loop_broadcast_fusion" + ], + "data_vector_D + pdip_solve": [ + "input_reduce_fusion.3", + "input_reduce_fusion.18" + ], + "mapped_reconstruction + pdip_solve": [ + "input_reduce_fusion.6" + ], + "mapping_matrix + pdip_solve": [ + "loop_broadcast_fusion.1", + "loop_divide_fusion" + ], + "border_relocator + pdip_solve": [ + "input_reduce_fusion.9", + "loop_cosine_sine_fusion", + "input_concatenate_fusion.4", + "input_transpose_fusion.8" + ], + "curvature_reg_reduce_gather + inversion_other": [ + "input_transpose_fusion.4" + ], + "inversion_other + regularization_H": [ + "input_transpose_fusion.5" + ], + "inversion_other + pdip_solve": [ + "input_reduce_fusion.4", + "input_reduce_fusion.5", + "input_scatter_fusion.11", + "input_transpose_fusion.2" + ] + }, + "prorated_estimate_ms": { + "psf_convolution_mapping_matrix": 29.591135599999994, + "curvature_matrix_F": 23.157311599999996, + "pdip_solve": 21.410135366666665, + "mapped_reconstruction": 6.514893741666667, + "inversion_other": 5.629406458333332, + "reconstruction_scatter": 3.711748591666666, + "data_vector_D": 3.1591144500000006, + "mapping_matrix": 2.7478059666666668, + "border_relocator": 2.2701028333333335, + "regularization_H": 0.8235835, + "curvature_reg_reduce_gather": 0.7843145499999999, + "mesh_construction": 0.26933625, + "ray_trace_data_grid": 0.035817475, + "grids_and_structures": 0.029178058333333333, + "mass_profile_deflections": 0.029178058333333333, + "chi_squared_evidence": 0.009403100000000001 + }, + "prorated_note": "ESTIMATE ONLY \u2014 a mixed fusion's time split equally across the stages its constituents span. Never summed into the measured table, never reconciled." + }, + "other_sources_ms": { + "copy.60": 0.13756409999999997, + "copy.61": 0.12277740000000004, + "copy.78": 0.09009890000000005, + "copy.70": 0.08819800000000001, + "copy.79": 0.08803790000000003, + "copy.69": 0.08692470000000001, + "copy.100": 0.042566300000000036, + "copy.99": 0.039062600000000024, + "copy.98": 0.03524839999999998, + "copy.113": 0.0023582, + "copy.53": 0.0021696, + "copy.62": 0.0017727999999999997 + }, + "device_span_ms": 1114.4647515000001, + "device_busy_ms": 1103.710381, + "device_idle_ms": 10.75437050000005, + "largest_idle_gaps": [ + { + "gap_ms": 0.054623, + "after": "input_reduce_fusion.17", + "before": "loop_broadcast_fusion" + }, + { + "gap_ms": 0.027615, + "after": "while.42", + "before": "loop_not_select_fusion.1" + }, + { + "gap_ms": 0.027071, + "after": "while.42", + "before": "loop_not_select_fusion" + }, + { + "gap_ms": 0.023488, + "after": "while.42", + "before": "loop_not_select_fusion" + }, + { + "gap_ms": 0.023359, + "after": "while.42", + "before": "loop_not_select_fusion" + }, + { + "gap_ms": 0.022943, + "after": "while.42", + "before": "loop_not_select_fusion" + }, + { + "gap_ms": 0.022623, + "after": "while.42", + "before": "loop_not_select_fusion" + }, + { + "gap_ms": 0.022559, + "after": "while.42", + "before": "loop_not_select_fusion" + } + ], + "kernel_ms": 1103.639274999999, + "sum_ms": 1114.3936454999991, + "wall_ms": 1114.548707600261, + "host_outside_span_ms": 0.08395610026082068, + "reconciliation_pct": -0.013912545876590245, + "unjoined_ms": 0.0, + "unjoined_pct": 0.0, + "other_ms": 0.7372134999999997, + "other_pct": 0.06614457447869612, + "note": "Stage rows attribute the command-buffers-OFF program (see the module docstring): kernel times are the same, the launch overhead the CUDA graphs remove is not. sum_ms = kernel rows + device_idle_ms; the residual against wall_ms is host_outside_span_ms (dispatch before the first kernel, teardown after the last).", + "per_stage_ms_per_lane": { + "border_relocator": 0.00186719, + "curvature_matrix_F": 6.632661359999999, + "inversion_other": 0.6926778899999988, + "mapping_matrix": 0.0038847699999999996, + "mesh_construction": 0.04883408000000006, + "mixed_fusion": 2.00216105, + "other": 0.014744269999999995, + "pdip_solve": 6.442682039999982, + "psf_convolution_mapping_matrix": 6.21160479, + "regularization_H": 0.021668060000000003 + }, + "per_lane_divisor": 50, + "host_callback": { + "pure_callback_span_ms": 0, + "qhull_ms": 0.0, + "callback_body_ms_note": "the OUTERMOST matching body event, not a sum: under the probe the body appears twice (the wrapper and the timed re-implementation it calls) and summing them would count the same work twice", + "events_by_name": { + "ThenExecuteCallback:GetEventForComputeStreamSyncPoint": { + "count": 10, + "ms": 0.019565000000000003 + } + }, + "note": "HOST milliseconds per traced BATCH (the whole invocation), aggregated by name because the events nest. Not a row of the device table: the device pays for them as the idle gaps largest_idle_gaps names." + }, + "host_callback_ms": 0 + }, + "hlo_census": { + "status": "excluded", + "reason": "The legacy census anchors PyAutoArray source line numbers that moved after the phase-1 run. No batched attribution is published from unsupported anchors; the device-event table and wall reconciliation remain valid." + }, + "trace_split": { + "expected_calls": 10, + "executions_per_invocation": 1, + "method": "per-call (first-instruction recurrence)", + "note": "DECIDED IN CODE: the scalar arm's trace is split by trace_calls * B, so every lane's execution is its own block and the per-stage median is taken over all of them. The vmap arm's is split by trace_calls, one block per batched execution, and per_stage_ms_per_lane divides those rows by B." + } + }, + "scalar": { + "arm": "scalar", + "program": "jax.jit(fn), called B times", + "stands_for": "Nautilus(use_jax_vmap=False, use_jax_jit=True). Plain use_jax_vmap=False is UNJITTED and is NOT this arm", + "hlo_source": "jax.jit(fn).lower(lane_trees[0]) \u2014 the same program phase 1 traced", + "batch_wall_ms": 1519.7501137001382, + "wall_production_nesting_ms": 1519.7501137001382, + "wall_aot_command_buffers_on_ms": 1514.7168845000124, + "wall_aot_command_buffers_off_ms": 1522.5663895998878, + "command_buffer_delta_ms": 7.849505099875387, + "production_nesting_vs_aot_on_delta_ms": 5.033229200125788, + "production_nesting_vs_aot_on_delta_pct": 0.33228844621925435, + "wall_per_lane_ms": 30.395002274002763, + "wall_per_lane_command_buffers_off_ms": 30.451327791997755, + "traced_batch_wall_ms": 1576.1580782000237, + "untraced_batch_wall_ms": 1520.2675747001194, + "traced_wall_per_lane_ms": 31.523161564000475, + "callback_count_per_call": 0.0, + "callback_count_per_lane": 0.0, + "callback_expectation": "0 \u2014 the rectangular mesh has no qhull host callback (asserted)", + "host_qhull_ms": 0.0, + "host_tables_ms": 0.0, + "host_qhull_ms_per_lane": 0.0, + "host_tables_ms_per_lane": 0.0, + "host_callback_probe": { + "calls": 0, + "qhull_ms_total": 0.0, + "tables_ms_total": 0.0, + "total_ms_total": 0.0, + "qhull_ms_mean": 0.0, + "tables_ms_mean": 0.0, + "total_ms_mean": 0.0, + "non_finite_calls": 0, + "n_points": [] + }, + "host_callback_records_first": [], + "device_idle_ms": 1.7794093920000016, + "device_idle_ms_per_lane": 1.7794093920000016, + "trace": { + "parser": "ProfileData.from_file(xplane) + as_text() + stack_frame_index(proto field 17)", + "stage_audit": { + "mesh_construction": [ + { + "instruction": "fusion.2", + "ms": 0.14865272400000118, + "opcode": "fusion", + "shape": "(f64[15361,2]{1,0}, s64[15361,2]{1,0}, s32[15361,2]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:227", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:227 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_select_fusion", + "ms": 0.03990305000000044, + "opcode": "fusion", + "shape": "(u32[2,15361]{1,0}, u32[2,15361]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69 (forward_interp)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:573 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/abstract.py:36 (AbstractInterpolator.mappings)" + ] + }, + { + "instruction": "loop_select_fusion.3", + "ms": 0.03491354000000164, + "opcode": "fusion", + "shape": "(u32[15361]{0}, u32[15361]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_select_fusion.1", + "ms": 0.034854642000001074, + "opcode": "fusion", + "shape": "(u32[15361]{0}, u32[15361]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_add_fusion", + "ms": 0.02123899399999892, + "opcode": "fusion", + "shape": "s64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69 (forward_interp)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:573 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/abstract.py:36 (AbstractInterpolator.mappings)" + ] + }, + { + "instruction": "loop_add_fusion.3", + "ms": 0.020892201999998927, + "opcode": "fusion", + "shape": "s64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "mixed_fusion": [ + { + "instruction": "loop_divide_gather_fusion", + "ms": 0.6997904080000003, + "opcode": "fusion", + "shape": "(f64[15361,1,1,1521]{3,2,1,0}, f64[15361,1,1,1521]{3,2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_broadcast_fusion.3", + "ms": 0.2340538659999999, + "opcode": "fusion", + "shape": "f64[1521,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_multiply_transpose_fusion", + "ms": 0.18579691600000012, + "opcode": "fusion", + "shape": "(f64[1369,1369]{1,0}, f64[1369,1369]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:237 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:274 (_certified_positive_only_from)" + ] + }, + { + "instruction": "loop_broadcast_fusion", + "ms": 0.13677011399999983, + "opcode": "fusion", + "shape": "f64[15361,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:342", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:342 (mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:283 (Mapper.mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:91 (AbstractInversionImaging._mapping_matrix_for_convolution_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:137 (AbstractInversionImaging.operated_mapping_matrix_list)" + ] + }, + { + "instruction": "input_reduce_fusion.3", + "ms": 0.1131612719999999, + "opcode": "fusion", + "shape": "f64[92,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123 (data_vector_via_blurred_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:67 (InversionImagingMapping.data_vector)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:699 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_reduce_fusion.6", + "ms": 0.1122415519999999, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163 (mapped_reconstructed_data_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:120 (InversionImagingMapping._mapped_reconstructed_data_dict_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:196 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + } + ], + "border_relocator": [ + { + "instruction": "eigh.0", + "ms": 0.07425517200000112, + "opcode": "custom-call", + "shape": "(f64[2,2]{0,1}, f64[2]{0}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "custom-call.2", + "ms": 0.007952388, + "opcode": "custom-call", + "shape": "(f64[2,2]{1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_reduce_fusion.7", + "ms": 0.005193084000000002, + "opcode": "fusion", + "shape": "(f64[], f64[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:270", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:270 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_add_fusion.5", + "ms": 0.003725669999999971, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:423 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_concatenate_fusion.4", + "ms": 0.0023425419999999982, + "opcode": "fusion", + "shape": "f64[392,2]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:238", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:238 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_reduce_fusion.14", + "ms": 0.0015956020000000063, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:256", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:256 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + } + ], + "other": [ + { + "instruction": "copy.41", + "ms": 0.030521391999997826, + "opcode": "copy", + "shape": "u32[2,15361]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.42", + "ms": 0.030116698000002457, + "opcode": "copy", + "shape": "u32[2,15361]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.51", + "ms": 0.02889419599999723, + "opcode": "copy", + "shape": "u32[15361]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.59", + "ms": 0.028589215999998016, + "opcode": "copy", + "shape": "u32[15361]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.60", + "ms": 0.028553227999998373, + "opcode": "copy", + "shape": "u32[15361]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.50", + "ms": 0.028413555999999673, + "opcode": "copy", + "shape": "u32[15361]{0}", + "source": "", + "stack": [] + } + ], + "pdip_solve": [ + { + "instruction": "cholesky.40", + "ms": 8.388080266000578, + "opcode": "custom-call", + "shape": "(f64[1369,1369]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "triangular-solve.1", + "ms": 1.4824488780000251, + "opcode": "custom-call", + "shape": "(f64[1369,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "triangular-solve", + "ms": 1.2510066259999706, + "opcode": "custom-call", + "shape": "(f64[1369,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "cholesky.60", + "ms": 0.848715702000006, + "opcode": "custom-call", + "shape": "(f64[1369,1369]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:237 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:274 (_certified_positive_only_from)" + ] + }, + { + "instruction": "cholesky.70", + "ms": 0.8414831860000013, + "opcode": "custom-call", + "shape": "(f64[1369,1369]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:297 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:274 (_certified_positive_only_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:496 (reconstruction_positive_only_from)" + ] + }, + { + "instruction": "input_transpose_fusion.1", + "ms": 0.2931368800000001, + "opcode": "fusion", + "shape": "f64[1369,1369]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + } + ], + "mapping_matrix": [ + { + "instruction": "input_reduce_fusion.20", + "ms": 0.0028691320000000012, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:362 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + } + ], + "regularization_H": [ + { + "instruction": "input_scatter_fusion.8", + "ms": 0.0027349520000000023, + "opcode": "fusion", + "shape": "f64[1521,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:123 (weighted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:366 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "psf_convolution_mapping_matrix": [ + { + "instruction": "fft.19.0", + "ms": 1.7866187120000045, + "opcode": "fft", + "shape": "f64[1521,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_scatter_fusion", + "ms": 1.4326050059999993, + "opcode": "fusion", + "shape": "f64[1521,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.15.0", + "ms": 1.3864641500000001, + "opcode": "fft", + "shape": "c128[1521,180,91]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.17.0", + "ms": 0.9926501499999998, + "opcode": "fft", + "shape": "c128[1521,91,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_transpose_fusion.2", + "ms": 0.5220470079999998, + "opcode": "fusion", + "shape": "c128[1521,91,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "wrapped_transpose.2", + "ms": 0.5074127339999994, + "opcode": "fusion", + "shape": "c128[1521,180,91]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + } + ], + "curvature_matrix_F": [ + { + "instruction": "cublas-lt-matmul.2", + "ms": 4.4417995759999975, + "opcode": "custom-call", + "shape": "(f64[1521,1521]{1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "inversion_other": [ + { + "instruction": "cholesky.80", + "ms": 0.9229844880000048, + "opcode": "custom-call", + "shape": "(f64[1521,1521]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1078 (AbstractInversion.log_det_curvature_reg_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:347 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "cholesky.90", + "ms": 0.905939808000005, + "opcode": "custom-call", + "shape": "(f64[1521,1521]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1157 (AbstractInversion.log_det_regularization_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:348 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "loop_reduce_window_fusion.3", + "ms": 0.005840461999999993, + "opcode": "fusion", + "shape": "s64[6,16]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "loop_reduce_window_fusion.2", + "ms": 0.0031031420000000166, + "opcode": "fusion", + "shape": "s64[86,16]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "input_scatter_fusion.9", + "ms": 0.0025660959999999925, + "opcode": "fusion", + "shape": "s64[1369]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527 (AbstractInversion.zeroed_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:567 (AbstractInversion.solve_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:684 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_broadcast_fusion.4", + "ms": 0.0019140040000000078, + "opcode": "fusion", + "shape": "(s64[1369]{0}, s64[1369]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527 (AbstractInversion.zeroed_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:567 (AbstractInversion.solve_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:684 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "chi_squared_evidence": [ + { + "instruction": "loop_multiply_fusion", + "ms": 0.00300911600000001, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:300", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:300 (AbstractNDArray.__pow__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:60 (unwrap_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:35 (to_new_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:78 (chi_squared_map_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:78 (AbstractFit.chi_squared_map)" + ] + } + ] + }, + "stage_audit_note": "The HLO instructions that contributed most of each stage's milliseconds, with their full source stack. A stage row is only as good as the rules that built it; this is how a reader checks a row against the HLO instead of trusting it.", + "untraced_wall_ms": 30.40535149400239, + "reconciliation_vs_untraced_pct": -0.2916348525682433, + "wall_basis": "wall_ms is the TRACED run's wall, the run these kernel durations came from. untraced_wall_ms is the same executable without the profiler; the difference is the profiler's overhead and belongs in neither the stages nor the idle row.", + "calls": 500, + "call_split": "per-call (first-instruction recurrence)", + "call_blocks": 500, + "events": 272080, + "streams": [ + "Stream #14(MemcpyD2D,MemcpyH2D,Compute,MemcpyD2H,Memset)" + ], + "per_stage_ms": { + "border_relocator": { + "median_ms": 0.09659300000000001, + "min_ms": 0.09561700000000004, + "max_ms": 0.099073 + }, + "chi_squared_evidence": { + "median_ms": 0.003008, + "min_ms": 0.002816, + "max_ms": 0.003328 + }, + "curvature_matrix_F": { + "median_ms": 4.4236485, + "min_ms": 4.400542, + "max_ms": 4.636308 + }, + "inversion_other": { + "median_ms": 1.841072, + "min_ms": 1.826069, + "max_ms": 1.9067720000000001 + }, + "mapping_matrix": { + "median_ms": 0.00288, + "min_ms": 0.002848, + "max_ms": 0.002944 + }, + "memset": { + "median_ms": 0.0350405, + "min_ms": 0.011968, + "max_ms": 0.05760000000000001 + }, + "mesh_construction": { + "median_ms": 0.3447720000000002, + "min_ms": 0.3416020000000002, + "max_ms": 0.3535709999999998 + }, + "mixed_fusion": { + "median_ms": 1.853939, + "min_ms": 1.8465799999999999, + "max_ms": 1.891508 + }, + "other": { + "median_ms": 0.18137899999999982, + "min_ms": 0.1807699999999998, + "max_ms": 0.186018 + }, + "pdip_solve": { + "median_ms": 13.128240999999997, + "min_ms": 3.473879999999999, + "max_ms": 22.134456 + }, + "psf_convolution_mapping_matrix": { + "median_ms": 6.6239445, + "min_ms": 6.600748000000001, + "max_ms": 6.698123 + }, + "regularization_H": { + "median_ms": 0.002752, + "min_ms": 0.002432, + "max_ms": 0.003168 + } + }, + "stage_order": [ + "border_relocator", + "mesh_construction", + "mapping_matrix", + "psf_convolution_mapping_matrix", + "curvature_matrix_F", + "regularization_H", + "pdip_solve", + "chi_squared_evidence", + "inversion_other", + "mixed_fusion", + "other", + "memset" + ], + "mixed_fusion": { + "ms": 1.853939, + "constituent_stage_sets": { + "curvature_matrix_F + psf_convolution_mapping_matrix": 0.6997904080000003, + "pdip_solve + psf_convolution_mapping_matrix": 0.2340538659999999, + "inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": 0.18579691600000012, + "mapping_matrix + pdip_solve": 0.13912342400000025, + "data_vector_D + pdip_solve": 0.1168778539999999, + "mapped_reconstruction + pdip_solve": 0.1122415519999999, + "border_relocator + pdip_solve": 0.07106790599999938, + "mesh_construction + pdip_solve": 0.038806105999999736, + "inversion_other + regularization_H": 0.031179562000000022, + "inversion_other + pdip_solve": 0.03016045599999991, + "border_relocator + mesh_construction + pdip_solve": 0.02712814000000007, + "curvature_reg_reduce_gather + inversion_other": 0.02572668, + "border_relocator + inversion_other + mapping_matrix + mesh_construction + pdip_solve": 0.020535173999999996, + "pdip_solve + regularization_H": 0.019280443999999994, + "inversion_other + mapping_matrix + pdip_solve + regularization_H": 0.015660994000000022, + "pdip_solve + ray_trace_data_grid": 0.012883523999999811, + "inversion_other + mapping_matrix + mesh_construction": 0.012825798000000005, + "grids_and_structures + mass_profile_deflections + pdip_solve": 0.009956641999999995, + "inversion_other + mapped_reconstruction + reconstruction_scatter": 0.009749429999999988, + "inversion_other + mapped_reconstruction + pdip_solve": 0.00894696200000002, + "chi_squared_evidence + pdip_solve": 0.007718110000000024, + "inversion_other + mesh_construction + pdip_solve": 0.005586160000000008, + "grids_and_structures + mass_profile_deflections + ray_trace_data_grid": 0.005243109999999996, + "inversion_other + pdip_solve + ray_trace_data_grid": 0.004758323999999977, + "border_relocator + mesh_construction": 0.0036772119999999887, + "border_relocator + inversion_other": 0.0033764159999999945, + "border_relocator + inversion_other + mesh_construction + pdip_solve": 0.002481636000000009, + "chi_squared_evidence + inversion_other": 0.0018078900000000064 + }, + "example_kernels": { + "curvature_matrix_F + psf_convolution_mapping_matrix": [ + "loop_divide_gather_fusion" + ], + "pdip_solve + psf_convolution_mapping_matrix": [ + "loop_broadcast_fusion.3" + ], + "inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": [ + "input_multiply_transpose_fusion" + ], + "mapping_matrix + pdip_solve": [ + "loop_divide_fusion.1", + "loop_broadcast_fusion" + ], + "data_vector_D + pdip_solve": [ + "input_reduce_fusion.3", + "input_reduce_fusion.18" + ], + "mapped_reconstruction + pdip_solve": [ + "input_reduce_fusion.6" + ], + "border_relocator + pdip_solve": [ + "input_reduce_fusion.8", + "loop_select_sine_fusion", + "input_concatenate_fusion.1", + "input_transpose_fusion.6" + ], + "mesh_construction + pdip_solve": [ + "loop_multiply_fusion.2", + "loop_pad_fusion", + "loop_reduce_fusion", + "triton_softmax.1" + ], + "inversion_other + regularization_H": [ + "input_transpose_fusion.4" + ], + "inversion_other + pdip_solve": [ + "input_scatter_fusion.11", + "input_reduce_fusion.9", + "input_reduce_fusion.16", + "input_reduce_fusion.4" + ] + }, + "prorated_estimate_ms": { + "psf_convolution_mapping_matrix": 0.46692213700000007, + "pdip_solve": 0.46499061829999944, + "curvature_matrix_F": 0.3498952040000001, + "inversion_other": 0.1151729813, + "mapped_reconstruction": 0.10880213566666666, + "mapping_matrix": 0.08185926130000014, + "data_vector_D": 0.05843892699999995, + "border_relocator": 0.05283092413333303, + "reconstruction_scatter": 0.04969903900000003, + "mesh_construction": 0.041149135466666556, + "regularization_H": 0.029145251500000014, + "curvature_reg_reduce_gather": 0.01286334, + "ray_trace_data_grid": 0.009775573333333232, + "grids_and_structures": 0.005066583999999997, + "mass_profile_deflections": 0.005066583999999997, + "chi_squared_evidence": 0.0047630000000000155 + }, + "prorated_note": "ESTIMATE ONLY \u2014 a mixed fusion's time split equally across the stages its constituents span. Never summed into the measured table, never reconciled." + }, + "other_sources_ms": { + "copy.41": 0.030521391999997826, + "copy.42": 0.030116698000002457, + "copy.51": 0.02889419599999723, + "copy.59": 0.028589215999998016, + "copy.60": 0.028553227999998373, + "copy.50": 0.028413555999999673, + "copy.95": 0.00181909400000001, + "copy.96": 0.0017872239999999974, + "copy.34": 0.0015228879999999955, + "copy.52": 0.0015152099999999967 + }, + "device_span_ms": 31.52167606, + "device_busy_ms": 29.742266668, + "device_idle_ms": 1.7794093920000016, + "largest_idle_gaps": [ + { + "gap_ms": 0.154401, + "after": "loop_add_fusion", + "before": "loop_select_fusion" + }, + { + "gap_ms": 0.041856, + "after": "input_concatenate_fusion.4", + "before": "custom-call.2" + }, + { + "gap_ms": 0.031489, + "after": "loop_add_fusion.3", + "before": "loop_select_fusion.3" + }, + { + "gap_ms": 0.030305, + "after": "loop_multiply_fusion.1", + "before": "eigh.0" + }, + { + "gap_ms": 0.029153, + "after": "copy.59", + "before": "copy.60" + }, + { + "gap_ms": 0.027296, + "after": "loop_broadcast_fusion.6", + "before": "loop_broadcast_fusion.8" + }, + { + "gap_ms": 0.01968, + "after": "eigh.0", + "before": "eigh.0" + }, + { + "gap_ms": 0.019328, + "after": "while.26", + "before": "input_transpose_fusion" + } + ], + "kernel_ms": 28.537269499999997, + "sum_ms": 30.316678892, + "wall_ms": 31.523161564000475, + "host_outside_span_ms": 0.0014855040004739806, + "reconciliation_pct": -3.827289561521272, + "unjoined_ms": 0.0, + "unjoined_pct": 0.0, + "other_ms": 0.18137899999999982, + "other_pct": 0.5753832769335391, + "note": "Stage rows attribute the command-buffers-OFF program (see the module docstring): kernel times are the same, the launch overhead the CUDA graphs remove is not. sum_ms = kernel rows + device_idle_ms; the residual against wall_ms is host_outside_span_ms (dispatch before the first kernel, teardown after the last).", + "per_stage_ms_per_lane": { + "border_relocator": 0.09659300000000001, + "chi_squared_evidence": 0.003008, + "curvature_matrix_F": 4.4236485, + "inversion_other": 1.841072, + "mapping_matrix": 0.00288, + "memset": 0.0350405, + "mesh_construction": 0.3447720000000002, + "mixed_fusion": 1.853939, + "other": 0.18137899999999982, + "pdip_solve": 13.128240999999997, + "psf_convolution_mapping_matrix": 6.6239445, + "regularization_H": 0.002752 + }, + "per_lane_divisor": 1, + "host_callback": { + "pure_callback_span_ms": 0, + "qhull_ms": 0.0, + "callback_body_ms_note": "the OUTERMOST matching body event, not a sum: under the probe the body appears twice (the wrapper and the timed re-implementation it calls) and summing them would count the same work twice", + "events_by_name": { + "ThenExecuteCallback:GetEventForComputeStreamSyncPoint": { + "count": 500, + "ms": 1.3023799000000011 + } + }, + "note": "HOST milliseconds per traced BATCH (the whole invocation), aggregated by name because the events nest. Not a row of the device table: the device pays for them as the idle gaps largest_idle_gaps names." + }, + "host_callback_ms": 0 + }, + "hlo_census": { + "status": "excluded", + "reason": "The legacy census anchors PyAutoArray source line numbers that moved after the phase-1 run. No batched attribution is published from unsupported anchors; the device-event table and wall reconciliation remain valid." + }, + "trace_split": { + "expected_calls": 500, + "executions_per_invocation": 50, + "method": "per-call (first-instruction recurrence)", + "note": "DECIDED IN CODE: the scalar arm's trace is split by trace_calls * B, so every lane's execution is its own block and the per-stage median is taken over all of them. The vmap arm's is split by trace_calls, one block per batched execution, and per_stage_ms_per_lane divides those rows by B." + } + } + }, + "certification_report": { + "source": "vmap arm, library solve observed through its stats= out-dict (PyAutoArray #566) and jax.debug.callback(..., ordered=True); ordered because the unordered batching rule returns the lanes permuted. Untimed, separately compiled; max rel diff of its log likelihoods vs the timed arm's: nan", + "rows": 50, + "pdip_iter": "NOT AVAILABLE per lane without changing library numerics. The fallback branch calls the library's own reconstruction_positive_only_from, which returns the solution alone \u2014 jax_nnls.solve_nnls' iteration count is discarded inside the library's custom_vjp primal. The PDIP while_loop's cost is in the pdip_solve stage row of each arm's device table instead, which is a max-over-lanes quantity under vmap because every lane runs the same fixed kernel sequence.", + "passes_semantics": "library `passes`: restricted active-set passes run (jax_active_set.solve_certified)" + }, + "lane_construction": { + "draws_sha256": "7c217e915e674fff34ba83919c3dfc528573c340a55878fb50abf132b7c8404a", + "lane_rows": [ + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349 + ], + "calls": [ + 15, + 16, + 17 + ], + "stage": "pix1", + "regularization_range": { + "galaxies.source.pixelization.regularization.inner_coefficient": { + "min": 1.008689150795624e-06, + "max": 1893.186029242651 + }, + "galaxies.source.pixelization.regularization.outer_coefficient": { + "min": 1.2674564797230935e-06, + "max": 17250.89883253938 + }, + "galaxies.source.pixelization.regularization.signal_scale": { + "min": 0.007619743046985983, + "max": 0.9779334025364208 + } + }, + "phases": [ + "exploration" + ], + "window_rule": "nautilus_batches.timed_window: consecutive captured calls, in call order, from the FIRST call that is not a prior batch, concatenated and truncated to B; at B == n_batch exactly one real Nautilus batch. Falls back to the latest B lanes if the post-prior lanes run out; never repeats a lane.", + "note": "Lane k is captured lane lane_rows[k]: the mass AND shear of a real Nautilus proposal (nautilus_batch_capture.py), lens light fixed at S3, the S3 light-subtracted dataset shared by every lane. `offsets` in the lane table are the mass offsets from the fiducial; the shear is in the capture file." + }, + "captured": { + "batches_path": "/mnt/ral/jnightin/autolens_profiling_wt/certified-solver-phase-c1-lane-rate/results/breakdown/imaging/nautilus_batches_rectangular_pix1.npz", + "batches_sha256": "c0b62fba544cb62c8a273c19837cf364127f5af7fdaa110f3a2c8a973e0b6cc0", + "schema_version": 2, + "n_calls": 972, + "n_lanes": 19440, + "call_sizes_seen": [ + 20 + ], + "calls_by_phase": { + "prior": 15, + "exploration": 957 + }, + "parameter_paths": [ + "galaxies.source.pixelization.regularization.inner_coefficient", + "galaxies.source.pixelization.regularization.outer_coefficient", + "galaxies.source.pixelization.regularization.signal_scale", + "galaxies.lens.mass.centre.centre_0", + "galaxies.lens.mass.centre.centre_1", + "galaxies.lens.mass.einstein_radius", + "galaxies.lens.mass.ell_comps.ell_comps_0", + "galaxies.lens.mass.ell_comps.ell_comps_1", + "galaxies.lens.shear.gamma_1", + "galaxies.lens.shear.gamma_2" + ], + "stage": "pix1", + "regularization": { + "class": "Adapt", + "free": true, + "priors": { + "inner_coefficient": [ + "LogUniform", + 1e-06, + 1000000.0 + ], + "outer_coefficient": [ + "LogUniform", + 1e-06, + 1000000.0 + ], + "signal_scale": [ + "Uniform", + 0.0, + 1.0 + ] + }, + "priors_source": "PyAutoGalaxy packaged config/priors/regularization (adapt_split.yaml / adapt.yaml / constant.yaml); adapt_split.yaml and adapt.yaml are identical to euclid_strong_lens_modeling_pipeline/config/priors/regularization/'s copies" + }, + "nautilus": { + "departures_from_production": [ + "mass/shear priors are the phase-B cell's Gaussians, not chained from source_lp", + "no positions likelihood", + "the cell's mesh (39x39 RectangularBilinearAdaptImage, weight_power 1, weight_floor 0) fixed in both stages; source_pix_1 uses RectangularBilinearAdaptDensity, source_pix_2 frees weight_power / weight_floor", + "seeded (production passes no seed)", + "quick updates disabled (iterations_per_quick_update=1e12; render-only)", + "NullPaths: no output directory, so no checkpoint and one Sampler.run call", + "post-fit perform_update skipped (samples / latent variables never built)" + ], + "n_batch": 20, + "n_like_max": 40000, + "n_live": 150, + "number_of_cores": 1, + "production_reference": "euclid_strong_lens_modeling_pipeline/scripts/full_model.py source_pix_1 (n_live=150) / source_pix_2 (n_live=75): af.Nautilus(n_batch=20, **SettingsSearch.search_dict) with use_jax_vmap=True and number_of_cores=1 (SettingsSearch defaults)", + "production_stage": "source_pix_1", + "seed": 1, + "stage": "pix1", + "use_jax_vmap": true, + "version": "1.0.5" + }, + "capture_fit_status": "sampling complete (n_like_max or convergence); post-fit result skipped", + "capture_library_revisions": { + "PyAutoArray": { + "head": "3de624b5b91a4efa130dc3cb0a3a0f06f85025a3", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoArray" + }, + "PyAutoFit": { + "head": "dd9fbe0aab60c4a57702b1444ca031b317c91331", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoFit" + }, + "PyAutoGalaxy": { + "head": "70a61e26cd715cefe7012a38285698091246a8a4", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy" + }, + "PyAutoLens": { + "head": "86054bbc19baa2f710a12e04a94fa27ab37cc354", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoLens" + }, + "PyAutoNerves": { + "head": "1fa613aa8d89a79613009fb66f5b4e2d21deb57a", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoNerves" + } + }, + "fingerprint_check": { + "fields": [ + "mesh", + "source_pixels", + "dataset_sha256", + "regularization_class", + "regularization_s0_fiducial", + "border_relocator", + "use_mixed_precision", + "log_evidence_s3_library" + ], + "not_identity": "the regularization coefficients: free per lane since the capture frees them", + "log_evidence_s3_library_rel_diff": 0.0, + "passed": true + }, + "timed_window_vs_capture_pdip": { + "reference": "the capture's own figure of merit (library PDIP, Fitness.call_wrap jax.jit(jax.vmap(call)) over parameter vectors) for the same lanes", + "compared_against": "this cell's jit(vmap) library-PDIP reference", + "n_compared": 47, + "max_rel_diff": 8.590505891553102, + "max_abs_diff_nats": 213012.468928071, + "gated": false, + "note": "RECORDED, NOT GATED: proves the lane trees rebuilt here are the models the sampler evaluated (a wrong parameter mapping shows up as nats, not 1e-10)." + } + }, + "matched": { + "vmap_wall_per_lane_ms": 22.072692308000114, + "scalar_wall_per_lane_ms": 30.395002274002763, + "speedup_vmap_over_scalar": 1.3770409993431694, + "note": "Both walls are the PRODUCTION nesting of their arm, measured in one process on the same B lanes with the SAME library Settings (no injection). A speedup below 1 means the batch is slower per lane than B sequential jitted calls." + }, + "solver_source": "library", + "solver": "certified", + "certified_fallback": "none", + "certified_pass_budget": 16, + "certified_pass_budget_basis": "config default (Settings().certified_pass_budget)", + "certified_tau_rel": 1e-09, + "solver_used": "certified", + "solver_check": { + "solver_used": "certified", + "solver_used_source": "AbstractInversion.positive_only_solver_used on the fiducial S3 inversion, built eagerly on the JAX backend (AnalysisImaging(use_jax=True).fit_from) with the arms' Settings", + "reference_solver_used": "pdip", + "traced_solver_kwargs_jax": [ + "certified" + ], + "observed_calls_jax": 1, + "report_rows": 50, + "report_vs_timed_arm_max_rel_diff": NaN + }, + "lanes_certified": [ + false, + false, + false, + true, + true, + false, + true, + true, + false, + false, + false, + false, + false, + false, + true, + true, + false, + true, + false, + false, + true, + true, + false, + true, + false, + true, + false, + true, + true, + false, + false, + true, + false, + true, + true, + false, + false, + false, + false, + false, + true, + true, + true, + false, + false, + false, + false, + true, + true, + true + ], + "lanes_passes": [ + 16, + 16, + 16, + 5, + 1, + 16, + 14, + 7, + 16, + 16, + 16, + 16, + 16, + 16, + 5, + 7, + 16, + 3, + 16, + 16, + 4, + 2, + 16, + 8, + 16, + 11, + 16, + 8, + 12, + 16, + 16, + 12, + 16, + 16, + 5, + 16, + 16, + 16, + 16, + 16, + 2, + 6, + 13, + 16, + 16, + 16, + 16, + 1, + 3, + 3 + ], + "uncertified_lanes": 28, + "per_lane_certification_note": "certified / passes come from the library's own solve through its stats= out-dict (PyAutoArray #566): passes is the number of restricted active-set passes the library ran (0 when the unconstrained solve was already non-negative), certified is its KKT certificate. With certified_fallback=pdip a False lane returned the PDIP solution; with none it returned the last uncertified iterate. null for a library-PDIP row (no certificate).", + "gate": { + "pre_registered": true, + "gated": [ + "per lane: jit(vmap) arm vs jit(vmap) library PDIP <= lane_rtol relative", + "per lane: scalar jit arm vs scalar jit library PDIP <= lane_rtol relative" + ], + "recorded_not_gated": [ + "per lane: jit(vmap) arm vs scalar jit arm (rel_diff, abs_diff_nats)", + "per lane: jit(vmap) library PDIP vs scalar jit library PDIP", + "uncertified_lanes (certified_fallback=none rows)" + ], + "lanes_failed": 40, + "passed": false, + "policy_eligible": false, + "note": "Pre-registered before submission (module docstring; submit header). Phase 3 (results/notes/hst_gpu_residue_phase3_psf_2026_09.md) placed phase 2's ~2.5e-9 certified-vs-PDIP residual BETWEEN the jit(vmap) and scalar-jit compositions, not in the solver \u2014 so each arm is gated against the library-PDIP reference of its OWN composition, and the cross-composition difference is recorded with its nats. A certified_fallback=none row is policy-eligible only if every lane certifies AND passes the gate. Timing is never gated." + }, + "library_revisions": { + "PyAutoArray": { + "head": "3de624b5b91a4efa130dc3cb0a3a0f06f85025a3", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoArray", + "module_file": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/__init__.py" + }, + "PyAutoFit": { + "head": "dd9fbe0aab60c4a57702b1444ca031b317c91331", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoFit", + "module_file": "/mnt/ral/jnightin/PyAuto/PyAutoFit/autofit/__init__.py" + }, + "PyAutoGalaxy": { + "head": "70a61e26cd715cefe7012a38285698091246a8a4", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy", + "module_file": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/__init__.py" + }, + "PyAutoLens": { + "head": "86054bbc19baa2f710a12e04a94fa27ab37cc354", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoLens", + "module_file": "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/__init__.py" + }, + "autoarray_file": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/__init__.py" + } + }, + "headline_arm_note": "`trace`, `hlo_census`, `command_buffers` and `trace_timing` above describe the scalar arm \u2014 the program phase 1 traced. Both arms' full blocks, the lane table and the matched comparison are under `vmap`." +} \ No newline at end of file diff --git a/results/breakdown/imaging/fixed_light_trace_rectangular_jitvmap50_captured_pix1_libcertified_fboff_b16_hpc_a100_fp64_fixed_light_trace.png b/results/breakdown/imaging/fixed_light_trace_rectangular_jitvmap50_captured_pix1_libcertified_fboff_b16_hpc_a100_fp64_fixed_light_trace.png new file mode 100644 index 000000000..662eb19c5 Binary files /dev/null and b/results/breakdown/imaging/fixed_light_trace_rectangular_jitvmap50_captured_pix1_libcertified_fboff_b16_hpc_a100_fp64_fixed_light_trace.png differ diff --git a/results/breakdown/imaging/fixed_light_trace_rectangular_jitvmap50_captured_pix1_libcertified_fbon_b16_hpc_a100_fp64_fixed_light_trace.json b/results/breakdown/imaging/fixed_light_trace_rectangular_jitvmap50_captured_pix1_libcertified_fbon_b16_hpc_a100_fp64_fixed_light_trace.json new file mode 100644 index 000000000..6c04bcc5e --- /dev/null +++ b/results/breakdown/imaging/fixed_light_trace_rectangular_jitvmap50_captured_pix1_libcertified_fbon_b16_hpc_a100_fp64_fixed_light_trace.json @@ -0,0 +1,7715 @@ +{ + "device": { + "backend": "gpu", + "device": "cuda:0", + "hostname": "euclid-ral-gpu-1", + "xla_flags": "--xla_disable_hlo_passes=constant_folding --xla_gpu_autotune_level=0 --xla_gpu_enable_triton_gemm=false", + "omp_num_threads": null, + "cpu_count": 124, + "jax_compilation_cache_dir": "/mnt/ral/jnightin/autolens_profiling_wt/certified-solver-phase-c1-lane-rate/output/jax_cache/fixed_light_lanerate_rectangular_pix1_time_50_certified_on_350768_27", + "autotune_cache_entries_at_start": 0, + "cache_fresh": true, + "nvidia_smi": "NVIDIA A100 80GB PCIe, 61393 MiB, 81920 MiB" + }, + "machine": { + "cpu_model": "AMD EPYC 7702 64-Core Processor", + "cpu_count_os": 124, + "nproc": 4, + "nproc_all": 124, + "nproc_note": "GNU nproc honours OMP_NUM_THREADS, so `nproc` can print 1 on a multi-core host; `nproc_all` is the core count.", + "ram_total": "928298200 kB", + "kernel": "5.14.0-687.50.1.el9_8.x86_64", + "platform": "Linux-5.14.0-687.50.1.el9_8.x86_64-x86_64-with-glibc2.34", + "python": "3.12.4", + "jax_thread_env": { + "NPROC": null + }, + "blas_thread_env": { + "OMP_NUM_THREADS": null, + "OPENBLAS_NUM_THREADS": null, + "MKL_NUM_THREADS": null, + "VECLIB_MAXIMUM_THREADS": null, + "NUMEXPR_NUM_THREADS": null + }, + "thread_env_note": "NPROC sizes XLA's CPU intra-op pool (the JAX rows); the BLAS knobs pin OpenBLAS/MKL/OpenMP (the numpy/scipy rows) and do not touch JAX. Two disjoint families; both are recorded on every CPU timing.", + "gpu": "NVIDIA A100 80GB PCIe, 81920 MiB, 610.57.04" + }, + "precision": "fp64", + "configuration": { + "pixel_scale_arcsec": 0.05, + "mask_radius_arcsec": 3.5, + "image_pixels_masked": 15361, + "over_sampled_pixels": 62752, + "mesh": "rectangular", + "mesh_shape": [ + 39, + 39 + ], + "source_pixels": 1521, + "source_pixels_requested": null, + "dataset": "hst", + "dataset_sha256": { + "data.fits": "e4e833a28e9c6f6fb023cd85c0d3dde74068720256bc77a240633500e5b04fac", + "noise_map.fits": "315c6266a0acd3ac9c8da82fcd2b45a08697362481fd7a35072bab1658530ba3", + "psf.fits": "8389ba0e8bf4a09b4a561cfc246181a2fb944ed396754cd0ff76fdd22910d303" + }, + "cell_source_sha256": "06a162fcdae6b329384ec33322f443df07215d86e56f0505ac15b3d3473eb432", + "inversion_path": "dense", + "pass_budget": 11, + "pass_budget_basis": "phase 3 (autolens_profiling#255): the smallest ZERO-fallback budget per mesh, the budget a production run fixes. NOT phase 0's certifying budget (2 for Delaunay), which falls back on 67.5 % of a graded draw set and is not a production cost.", + "border_relocator_mode": "cell", + "border_relocator": true, + "border_relocator_note": "'cell' is use_border_relocator=True, which every profiling cell in this family forces; 'library' passes None and takes the shipped config default, which is what production runs. The resolved boolean is what this leg actually ran.", + "routes_selected": [ + "b", + "d" + ], + "trace_calls": 10, + "command_buffers_traced": "off", + "use_mixed_precision": false, + "tau_rel": 1e-09, + "regularization": { + "scheme": "constant", + "coefficient": 1.0 + }, + "thread_env": { + "n_threads": null, + "vars": [ + "OPENBLAS_NUM_THREADS", + "MKL_NUM_THREADS", + "OMP_NUM_THREADS", + "VECLIB_MAXIMUM_THREADS", + "NUMEXPR_NUM_THREADS" + ], + "set_to": null, + "preexisting": {}, + "overridden": {}, + "note": "Not pinned (legacy variant): recorded as found." + }, + "over_sample_size_lp_rule": { + "sub_size_list": [ + 4, + 2, + 2 + ], + "radial_list": [ + 0.3, + 0.6 + ], + "centre": [ + 0.0, + 0.0 + ] + }, + "vmap_batch": 50, + "lanes": "captured", + "arms": [ + "vmap", + "scalar" + ], + "fallback": "on", + "draw_seed": 0, + "vmap_composition": "jax.jit(jax.vmap(fn))", + "lane_rtol": 1e-09, + "vmap_flags_note": "Strict ProfileCLI.parse_cell_args rejects unknown flags. These keys record the exact batching program and prevent historical vmap(jit) artifacts from being mistaken for current jit(vmap) measurements.", + "solver_source": "library", + "solver": "certified", + "certified_fallback": "pdip", + "certified_pass_budget": 16, + "captured_pass": "time", + "batches": "/mnt/ral/jnightin/autolens_profiling_wt/certified-solver-phase-c1-lane-rate/results/breakdown/imaging/nautilus_batches_rectangular_pix1.npz" + }, + "solver_injection": { + "patched": null, + "part_v": "none \u2014 library mode selects the solver through al.Settings", + "part_b_route_d": { + "patched": "autoarray.inversion.inversion.inversion_util.reconstruction_positive_only_from", + "pass_budget": 11, + "fallback": true + }, + "note": "Library mode (phase B, #300): PART V's arms and references run the library's own positive-only solve, selected by Settings(positive_only_solver, certified_fallback, certified_pass_budget); nothing is injected. PART B's single-call route d (the fiducial d == b pin) still uses the phase-1 harness injection at the phase-3 budget and is not a phase-B row. The untimed certification report observes the library solve (library_solver_observed) without changing it." + }, + "routes": { + "b_s3_pdip": { + "label": "S3 PDIP (source-only)", + "status": "ok", + "solver": "library", + "ms": 38.90378059986688, + "log_likelihood": 28622.39485118912 + }, + "d_s3_certified_fallback": { + "label": "S3 certified active set, budget 11, PDIP fallback", + "status": "ok", + "solver": "harness-injected certified active set", + "pass_budget": 11, + "fallback": true, + "injected_solver_calls_jax": 1, + "injected_solver_calls_numpy": 0, + "ms": 30.24110920014209, + "log_likelihood": 28622.394851189252 + } + }, + "equivalence_pins": [ + { + "pin": "route d (certified, fallback) == route b (library PDIP)", + "route": "d_s3_certified_fallback", + "reference": "b_s3_pdip", + "expectation": "the certified active set returns the library's own positive solution", + "rtol": 1e-09, + "got": 28622.394851189252, + "reference_value": 28622.39485118912, + "rel_diff": 4.575691088611358e-15, + "status": "PASS" + } + ], + "equivalence_rtol": 1e-09, + "reference": { + "log_evidence_s0_library": 28622.394851199875, + "log_evidence_s3_library": 28622.39485119987, + "s3": { + "n_params": 1521, + "n_mapper": 1521, + "n_funcs": 0, + "edge_zeroed_pixels": 152, + "subtracted_light_flux": 5253.476646922047 + } + }, + "command_buffers": { + "wall_on_ms": 2082.4040389998117, + "wall_off_ms": 2093.9613050002663, + "command_buffer_delta_ms": 11.557266000454547, + "command_buffer_delta_pct": 0.5549963303953999, + "traced": "off", + "compiler_option": "xla_gpu_enable_command_buffer", + "probe": { + "note": "Not taken in --vmap-batch mode: the CUPTI-inside-a-CUDA-graph probe is a phase-1 diagnostic about the JOIN, and this mode already compiles and times both the command-buffers ON and OFF executable of every arm." + }, + "note": "ONE lowering, TWO compilations, one process. wall_on_ms is the PRODUCTION program (CUDA graphs as XLA ships them) and is the number comparable to phase 5's row; wall_off_ms is the graph-less program the stage rows attribute. The delta is the launch overhead the graphs remove \u2014 it lands in device_idle and host_outside_span, not in any stage. Reconciliation is computed against wall_off_ms." + }, + "trace": { + "parser": "ProfileData.from_file(xplane) + as_text() + stack_frame_index(proto field 17)", + "stage_audit": { + "mesh_construction": [ + { + "instruction": "fusion.2", + "ms": 0.1501941359999999, + "opcode": "fusion", + "shape": "(f64[15361,2]{1,0}, s64[15361,2]{1,0}, s32[15361,2]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:227", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:227 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_select_fusion", + "ms": 0.03919591600000141, + "opcode": "fusion", + "shape": "(u32[2,15361]{1,0}, u32[2,15361]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69 (forward_interp)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:573 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/abstract.py:36 (AbstractInterpolator.mappings)" + ] + }, + { + "instruction": "loop_select_fusion.6", + "ms": 0.03476057200000199, + "opcode": "fusion", + "shape": "(u32[15361]{0}, u32[15361]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_select_fusion.1", + "ms": 0.03451009000000023, + "opcode": "fusion", + "shape": "(u32[15361]{0}, u32[15361]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_add_fusion", + "ms": 0.021205231999998908, + "opcode": "fusion", + "shape": "s64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69 (forward_interp)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:573 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/abstract.py:36 (AbstractInterpolator.mappings)" + ] + }, + { + "instruction": "loop_add_fusion.7", + "ms": 0.020901079999998944, + "opcode": "fusion", + "shape": "s64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "mixed_fusion": [ + { + "instruction": "loop_divide_gather_fusion", + "ms": 0.6957665039999998, + "opcode": "fusion", + "shape": "(f64[15361,1,1,1521]{3,2,1,0}, f64[15361,1,1,1521]{3,2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_broadcast_fusion.3", + "ms": 0.23270270000000004, + "opcode": "fusion", + "shape": "f64[1521,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_multiply_transpose_fusion", + "ms": 0.18443896000000012, + "opcode": "fusion", + "shape": "(f64[1369,1369]{1,0}, f64[1369,1369]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:237 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:274 (_certified_positive_only_from)" + ] + }, + { + "instruction": "loop_broadcast_fusion", + "ms": 0.13629450799999962, + "opcode": "fusion", + "shape": "f64[15361,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:342", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:342 (mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:283 (Mapper.mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:91 (AbstractInversionImaging._mapping_matrix_for_convolution_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:137 (AbstractInversionImaging.operated_mapping_matrix_list)" + ] + }, + { + "instruction": "input_reduce_fusion.11", + "ms": 0.11314340399999998, + "opcode": "fusion", + "shape": "f64[92,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123 (data_vector_via_blurred_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:67 (InversionImagingMapping.data_vector)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:699 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_reduce_fusion.14", + "ms": 0.11168997399999994, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163 (mapped_reconstructed_data_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:120 (InversionImagingMapping._mapped_reconstructed_data_dict_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:196 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + } + ], + "border_relocator": [ + { + "instruction": "eigh.0", + "ms": 0.07287370200000047, + "opcode": "custom-call", + "shape": "(f64[2,2]{0,1}, f64[2]{0}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "custom-call.2", + "ms": 0.007905870000000002, + "opcode": "custom-call", + "shape": "(f64[2,2]{1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_reduce_fusion.15", + "ms": 0.005438399999999997, + "opcode": "fusion", + "shape": "(f64[], f64[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:270", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:270 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_add_fusion.9", + "ms": 0.0037284479999999992, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:423 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_concatenate_fusion.4", + "ms": 0.002341118, + "opcode": "fusion", + "shape": "f64[392,2]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:238", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:238 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_reduce_fusion.22", + "ms": 0.0015934640000000086, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:256", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:256 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + } + ], + "other": [ + { + "instruction": "copy.63", + "ms": 0.030175760000001706, + "opcode": "copy", + "shape": "u32[2,15361]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.64", + "ms": 0.02983838000000393, + "opcode": "copy", + "shape": "u32[2,15361]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.81", + "ms": 0.028560307999997963, + "opcode": "copy", + "shape": "u32[15361]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.73", + "ms": 0.028436951999999394, + "opcode": "copy", + "shape": "u32[15361]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.82", + "ms": 0.028194156000001643, + "opcode": "copy", + "shape": "u32[15361]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.72", + "ms": 0.02803981000000125, + "opcode": "copy", + "shape": "u32[15361]{0}", + "source": "", + "stack": [] + } + ], + "pdip_solve": [ + { + "instruction": "cholesky.40", + "ms": 8.35053755000022, + "opcode": "custom-call", + "shape": "(f64[1369,1369]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "cholesky.60", + "ms": 6.423724690000139, + "opcode": "custom-call", + "shape": "(f64[1369,1369]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:106", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:106 (factorize_kkt)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:212 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve.7", + "ms": 1.462490832000021, + "opcode": "custom-call", + "shape": "(f64[1369,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "triangular-solve.6", + "ms": 1.2394886879999474, + "opcode": "custom-call", + "shape": "(f64[1369,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "triangular-solve", + "ms": 0.9787946460000064, + "opcode": "custom-call", + "shape": "(f64[1369,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:213 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve.2", + "ms": 0.9345076679999135, + "opcode": "custom-call", + "shape": "(f64[1369,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:217 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + } + ], + "mapping_matrix": [ + { + "instruction": "input_reduce_fusion.28", + "ms": 0.002809730000000025, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:362 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + } + ], + "regularization_H": [ + { + "instruction": "input_scatter_fusion.8", + "ms": 0.002761589999999996, + "opcode": "fusion", + "shape": "f64[1521,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:123 (weighted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:366 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "psf_convolution_mapping_matrix": [ + { + "instruction": "fft.19.0", + "ms": 1.7799405119999991, + "opcode": "fft", + "shape": "f64[1521,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.15.0", + "ms": 1.3818843840000006, + "opcode": "fft", + "shape": "c128[1521,180,91]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_scatter_fusion", + "ms": 1.374069292, + "opcode": "fusion", + "shape": "f64[1521,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.17.0", + "ms": 0.9923663759999991, + "opcode": "fft", + "shape": "c128[1521,91,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_transpose_fusion.4", + "ms": 0.5225705659999998, + "opcode": "fusion", + "shape": "c128[1521,91,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "wrapped_transpose.2", + "ms": 0.5057553520000001, + "opcode": "fusion", + "shape": "c128[1521,180,91]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + } + ], + "curvature_matrix_F": [ + { + "instruction": "cublas-lt-matmul.2", + "ms": 4.376331124, + "opcode": "custom-call", + "shape": "(f64[1521,1521]{1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "inversion_other": [ + { + "instruction": "cholesky.120", + "ms": 0.9203401760000058, + "opcode": "custom-call", + "shape": "(f64[1521,1521]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1078 (AbstractInversion.log_det_curvature_reg_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:347 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "cholesky.130", + "ms": 0.9038361340000063, + "opcode": "custom-call", + "shape": "(f64[1521,1521]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1157 (AbstractInversion.log_det_regularization_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:348 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "loop_reduce_window_fusion.3", + "ms": 0.005830847999999982, + "opcode": "fusion", + "shape": "s64[6,16]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "loop_reduce_window_fusion.2", + "ms": 0.0030077380000000198, + "opcode": "fusion", + "shape": "s64[86,16]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "input_scatter_fusion.9", + "ms": 0.002562495999999986, + "opcode": "fusion", + "shape": "s64[1369]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527 (AbstractInversion.zeroed_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:567 (AbstractInversion.solve_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:684 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_broadcast_fusion.4", + "ms": 0.0019022800000000097, + "opcode": "fusion", + "shape": "(s64[1369]{0}, s64[1369]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527 (AbstractInversion.zeroed_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:567 (AbstractInversion.solve_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:684 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "chi_squared_evidence": [ + { + "instruction": "loop_multiply_fusion.2", + "ms": 0.003006390000000007, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:300", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:300 (AbstractNDArray.__pow__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:60 (unwrap_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:35 (to_new_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:78 (chi_squared_map_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:78 (AbstractFit.chi_squared_map)" + ] + } + ] + }, + "stage_audit_note": "The HLO instructions that contributed most of each stage's milliseconds, with their full source stack. A stage row is only as good as the rules that built it; this is how a reader checks a row against the HLO instead of trusting it.", + "untraced_wall_ms": 41.891399751999415, + "reconciliation_vs_untraced_pct": -27.48312969764138, + "wall_basis": "wall_ms is the TRACED run's wall, the run these kernel durations came from. untraced_wall_ms is the same executable without the profiler; the difference is the profiler's overhead and belongs in neither the stages nor the idle row.", + "calls": 500, + "call_split": "per-call (first-instruction recurrence)", + "call_blocks": 500, + "events": 414640, + "streams": [ + "Stream #14(MemcpyH2D,Compute,MemcpyD2H,Memset,MemcpyD2D)" + ], + "per_stage_ms": { + "border_relocator": { + "median_ms": 0.09548900000000002, + "min_ms": 0.09446, + "max_ms": 0.09699400000000002 + }, + "chi_squared_evidence": { + "median_ms": 0.003008, + "min_ms": 0.002816, + "max_ms": 0.003328 + }, + "curvature_matrix_F": { + "median_ms": 4.356646, + "min_ms": 4.333845, + "max_ms": 4.536279 + }, + "inversion_other": { + "median_ms": 1.837608, + "min_ms": 1.822838, + "max_ms": 1.890297 + }, + "mapping_matrix": { + "median_ms": 0.002816, + "min_ms": 0.002783, + "max_ms": 0.002848 + }, + "memset": { + "median_ms": 0.03336, + "min_ms": 0.011456, + "max_ms": 0.10495999999999997 + }, + "mesh_construction": { + "median_ms": 0.34526, + "min_ms": 0.3423380000000002, + "max_ms": 0.3502749999999999 + }, + "mixed_fusion": { + "median_ms": 1.8449345000000001, + "min_ms": 1.837815, + "max_ms": 1.867318 + }, + "other": { + "median_ms": 0.18009799999999987, + "min_ms": 0.179291, + "max_ms": 0.18547499999999972 + }, + "pdip_solve": { + "median_ms": 13.056399000000003, + "min_ms": 3.4580900000000003, + "max_ms": 48.446623999999936 + }, + "psf_convolution_mapping_matrix": { + "median_ms": 6.556239499999999, + "min_ms": 6.528212000000001, + "max_ms": 6.613775 + }, + "regularization_H": { + "median_ms": 0.002783, + "min_ms": 0.0024, + "max_ms": 0.003136 + } + }, + "stage_order": [ + "border_relocator", + "mesh_construction", + "mapping_matrix", + "psf_convolution_mapping_matrix", + "curvature_matrix_F", + "regularization_H", + "pdip_solve", + "chi_squared_evidence", + "inversion_other", + "mixed_fusion", + "other", + "memset" + ], + "mixed_fusion": { + "ms": 1.8449345000000001, + "constituent_stage_sets": { + "curvature_matrix_F + psf_convolution_mapping_matrix": 0.6957665039999998, + "pdip_solve + psf_convolution_mapping_matrix": 0.23270270000000004, + "inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": 0.18443896000000012, + "mapping_matrix + pdip_solve": 0.13863248199999956, + "data_vector_D + pdip_solve": 0.11686097599999987, + "mapped_reconstruction + pdip_solve": 0.11168997399999994, + "border_relocator + pdip_solve": 0.07100461799999953, + "mesh_construction + pdip_solve": 0.038455979999999564, + "inversion_other + regularization_H": 0.030797820000000017, + "inversion_other + pdip_solve": 0.02947045200000002, + "border_relocator + mesh_construction + pdip_solve": 0.026748346000000027, + "curvature_reg_reduce_gather + inversion_other": 0.025578898000000003, + "border_relocator + inversion_other + mapping_matrix + mesh_construction + pdip_solve": 0.020427232, + "pdip_solve + regularization_H": 0.01917003599999998, + "inversion_other + mapping_matrix + pdip_solve + regularization_H": 0.015526246000000084, + "inversion_other + mapping_matrix + mesh_construction": 0.012920326000000006, + "pdip_solve + ray_trace_data_grid": 0.012776269999999902, + "grids_and_structures + mass_profile_deflections + pdip_solve": 0.009873828, + "inversion_other + mapped_reconstruction + reconstruction_scatter": 0.009700854, + "inversion_other + mapped_reconstruction": 0.008355122000000005, + "chi_squared_evidence + pdip_solve": 0.007673018000000005, + "inversion_other + mesh_construction + pdip_solve": 0.005440314000000062, + "grids_and_structures + mass_profile_deflections + ray_trace_data_grid": 0.005234568, + "inversion_other + pdip_solve + ray_trace_data_grid": 0.004826371999999985, + "border_relocator + mesh_construction": 0.0034276539999999927, + "border_relocator + inversion_other": 0.0033522039999999997, + "border_relocator + inversion_other + mesh_construction + pdip_solve": 0.002477650000000015, + "chi_squared_evidence + inversion_other": 0.001790708000000005 + }, + "example_kernels": { + "curvature_matrix_F + psf_convolution_mapping_matrix": [ + "loop_divide_gather_fusion" + ], + "pdip_solve + psf_convolution_mapping_matrix": [ + "loop_broadcast_fusion.3" + ], + "inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": [ + "input_multiply_transpose_fusion" + ], + "mapping_matrix + pdip_solve": [ + "loop_divide_fusion.1", + "loop_broadcast_fusion" + ], + "data_vector_D + pdip_solve": [ + "input_reduce_fusion.11", + "input_reduce_fusion.26" + ], + "mapped_reconstruction + pdip_solve": [ + "input_reduce_fusion.14" + ], + "border_relocator + pdip_solve": [ + "input_reduce_fusion.16", + "loop_select_sine_fusion", + "input_concatenate_fusion.1", + "input_transpose_fusion.8" + ], + "mesh_construction + pdip_solve": [ + "loop_multiply_fusion.4", + "loop_pad_fusion", + "loop_reduce_fusion", + "triton_softmax.1" + ], + "inversion_other + regularization_H": [ + "input_transpose_fusion.6" + ], + "inversion_other + pdip_solve": [ + "input_scatter_fusion.11", + "input_reduce_fusion.17", + "input_reduce_fusion.24", + "input_reduce_fusion.12" + ] + }, + "prorated_estimate_ms": { + "psf_convolution_mapping_matrix": 0.46423460199999994, + "pdip_solve": 0.4595440333999992, + "curvature_matrix_F": 0.3478832519999999, + "inversion_other": 0.1153313844000001, + "mapped_reconstruction": 0.10936590600000001, + "mapping_matrix": 0.08159002423333313, + "data_vector_D": 0.05843048799999993, + "border_relocator": 0.052513212233333106, + "reconstruction_scatter": 0.04934335800000003, + "mesh_construction": 0.04068300456666647, + "regularization_H": 0.02886548950000002, + "curvature_reg_reduce_gather": 0.012789449000000001, + "ray_trace_data_grid": 0.009741781666666612, + "grids_and_structures": 0.005036132, + "mass_profile_deflections": 0.005036132, + "chi_squared_evidence": 0.004731863000000005 + }, + "prorated_note": "ESTIMATE ONLY \u2014 a mixed fusion's time split equally across the stages its constituents span. Never summed into the measured table, never reconciled." + }, + "other_sources_ms": { + "copy.63": 0.030175760000001706, + "copy.64": 0.02983838000000393, + "copy.81": 0.028560307999997963, + "copy.73": 0.028436951999999394, + "copy.82": 0.028194156000001643, + "copy.72": 0.02803981000000125, + "copy.121": 0.0018161400000000114, + "copy.122": 0.0017717179999999911, + "copy.56": 0.0015238939999999933, + "copy.74": 0.001512317999999997, + "copy.120": 0.0007366479999999997, + "copy.43": 0.0006686099999999996 + }, + "device_span_ms": 42.942058577999994, + "device_busy_ms": 40.878367552, + "device_idle_ms": 2.0636910259999937, + "largest_idle_gaps": [ + { + "gap_ms": 0.044702, + "after": "while.33", + "before": "input_scatter_fusion.1" + }, + { + "gap_ms": 0.040382, + "after": "input_concatenate_fusion.4", + "before": "custom-call.2" + }, + { + "gap_ms": 0.031711, + "after": "loop_multiply_fusion.3", + "before": "eigh.0" + }, + { + "gap_ms": 0.025855, + "after": "loop_add_fusion.7", + "before": "loop_select_fusion.6" + }, + { + "gap_ms": 0.023775, + "after": "input_reduce_fusion", + "before": "input_divide_reduce_subtract_fusion" + }, + { + "gap_ms": 0.023487, + "after": "loop_broadcast_fusion.6", + "before": "loop_broadcast_fusion.8" + }, + { + "gap_ms": 0.022431, + "after": "while.40", + "before": "input_transpose_fusion.2" + }, + { + "gap_ms": 0.02227, + "after": "loop_add_fusion.7", + "before": "loop_select_fusion.6" + } + ], + "kernel_ms": 28.314641, + "sum_ms": 30.378332025999995, + "wall_ms": 42.94434955000179, + "host_outside_span_ms": 0.0022909720017949553, + "reconciliation_pct": -29.26116626675341, + "unjoined_ms": 0.0, + "unjoined_pct": 0.0, + "other_ms": 0.18009799999999987, + "other_pct": 0.41937531220563656, + "note": "Stage rows attribute the command-buffers-OFF program (see the module docstring): kernel times are the same, the launch overhead the CUDA graphs remove is not. sum_ms = kernel rows + device_idle_ms; the residual against wall_ms is host_outside_span_ms (dispatch before the first kernel, teardown after the last).", + "per_stage_ms_per_lane": { + "border_relocator": 0.09548900000000002, + "chi_squared_evidence": 0.003008, + "curvature_matrix_F": 4.356646, + "inversion_other": 1.837608, + "mapping_matrix": 0.002816, + "memset": 0.03336, + "mesh_construction": 0.34526, + "mixed_fusion": 1.8449345000000001, + "other": 0.18009799999999987, + "pdip_solve": 13.056399000000003, + "psf_convolution_mapping_matrix": 6.556239499999999, + "regularization_H": 0.002783 + }, + "per_lane_divisor": 1, + "host_callback": { + "pure_callback_span_ms": 0, + "qhull_ms": 0.0, + "callback_body_ms_note": "the OUTERMOST matching body event, not a sum: under the probe the body appears twice (the wrapper and the timed re-implementation it calls) and summing them would count the same work twice", + "events_by_name": { + "ThenExecuteCallback:GetEventForComputeStreamSyncPoint": { + "count": 500, + "ms": 0.9566419999999997 + } + }, + "note": "HOST milliseconds per traced BATCH (the whole invocation), aggregated by name because the events nest. Not a row of the device table: the device pays for them as the idle gaps largest_idle_gaps names." + }, + "host_callback_ms": 0 + }, + "hlo_census": { + "status": "excluded", + "reason": "The legacy census anchors PyAutoArray source line numbers that moved after the phase-1 run. No batched attribution is published from unsupported anchors; the device-event table and wall reconciliation remain valid." + }, + "stage_map_provenance": [ + { + "label": "log_det_curvature_reg", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 850, + 882 + ], + "requires": { + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 884, + 896 + ] + }, + "function": null + }, + { + "label": "log_det_regularization", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 850, + 882 + ], + "requires": { + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 897, + 943 + ] + }, + "function": null + }, + { + "label": "curvature_reg_add", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 359, + 372 + ], + "requires": null, + "function": null + }, + { + "label": "curvature_reg_reduce_gather", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 374, + 398 + ], + "requires": null, + "function": null + }, + { + "label": "edge_subset_gather", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 606, + 614 + ], + "requires": null, + "function": null + }, + { + "label": "regularization_term", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 786, + 849 + ], + "requires": null, + "function": null + }, + { + "label": "mapped_reconstruction", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 722, + 785 + ], + "requires": null, + "function": null + }, + { + "label": "reconstruction_scatter", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 583, + 605 + ], + "requires": null, + "function": null + }, + { + "label": "reconstruction_scatter", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 615, + 721 + ], + "requires": null, + "function": null + }, + { + "label": "certified_active_set_solve", + "path": "likelihood_breakdown/active_set_steps.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "certified_active_set_solve", + "path": "likelihood_breakdown/library_solver_injection.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "pdip_solve", + "path": "PyAutoArray/autoarray/util/jax_nnls.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "pdip_solve", + "path": "PyAutoArray/autoarray/inversion/inversion/inversion_util.py", + "lines": [ + 256, + 488 + ], + "requires": null, + "function": null + }, + { + "label": "mapped_reconstruction", + "path": "PyAutoArray/autoarray/inversion/inversion/inversion_util.py", + "lines": [ + 156, + 200 + ], + "requires": null, + "function": null + }, + { + "label": "curvature_matrix_F", + "path": "PyAutoArray/autoarray/inversion/inversion/inversion_util.py", + "lines": [ + 12, + 155 + ], + "requires": null, + "function": null + }, + { + "label": "reconstruction_scatter", + "path": "PyAutoArray/autoarray/inversion/inversion/inversion_util.py", + "lines": [ + 201, + 255 + ], + "requires": null, + "function": null + }, + { + "label": "data_vector_D", + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py", + "lines": [ + 54, + 73 + ], + "requires": null, + "function": null + }, + { + "label": "curvature_matrix_F", + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py", + "lines": [ + 74, + 110 + ], + "requires": null, + "function": null + }, + { + "label": "data_vector_D", + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py", + "lines": null, + "requires": null, + "function": "data_vector_via_blurred_mapping_matrix_from" + }, + { + "label": "curvature_matrix_F", + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "likelihood_breakdown/psf_cube_injection.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": [ + 1086, + 1300 + ], + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": [ + 632, + 642 + ], + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": [ + 670, + 691 + ], + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": null, + "requires": { + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": [ + 1086, + 1300 + ] + }, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": null, + "requires": { + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py", + "lines": [ + 119, + 150 + ] + }, + "function": null + }, + { + "label": "psf_convolution_image", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py", + "lines": [ + 119, + 150 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_qhull_callback", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 139, + 172 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_seed_argmin", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 173, + 207 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_locate_walk", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 208, + 372 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_dual_areas", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 373, + 396 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_dual_areas", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 437, + 494 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_dual_areas", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 605, + 615 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_interpolation_weights", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 616, + 695 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_interpolation_weights", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 896, + 1000 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_construction", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "border_relocator", + "path": "PyAutoArray/autoarray/inversion/mesh/border_relocator.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "mesh_construction", + "path": "PyAutoArray/autoarray/inversion/mesh/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "mapping_matrix", + "path": "PyAutoArray/autoarray/inversion/mappers/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "mapping_matrix", + "path": "PyAutoArray/autoarray/inversion/mappings/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "mapping_matrix", + "path": "PyAutoArray/autoarray/inversion/linear_obj/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "regularization_H", + "path": "PyAutoArray/autoarray/inversion/regularization/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "chi_squared_evidence", + "path": "PyAutoArray/autoarray/fit/fit_util.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "chi_squared_evidence", + "path": "PyAutoArray/autoarray/fit/fit_dataset.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "ray_trace_mesh_grid", + "path": "PyAutoLens/autolens/lens/to_inversion.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "ray_trace_mesh_grid", + "path": "PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "mass_profile_deflections", + "path": "PyAutoGalaxy/autogalaxy/profiles/mass/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "light_profile_image", + "path": "PyAutoGalaxy/autogalaxy/profiles/light/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "light_profile_image", + "path": "PyAutoGalaxy/autogalaxy/operate/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "ray_trace_data_grid", + "path": "PyAutoLens/autolens/lens/tracer.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "ray_trace_data_grid", + "path": "PyAutoLens/autolens/lens/tracer_util.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "grids_and_structures", + "path": "PyAutoArray/autoarray/structures/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "grids_and_structures", + "path": "PyAutoArray/autoarray/operators/over_sampling/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "grids_and_structures", + "path": "PyAutoArray/autoarray/geometry/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "inversion_other", + "path": "PyAutoArray/autoarray/inversion/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "fit_imaging_other", + "path": "PyAutoLens/autolens/imaging/fit_imaging.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "fit_imaging_other", + "path": "PyAutoGalaxy/autogalaxy/imaging/fit_imaging.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "fit_imaging_other", + "path": "PyAutoArray/autoarray/fit/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "analysis_other", + "path": "PyAutoLens/autolens/analysis/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "analysis_other", + "path": "PyAutoGalaxy/autogalaxy/analysis/", + "lines": null, + "requires": null, + "function": null + } + ], + "trace_timing": { + "traced_wall_ms": 42.94434955000179, + "untraced_wall_ms": 41.891399751999415, + "profiler_overhead_ms": 1.0529497980023734, + "profiler_overhead_pct": 2.513522594699447 + }, + "jit_phases": { + "b_s3_pdip_library_likelihood_jit": { + "lower_s": 1.2788594329977059, + "compile_s": 3.371353321999777, + "first_call_s": 0.10868171399852145, + "steady_per_call_s": 0.03890378059986688 + }, + "d_s3_certified_fallback_library_likelihood_jit": { + "lower_s": 0.4641938989989285, + "compile_s": 3.8300382970010105, + "first_call_s": 0.046081288001005305, + "steady_per_call_s": 0.030241109200142093 + } + }, + "peak_bytes": { + "after_setup": 85616640, + "after_routes": 1197479168, + "after_all": 59620980224, + "note": "jax.devices()[0].memory_stats()['peak_bytes_in_use']; None on a backend that does not report it (CPU). Process-wide high-water marks." + }, + "note": "Every stage row is a MEASURED sum of GPU kernel durations joined to library source through the optimized HLO of ONE program \u2014 not arithmetic across compilations. The rows attribute the command-buffers-OFF program: kernel time is the same as production, the launch overhead the CUDA graphs remove is not, and command_buffers.* carries both walls and their delta. sum_ms = kernel rows + measured device_idle_ms; the residual against the wall is host_outside_span_ms and is reported, not absorbed. mixed_fusion.prorated_estimate_ms is an ESTIMATE and is never part of the table. No row may be quoted if reconciliation_pct is outside 5 % or unjoined_ms is non-zero.", + "vmap": { + "batch": 50, + "lanes_mode": "captured", + "arms": [ + "vmap", + "scalar" + ], + "draw_seed": 0, + "fallback": true, + "composition": "jax.jit(jax.vmap(fn))", + "composition_provenance": "Current Fitness._vmap after PyAutoFit#1638. Array 343376 used the retired jax.vmap(jax.jit(fn)) composition and is historical evidence only.", + "headline_arm": "scalar", + "lane_rtol": 1e-09, + "lanes": [ + { + "lane": 0, + "draw_name": "call00015_lane00", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.0017002711605432041, + "centre_1": -0.009377257327484623, + "ell_comps_0": -0.002548851608736212, + "ell_comps_1": -0.004262475027349674, + "einstein_radius": -0.0230617600435421 + }, + "log_likelihood_vmap": 12361.442851754779, + "log_likelihood_scalar": 18463.078970707007, + "log_likelihood_library_pdip": 12361.442851754779, + "log_likelihood_library_pdip_scalar": 18463.078970707007, + "rel_diff_vmap_vs_library_pdip": 0.0, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 6101.636118952229, + "rel_diff": 0.3304777133127638, + "rel_diff_scalar_vs_library_pdip": 0.4936022592286681, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6101.636118952229, + "rel_diff_library_pdip_vmap_vs_scalar": 0.3304777133127638, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 1, + "draw_name": "call00015_lane01", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.00044835385344320865, + "centre_1": -0.003464237160596487, + "ell_comps_0": -0.0010036884316776545, + "ell_comps_1": 0.0020035511501456356, + "einstein_radius": -0.05761540720338343 + }, + "log_likelihood_vmap": 9549.7408319842, + "log_likelihood_scalar": 15734.21749633948, + "log_likelihood_library_pdip": 9549.7408319842, + "log_likelihood_library_pdip_scalar": 15734.21749633948, + "rel_diff_vmap_vs_library_pdip": 0.0, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 6184.476664355279, + "rel_diff": 0.39305905525928314, + "rel_diff_scalar_vs_library_pdip": 0.6476067542735919, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6184.476664355279, + "rel_diff_library_pdip_vmap_vs_scalar": 0.39305905525928314, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 2, + "draw_name": "call00015_lane02", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.0017572218110215735, + "centre_1": 0.0022774942133795186, + "ell_comps_0": 0.0023932647815035485, + "ell_comps_1": -0.011727950927316913, + "einstein_radius": -0.027234805142873908 + }, + "log_likelihood_vmap": 12681.013488957102, + "log_likelihood_scalar": 18706.16598652238, + "log_likelihood_library_pdip": 12681.013488957102, + "log_likelihood_library_pdip_scalar": 18706.16598652238, + "rel_diff_vmap_vs_library_pdip": 0.0, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 6025.152497565279, + "rel_diff": 0.3220944634997009, + "rel_diff_scalar_vs_library_pdip": 0.47513177892383057, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6025.152497565279, + "rel_diff_library_pdip_vmap_vs_scalar": 0.3220944634997009, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 3, + "draw_name": "call00015_lane03", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.002862791114730316, + "centre_1": 0.0038524808804676603, + "ell_comps_0": 0.006111415425061918, + "ell_comps_1": -0.022191169695991525, + "einstein_radius": -0.03531000166767062 + }, + "log_likelihood_vmap": 25946.740777346065, + "log_likelihood_scalar": -22166.221756011815, + "log_likelihood_library_pdip": 25946.740778189407, + "log_likelihood_library_pdip_scalar": -22166.221752677688, + "rel_diff_vmap_vs_library_pdip": 3.250279880445246e-11, + "rel_diff_scalar_vs_library_pdip_scalar": 1.504147877958965e-10, + "abs_diff_nats": 48112.96253335788, + "rel_diff": 2.1705531534849376, + "rel_diff_scalar_vs_library_pdip": 1.8542969595104037, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 48112.962530867095, + "rel_diff_library_pdip_vmap_vs_scalar": 2.1705531536990526, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 5, + "pdip_iter": null + }, + { + "lane": 4, + "draw_name": "call00015_lane04", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.0017545152650242774, + "centre_1": 0.005096768299803747, + "ell_comps_0": 0.00015519416981613077, + "ell_comps_1": 0.007279341501820333, + "einstein_radius": -0.03249658545615719 + }, + "log_likelihood_vmap": -191783.97440572572, + "log_likelihood_scalar": NaN, + "log_likelihood_library_pdip": -191784.26738803473, + "log_likelihood_library_pdip_scalar": NaN, + "rel_diff_vmap_vs_library_pdip": 1.527666022866e-06, + "rel_diff_scalar_vs_library_pdip_scalar": NaN, + "abs_diff_nats": NaN, + "rel_diff": NaN, + "rel_diff_scalar_vs_library_pdip": NaN, + "abs_diff_library_pdip_vmap_vs_scalar_nats": NaN, + "rel_diff_library_pdip_vmap_vs_scalar": NaN, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": true, + "passes": 1, + "pdip_iter": null + }, + { + "lane": 5, + "draw_name": "call00015_lane05", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.0009851407640018856, + "centre_1": 0.002274591191563648, + "ell_comps_0": 0.006006903437417319, + "ell_comps_1": 0.008497457839948512, + "einstein_radius": -0.07242218866013372 + }, + "log_likelihood_vmap": 8554.981568652838, + "log_likelihood_scalar": 14761.660929765763, + "log_likelihood_library_pdip": 8554.981568662643, + "log_likelihood_library_pdip_scalar": 14761.660929764937, + "rel_diff_vmap_vs_library_pdip": 1.146040211357794e-12, + "rel_diff_scalar_vs_library_pdip_scalar": 5.594364977891205e-14, + "abs_diff_nats": 6206.679361112925, + "rel_diff": 0.4204594178557258, + "rel_diff_scalar_vs_library_pdip": 0.7255047028784399, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6206.679361102295, + "rel_diff_library_pdip_vmap_vs_scalar": 0.4204594178550292, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 6, + "draw_name": "call00015_lane06", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.002713857824416392, + "centre_1": 0.00891817739575143, + "ell_comps_0": 0.001298959041684998, + "ell_comps_1": -0.0098959428603974, + "einstein_radius": 0.04379561090121875 + }, + "log_likelihood_vmap": 22689.445185633005, + "log_likelihood_scalar": 21597.126871231176, + "log_likelihood_library_pdip": 22689.445185632085, + "log_likelihood_library_pdip_scalar": 21597.126871231438, + "rel_diff_vmap_vs_library_pdip": 4.05654977750203e-14, + "rel_diff_scalar_vs_library_pdip_scalar": 1.2128209260071277e-14, + "abs_diff_nats": 1092.3183144018294, + "rel_diff": 0.0505770198468793, + "rel_diff_scalar_vs_library_pdip": 0.04814213417138164, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 1092.318314400647, + "rel_diff_library_pdip_vmap_vs_scalar": 0.05057701984682394, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 14, + "pdip_iter": null + }, + { + "lane": 7, + "draw_name": "call00015_lane07", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.01063269420288399, + "centre_1": -0.0015469073410711704, + "ell_comps_0": -0.012689283848227026, + "ell_comps_1": 0.0004952469855790744, + "einstein_radius": 0.02732727396499479 + }, + "log_likelihood_vmap": 26407.810775592596, + "log_likelihood_scalar": 7413.159096707619, + "log_likelihood_library_pdip": 26407.81077626501, + "log_likelihood_library_pdip_scalar": 7413.159096633601, + "rel_diff_vmap_vs_library_pdip": 2.5462727848562633e-11, + "rel_diff_scalar_vs_library_pdip_scalar": 9.984719853469832e-12, + "abs_diff_nats": 18994.651678884977, + "rel_diff": 2.562288415922573, + "rel_diff_scalar_vs_library_pdip": 0.7192815731862761, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 18994.65167963141, + "rel_diff_library_pdip_vmap_vs_scalar": 2.562288416048847, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 7, + "pdip_iter": null + }, + { + "lane": 8, + "draw_name": "call00015_lane08", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.003586333218755102, + "centre_1": 0.0002442650473125539, + "ell_comps_0": -0.0025095685188555317, + "ell_comps_1": 0.008402687166147546, + "einstein_radius": 0.003809182535237543 + }, + "log_likelihood_vmap": 13032.333063604052, + "log_likelihood_scalar": 19060.20267912919, + "log_likelihood_library_pdip": 13032.333063604052, + "log_likelihood_library_pdip_scalar": 19060.20267912919, + "rel_diff_vmap_vs_library_pdip": 0.0, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 6027.869615525138, + "rel_diff": 0.3162542244173311, + "rel_diff_scalar_vs_library_pdip": 0.46253188789039046, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6027.869615525138, + "rel_diff_library_pdip_vmap_vs_scalar": 0.3162542244173311, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 9, + "draw_name": "call00015_lane09", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.004569070502203608, + "centre_1": -0.0008437281377326854, + "ell_comps_0": 0.016330335737132294, + "ell_comps_1": 0.007271610957481866, + "einstein_radius": -0.0644363448871137 + }, + "log_likelihood_vmap": 6404.941310219961, + "log_likelihood_scalar": 12782.70332143049, + "log_likelihood_library_pdip": 6404.941310219961, + "log_likelihood_library_pdip_scalar": 12782.70332143049, + "rel_diff_vmap_vs_library_pdip": 0.0, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 6377.762011210529, + "rel_diff": 0.4989368720244072, + "rel_diff_scalar_vs_library_pdip": 0.9957565108417052, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6377.762011210529, + "rel_diff_library_pdip_vmap_vs_scalar": 0.4989368720244072, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 10, + "draw_name": "call00015_lane10", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.00041413552102611065, + "centre_1": -0.004015077828810355, + "ell_comps_0": 0.005329766760357603, + "ell_comps_1": 0.01667480963359283, + "einstein_radius": 0.011021193939315443 + }, + "log_likelihood_vmap": 19837.830792808098, + "log_likelihood_scalar": 25442.236800482453, + "log_likelihood_library_pdip": 19837.830792808105, + "log_likelihood_library_pdip_scalar": 25442.236800481303, + "rel_diff_vmap_vs_library_pdip": 3.6677183559914277e-16, + "rel_diff_scalar_vs_library_pdip_scalar": 4.518475761609269e-14, + "abs_diff_nats": 5604.406007674355, + "rel_diff": 0.22027961030407833, + "rel_diff_scalar_vs_library_pdip": 0.2825110298705712, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 5604.4060076731985, + "rel_diff_library_pdip_vmap_vs_scalar": 0.2202796103040428, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 11, + "draw_name": "call00015_lane11", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.00234856906735493, + "centre_1": -0.0005637310462631455, + "ell_comps_0": 0.002190699592912508, + "ell_comps_1": -0.01675931647125419, + "einstein_radius": -0.1186639473801736 + }, + "log_likelihood_vmap": -9841.364133505398, + "log_likelihood_scalar": -3234.481430921878, + "log_likelihood_library_pdip": -9841.364133505398, + "log_likelihood_library_pdip_scalar": -3234.481430921878, + "rel_diff_vmap_vs_library_pdip": 0.0, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 6606.88270258352, + "rel_diff": 2.0426404799920133, + "rel_diff_scalar_vs_library_pdip": 0.6713381003848917, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6606.88270258352, + "rel_diff_library_pdip_vmap_vs_scalar": 2.0426404799920133, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 12, + "draw_name": "call00015_lane12", + "draw_kind": "captured", + "offsets": { + "centre_0": -9.326736988388313e-05, + "centre_1": -0.0013488200741109593, + "ell_comps_0": 0.00997667014421897, + "ell_comps_1": -0.014348588092779897, + "einstein_radius": -0.02126731799195114 + }, + "log_likelihood_vmap": 12864.38878979598, + "log_likelihood_scalar": 18883.93355609074, + "log_likelihood_library_pdip": 12864.38878979598, + "log_likelihood_library_pdip_scalar": 18883.93355609074, + "rel_diff_vmap_vs_library_pdip": 0.0, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 6019.544766294759, + "rel_diff": 0.3187654070278828, + "rel_diff_scalar_vs_library_pdip": 0.4679231065427264, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6019.544766294759, + "rel_diff_library_pdip_vmap_vs_scalar": 0.3187654070278828, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 13, + "draw_name": "call00015_lane13", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.007013568613743564, + "centre_1": 0.004528745612839986, + "ell_comps_0": -0.018496405934026655, + "ell_comps_1": 0.0014830576999261711, + "einstein_radius": -0.04673040108359361 + }, + "log_likelihood_vmap": 18253.352706163903, + "log_likelihood_scalar": 23869.488067817765, + "log_likelihood_library_pdip": 18253.352706159974, + "log_likelihood_library_pdip_scalar": 23869.4880678158, + "rel_diff_vmap_vs_library_pdip": 2.152490654680179e-13, + "rel_diff_scalar_vs_library_pdip_scalar": 8.230208164700238e-14, + "abs_diff_nats": 5616.135361653862, + "rel_diff": 0.23528511988599632, + "rel_diff_scalar_vs_library_pdip": 0.3076769211698029, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 5616.135361655826, + "rel_diff_library_pdip_vmap_vs_scalar": 0.235285119886098, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 14, + "draw_name": "call00015_lane14", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.005108692197125562, + "centre_1": -0.010240010499870703, + "ell_comps_0": -0.00684600823433492, + "ell_comps_1": -0.002573928604858717, + "einstein_radius": -0.0214638151942923 + }, + "log_likelihood_vmap": 3734.552859195028, + "log_likelihood_scalar": -177849.9107295181, + "log_likelihood_library_pdip": 3734.1509573740186, + "log_likelihood_library_pdip_scalar": -177848.60220617644, + "rel_diff_vmap_vs_library_pdip": 0.00010762870210578301, + "rel_diff_scalar_vs_library_pdip_scalar": 7.357512656451285e-06, + "abs_diff_nats": 181584.46358871314, + "rel_diff": 1.0209983398016698, + "rel_diff_scalar_vs_library_pdip": 48.62793812025966, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 181582.75316355046, + "rel_diff_library_pdip_vmap_vs_scalar": 1.020996234499752, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": true, + "passes": 5, + "pdip_iter": null + }, + { + "lane": 15, + "draw_name": "call00015_lane15", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.0015375882948530809, + "centre_1": 0.00010861850037634777, + "ell_comps_0": 0.010624594413718456, + "ell_comps_1": -0.00030576693661378264, + "einstein_radius": 0.018140577124415858 + }, + "log_likelihood_vmap": 25472.29246785429, + "log_likelihood_scalar": 25794.985439519525, + "log_likelihood_library_pdip": 25472.2924678505, + "log_likelihood_library_pdip_scalar": 25794.985439515534, + "rel_diff_vmap_vs_library_pdip": 1.4881950345749357e-13, + "rel_diff_scalar_vs_library_pdip_scalar": 1.5471467354526885e-13, + "abs_diff_nats": 322.6929716652339, + "rel_diff": 0.012509910983351368, + "rel_diff_scalar_vs_library_pdip": 0.012668391432624573, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 322.69297166503384, + "rel_diff_library_pdip_vmap_vs_scalar": 0.012509910983345546, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 7, + "pdip_iter": null + }, + { + "lane": 16, + "draw_name": "call00015_lane16", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.001227759218702405, + "centre_1": 0.016003430753678986, + "ell_comps_0": 0.012636219938870381, + "ell_comps_1": -0.00698902153230205, + "einstein_radius": -0.05127757912787545 + }, + "log_likelihood_vmap": 9903.117799881344, + "log_likelihood_scalar": 16088.259041698664, + "log_likelihood_library_pdip": 9903.117799881362, + "log_likelihood_library_pdip_scalar": 16088.259041698664, + "rel_diff_vmap_vs_library_pdip": 1.8367845766387305e-15, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 6185.14124181732, + "rel_diff": 0.38445062488030823, + "rel_diff_scalar_vs_library_pdip": 0.6245650477763073, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6185.141241817302, + "rel_diff_library_pdip_vmap_vs_scalar": 0.3844506248803071, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 17, + "draw_name": "call00015_lane17", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.005083750984013619, + "centre_1": 0.0010204202759534836, + "ell_comps_0": -0.00849477917205129, + "ell_comps_1": 0.011231146696452643, + "einstein_radius": 0.01601143147676365 + }, + "log_likelihood_vmap": NaN, + "log_likelihood_scalar": NaN, + "log_likelihood_library_pdip": NaN, + "log_likelihood_library_pdip_scalar": NaN, + "rel_diff_vmap_vs_library_pdip": NaN, + "rel_diff_scalar_vs_library_pdip_scalar": NaN, + "abs_diff_nats": NaN, + "rel_diff": NaN, + "rel_diff_scalar_vs_library_pdip": NaN, + "abs_diff_library_pdip_vmap_vs_scalar_nats": NaN, + "rel_diff_library_pdip_vmap_vs_scalar": NaN, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": true, + "passes": 3, + "pdip_iter": null + }, + { + "lane": 18, + "draw_name": "call00015_lane18", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.0024988577690690035, + "centre_1": -0.001222125045613948, + "ell_comps_0": -0.01895695410631662, + "ell_comps_1": -0.0031279904204321676, + "einstein_radius": 0.01799244839027403 + }, + "log_likelihood_vmap": 12512.778742279312, + "log_likelihood_scalar": 18620.968710155976, + "log_likelihood_library_pdip": 12512.778742279312, + "log_likelihood_library_pdip_scalar": 18620.968710155976, + "rel_diff_vmap_vs_library_pdip": 0.0, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 6108.189967876664, + "rel_diff": 0.32802750828667815, + "rel_diff_scalar_vs_library_pdip": 0.4881561556936796, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6108.189967876664, + "rel_diff_library_pdip_vmap_vs_scalar": 0.32802750828667815, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 19, + "draw_name": "call00015_lane19", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.010541543200940506, + "centre_1": -0.008441200101276233, + "ell_comps_0": 0.007996538161425107, + "ell_comps_1": 0.0034133978687523603, + "einstein_radius": -0.09425697178670522 + }, + "log_likelihood_vmap": 841.7604744383425, + "log_likelihood_scalar": 7217.440786173451, + "log_likelihood_library_pdip": 841.7604744383425, + "log_likelihood_library_pdip_scalar": 7217.440786173451, + "rel_diff_vmap_vs_library_pdip": 0.0, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 6375.680311735108, + "rel_diff": 0.8833713362704805, + "rel_diff_scalar_vs_library_pdip": 7.574221533731703, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6375.680311735108, + "rel_diff_library_pdip_vmap_vs_scalar": 0.8833713362704805, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 20, + "draw_name": "call00016_lane00", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.005867542895042925, + "centre_1": -0.0036003092794745194, + "ell_comps_0": 0.007604733839451844, + "ell_comps_1": -0.020467070639514355, + "einstein_radius": -0.05806481349005321 + }, + "log_likelihood_vmap": -87665.50209767294, + "log_likelihood_scalar": -194096.26361629268, + "log_likelihood_library_pdip": -87665.52776536201, + "log_likelihood_library_pdip_scalar": -194096.29443374526, + "rel_diff_vmap_vs_library_pdip": 2.927911315376966e-07, + "rel_diff_scalar_vs_library_pdip_scalar": 1.587740388101236e-07, + "abs_diff_nats": 106430.76151861974, + "rel_diff": 0.5483400841194029, + "rel_diff_scalar_vs_library_pdip": 1.2140545840982557, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 106430.76666838325, + "rel_diff_library_pdip_vmap_vs_scalar": 0.5483400235892364, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": true, + "passes": 4, + "pdip_iter": null + }, + { + "lane": 21, + "draw_name": "call00016_lane01", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.0002320831105386773, + "centre_1": -0.00045439154934870857, + "ell_comps_0": -0.0009373257044041558, + "ell_comps_1": -0.002022036658350745, + "einstein_radius": -0.021310835332350786 + }, + "log_likelihood_vmap": -145323.60665767814, + "log_likelihood_scalar": NaN, + "log_likelihood_library_pdip": -145323.75055031647, + "log_likelihood_library_pdip_scalar": NaN, + "rel_diff_vmap_vs_library_pdip": 9.901522482195175e-07, + "rel_diff_scalar_vs_library_pdip_scalar": NaN, + "abs_diff_nats": NaN, + "rel_diff": NaN, + "rel_diff_scalar_vs_library_pdip": NaN, + "abs_diff_library_pdip_vmap_vs_scalar_nats": NaN, + "rel_diff_library_pdip_vmap_vs_scalar": NaN, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": true, + "passes": 2, + "pdip_iter": null + }, + { + "lane": 22, + "draw_name": "call00016_lane02", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.003012817377174628, + "centre_1": 0.003045021384718303, + "ell_comps_0": 0.014529935343015603, + "ell_comps_1": 0.0009399886282723802, + "einstein_radius": 0.0733730645770998 + }, + "log_likelihood_vmap": 4257.895598700154, + "log_likelihood_scalar": 10567.732718102652, + "log_likelihood_library_pdip": 4257.895598700154, + "log_likelihood_library_pdip_scalar": 10567.732718102652, + "rel_diff_vmap_vs_library_pdip": 0.0, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 6309.8371194024985, + "rel_diff": 0.5970852298898204, + "rel_diff_scalar_vs_library_pdip": 1.4819144746829302, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6309.8371194024985, + "rel_diff_library_pdip_vmap_vs_scalar": 0.5970852298898204, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 23, + "draw_name": "call00016_lane03", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.0005625414873401426, + "centre_1": -0.0026712523310752395, + "ell_comps_0": 0.0033797753961079327, + "ell_comps_1": -0.005313712669892466, + "einstein_radius": 0.007215069179382638 + }, + "log_likelihood_vmap": 26248.69008073093, + "log_likelihood_scalar": 25140.10625019124, + "log_likelihood_library_pdip": 26248.69008067381, + "log_likelihood_library_pdip_scalar": 25140.1062501793, + "rel_diff_vmap_vs_library_pdip": 2.176104981794989e-12, + "rel_diff_scalar_vs_library_pdip_scalar": 4.749322189038022e-13, + "abs_diff_nats": 1108.58383053969, + "rel_diff": 0.04409622694141387, + "rel_diff_scalar_vs_library_pdip": 0.04223387251231977, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 1108.58383049451, + "rel_diff_library_pdip_vmap_vs_scalar": 0.04409622693963768, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 8, + "pdip_iter": null + }, + { + "lane": 24, + "draw_name": "call00016_lane04", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.0043072184823141684, + "centre_1": 0.006053631800564527, + "ell_comps_0": 0.012890552900425963, + "ell_comps_1": -0.007502151161552584, + "einstein_radius": 0.062452352201186834 + }, + "log_likelihood_vmap": 7900.668001758997, + "log_likelihood_scalar": 14131.499763663749, + "log_likelihood_library_pdip": 7900.668001758997, + "log_likelihood_library_pdip_scalar": 14131.499763663749, + "rel_diff_vmap_vs_library_pdip": 0.0, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 6230.831761904752, + "rel_diff": 0.4409179397876832, + "rel_diff_scalar_vs_library_pdip": 0.7886461955517592, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6230.831761904752, + "rel_diff_library_pdip_vmap_vs_scalar": 0.4409179397876832, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 25, + "draw_name": "call00016_lane05", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.0030737862156077662, + "centre_1": -0.00663154900697737, + "ell_comps_0": 0.009619752399897409, + "ell_comps_1": 0.003473222516242081, + "einstein_radius": 0.10148938946995334 + }, + "log_likelihood_vmap": 4214.89727101475, + "log_likelihood_scalar": -39972.18336543742, + "log_likelihood_library_pdip": 4214.897270904214, + "log_likelihood_library_pdip_scalar": -39972.183365387085, + "rel_diff_vmap_vs_library_pdip": 2.622515828267422e-11, + "rel_diff_scalar_vs_library_pdip_scalar": 1.2592525735911474e-12, + "abs_diff_nats": 44187.08063645217, + "rel_diff": 1.1054457604299701, + "rel_diff_scalar_vs_library_pdip": 10.483548659980096, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 44187.0806362913, + "rel_diff_library_pdip_vmap_vs_scalar": 1.1054457604273376, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 11, + "pdip_iter": null + }, + { + "lane": 26, + "draw_name": "call00016_lane06", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.004341357254970946, + "centre_1": -0.00831790119054492, + "ell_comps_0": 0.013271194675385727, + "ell_comps_1": 0.007143121048925718, + "einstein_radius": -0.03403515269856339 + }, + "log_likelihood_vmap": 12330.813594141291, + "log_likelihood_scalar": 18491.477137097572, + "log_likelihood_library_pdip": 12330.813525317943, + "log_likelihood_library_pdip_scalar": 18491.477137097572, + "rel_diff_vmap_vs_library_pdip": 5.581411835875199e-09, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 6160.663542956281, + "rel_diff": 0.33316232647508554, + "rel_diff_scalar_vs_library_pdip": 0.49961534160989435, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6160.66361177963, + "rel_diff_library_pdip_vmap_vs_scalar": 0.33316233019698116, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 27, + "draw_name": "call00016_lane07", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.0020237232058323484, + "centre_1": -0.004253084460605827, + "ell_comps_0": 0.0003981152674067054, + "ell_comps_1": 0.010712381327540496, + "einstein_radius": 0.05337705451403374 + }, + "log_likelihood_vmap": 23198.584420818665, + "log_likelihood_scalar": -3056.263277677208, + "log_likelihood_library_pdip": 23198.584420818486, + "log_likelihood_library_pdip_scalar": -3056.2632776771934, + "rel_diff_vmap_vs_library_pdip": 7.684130993248103e-15, + "rel_diff_scalar_vs_library_pdip_scalar": 4.761342170569326e-15, + "abs_diff_nats": 26254.847698495872, + "rel_diff": 8.590505893343662, + "rel_diff_scalar_vs_library_pdip": 1.1317435246149978, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 26254.84769849568, + "rel_diff_library_pdip_vmap_vs_scalar": 8.59050589334364, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 8, + "pdip_iter": null + }, + { + "lane": 28, + "draw_name": "call00016_lane08", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.0057476736194228255, + "centre_1": 0.008141073378308437, + "ell_comps_0": -0.009529050432167334, + "ell_comps_1": 0.009276150055593011, + "einstein_radius": -0.015892796339859627 + }, + "log_likelihood_vmap": 24795.47725115118, + "log_likelihood_scalar": 25862.746341004804, + "log_likelihood_library_pdip": 24795.47725116432, + "log_likelihood_library_pdip_scalar": 25862.746340985912, + "rel_diff_vmap_vs_library_pdip": 5.299506566504275e-13, + "rel_diff_scalar_vs_library_pdip_scalar": 7.304724601226199e-13, + "abs_diff_nats": 1067.2690898536239, + "rel_diff": 0.041266657290818826, + "rel_diff_scalar_vs_library_pdip": 0.04304289363054578, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 1067.2690898215915, + "rel_diff_library_pdip_vmap_vs_scalar": 0.04126665728961042, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 12, + "pdip_iter": null + }, + { + "lane": 29, + "draw_name": "call00016_lane09", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.003084920430777067, + "centre_1": 0.00015583680770681115, + "ell_comps_0": -0.0019086479387713726, + "ell_comps_1": 0.00331115264567712, + "einstein_radius": 0.05906796603811526 + }, + "log_likelihood_vmap": 16899.784149907617, + "log_likelihood_scalar": 22571.886871189596, + "log_likelihood_library_pdip": 16899.78414990764, + "log_likelihood_library_pdip_scalar": 22571.88687118942, + "rel_diff_vmap_vs_library_pdip": 1.2916066056778348e-15, + "rel_diff_scalar_vs_library_pdip_scalar": 7.736304179483091e-15, + "abs_diff_nats": 5672.102721281979, + "rel_diff": 0.25129058787379277, + "rel_diff_scalar_vs_library_pdip": 0.33563166671054534, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 5672.102721281783, + "rel_diff_library_pdip_vmap_vs_scalar": 0.25129058787378605, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 30, + "draw_name": "call00016_lane10", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.002767285132569693, + "centre_1": -0.004552229029232065, + "ell_comps_0": -0.0015080579051976115, + "ell_comps_1": -0.004551384501496932, + "einstein_radius": 0.02027269778755647 + }, + "log_likelihood_vmap": 12361.076296418425, + "log_likelihood_scalar": 18458.05902298904, + "log_likelihood_library_pdip": 12361.076296418418, + "log_likelihood_library_pdip_scalar": 18458.059022989044, + "rel_diff_vmap_vs_library_pdip": 5.88618453580099e-16, + "rel_diff_scalar_vs_library_pdip_scalar": 1.9709433167164016e-16, + "abs_diff_nats": 6096.982726570615, + "rel_diff": 0.330315485446058, + "rel_diff_scalar_vs_library_pdip": 0.49324044123384336, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6096.982726570626, + "rel_diff_library_pdip_vmap_vs_scalar": 0.3303154854460585, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 31, + "draw_name": "call00016_lane11", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.008103082773010941, + "centre_1": -0.001496996210041656, + "ell_comps_0": -0.009232329483646967, + "ell_comps_1": -0.007564169499060556, + "einstein_radius": -0.02624013973482553 + }, + "log_likelihood_vmap": 24357.983602748696, + "log_likelihood_scalar": 26925.60946634438, + "log_likelihood_library_pdip": 24357.983602747794, + "log_likelihood_library_pdip_scalar": 26925.60946634438, + "rel_diff_vmap_vs_library_pdip": 3.7039960239441436e-14, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 2567.6258635956838, + "rel_diff": 0.09535999052519437, + "rel_diff_scalar_vs_library_pdip": 0.10541208605243232, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 2567.625863596586, + "rel_diff_library_pdip_vmap_vs_scalar": 0.09535999052522787, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 12, + "pdip_iter": null + }, + { + "lane": 32, + "draw_name": "call00016_lane12", + "draw_kind": "captured", + "offsets": { + "centre_0": 4.759711172546759e-05, + "centre_1": 0.0036654339222604716, + "ell_comps_0": 0.004022217919654, + "ell_comps_1": 0.01193757547850259, + "einstein_radius": 0.002395607277275502 + }, + "log_likelihood_vmap": 13062.078473348418, + "log_likelihood_scalar": 19082.159112472924, + "log_likelihood_library_pdip": 13062.078473348418, + "log_likelihood_library_pdip_scalar": 19082.159112472924, + "rel_diff_vmap_vs_library_pdip": 0.0, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 6020.080639124506, + "rel_diff": 0.3154821529178803, + "rel_diff_scalar_vs_library_pdip": 0.46088229001286035, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6020.080639124506, + "rel_diff_library_pdip_vmap_vs_scalar": 0.3154821529178803, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 33, + "draw_name": "call00016_lane13", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.003846970544705924, + "centre_1": -0.0007374136612465206, + "ell_comps_0": 0.007065226735817748, + "ell_comps_1": -0.009165455995317547, + "einstein_radius": 0.09219663637797715 + }, + "log_likelihood_vmap": 8952.363820638715, + "log_likelihood_scalar": 6443.280922177619, + "log_likelihood_library_pdip": 8952.363820637423, + "log_likelihood_library_pdip_scalar": 6443.280922175218, + "rel_diff_vmap_vs_library_pdip": 1.442616165286279e-13, + "rel_diff_scalar_vs_library_pdip_scalar": 3.7264648890552226e-13, + "abs_diff_nats": 2509.082898461096, + "rel_diff": 0.3894107565331961, + "rel_diff_scalar_vs_library_pdip": 0.2802704345723467, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 2509.082898462206, + "rel_diff_library_pdip_vmap_vs_scalar": 0.3894107565335135, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 34, + "draw_name": "call00016_lane14", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.0037825388019084288, + "centre_1": -0.003065771327334386, + "ell_comps_0": 0.011038948212531964, + "ell_comps_1": -0.0036160410925216925, + "einstein_radius": 0.014342279020181925 + }, + "log_likelihood_vmap": 17857.790811999315, + "log_likelihood_scalar": -135343.94247495267, + "log_likelihood_library_pdip": 17857.79170902445, + "log_likelihood_library_pdip_scalar": -135343.94303215604, + "rel_diff_vmap_vs_library_pdip": 5.0231582240855634e-08, + "rel_diff_scalar_vs_library_pdip_scalar": 4.116943523275419e-09, + "abs_diff_nats": 153201.733286952, + "rel_diff": 1.1319437758753346, + "rel_diff_scalar_vs_library_pdip": 8.578985390817193, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 153201.7347411805, + "rel_diff_library_pdip_vmap_vs_scalar": 1.1319437819598743, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": true, + "passes": 5, + "pdip_iter": null + }, + { + "lane": 35, + "draw_name": "call00016_lane15", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.0017154498332041523, + "centre_1": 0.0011514055436451646, + "ell_comps_0": -0.0007443063599393077, + "ell_comps_1": -0.0023611448129624295, + "einstein_radius": -0.0311831287730564 + }, + "log_likelihood_vmap": 11386.703937364357, + "log_likelihood_scalar": 17571.275632183253, + "log_likelihood_library_pdip": 11386.703937364357, + "log_likelihood_library_pdip_scalar": 17571.275632183253, + "rel_diff_vmap_vs_library_pdip": 0.0, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 6184.5716948188965, + "rel_diff": 0.35197055832937585, + "rel_diff_scalar_vs_library_pdip": 0.5431397644866157, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6184.5716948188965, + "rel_diff_library_pdip_vmap_vs_scalar": 0.35197055832937585, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 36, + "draw_name": "call00016_lane16", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.003055539488297464, + "centre_1": 0.003051945877003319, + "ell_comps_0": -0.006735358389710178, + "ell_comps_1": -0.0012390584664703722, + "einstein_radius": 0.011663273859285228 + }, + "log_likelihood_vmap": 12572.966530240072, + "log_likelihood_scalar": 18664.94647956068, + "log_likelihood_library_pdip": 12572.966530240072, + "log_likelihood_library_pdip_scalar": 18664.94647956068, + "rel_diff_vmap_vs_library_pdip": 0.0, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 6091.979949320608, + "rel_diff": 0.3263861461371839, + "rel_diff_scalar_vs_library_pdip": 0.4845300378926791, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6091.979949320608, + "rel_diff_library_pdip_vmap_vs_scalar": 0.3263861461371839, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 37, + "draw_name": "call00016_lane17", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.0077524538129402154, + "centre_1": -0.005118338666305982, + "ell_comps_0": 0.00027166766422631605, + "ell_comps_1": 0.016267874103674553, + "einstein_radius": -0.04229979729843336 + }, + "log_likelihood_vmap": 8851.033470262522, + "log_likelihood_scalar": 15118.859355707224, + "log_likelihood_library_pdip": 8851.033470262522, + "log_likelihood_library_pdip_scalar": 15118.859355707224, + "rel_diff_vmap_vs_library_pdip": 0.0, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 6267.825885444701, + "rel_diff": 0.4145700239666994, + "rel_diff_scalar_vs_library_pdip": 0.7081462189136651, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6267.825885444701, + "rel_diff_library_pdip_vmap_vs_scalar": 0.4145700239666994, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 38, + "draw_name": "call00016_lane18", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.0017903593057855822, + "centre_1": -0.010524614123222099, + "ell_comps_0": -0.014306999199314711, + "ell_comps_1": 0.007149289065143228, + "einstein_radius": -0.007747474284142131 + }, + "log_likelihood_vmap": 12878.633095268153, + "log_likelihood_scalar": 18915.856016800164, + "log_likelihood_library_pdip": 12878.633095268153, + "log_likelihood_library_pdip_scalar": 18915.856016800164, + "rel_diff_vmap_vs_library_pdip": 0.0, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 6037.222921532011, + "rel_diff": 0.31916202556046297, + "rel_diff_scalar_vs_library_pdip": 0.4687782373231984, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6037.222921532011, + "rel_diff_library_pdip_vmap_vs_scalar": 0.31916202556046297, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 39, + "draw_name": "call00016_lane19", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.0053239296297389604, + "centre_1": 0.008576687228070626, + "ell_comps_0": 0.009980595085990314, + "ell_comps_1": 0.0007633634977672295, + "einstein_radius": 0.004680005976448909 + }, + "log_likelihood_vmap": 13069.925693660298, + "log_likelihood_scalar": 19083.97025057711, + "log_likelihood_library_pdip": 13069.925693660298, + "log_likelihood_library_pdip_scalar": 19083.97025057711, + "rel_diff_vmap_vs_library_pdip": 0.0, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 6014.044556916811, + "rel_diff": 0.31513592182082467, + "rel_diff_scalar_vs_library_pdip": 0.46014374510438005, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6014.044556916811, + "rel_diff_library_pdip_vmap_vs_scalar": 0.31513592182082467, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 40, + "draw_name": "call00017_lane00", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.0008412347806356159, + "centre_1": 0.006598872995945007, + "ell_comps_0": 0.013900473273284593, + "ell_comps_1": -0.005813659391784079, + "einstein_radius": -0.06804976453398881 + }, + "log_likelihood_vmap": NaN, + "log_likelihood_scalar": NaN, + "log_likelihood_library_pdip": NaN, + "log_likelihood_library_pdip_scalar": NaN, + "rel_diff_vmap_vs_library_pdip": NaN, + "rel_diff_scalar_vs_library_pdip_scalar": NaN, + "abs_diff_nats": NaN, + "rel_diff": NaN, + "rel_diff_scalar_vs_library_pdip": NaN, + "abs_diff_library_pdip_vmap_vs_scalar_nats": NaN, + "rel_diff_library_pdip_vmap_vs_scalar": NaN, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": true, + "passes": 2, + "pdip_iter": null + }, + { + "lane": 41, + "draw_name": "call00017_lane01", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.003999508715210957, + "centre_1": -0.00769170199263835, + "ell_comps_0": 0.014831080350803293, + "ell_comps_1": 0.015077923229574103, + "einstein_radius": 0.015503022880488437 + }, + "log_likelihood_vmap": 26907.480959600063, + "log_likelihood_scalar": -186104.98830745643, + "log_likelihood_library_pdip": 26907.4810131566, + "log_likelihood_library_pdip_scalar": -186104.98830745643, + "rel_diff_vmap_vs_library_pdip": 1.9903958205609464e-09, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 213012.4692670565, + "rel_diff": 1.1445822661945382, + "rel_diff_scalar_vs_library_pdip": 7.916477548249837, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 213012.46932061302, + "rel_diff_library_pdip_vmap_vs_scalar": 1.144582266482314, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": true, + "passes": 6, + "pdip_iter": null + }, + { + "lane": 42, + "draw_name": "call00017_lane02", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.004857416783423787, + "centre_1": 0.0006154585970558757, + "ell_comps_0": 0.015723761388199968, + "ell_comps_1": 0.004357231803243995, + "einstein_radius": 0.08960103667317854 + }, + "log_likelihood_vmap": 10018.611642408578, + "log_likelihood_scalar": 1850.3329082262644, + "log_likelihood_library_pdip": 10018.611642401393, + "log_likelihood_library_pdip_scalar": 1850.3329082263226, + "rel_diff_vmap_vs_library_pdip": 7.171660505930077e-13, + "rel_diff_scalar_vs_library_pdip_scalar": 3.1457939625180015e-14, + "abs_diff_nats": 8168.278734182313, + "rel_diff": 4.414491412797957, + "rel_diff_scalar_vs_library_pdip": 0.8153104467693737, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 8168.27873417507, + "rel_diff_library_pdip_vmap_vs_scalar": 4.414491412793903, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": true, + "passes": 13, + "pdip_iter": null + }, + { + "lane": 43, + "draw_name": "call00017_lane03", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.0005909901072315682, + "centre_1": -0.0035249289321458922, + "ell_comps_0": -0.019570318149453904, + "ell_comps_1": -0.0022378854759100147, + "einstein_radius": 0.03831892100220591 + }, + "log_likelihood_vmap": 11776.717406871896, + "log_likelihood_scalar": 17930.42303106947, + "log_likelihood_library_pdip": 11776.717406871892, + "log_likelihood_library_pdip_scalar": 17930.42303106947, + "rel_diff_vmap_vs_library_pdip": 3.0891280493568586e-16, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 6153.705624197573, + "rel_diff": 0.34319913219752585, + "rel_diff_scalar_vs_library_pdip": 0.5225314840794938, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6153.705624197577, + "rel_diff_library_pdip_vmap_vs_scalar": 0.34319913219752607, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 44, + "draw_name": "call00017_lane04", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.004632807269896779, + "centre_1": 0.0033795641333986453, + "ell_comps_0": 0.003716514023928419, + "ell_comps_1": 0.009570511240886145, + "einstein_radius": 0.05347929977212873 + }, + "log_likelihood_vmap": 9830.889949647397, + "log_likelihood_scalar": 16076.3203998807, + "log_likelihood_library_pdip": 9830.889949647408, + "log_likelihood_library_pdip_scalar": 16076.3203998807, + "rel_diff_vmap_vs_library_pdip": 1.1101676935836899e-15, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 6245.430450233303, + "rel_diff": 0.38848631371390496, + "rel_diff_scalar_vs_library_pdip": 0.6352863761288763, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6245.4304502332925, + "rel_diff_library_pdip_vmap_vs_scalar": 0.38848631371390424, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 45, + "draw_name": "call00017_lane05", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.0013313844569187569, + "centre_1": -0.0013834462375134267, + "ell_comps_0": 0.007876545038269143, + "ell_comps_1": 0.0004450456034152751, + "einstein_radius": -0.024930043243791555 + }, + "log_likelihood_vmap": 22630.021263048515, + "log_likelihood_scalar": 27238.298521573466, + "log_likelihood_library_pdip": 22630.021263048355, + "log_likelihood_library_pdip_scalar": 27238.298521573262, + "rel_diff_vmap_vs_library_pdip": 7.073394481224325e-15, + "rel_diff_scalar_vs_library_pdip_scalar": 7.47942508361087e-15, + "abs_diff_nats": 4608.277258524951, + "rel_diff": 0.16918374159366348, + "rel_diff_scalar_vs_library_pdip": 0.20363556909466013, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 4608.277258524908, + "rel_diff_library_pdip_vmap_vs_scalar": 0.16918374159366315, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 46, + "draw_name": "call00017_lane06", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.00030258801276238025, + "centre_1": -0.007076618443973986, + "ell_comps_0": 0.0006107363200167637, + "ell_comps_1": 0.005821629725281707, + "einstein_radius": -0.03151259938944295 + }, + "log_likelihood_vmap": 19042.623793253435, + "log_likelihood_scalar": 24851.572007976778, + "log_likelihood_library_pdip": 19042.623793252453, + "log_likelihood_library_pdip_scalar": 24851.5720079757, + "rel_diff_vmap_vs_library_pdip": 5.158187698182714e-14, + "rel_diff_scalar_vs_library_pdip_scalar": 4.3330929993223464e-14, + "abs_diff_nats": 5808.948214723343, + "rel_diff": 0.23374570481331344, + "rel_diff_scalar_vs_library_pdip": 0.30504978083863965, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 5808.948214723248, + "rel_diff_library_pdip_vmap_vs_scalar": 0.23374570481331974, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": false, + "passes": 16, + "pdip_iter": null + }, + { + "lane": 47, + "draw_name": "call00017_lane07", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.0020393356884617223, + "centre_1": 0.0023495909216404397, + "ell_comps_0": 0.012417419672426981, + "ell_comps_1": -0.006304388323220575, + "einstein_radius": 0.05447124763041211 + }, + "log_likelihood_vmap": NaN, + "log_likelihood_scalar": -194382.54555921583, + "log_likelihood_library_pdip": NaN, + "log_likelihood_library_pdip_scalar": -194382.4306038146, + "rel_diff_vmap_vs_library_pdip": NaN, + "rel_diff_scalar_vs_library_pdip_scalar": 5.913878166128421e-07, + "abs_diff_nats": NaN, + "rel_diff": NaN, + "rel_diff_scalar_vs_library_pdip": NaN, + "abs_diff_library_pdip_vmap_vs_scalar_nats": NaN, + "rel_diff_library_pdip_vmap_vs_scalar": NaN, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": true, + "passes": 1, + "pdip_iter": null + }, + { + "lane": 48, + "draw_name": "call00017_lane08", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.010490691068653586, + "centre_1": -0.0006585600890167999, + "ell_comps_0": -0.007252615449586587, + "ell_comps_1": 0.0052043671627278075, + "einstein_radius": -0.0051931933095421545 + }, + "log_likelihood_vmap": -6749.745758452831, + "log_likelihood_scalar": -194328.91383594548, + "log_likelihood_library_pdip": -6749.731243645467, + "log_likelihood_library_pdip_scalar": -194328.91349993023, + "rel_diff_vmap_vs_library_pdip": 2.1504274526465443e-06, + "rel_diff_scalar_vs_library_pdip_scalar": 1.7291057809571508e-09, + "abs_diff_nats": 187579.16807749265, + "rel_diff": 0.965266384578514, + "rel_diff_scalar_vs_library_pdip": 27.79061503654629, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 187579.18225628475, + "rel_diff_library_pdip_vmap_vs_scalar": 0.9652664592104154, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": true, + "passes": 3, + "pdip_iter": null + }, + { + "lane": 49, + "draw_name": "call00017_lane09", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.001929041523067183, + "centre_1": -0.0016089226404154909, + "ell_comps_0": -0.005705855480794712, + "ell_comps_1": 0.005684341952592878, + "einstein_radius": 0.011417498230541279 + }, + "log_likelihood_vmap": -193564.28149659734, + "log_likelihood_scalar": -194376.45086010784, + "log_likelihood_library_pdip": -193564.25799912767, + "log_likelihood_library_pdip_scalar": -194376.45086011355, + "rel_diff_vmap_vs_library_pdip": 1.2139363903186545e-07, + "rel_diff_scalar_vs_library_pdip_scalar": 2.9346923170364106e-14, + "abs_diff_nats": 812.1693635105039, + "rel_diff": 0.004178332096901079, + "rel_diff_scalar_vs_library_pdip": 0.004195985712320036, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 812.1928609858733, + "rel_diff_library_pdip_vmap_vs_scalar": 0.004178452983331722, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": true, + "passes": 3, + "pdip_iter": null + } + ], + "lane_pins": [ + { + "pin": "lane 0: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 12361.442851754779, + "reference_value": 12361.442851754779, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 0: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 18463.078970707007, + "reference_value": 18463.078970707007, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 0: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 12361.442851754779, + "reference_value": 18463.078970707007, + "rel_diff": 0.3304777133127638, + "abs_diff_nats": 6101.636118952229, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 0: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 12361.442851754779, + "reference_value": 18463.078970707007, + "rel_diff": 0.3304777133127638, + "abs_diff_nats": 6101.636118952229, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 1: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 9549.7408319842, + "reference_value": 9549.7408319842, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 1: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 15734.21749633948, + "reference_value": 15734.21749633948, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 1: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 9549.7408319842, + "reference_value": 15734.21749633948, + "rel_diff": 0.39305905525928314, + "abs_diff_nats": 6184.476664355279, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 1: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 9549.7408319842, + "reference_value": 15734.21749633948, + "rel_diff": 0.39305905525928314, + "abs_diff_nats": 6184.476664355279, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 2: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 12681.013488957102, + "reference_value": 12681.013488957102, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 2: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 18706.16598652238, + "reference_value": 18706.16598652238, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 2: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 12681.013488957102, + "reference_value": 18706.16598652238, + "rel_diff": 0.3220944634997009, + "abs_diff_nats": 6025.152497565279, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 2: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 12681.013488957102, + "reference_value": 18706.16598652238, + "rel_diff": 0.3220944634997009, + "abs_diff_nats": 6025.152497565279, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 3: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 25946.740777346065, + "reference_value": 25946.740778189407, + "rel_diff": 3.250279880445246e-11, + "abs_diff_nats": 8.433416951447725e-07, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 3: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -22166.221756011815, + "reference_value": -22166.221752677688, + "rel_diff": 1.504147877958965e-10, + "abs_diff_nats": 3.334127541165799e-06, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 3: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 25946.740777346065, + "reference_value": -22166.221756011815, + "rel_diff": 2.1705531534849376, + "abs_diff_nats": 48112.96253335788, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 3: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 25946.740778189407, + "reference_value": -22166.221752677688, + "rel_diff": 2.1705531536990526, + "abs_diff_nats": 48112.962530867095, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 4: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -191783.97440572572, + "reference_value": -191784.26738803473, + "rel_diff": 1.527666022866e-06, + "abs_diff_nats": 0.2929823090089485, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 4: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": NaN, + "reference_value": NaN, + "rel_diff": NaN, + "abs_diff_nats": NaN, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 4: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -191783.97440572572, + "reference_value": NaN, + "rel_diff": NaN, + "abs_diff_nats": NaN, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 4: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -191784.26738803473, + "reference_value": NaN, + "rel_diff": NaN, + "abs_diff_nats": NaN, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 5: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 8554.981568652838, + "reference_value": 8554.981568662643, + "rel_diff": 1.146040211357794e-12, + "abs_diff_nats": 9.804352885112166e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 5: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 14761.660929765763, + "reference_value": 14761.660929764937, + "rel_diff": 5.594364977891205e-14, + "abs_diff_nats": 8.258211892098188e-10, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 5: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 8554.981568652838, + "reference_value": 14761.660929765763, + "rel_diff": 0.4204594178557258, + "abs_diff_nats": 6206.679361112925, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 5: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 8554.981568662643, + "reference_value": 14761.660929764937, + "rel_diff": 0.4204594178550292, + "abs_diff_nats": 6206.679361102295, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 6: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 22689.445185633005, + "reference_value": 22689.445185632085, + "rel_diff": 4.05654977750203e-14, + "abs_diff_nats": 9.204086381942034e-10, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 6: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 21597.126871231176, + "reference_value": 21597.126871231438, + "rel_diff": 1.2128209260071277e-14, + "abs_diff_nats": 2.6193447411060333e-10, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 6: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 22689.445185633005, + "reference_value": 21597.126871231176, + "rel_diff": 0.0505770198468793, + "abs_diff_nats": 1092.3183144018294, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 6: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 22689.445185632085, + "reference_value": 21597.126871231438, + "rel_diff": 0.05057701984682394, + "abs_diff_nats": 1092.318314400647, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 7: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 26407.810775592596, + "reference_value": 26407.81077626501, + "rel_diff": 2.5462727848562633e-11, + "abs_diff_nats": 6.724148988723755e-07, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 7: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 7413.159096707619, + "reference_value": 7413.159096633601, + "rel_diff": 9.984719853469832e-12, + "abs_diff_nats": 7.401831680908799e-08, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 7: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 26407.810775592596, + "reference_value": 7413.159096707619, + "rel_diff": 2.562288415922573, + "abs_diff_nats": 18994.651678884977, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 7: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 26407.81077626501, + "reference_value": 7413.159096633601, + "rel_diff": 2.562288416048847, + "abs_diff_nats": 18994.65167963141, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 8: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 13032.333063604052, + "reference_value": 13032.333063604052, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 8: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 19060.20267912919, + "reference_value": 19060.20267912919, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 8: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 13032.333063604052, + "reference_value": 19060.20267912919, + "rel_diff": 0.3162542244173311, + "abs_diff_nats": 6027.869615525138, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 8: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 13032.333063604052, + "reference_value": 19060.20267912919, + "rel_diff": 0.3162542244173311, + "abs_diff_nats": 6027.869615525138, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 9: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 6404.941310219961, + "reference_value": 6404.941310219961, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 9: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 12782.70332143049, + "reference_value": 12782.70332143049, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 9: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 6404.941310219961, + "reference_value": 12782.70332143049, + "rel_diff": 0.4989368720244072, + "abs_diff_nats": 6377.762011210529, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 9: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 6404.941310219961, + "reference_value": 12782.70332143049, + "rel_diff": 0.4989368720244072, + "abs_diff_nats": 6377.762011210529, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 10: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 19837.830792808098, + "reference_value": 19837.830792808105, + "rel_diff": 3.6677183559914277e-16, + "abs_diff_nats": 7.275957614183426e-12, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 10: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 25442.236800482453, + "reference_value": 25442.236800481303, + "rel_diff": 4.518475761609269e-14, + "abs_diff_nats": 1.1496013030409813e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 10: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 19837.830792808098, + "reference_value": 25442.236800482453, + "rel_diff": 0.22027961030407833, + "abs_diff_nats": 5604.406007674355, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 10: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 19837.830792808105, + "reference_value": 25442.236800481303, + "rel_diff": 0.2202796103040428, + "abs_diff_nats": 5604.4060076731985, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 11: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -9841.364133505398, + "reference_value": -9841.364133505398, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 11: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -3234.481430921878, + "reference_value": -3234.481430921878, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 11: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -9841.364133505398, + "reference_value": -3234.481430921878, + "rel_diff": 2.0426404799920133, + "abs_diff_nats": 6606.88270258352, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 11: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -9841.364133505398, + "reference_value": -3234.481430921878, + "rel_diff": 2.0426404799920133, + "abs_diff_nats": 6606.88270258352, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 12: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 12864.38878979598, + "reference_value": 12864.38878979598, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 12: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 18883.93355609074, + "reference_value": 18883.93355609074, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 12: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 12864.38878979598, + "reference_value": 18883.93355609074, + "rel_diff": 0.3187654070278828, + "abs_diff_nats": 6019.544766294759, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 12: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 12864.38878979598, + "reference_value": 18883.93355609074, + "rel_diff": 0.3187654070278828, + "abs_diff_nats": 6019.544766294759, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 13: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 18253.352706163903, + "reference_value": 18253.352706159974, + "rel_diff": 2.152490654680179e-13, + "abs_diff_nats": 3.92901711165905e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 13: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 23869.488067817765, + "reference_value": 23869.4880678158, + "rel_diff": 8.230208164700238e-14, + "abs_diff_nats": 1.964508555829525e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 13: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 18253.352706163903, + "reference_value": 23869.488067817765, + "rel_diff": 0.23528511988599632, + "abs_diff_nats": 5616.135361653862, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 13: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 18253.352706159974, + "reference_value": 23869.4880678158, + "rel_diff": 0.235285119886098, + "abs_diff_nats": 5616.135361655826, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 14: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 3734.552859195028, + "reference_value": 3734.1509573740186, + "rel_diff": 0.00010762870210578301, + "abs_diff_nats": 0.40190182100923266, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 14: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -177849.9107295181, + "reference_value": -177848.60220617644, + "rel_diff": 7.357512656451285e-06, + "abs_diff_nats": 1.308523341664113, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 14: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 3734.552859195028, + "reference_value": -177849.9107295181, + "rel_diff": 1.0209983398016698, + "abs_diff_nats": 181584.46358871314, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 14: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 3734.1509573740186, + "reference_value": -177848.60220617644, + "rel_diff": 1.020996234499752, + "abs_diff_nats": 181582.75316355046, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 15: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 25472.29246785429, + "reference_value": 25472.2924678505, + "rel_diff": 1.4881950345749357e-13, + "abs_diff_nats": 3.790773916989565e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 15: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 25794.985439519525, + "reference_value": 25794.985439515534, + "rel_diff": 1.5471467354526885e-13, + "abs_diff_nats": 3.990862751379609e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 15: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 25472.29246785429, + "reference_value": 25794.985439519525, + "rel_diff": 0.012509910983351368, + "abs_diff_nats": 322.6929716652339, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 15: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 25472.2924678505, + "reference_value": 25794.985439515534, + "rel_diff": 0.012509910983345546, + "abs_diff_nats": 322.69297166503384, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 16: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 9903.117799881344, + "reference_value": 9903.117799881362, + "rel_diff": 1.8367845766387305e-15, + "abs_diff_nats": 1.8189894035458565e-11, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 16: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 16088.259041698664, + "reference_value": 16088.259041698664, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 16: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 9903.117799881344, + "reference_value": 16088.259041698664, + "rel_diff": 0.38445062488030823, + "abs_diff_nats": 6185.14124181732, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 16: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 9903.117799881362, + "reference_value": 16088.259041698664, + "rel_diff": 0.3844506248803071, + "abs_diff_nats": 6185.141241817302, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 17: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": NaN, + "reference_value": NaN, + "rel_diff": NaN, + "abs_diff_nats": NaN, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 17: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": NaN, + "reference_value": NaN, + "rel_diff": NaN, + "abs_diff_nats": NaN, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 17: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": NaN, + "reference_value": NaN, + "rel_diff": NaN, + "abs_diff_nats": NaN, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 17: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": NaN, + "reference_value": NaN, + "rel_diff": NaN, + "abs_diff_nats": NaN, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 18: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 12512.778742279312, + "reference_value": 12512.778742279312, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 18: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 18620.968710155976, + "reference_value": 18620.968710155976, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 18: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 12512.778742279312, + "reference_value": 18620.968710155976, + "rel_diff": 0.32802750828667815, + "abs_diff_nats": 6108.189967876664, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 18: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 12512.778742279312, + "reference_value": 18620.968710155976, + "rel_diff": 0.32802750828667815, + "abs_diff_nats": 6108.189967876664, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 19: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 841.7604744383425, + "reference_value": 841.7604744383425, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 19: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 7217.440786173451, + "reference_value": 7217.440786173451, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 19: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 841.7604744383425, + "reference_value": 7217.440786173451, + "rel_diff": 0.8833713362704805, + "abs_diff_nats": 6375.680311735108, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 19: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 841.7604744383425, + "reference_value": 7217.440786173451, + "rel_diff": 0.8833713362704805, + "abs_diff_nats": 6375.680311735108, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 20: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -87665.50209767294, + "reference_value": -87665.52776536201, + "rel_diff": 2.927911315376966e-07, + "abs_diff_nats": 0.025667689071269706, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 20: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -194096.26361629268, + "reference_value": -194096.29443374526, + "rel_diff": 1.587740388101236e-07, + "abs_diff_nats": 0.030817452585324645, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 20: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -87665.50209767294, + "reference_value": -194096.26361629268, + "rel_diff": 0.5483400841194029, + "abs_diff_nats": 106430.76151861974, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 20: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -87665.52776536201, + "reference_value": -194096.29443374526, + "rel_diff": 0.5483400235892364, + "abs_diff_nats": 106430.76666838325, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 21: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -145323.60665767814, + "reference_value": -145323.75055031647, + "rel_diff": 9.901522482195175e-07, + "abs_diff_nats": 0.1438926383270882, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 21: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": NaN, + "reference_value": NaN, + "rel_diff": NaN, + "abs_diff_nats": NaN, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 21: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -145323.60665767814, + "reference_value": NaN, + "rel_diff": NaN, + "abs_diff_nats": NaN, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 21: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -145323.75055031647, + "reference_value": NaN, + "rel_diff": NaN, + "abs_diff_nats": NaN, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 22: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 4257.895598700154, + "reference_value": 4257.895598700154, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 22: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 10567.732718102652, + "reference_value": 10567.732718102652, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 22: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 4257.895598700154, + "reference_value": 10567.732718102652, + "rel_diff": 0.5970852298898204, + "abs_diff_nats": 6309.8371194024985, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 22: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 4257.895598700154, + "reference_value": 10567.732718102652, + "rel_diff": 0.5970852298898204, + "abs_diff_nats": 6309.8371194024985, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 23: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 26248.69008073093, + "reference_value": 26248.69008067381, + "rel_diff": 2.176104981794989e-12, + "abs_diff_nats": 5.7119905250146985e-08, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 23: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 25140.10625019124, + "reference_value": 25140.1062501793, + "rel_diff": 4.749322189038022e-13, + "abs_diff_nats": 1.1939846444875002e-08, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 23: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 26248.69008073093, + "reference_value": 25140.10625019124, + "rel_diff": 0.04409622694141387, + "abs_diff_nats": 1108.58383053969, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 23: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 26248.69008067381, + "reference_value": 25140.1062501793, + "rel_diff": 0.04409622693963768, + "abs_diff_nats": 1108.58383049451, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 24: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 7900.668001758997, + "reference_value": 7900.668001758997, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 24: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 14131.499763663749, + "reference_value": 14131.499763663749, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 24: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 7900.668001758997, + "reference_value": 14131.499763663749, + "rel_diff": 0.4409179397876832, + "abs_diff_nats": 6230.831761904752, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 24: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 7900.668001758997, + "reference_value": 14131.499763663749, + "rel_diff": 0.4409179397876832, + "abs_diff_nats": 6230.831761904752, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 25: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 4214.89727101475, + "reference_value": 4214.897270904214, + "rel_diff": 2.622515828267422e-11, + "abs_diff_nats": 1.105363480746746e-07, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 25: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -39972.18336543742, + "reference_value": -39972.183365387085, + "rel_diff": 1.2592525735911474e-12, + "abs_diff_nats": 5.033507477492094e-08, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 25: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 4214.89727101475, + "reference_value": -39972.18336543742, + "rel_diff": 1.1054457604299701, + "abs_diff_nats": 44187.08063645217, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 25: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 4214.897270904214, + "reference_value": -39972.183365387085, + "rel_diff": 1.1054457604273376, + "abs_diff_nats": 44187.0806362913, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 26: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 12330.813594141291, + "reference_value": 12330.813525317943, + "rel_diff": 5.581411835875199e-09, + "abs_diff_nats": 6.882334855617955e-05, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 26: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 18491.477137097572, + "reference_value": 18491.477137097572, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 26: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 12330.813594141291, + "reference_value": 18491.477137097572, + "rel_diff": 0.33316232647508554, + "abs_diff_nats": 6160.663542956281, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 26: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 12330.813525317943, + "reference_value": 18491.477137097572, + "rel_diff": 0.33316233019698116, + "abs_diff_nats": 6160.66361177963, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 27: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 23198.584420818665, + "reference_value": 23198.584420818486, + "rel_diff": 7.684130993248103e-15, + "abs_diff_nats": 1.7826096154749393e-10, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 27: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -3056.263277677208, + "reference_value": -3056.2632776771934, + "rel_diff": 4.761342170569326e-15, + "abs_diff_nats": 1.4551915228366852e-11, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 27: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 23198.584420818665, + "reference_value": -3056.263277677208, + "rel_diff": 8.590505893343662, + "abs_diff_nats": 26254.847698495872, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 27: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 23198.584420818486, + "reference_value": -3056.2632776771934, + "rel_diff": 8.59050589334364, + "abs_diff_nats": 26254.84769849568, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 28: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 24795.47725115118, + "reference_value": 24795.47725116432, + "rel_diff": 5.299506566504275e-13, + "abs_diff_nats": 1.3140379451215267e-08, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 28: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 25862.746341004804, + "reference_value": 25862.746340985912, + "rel_diff": 7.304724601226199e-13, + "abs_diff_nats": 1.8892023945227265e-08, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 28: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 24795.47725115118, + "reference_value": 25862.746341004804, + "rel_diff": 0.041266657290818826, + "abs_diff_nats": 1067.2690898536239, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 28: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 24795.47725116432, + "reference_value": 25862.746340985912, + "rel_diff": 0.04126665728961042, + "abs_diff_nats": 1067.2690898215915, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 29: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 16899.784149907617, + "reference_value": 16899.78414990764, + "rel_diff": 1.2916066056778348e-15, + "abs_diff_nats": 2.1827872842550278e-11, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 29: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 22571.886871189596, + "reference_value": 22571.88687118942, + "rel_diff": 7.736304179483091e-15, + "abs_diff_nats": 1.7462298274040222e-10, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 29: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 16899.784149907617, + "reference_value": 22571.886871189596, + "rel_diff": 0.25129058787379277, + "abs_diff_nats": 5672.102721281979, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 29: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 16899.78414990764, + "reference_value": 22571.88687118942, + "rel_diff": 0.25129058787378605, + "abs_diff_nats": 5672.102721281783, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 30: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 12361.076296418425, + "reference_value": 12361.076296418418, + "rel_diff": 5.88618453580099e-16, + "abs_diff_nats": 7.275957614183426e-12, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 30: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 18458.05902298904, + "reference_value": 18458.059022989044, + "rel_diff": 1.9709433167164016e-16, + "abs_diff_nats": 3.637978807091713e-12, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 30: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 12361.076296418425, + "reference_value": 18458.05902298904, + "rel_diff": 0.330315485446058, + "abs_diff_nats": 6096.982726570615, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 30: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 12361.076296418418, + "reference_value": 18458.059022989044, + "rel_diff": 0.3303154854460585, + "abs_diff_nats": 6096.982726570626, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 31: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 24357.983602748696, + "reference_value": 24357.983602747794, + "rel_diff": 3.7039960239441436e-14, + "abs_diff_nats": 9.022187441587448e-10, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 31: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 26925.60946634438, + "reference_value": 26925.60946634438, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 31: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 24357.983602748696, + "reference_value": 26925.60946634438, + "rel_diff": 0.09535999052519437, + "abs_diff_nats": 2567.6258635956838, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 31: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 24357.983602747794, + "reference_value": 26925.60946634438, + "rel_diff": 0.09535999052522787, + "abs_diff_nats": 2567.625863596586, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 32: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 13062.078473348418, + "reference_value": 13062.078473348418, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 32: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 19082.159112472924, + "reference_value": 19082.159112472924, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 32: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 13062.078473348418, + "reference_value": 19082.159112472924, + "rel_diff": 0.3154821529178803, + "abs_diff_nats": 6020.080639124506, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 32: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 13062.078473348418, + "reference_value": 19082.159112472924, + "rel_diff": 0.3154821529178803, + "abs_diff_nats": 6020.080639124506, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 33: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 8952.363820638715, + "reference_value": 8952.363820637423, + "rel_diff": 1.442616165286279e-13, + "abs_diff_nats": 1.291482476517558e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 33: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 6443.280922177619, + "reference_value": 6443.280922175218, + "rel_diff": 3.7264648890552226e-13, + "abs_diff_nats": 2.4010660126805305e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 33: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 8952.363820638715, + "reference_value": 6443.280922177619, + "rel_diff": 0.3894107565331961, + "abs_diff_nats": 2509.082898461096, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 33: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 8952.363820637423, + "reference_value": 6443.280922175218, + "rel_diff": 0.3894107565335135, + "abs_diff_nats": 2509.082898462206, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 34: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 17857.790811999315, + "reference_value": 17857.79170902445, + "rel_diff": 5.0231582240855634e-08, + "abs_diff_nats": 0.0008970251328719314, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 34: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -135343.94247495267, + "reference_value": -135343.94303215604, + "rel_diff": 4.116943523275419e-09, + "abs_diff_nats": 0.0005572033696807921, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 34: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 17857.790811999315, + "reference_value": -135343.94247495267, + "rel_diff": 1.1319437758753346, + "abs_diff_nats": 153201.733286952, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 34: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 17857.79170902445, + "reference_value": -135343.94303215604, + "rel_diff": 1.1319437819598743, + "abs_diff_nats": 153201.7347411805, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 35: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 11386.703937364357, + "reference_value": 11386.703937364357, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 35: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 17571.275632183253, + "reference_value": 17571.275632183253, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 35: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 11386.703937364357, + "reference_value": 17571.275632183253, + "rel_diff": 0.35197055832937585, + "abs_diff_nats": 6184.5716948188965, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 35: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 11386.703937364357, + "reference_value": 17571.275632183253, + "rel_diff": 0.35197055832937585, + "abs_diff_nats": 6184.5716948188965, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 36: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 12572.966530240072, + "reference_value": 12572.966530240072, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 36: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 18664.94647956068, + "reference_value": 18664.94647956068, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 36: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 12572.966530240072, + "reference_value": 18664.94647956068, + "rel_diff": 0.3263861461371839, + "abs_diff_nats": 6091.979949320608, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 36: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 12572.966530240072, + "reference_value": 18664.94647956068, + "rel_diff": 0.3263861461371839, + "abs_diff_nats": 6091.979949320608, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 37: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 8851.033470262522, + "reference_value": 8851.033470262522, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 37: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 15118.859355707224, + "reference_value": 15118.859355707224, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 37: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 8851.033470262522, + "reference_value": 15118.859355707224, + "rel_diff": 0.4145700239666994, + "abs_diff_nats": 6267.825885444701, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 37: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 8851.033470262522, + "reference_value": 15118.859355707224, + "rel_diff": 0.4145700239666994, + "abs_diff_nats": 6267.825885444701, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 38: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 12878.633095268153, + "reference_value": 12878.633095268153, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 38: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 18915.856016800164, + "reference_value": 18915.856016800164, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 38: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 12878.633095268153, + "reference_value": 18915.856016800164, + "rel_diff": 0.31916202556046297, + "abs_diff_nats": 6037.222921532011, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 38: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 12878.633095268153, + "reference_value": 18915.856016800164, + "rel_diff": 0.31916202556046297, + "abs_diff_nats": 6037.222921532011, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 39: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 13069.925693660298, + "reference_value": 13069.925693660298, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 39: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 19083.97025057711, + "reference_value": 19083.97025057711, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 39: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 13069.925693660298, + "reference_value": 19083.97025057711, + "rel_diff": 0.31513592182082467, + "abs_diff_nats": 6014.044556916811, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 39: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 13069.925693660298, + "reference_value": 19083.97025057711, + "rel_diff": 0.31513592182082467, + "abs_diff_nats": 6014.044556916811, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 40: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": NaN, + "reference_value": NaN, + "rel_diff": NaN, + "abs_diff_nats": NaN, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 40: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": NaN, + "reference_value": NaN, + "rel_diff": NaN, + "abs_diff_nats": NaN, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 40: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": NaN, + "reference_value": NaN, + "rel_diff": NaN, + "abs_diff_nats": NaN, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 40: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": NaN, + "reference_value": NaN, + "rel_diff": NaN, + "abs_diff_nats": NaN, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 41: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 26907.480959600063, + "reference_value": 26907.4810131566, + "rel_diff": 1.9903958205609464e-09, + "abs_diff_nats": 5.3556537750409916e-05, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 41: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -186104.98830745643, + "reference_value": -186104.98830745643, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 41: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 26907.480959600063, + "reference_value": -186104.98830745643, + "rel_diff": 1.1445822661945382, + "abs_diff_nats": 213012.4692670565, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 41: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 26907.4810131566, + "reference_value": -186104.98830745643, + "rel_diff": 1.144582266482314, + "abs_diff_nats": 213012.46932061302, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 42: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 10018.611642408578, + "reference_value": 10018.611642401393, + "rel_diff": 7.171660505930077e-13, + "abs_diff_nats": 7.185008144006133e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 42: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 1850.3329082262644, + "reference_value": 1850.3329082263226, + "rel_diff": 3.1457939625180015e-14, + "abs_diff_nats": 5.820766091346741e-11, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 42: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 10018.611642408578, + "reference_value": 1850.3329082262644, + "rel_diff": 4.414491412797957, + "abs_diff_nats": 8168.278734182313, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 42: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 10018.611642401393, + "reference_value": 1850.3329082263226, + "rel_diff": 4.414491412793903, + "abs_diff_nats": 8168.27873417507, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 43: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 11776.717406871896, + "reference_value": 11776.717406871892, + "rel_diff": 3.0891280493568586e-16, + "abs_diff_nats": 3.637978807091713e-12, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 43: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 17930.42303106947, + "reference_value": 17930.42303106947, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 43: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 11776.717406871896, + "reference_value": 17930.42303106947, + "rel_diff": 0.34319913219752585, + "abs_diff_nats": 6153.705624197573, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 43: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 11776.717406871892, + "reference_value": 17930.42303106947, + "rel_diff": 0.34319913219752607, + "abs_diff_nats": 6153.705624197577, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 44: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 9830.889949647397, + "reference_value": 9830.889949647408, + "rel_diff": 1.1101676935836899e-15, + "abs_diff_nats": 1.0913936421275139e-11, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 44: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 16076.3203998807, + "reference_value": 16076.3203998807, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 44: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 9830.889949647397, + "reference_value": 16076.3203998807, + "rel_diff": 0.38848631371390496, + "abs_diff_nats": 6245.430450233303, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 44: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 9830.889949647408, + "reference_value": 16076.3203998807, + "rel_diff": 0.38848631371390424, + "abs_diff_nats": 6245.4304502332925, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 45: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 22630.021263048515, + "reference_value": 22630.021263048355, + "rel_diff": 7.073394481224325e-15, + "abs_diff_nats": 1.6007106751203537e-10, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 45: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 27238.298521573466, + "reference_value": 27238.298521573262, + "rel_diff": 7.47942508361087e-15, + "abs_diff_nats": 2.0372681319713593e-10, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 45: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 22630.021263048515, + "reference_value": 27238.298521573466, + "rel_diff": 0.16918374159366348, + "abs_diff_nats": 4608.277258524951, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 45: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 22630.021263048355, + "reference_value": 27238.298521573262, + "rel_diff": 0.16918374159366315, + "abs_diff_nats": 4608.277258524908, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 46: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 19042.623793253435, + "reference_value": 19042.623793252453, + "rel_diff": 5.158187698182714e-14, + "abs_diff_nats": 9.822542779147625e-10, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 46: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 24851.572007976778, + "reference_value": 24851.5720079757, + "rel_diff": 4.3330929993223464e-14, + "abs_diff_nats": 1.076841726899147e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 46: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 19042.623793253435, + "reference_value": 24851.572007976778, + "rel_diff": 0.23374570481331344, + "abs_diff_nats": 5808.948214723343, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 46: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 19042.623793252453, + "reference_value": 24851.5720079757, + "rel_diff": 0.23374570481331974, + "abs_diff_nats": 5808.948214723248, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 47: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": NaN, + "reference_value": NaN, + "rel_diff": NaN, + "abs_diff_nats": NaN, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 47: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -194382.54555921583, + "reference_value": -194382.4306038146, + "rel_diff": 5.913878166128421e-07, + "abs_diff_nats": 0.11495540122268721, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 47: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": NaN, + "reference_value": -194382.54555921583, + "rel_diff": NaN, + "abs_diff_nats": NaN, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 47: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": NaN, + "reference_value": -194382.4306038146, + "rel_diff": NaN, + "abs_diff_nats": NaN, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 48: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -6749.745758452831, + "reference_value": -6749.731243645467, + "rel_diff": 2.1504274526465443e-06, + "abs_diff_nats": 0.014514807364321314, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 48: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -194328.91383594548, + "reference_value": -194328.91349993023, + "rel_diff": 1.7291057809571508e-09, + "abs_diff_nats": 0.0003360152477398515, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 48: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -6749.745758452831, + "reference_value": -194328.91383594548, + "rel_diff": 0.965266384578514, + "abs_diff_nats": 187579.16807749265, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 48: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -6749.731243645467, + "reference_value": -194328.91349993023, + "rel_diff": 0.9652664592104154, + "abs_diff_nats": 187579.18225628475, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 49: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -193564.28149659734, + "reference_value": -193564.25799912767, + "rel_diff": 1.2139363903186545e-07, + "abs_diff_nats": 0.02349746966501698, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 49: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -194376.45086010784, + "reference_value": -194376.45086011355, + "rel_diff": 2.9346923170364106e-14, + "abs_diff_nats": 5.704350769519806e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 49: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -193564.28149659734, + "reference_value": -194376.45086010784, + "rel_diff": 0.004178332096901079, + "abs_diff_nats": 812.1693635105039, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 49: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -193564.25799912767, + "reference_value": -194376.45086011355, + "rel_diff": 0.004178452983331722, + "abs_diff_nats": 812.1928609858733, + "within_rtol": false, + "status": "RECORDED" + } + ], + "lanes_failed": 12, + "arm_rows": { + "vmap": { + "arm": "vmap", + "program": "jax.jit(jax.vmap(fn))", + "stands_for": "Nautilus(use_jax_vmap=True) \u2014 Fitness._vmap", + "hlo_source": "jax.jit(jax.vmap(fn)).lower(batched_tree) \u2014 the exact current Fitness._vmap composition (PyAutoFit#1638)", + "batch_wall_ms": 1702.8683131000435, + "wall_production_nesting_ms": 1702.8683131000435, + "wall_aot_command_buffers_on_ms": 1706.709512100133, + "wall_aot_command_buffers_off_ms": 1711.0315775000345, + "command_buffer_delta_ms": 4.322065399901476, + "production_nesting_vs_aot_on_delta_ms": -3.8411990000895457, + "production_nesting_vs_aot_on_delta_pct": -0.22506460372174816, + "wall_per_lane_ms": 34.05736626200087, + "wall_per_lane_command_buffers_off_ms": 34.22063155000069, + "traced_batch_wall_ms": 1724.6357684998657, + "untraced_batch_wall_ms": 1712.6218140001583, + "traced_wall_per_lane_ms": 34.49271536999731, + "callback_count_per_call": 0.0, + "callback_count_per_lane": 0.0, + "callback_expectation": "0 \u2014 the rectangular mesh has no qhull host callback (asserted)", + "host_qhull_ms": 0.0, + "host_tables_ms": 0.0, + "host_qhull_ms_per_lane": 0.0, + "host_tables_ms_per_lane": 0.0, + "host_callback_probe": { + "calls": 0, + "qhull_ms_total": 0.0, + "tables_ms_total": 0.0, + "total_ms_total": 0.0, + "qhull_ms_mean": 0.0, + "tables_ms_mean": 0.0, + "total_ms_mean": 0.0, + "non_finite_calls": 0, + "n_points": [] + }, + "host_callback_records_first": [], + "device_idle_ms": 31.657594300000028, + "device_idle_ms_per_lane": 0.6331518860000006, + "trace": { + "parser": "ProfileData.from_file(xplane) + as_text() + stack_frame_index(proto field 17)", + "stage_audit": { + "mixed_fusion": [ + { + "instruction": "loop_divide_gather_fusion", + "ms": 45.3360374, + "opcode": "fusion", + "shape": "(f64[15361,50,1,1,1521]{4,3,2,1,0}, f64[15361,50,1,1,1521]{4,3,2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_add_multiply_transpose_fusion", + "ms": 14.743436899999999, + "opcode": "fusion", + "shape": "(f64[50,1369,1369]{2,1,0}, f64[50,1369,1369]{2,1,0}, f64[50,1369,1369]{2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:237 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:274 (_certified_positive_only_from)" + ] + }, + { + "instruction": "loop_broadcast_fusion", + "ms": 12.7584041, + "opcode": "fusion", + "shape": "f64[50,1521,180,180]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:303 (AbstractInversion.operated_mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:68 (InversionImagingMapping.data_vector)" + ] + }, + { + "instruction": "input_reduce_fusion.15", + "ms": 6.2802057, + "opcode": "fusion", + "shape": "f64[92,50,1521]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123 (data_vector_via_blurred_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:67 (InversionImagingMapping.data_vector)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:699 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_reduce_fusion.18", + "ms": 5.5924860999999995, + "opcode": "fusion", + "shape": "f64[15361,50]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163 (mapped_reconstructed_data_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:120 (InversionImagingMapping._mapped_reconstructed_data_dict_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:196 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "loop_broadcast_fusion.1", + "ms": 5.1392555, + "opcode": "fusion", + "shape": "f64[15361,50,1521]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:353", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:353 (mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:283 (Mapper.mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:91 (AbstractInversionImaging._mapping_matrix_for_convolution_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:137 (AbstractInversionImaging.operated_mapping_matrix_list)" + ] + } + ], + "other": [ + { + "instruction": "copy.68", + "ms": 0.13419599999999995, + "opcode": "copy", + "shape": "u32[50,2,15361]{2,1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.69", + "ms": 0.12394249999999998, + "opcode": "copy", + "shape": "u32[50,2,15361]{2,1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.86", + "ms": 0.08764800000000002, + "opcode": "copy", + "shape": "u32[50,15361]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.78", + "ms": 0.08681309999999999, + "opcode": "copy", + "shape": "u32[50,15361]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.77", + "ms": 0.08548200000000002, + "opcode": "copy", + "shape": "u32[50,15361]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.87", + "ms": 0.08531220000000005, + "opcode": "copy", + "shape": "u32[50,15361]{1,0}", + "source": "", + "stack": [] + } + ], + "mesh_construction": [ + { + "instruction": "fusion.6", + "ms": 1.1707458999999996, + "opcode": "fusion", + "shape": "(f64[50,15361,2]{2,1,0}, s64[50,15361,2]{2,1,0}, s32[50,15361,2]{2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:227", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:227 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_select_fusion", + "ms": 0.5513358999999997, + "opcode": "fusion", + "shape": "(u32[50,2,15361]{2,1,0}, u32[50,2,15361]{2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69 (forward_interp)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:573 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/abstract.py:36 (AbstractInterpolator.mappings)" + ] + }, + { + "instruction": "loop_subtract_transpose_fusion", + "ms": 0.1242021, + "opcode": "fusion", + "shape": "(f64[50,15361,2]{2,1,0}, f64[1536100,1,1,1]{3,2,1,0}, f64[1536100,1,1,1]{3,2,1,0}, f64[50,15361,2]{2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69 (forward_interp)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:573 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/abstract.py:36 (AbstractInterpolator.mappings)" + ] + }, + { + "instruction": "loop_select_fusion.1", + "ms": 0.10319119999999998, + "opcode": "fusion", + "shape": "(u32[50,15361]{1,0}, u32[50,15361]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_select_fusion.4", + "ms": 0.10079390000000005, + "opcode": "fusion", + "shape": "(u32[50,15361]{1,0}, u32[50,15361]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_gather_fusion", + "ms": 0.06644199999999999, + "opcode": "fusion", + "shape": "(f64[1536100,1,1,1]{3,2,1,0}, f64[1536100,1,1,1]{3,2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69 (forward_interp)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:573 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/abstract.py:36 (AbstractInterpolator.mappings)" + ] + } + ], + "border_relocator": [ + { + "instruction": "custom-call.2", + "ms": 0.04223039999999999, + "opcode": "custom-call", + "shape": "(f64[50,2,2]{2,1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_add_rsqrt_fusion", + "ms": 0.0173024, + "opcode": "fusion", + "shape": "(f64[50,15361]{1,0}, f64[50,15361]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:311", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:311 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:423 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "eigh.0", + "ms": 0.014796699999999996, + "opcode": "custom-call", + "shape": "(f64[50,2,2]{1,2,0}, f64[50,2]{1,0}, s32[50]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_reduce_fusion.20", + "ms": 0.0033439999999999993, + "opcode": "fusion", + "shape": "f64[50]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:269", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:269 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_reduce_fusion.19", + "ms": 0.0033407999999999992, + "opcode": "fusion", + "shape": "f64[50]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:270", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:270 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_concatenate_fusion.6", + "ms": 0.0028543000000000006, + "opcode": "fusion", + "shape": "f64[50,392,2]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:238", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:238 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + } + ], + "pdip_solve": [ + { + "instruction": "cholesky.66", + "ms": 315.5894252999672, + "opcode": "custom-call", + "shape": "(f64[50,1369,1369]{1,2,0}, s32[50]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:106", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:106 (factorize_kkt)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:212 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "cholesky.44", + "ms": 171.70738150000545, + "opcode": "custom-call", + "shape": "(f64[50,1369,1369]{1,2,0}, s32[50]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "triangular-solve", + "ms": 53.5453528999995, + "opcode": "custom-call", + "shape": "(f64[50,1369,1]{1,2,0}, s8[800]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:213 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve.2", + "ms": 51.574814299998735, + "opcode": "custom-call", + "shape": "(f64[50,1369,1]{1,2,0}, s8[800]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:217 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve.3", + "ms": 48.911588499998935, + "opcode": "custom-call", + "shape": "(f64[50,1369,1]{1,2,0}, s8[800]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:217 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve.1", + "ms": 48.873378499998736, + "opcode": "custom-call", + "shape": "(f64[50,1369,1]{1,2,0}, s8[800]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:213 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + } + ], + "psf_convolution_mapping_matrix": [ + { + "instruction": "input_scatter_fusion", + "ms": 83.7033243, + "opcode": "fusion", + "shape": "f64[50,1521,180,180]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:303 (AbstractInversion.operated_mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:68 (InversionImagingMapping.data_vector)" + ] + }, + { + "instruction": "fft.20.0", + "ms": 76.95445880000003, + "opcode": "fft", + "shape": "c128[50,1521,180,91]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:303 (AbstractInversion.operated_mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:68 (InversionImagingMapping.data_vector)" + ] + }, + { + "instruction": "fft.22.0", + "ms": 49.4406706, + "opcode": "fft", + "shape": "c128[50,1521,91,180]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:303 (AbstractInversion.operated_mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:68 (InversionImagingMapping.data_vector)" + ] + }, + { + "instruction": "fft.24.0", + "ms": 47.650250299999996, + "opcode": "fft", + "shape": "f64[50,1521,180,180]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:303 (AbstractInversion.operated_mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:68 (InversionImagingMapping.data_vector)" + ] + }, + { + "instruction": "input_transpose_fusion.4", + "ms": 26.7255016, + "opcode": "fusion", + "shape": "c128[50,1521,91,180]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:303 (AbstractInversion.operated_mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:68 (InversionImagingMapping.data_vector)" + ] + }, + { + "instruction": "wrapped_transpose.2", + "ms": 24.9595322, + "opcode": "fusion", + "shape": "c128[50,1521,180,91]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:303 (AbstractInversion.operated_mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:68 (InversionImagingMapping.data_vector)" + ] + } + ], + "regularization_H": [ + { + "instruction": "wrapped_broadcast", + "ms": 1.075069, + "opcode": "fusion", + "shape": "f64[50,1521,1521]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:124", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:124 (weighted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:366 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_scatter_fusion.7", + "ms": 0.0027136, + "opcode": "fusion", + "shape": "f64[1521,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:123 (weighted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:366 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "mapping_matrix": [ + { + "instruction": "input_scatter_fusion.5", + "ms": 0.18407790000000002, + "opcode": "fusion", + "shape": "f64[50,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:71", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:71 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:362 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + }, + { + "instruction": "input_reduce_fusion.33", + "ms": 0.003872, + "opcode": "fusion", + "shape": "f64[50]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:362 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + }, + { + "instruction": "loop_compare_fusion.5", + "ms": 0.0018368000000000002, + "opcode": "fusion", + "shape": "pred[4]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:54", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:54 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:362 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + } + ], + "curvature_matrix_F": [ + { + "instruction": "cublas-lt-matmul.2", + "ms": 325.5488761, + "opcode": "custom-call", + "shape": "(f64[50,1521,1521]{2,1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "inversion_other": [ + { + "instruction": "cholesky.132", + "ms": 17.273662499999972, + "opcode": "custom-call", + "shape": "(f64[50,1521,1521]{1,2,0}, s32[50]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1078 (AbstractInversion.log_det_curvature_reg_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:347 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "cholesky.143", + "ms": 16.49516509999995, + "opcode": "custom-call", + "shape": "(f64[50,1521,1521]{1,2,0}, s32[50]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1157 (AbstractInversion.log_det_regularization_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:348 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "loop_reduce_window_fusion.3", + "ms": 0.006825599999999999, + "opcode": "fusion", + "shape": "s64[6,16]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "loop_reduce_window_fusion.2", + "ms": 0.0035681000000000003, + "opcode": "fusion", + "shape": "s64[86,16]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "input_scatter_fusion.9", + "ms": 0.003056, + "opcode": "fusion", + "shape": "s64[1369]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527 (AbstractInversion.zeroed_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:567 (AbstractInversion.solve_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:684 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_broadcast_fusion.5", + "ms": 0.0021087000000000002, + "opcode": "fusion", + "shape": "(s64[1369]{0}, s64[1369]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527 (AbstractInversion.zeroed_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:567 (AbstractInversion.solve_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:684 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ] + }, + "stage_audit_note": "The HLO instructions that contributed most of each stage's milliseconds, with their full source stack. A stage row is only as good as the rules that built it; this is how a reader checks a row against the HLO instead of trusting it.", + "untraced_wall_ms": 1712.6218140001583, + "reconciliation_vs_untraced_pct": 0.6743351162200768, + "wall_basis": "wall_ms is the TRACED run's wall, the run these kernel durations came from. untraced_wall_ms is the same executable without the profiler; the difference is the profiler's overhead and belongs in neither the stages nor the idle row.", + "calls": 10, + "call_split": "per-call (first-instruction recurrence)", + "call_blocks": 10, + "events": 278020, + "streams": [ + "Stream #14(MemcpyD2D,Compute,MemcpyD2H)" + ], + "per_stage_ms": { + "border_relocator": { + "median_ms": 0.09150399999999999, + "min_ms": 0.090688, + "max_ms": 0.09183999999999999 + }, + "curvature_matrix_F": { + "median_ms": 325.35941149999996, + "min_ms": 323.657795, + "max_ms": 327.601645 + }, + "inversion_other": { + "median_ms": 33.793690000000026, + "min_ms": 33.484761000000006, + "max_ms": 34.13598900000004 + }, + "mapping_matrix": { + "median_ms": 0.1895035, + "min_ms": 0.186562, + "max_ms": 0.192098 + }, + "mesh_construction": { + "median_ms": 2.3957045000000017, + "min_ms": 2.387971000000002, + "max_ms": 2.401307000000002 + }, + "mixed_fusion": { + "median_ms": 99.76882200000001, + "min_ms": 99.11907900000003, + "max_ms": 100.19136800000003 + }, + "other": { + "median_ms": 0.7255664999999998, + "min_ms": 0.7231110000000001, + "max_ms": 0.7271149999999998 + }, + "pdip_solve": { + "median_ms": 919.6821240000066, + "min_ms": 919.1855340000059, + "max_ms": 920.5764130000196 + }, + "psf_convolution_mapping_matrix": { + "median_ms": 309.429299, + "min_ms": 309.24758999999995, + "max_ms": 309.571352 + }, + "regularization_H": { + "median_ms": 1.077405, + "min_ms": 1.076109, + "max_ms": 1.080237 + } + }, + "stage_order": [ + "border_relocator", + "mesh_construction", + "mapping_matrix", + "psf_convolution_mapping_matrix", + "curvature_matrix_F", + "regularization_H", + "pdip_solve", + "inversion_other", + "mixed_fusion", + "other" + ], + "mixed_fusion": { + "ms": 99.76882200000001, + "constituent_stage_sets": { + "curvature_matrix_F + psf_convolution_mapping_matrix": 45.3360374, + "inversion_other + pdip_solve + reconstruction_scatter": 14.743436899999999, + "pdip_solve + psf_convolution_mapping_matrix": 12.7584041, + "data_vector_D + pdip_solve": 6.3244908, + "mapped_reconstruction + pdip_solve": 5.5924860999999995, + "mapping_matrix + pdip_solve": 5.1431852, + "border_relocator + pdip_solve": 5.132157100000001, + "curvature_reg_reduce_gather + inversion_other": 1.5470495, + "inversion_other + regularization_H": 1.5450084000000002, + "inversion_other + pdip_solve": 0.5715434, + "border_relocator + mapping_matrix + mesh_construction + pdip_solve": 0.3111604, + "mapping_matrix + mesh_construction + pdip_solve": 0.21238200000000002, + "mesh_construction + pdip_solve": 0.1580678, + "inversion_other + pdip_solve + regularization_H": 0.0926503, + "border_relocator + mesh_construction": 0.0649379, + "grids_and_structures + mass_profile_deflections + ray_trace_data_grid": 0.06061509999999999, + "inversion_other + mapping_matrix": 0.033981, + "grids_and_structures + mass_profile_deflections + pdip_solve + ray_trace_data_grid": 0.026934399999999997, + "inversion_other + reconstruction_scatter": 0.0262146, + "border_relocator + inversion_other + pdip_solve": 0.018150400000000004, + "chi_squared_evidence + pdip_solve": 0.0162912, + "pdip_solve + regularization_H": 0.016000100000000003, + "pdip_solve + ray_trace_data_grid": 0.013100799999999998, + "inversion_other + mapped_reconstruction + reconstruction_scatter": 0.011420800000000002, + "border_relocator + mesh_construction + pdip_solve": 0.009014600000000001, + "mapping_matrix + pdip_solve + regularization_H": 0.005472200000000001, + "grids_and_structures + mass_profile_deflections + pdip_solve": 0.004857599999999999, + "inversion_other + pdip_solve + ray_trace_data_grid": 0.0048257, + "border_relocator + inversion_other + mapping_matrix + mesh_construction": 0.0032321999999999997, + "mapping_matrix + mesh_construction": 0.0024896999999999996, + "chi_squared_evidence + inversion_other": 0.0023103999999999998, + "inversion_other + mesh_construction": 0.0018463999999999998 + }, + "example_kernels": { + "curvature_matrix_F + psf_convolution_mapping_matrix": [ + "loop_divide_gather_fusion" + ], + "inversion_other + pdip_solve + reconstruction_scatter": [ + "input_add_multiply_transpose_fusion" + ], + "pdip_solve + psf_convolution_mapping_matrix": [ + "loop_broadcast_fusion" + ], + "data_vector_D + pdip_solve": [ + "input_reduce_fusion.15", + "input_reduce_fusion.31" + ], + "mapped_reconstruction + pdip_solve": [ + "input_reduce_fusion.18" + ], + "mapping_matrix + pdip_solve": [ + "loop_broadcast_fusion.1", + "loop_divide_fusion" + ], + "border_relocator + pdip_solve": [ + "input_reduce_fusion.21", + "loop_cosine_sine_fusion", + "input_concatenate_fusion.5", + "input_transpose_fusion.5" + ], + "curvature_reg_reduce_gather + inversion_other": [ + "input_transpose_fusion.6" + ], + "inversion_other + regularization_H": [ + "input_transpose_fusion.7" + ], + "inversion_other + pdip_solve": [ + "input_reduce_fusion.16", + "input_reduce_fusion.17", + "input_scatter_fusion.11", + "input_transpose_fusion.3" + ] + }, + "prorated_estimate_ms": { + "psf_convolution_mapping_matrix": 29.04722075, + "pdip_solve": 22.977650233333332, + "curvature_matrix_F": 22.6680187, + "inversion_other": 6.821612933333333, + "reconstruction_scatter": 4.9313932, + "data_vector_D": 3.1622454, + "mapped_reconstruction": 2.800049983333333, + "mapping_matrix": 2.741044166666666, + "border_relocator": 2.6862006500000004, + "regularization_H": 0.8132117500000001, + "curvature_reg_reduce_gather": 0.77352475, + "mesh_construction": 0.2660679166666667, + "ray_trace_data_grid": 0.03509759999999999, + "grids_and_structures": 0.02855783333333333, + "mass_profile_deflections": 0.02855783333333333, + "chi_squared_evidence": 0.0093008 + }, + "prorated_note": "ESTIMATE ONLY \u2014 a mixed fusion's time split equally across the stages its constituents span. Never summed into the measured table, never reconciled." + }, + "other_sources_ms": { + "copy.68": 0.13419599999999995, + "copy.69": 0.12394249999999998, + "copy.86": 0.08764800000000002, + "copy.78": 0.08681309999999999, + "copy.77": 0.08548200000000002, + "copy.87": 0.08531220000000005, + "copy.124": 0.04213470000000006, + "copy.123": 0.03864330000000001, + "copy.122": 0.034937700000000016, + "copy.138": 0.0023233, + "copy.61": 0.0021791000000000002, + "copy.70": 0.0018142999999999998 + }, + "device_span_ms": 1724.5544573, + "device_busy_ms": 1692.896863, + "device_idle_ms": 31.657594300000028, + "largest_idle_gaps": [ + { + "gap_ms": 0.140861, + "after": "cholesky.66", + "before": "cholesky.66" + }, + { + "gap_ms": 0.14067, + "after": "cholesky.44", + "before": "cholesky.44" + }, + { + "gap_ms": 0.072735, + "after": "triangular-solve.4", + "before": "triangular-solve.4" + }, + { + "gap_ms": 0.059135, + "after": "input_reduce_fusion.30", + "before": "loop_broadcast_fusion" + }, + { + "gap_ms": 0.029568, + "after": "while.78", + "before": "input_reduce_fusion" + }, + { + "gap_ms": 0.029472, + "after": "while.78", + "before": "input_reduce_fusion" + }, + { + "gap_ms": 0.029408, + "after": "loop_not_select_fusion", + "before": "input_transpose_fusion.1" + }, + { + "gap_ms": 0.026527, + "after": "while.78", + "before": "cholesky.88" + } + ], + "kernel_ms": 1692.5130300000067, + "sum_ms": 1724.1706243000067, + "wall_ms": 1724.6357684998657, + "host_outside_span_ms": 0.08131119986569502, + "reconciliation_pct": -0.026970575953180177, + "unjoined_ms": 0.0, + "unjoined_pct": 0.0, + "other_ms": 0.7255664999999998, + "other_pct": 0.04207070926234569, + "note": "Stage rows attribute the command-buffers-OFF program (see the module docstring): kernel times are the same, the launch overhead the CUDA graphs remove is not. sum_ms = kernel rows + device_idle_ms; the residual against wall_ms is host_outside_span_ms (dispatch before the first kernel, teardown after the last).", + "per_stage_ms_per_lane": { + "border_relocator": 0.0018300799999999998, + "curvature_matrix_F": 6.50718823, + "inversion_other": 0.6758738000000005, + "mapping_matrix": 0.00379007, + "mesh_construction": 0.047914090000000034, + "mixed_fusion": 1.9953764400000003, + "other": 0.014511329999999996, + "pdip_solve": 18.393642480000132, + "psf_convolution_mapping_matrix": 6.18858598, + "regularization_H": 0.0215481 + }, + "per_lane_divisor": 50, + "host_callback": { + "pure_callback_span_ms": 0, + "qhull_ms": 0.0, + "callback_body_ms_note": "the OUTERMOST matching body event, not a sum: under the probe the body appears twice (the wrapper and the timed re-implementation it calls) and summing them would count the same work twice", + "events_by_name": { + "ThenExecuteCallback:GetEventForComputeStreamSyncPoint": { + "count": 10, + "ms": 0.026429500000000005 + } + }, + "note": "HOST milliseconds per traced BATCH (the whole invocation), aggregated by name because the events nest. Not a row of the device table: the device pays for them as the idle gaps largest_idle_gaps names." + }, + "host_callback_ms": 0 + }, + "hlo_census": { + "status": "excluded", + "reason": "The legacy census anchors PyAutoArray source line numbers that moved after the phase-1 run. No batched attribution is published from unsupported anchors; the device-event table and wall reconciliation remain valid." + }, + "trace_split": { + "expected_calls": 10, + "executions_per_invocation": 1, + "method": "per-call (first-instruction recurrence)", + "note": "DECIDED IN CODE: the scalar arm's trace is split by trace_calls * B, so every lane's execution is its own block and the per-stage median is taken over all of them. The vmap arm's is split by trace_calls, one block per batched execution, and per_stage_ms_per_lane divides those rows by B." + } + }, + "scalar": { + "arm": "scalar", + "program": "jax.jit(fn), called B times", + "stands_for": "Nautilus(use_jax_vmap=False, use_jax_jit=True). Plain use_jax_vmap=False is UNJITTED and is NOT this arm", + "hlo_source": "jax.jit(fn).lower(lane_trees[0]) \u2014 the same program phase 1 traced", + "batch_wall_ms": 2082.9191706998245, + "wall_production_nesting_ms": 2082.9191706998245, + "wall_aot_command_buffers_on_ms": 2082.4040389998117, + "wall_aot_command_buffers_off_ms": 2093.9613050002663, + "command_buffer_delta_ms": 11.557266000454547, + "production_nesting_vs_aot_on_delta_ms": 0.5151317000127165, + "production_nesting_vs_aot_on_delta_pct": 0.02473735597728367, + "wall_per_lane_ms": 41.65838341399649, + "wall_per_lane_command_buffers_off_ms": 41.879226100005326, + "traced_batch_wall_ms": 2147.2174775000894, + "untraced_batch_wall_ms": 2094.569987599971, + "traced_wall_per_lane_ms": 42.94434955000179, + "callback_count_per_call": 0.0, + "callback_count_per_lane": 0.0, + "callback_expectation": "0 \u2014 the rectangular mesh has no qhull host callback (asserted)", + "host_qhull_ms": 0.0, + "host_tables_ms": 0.0, + "host_qhull_ms_per_lane": 0.0, + "host_tables_ms_per_lane": 0.0, + "host_callback_probe": { + "calls": 0, + "qhull_ms_total": 0.0, + "tables_ms_total": 0.0, + "total_ms_total": 0.0, + "qhull_ms_mean": 0.0, + "tables_ms_mean": 0.0, + "total_ms_mean": 0.0, + "non_finite_calls": 0, + "n_points": [] + }, + "host_callback_records_first": [], + "device_idle_ms": 2.0636910259999937, + "device_idle_ms_per_lane": 2.0636910259999937, + "trace": { + "parser": "ProfileData.from_file(xplane) + as_text() + stack_frame_index(proto field 17)", + "stage_audit": { + "mesh_construction": [ + { + "instruction": "fusion.2", + "ms": 0.1501941359999999, + "opcode": "fusion", + "shape": "(f64[15361,2]{1,0}, s64[15361,2]{1,0}, s32[15361,2]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:227", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:227 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_select_fusion", + "ms": 0.03919591600000141, + "opcode": "fusion", + "shape": "(u32[2,15361]{1,0}, u32[2,15361]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69 (forward_interp)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:573 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/abstract.py:36 (AbstractInterpolator.mappings)" + ] + }, + { + "instruction": "loop_select_fusion.6", + "ms": 0.03476057200000199, + "opcode": "fusion", + "shape": "(u32[15361]{0}, u32[15361]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_select_fusion.1", + "ms": 0.03451009000000023, + "opcode": "fusion", + "shape": "(u32[15361]{0}, u32[15361]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_add_fusion", + "ms": 0.021205231999998908, + "opcode": "fusion", + "shape": "s64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69 (forward_interp)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:573 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/abstract.py:36 (AbstractInterpolator.mappings)" + ] + }, + { + "instruction": "loop_add_fusion.7", + "ms": 0.020901079999998944, + "opcode": "fusion", + "shape": "s64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "mixed_fusion": [ + { + "instruction": "loop_divide_gather_fusion", + "ms": 0.6957665039999998, + "opcode": "fusion", + "shape": "(f64[15361,1,1,1521]{3,2,1,0}, f64[15361,1,1,1521]{3,2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_broadcast_fusion.3", + "ms": 0.23270270000000004, + "opcode": "fusion", + "shape": "f64[1521,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_multiply_transpose_fusion", + "ms": 0.18443896000000012, + "opcode": "fusion", + "shape": "(f64[1369,1369]{1,0}, f64[1369,1369]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:237 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:274 (_certified_positive_only_from)" + ] + }, + { + "instruction": "loop_broadcast_fusion", + "ms": 0.13629450799999962, + "opcode": "fusion", + "shape": "f64[15361,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:342", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:342 (mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:283 (Mapper.mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:91 (AbstractInversionImaging._mapping_matrix_for_convolution_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:137 (AbstractInversionImaging.operated_mapping_matrix_list)" + ] + }, + { + "instruction": "input_reduce_fusion.11", + "ms": 0.11314340399999998, + "opcode": "fusion", + "shape": "f64[92,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123 (data_vector_via_blurred_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:67 (InversionImagingMapping.data_vector)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:699 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_reduce_fusion.14", + "ms": 0.11168997399999994, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163 (mapped_reconstructed_data_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:120 (InversionImagingMapping._mapped_reconstructed_data_dict_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:196 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + } + ], + "border_relocator": [ + { + "instruction": "eigh.0", + "ms": 0.07287370200000047, + "opcode": "custom-call", + "shape": "(f64[2,2]{0,1}, f64[2]{0}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "custom-call.2", + "ms": 0.007905870000000002, + "opcode": "custom-call", + "shape": "(f64[2,2]{1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_reduce_fusion.15", + "ms": 0.005438399999999997, + "opcode": "fusion", + "shape": "(f64[], f64[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:270", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:270 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_add_fusion.9", + "ms": 0.0037284479999999992, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:423 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_concatenate_fusion.4", + "ms": 0.002341118, + "opcode": "fusion", + "shape": "f64[392,2]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:238", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:238 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_reduce_fusion.22", + "ms": 0.0015934640000000086, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:256", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:256 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + } + ], + "other": [ + { + "instruction": "copy.63", + "ms": 0.030175760000001706, + "opcode": "copy", + "shape": "u32[2,15361]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.64", + "ms": 0.02983838000000393, + "opcode": "copy", + "shape": "u32[2,15361]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.81", + "ms": 0.028560307999997963, + "opcode": "copy", + "shape": "u32[15361]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.73", + "ms": 0.028436951999999394, + "opcode": "copy", + "shape": "u32[15361]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.82", + "ms": 0.028194156000001643, + "opcode": "copy", + "shape": "u32[15361]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.72", + "ms": 0.02803981000000125, + "opcode": "copy", + "shape": "u32[15361]{0}", + "source": "", + "stack": [] + } + ], + "pdip_solve": [ + { + "instruction": "cholesky.40", + "ms": 8.35053755000022, + "opcode": "custom-call", + "shape": "(f64[1369,1369]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:153 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "cholesky.60", + "ms": 6.423724690000139, + "opcode": "custom-call", + "shape": "(f64[1369,1369]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:106", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:106 (factorize_kkt)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:212 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve.7", + "ms": 1.462490832000021, + "opcode": "custom-call", + "shape": "(f64[1369,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "triangular-solve.6", + "ms": 1.2394886879999474, + "opcode": "custom-call", + "shape": "(f64[1369,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:154 (masked_solve)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:252 (active_set_search..body_fun)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:262 (active_set_search)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:293 (solve_certified)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_active_set.py:341 (solve_certified_with_fallback)" + ] + }, + { + "instruction": "triangular-solve", + "ms": 0.9787946460000064, + "opcode": "custom-call", + "shape": "(f64[1369,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:213 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve.2", + "ms": 0.9345076679999135, + "opcode": "custom-call", + "shape": "(f64[1369,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:217 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + } + ], + "mapping_matrix": [ + { + "instruction": "input_reduce_fusion.28", + "ms": 0.002809730000000025, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:362 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + } + ], + "regularization_H": [ + { + "instruction": "input_scatter_fusion.8", + "ms": 0.002761589999999996, + "opcode": "fusion", + "shape": "f64[1521,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:123 (weighted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:366 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "psf_convolution_mapping_matrix": [ + { + "instruction": "fft.19.0", + "ms": 1.7799405119999991, + "opcode": "fft", + "shape": "f64[1521,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.15.0", + "ms": 1.3818843840000006, + "opcode": "fft", + "shape": "c128[1521,180,91]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_scatter_fusion", + "ms": 1.374069292, + "opcode": "fusion", + "shape": "f64[1521,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.17.0", + "ms": 0.9923663759999991, + "opcode": "fft", + "shape": "c128[1521,91,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_transpose_fusion.4", + "ms": 0.5225705659999998, + "opcode": "fusion", + "shape": "c128[1521,91,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "wrapped_transpose.2", + "ms": 0.5057553520000001, + "opcode": "fusion", + "shape": "c128[1521,180,91]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + } + ], + "curvature_matrix_F": [ + { + "instruction": "cublas-lt-matmul.2", + "ms": 4.376331124, + "opcode": "custom-call", + "shape": "(f64[1521,1521]{1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "inversion_other": [ + { + "instruction": "cholesky.120", + "ms": 0.9203401760000058, + "opcode": "custom-call", + "shape": "(f64[1521,1521]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1078 (AbstractInversion.log_det_curvature_reg_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:347 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "cholesky.130", + "ms": 0.9038361340000063, + "opcode": "custom-call", + "shape": "(f64[1521,1521]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1157 (AbstractInversion.log_det_regularization_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:348 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "loop_reduce_window_fusion.3", + "ms": 0.005830847999999982, + "opcode": "fusion", + "shape": "s64[6,16]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "loop_reduce_window_fusion.2", + "ms": 0.0030077380000000198, + "opcode": "fusion", + "shape": "s64[86,16]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "input_scatter_fusion.9", + "ms": 0.002562495999999986, + "opcode": "fusion", + "shape": "s64[1369]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527 (AbstractInversion.zeroed_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:567 (AbstractInversion.solve_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:684 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_broadcast_fusion.4", + "ms": 0.0019022800000000097, + "opcode": "fusion", + "shape": "(s64[1369]{0}, s64[1369]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:527 (AbstractInversion.zeroed_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:567 (AbstractInversion.solve_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:684 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "chi_squared_evidence": [ + { + "instruction": "loop_multiply_fusion.2", + "ms": 0.003006390000000007, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:300", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:300 (AbstractNDArray.__pow__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:60 (unwrap_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:35 (to_new_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:78 (chi_squared_map_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:78 (AbstractFit.chi_squared_map)" + ] + } + ] + }, + "stage_audit_note": "The HLO instructions that contributed most of each stage's milliseconds, with their full source stack. A stage row is only as good as the rules that built it; this is how a reader checks a row against the HLO instead of trusting it.", + "untraced_wall_ms": 41.891399751999415, + "reconciliation_vs_untraced_pct": -27.48312969764138, + "wall_basis": "wall_ms is the TRACED run's wall, the run these kernel durations came from. untraced_wall_ms is the same executable without the profiler; the difference is the profiler's overhead and belongs in neither the stages nor the idle row.", + "calls": 500, + "call_split": "per-call (first-instruction recurrence)", + "call_blocks": 500, + "events": 414640, + "streams": [ + "Stream #14(MemcpyH2D,Compute,MemcpyD2H,Memset,MemcpyD2D)" + ], + "per_stage_ms": { + "border_relocator": { + "median_ms": 0.09548900000000002, + "min_ms": 0.09446, + "max_ms": 0.09699400000000002 + }, + "chi_squared_evidence": { + "median_ms": 0.003008, + "min_ms": 0.002816, + "max_ms": 0.003328 + }, + "curvature_matrix_F": { + "median_ms": 4.356646, + "min_ms": 4.333845, + "max_ms": 4.536279 + }, + "inversion_other": { + "median_ms": 1.837608, + "min_ms": 1.822838, + "max_ms": 1.890297 + }, + "mapping_matrix": { + "median_ms": 0.002816, + "min_ms": 0.002783, + "max_ms": 0.002848 + }, + "memset": { + "median_ms": 0.03336, + "min_ms": 0.011456, + "max_ms": 0.10495999999999997 + }, + "mesh_construction": { + "median_ms": 0.34526, + "min_ms": 0.3423380000000002, + "max_ms": 0.3502749999999999 + }, + "mixed_fusion": { + "median_ms": 1.8449345000000001, + "min_ms": 1.837815, + "max_ms": 1.867318 + }, + "other": { + "median_ms": 0.18009799999999987, + "min_ms": 0.179291, + "max_ms": 0.18547499999999972 + }, + "pdip_solve": { + "median_ms": 13.056399000000003, + "min_ms": 3.4580900000000003, + "max_ms": 48.446623999999936 + }, + "psf_convolution_mapping_matrix": { + "median_ms": 6.556239499999999, + "min_ms": 6.528212000000001, + "max_ms": 6.613775 + }, + "regularization_H": { + "median_ms": 0.002783, + "min_ms": 0.0024, + "max_ms": 0.003136 + } + }, + "stage_order": [ + "border_relocator", + "mesh_construction", + "mapping_matrix", + "psf_convolution_mapping_matrix", + "curvature_matrix_F", + "regularization_H", + "pdip_solve", + "chi_squared_evidence", + "inversion_other", + "mixed_fusion", + "other", + "memset" + ], + "mixed_fusion": { + "ms": 1.8449345000000001, + "constituent_stage_sets": { + "curvature_matrix_F + psf_convolution_mapping_matrix": 0.6957665039999998, + "pdip_solve + psf_convolution_mapping_matrix": 0.23270270000000004, + "inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": 0.18443896000000012, + "mapping_matrix + pdip_solve": 0.13863248199999956, + "data_vector_D + pdip_solve": 0.11686097599999987, + "mapped_reconstruction + pdip_solve": 0.11168997399999994, + "border_relocator + pdip_solve": 0.07100461799999953, + "mesh_construction + pdip_solve": 0.038455979999999564, + "inversion_other + regularization_H": 0.030797820000000017, + "inversion_other + pdip_solve": 0.02947045200000002, + "border_relocator + mesh_construction + pdip_solve": 0.026748346000000027, + "curvature_reg_reduce_gather + inversion_other": 0.025578898000000003, + "border_relocator + inversion_other + mapping_matrix + mesh_construction + pdip_solve": 0.020427232, + "pdip_solve + regularization_H": 0.01917003599999998, + "inversion_other + mapping_matrix + pdip_solve + regularization_H": 0.015526246000000084, + "inversion_other + mapping_matrix + mesh_construction": 0.012920326000000006, + "pdip_solve + ray_trace_data_grid": 0.012776269999999902, + "grids_and_structures + mass_profile_deflections + pdip_solve": 0.009873828, + "inversion_other + mapped_reconstruction + reconstruction_scatter": 0.009700854, + "inversion_other + mapped_reconstruction": 0.008355122000000005, + "chi_squared_evidence + pdip_solve": 0.007673018000000005, + "inversion_other + mesh_construction + pdip_solve": 0.005440314000000062, + "grids_and_structures + mass_profile_deflections + ray_trace_data_grid": 0.005234568, + "inversion_other + pdip_solve + ray_trace_data_grid": 0.004826371999999985, + "border_relocator + mesh_construction": 0.0034276539999999927, + "border_relocator + inversion_other": 0.0033522039999999997, + "border_relocator + inversion_other + mesh_construction + pdip_solve": 0.002477650000000015, + "chi_squared_evidence + inversion_other": 0.001790708000000005 + }, + "example_kernels": { + "curvature_matrix_F + psf_convolution_mapping_matrix": [ + "loop_divide_gather_fusion" + ], + "pdip_solve + psf_convolution_mapping_matrix": [ + "loop_broadcast_fusion.3" + ], + "inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": [ + "input_multiply_transpose_fusion" + ], + "mapping_matrix + pdip_solve": [ + "loop_divide_fusion.1", + "loop_broadcast_fusion" + ], + "data_vector_D + pdip_solve": [ + "input_reduce_fusion.11", + "input_reduce_fusion.26" + ], + "mapped_reconstruction + pdip_solve": [ + "input_reduce_fusion.14" + ], + "border_relocator + pdip_solve": [ + "input_reduce_fusion.16", + "loop_select_sine_fusion", + "input_concatenate_fusion.1", + "input_transpose_fusion.8" + ], + "mesh_construction + pdip_solve": [ + "loop_multiply_fusion.4", + "loop_pad_fusion", + "loop_reduce_fusion", + "triton_softmax.1" + ], + "inversion_other + regularization_H": [ + "input_transpose_fusion.6" + ], + "inversion_other + pdip_solve": [ + "input_scatter_fusion.11", + "input_reduce_fusion.17", + "input_reduce_fusion.24", + "input_reduce_fusion.12" + ] + }, + "prorated_estimate_ms": { + "psf_convolution_mapping_matrix": 0.46423460199999994, + "pdip_solve": 0.4595440333999992, + "curvature_matrix_F": 0.3478832519999999, + "inversion_other": 0.1153313844000001, + "mapped_reconstruction": 0.10936590600000001, + "mapping_matrix": 0.08159002423333313, + "data_vector_D": 0.05843048799999993, + "border_relocator": 0.052513212233333106, + "reconstruction_scatter": 0.04934335800000003, + "mesh_construction": 0.04068300456666647, + "regularization_H": 0.02886548950000002, + "curvature_reg_reduce_gather": 0.012789449000000001, + "ray_trace_data_grid": 0.009741781666666612, + "grids_and_structures": 0.005036132, + "mass_profile_deflections": 0.005036132, + "chi_squared_evidence": 0.004731863000000005 + }, + "prorated_note": "ESTIMATE ONLY \u2014 a mixed fusion's time split equally across the stages its constituents span. Never summed into the measured table, never reconciled." + }, + "other_sources_ms": { + "copy.63": 0.030175760000001706, + "copy.64": 0.02983838000000393, + "copy.81": 0.028560307999997963, + "copy.73": 0.028436951999999394, + "copy.82": 0.028194156000001643, + "copy.72": 0.02803981000000125, + "copy.121": 0.0018161400000000114, + "copy.122": 0.0017717179999999911, + "copy.56": 0.0015238939999999933, + "copy.74": 0.001512317999999997, + "copy.120": 0.0007366479999999997, + "copy.43": 0.0006686099999999996 + }, + "device_span_ms": 42.942058577999994, + "device_busy_ms": 40.878367552, + "device_idle_ms": 2.0636910259999937, + "largest_idle_gaps": [ + { + "gap_ms": 0.044702, + "after": "while.33", + "before": "input_scatter_fusion.1" + }, + { + "gap_ms": 0.040382, + "after": "input_concatenate_fusion.4", + "before": "custom-call.2" + }, + { + "gap_ms": 0.031711, + "after": "loop_multiply_fusion.3", + "before": "eigh.0" + }, + { + "gap_ms": 0.025855, + "after": "loop_add_fusion.7", + "before": "loop_select_fusion.6" + }, + { + "gap_ms": 0.023775, + "after": "input_reduce_fusion", + "before": "input_divide_reduce_subtract_fusion" + }, + { + "gap_ms": 0.023487, + "after": "loop_broadcast_fusion.6", + "before": "loop_broadcast_fusion.8" + }, + { + "gap_ms": 0.022431, + "after": "while.40", + "before": "input_transpose_fusion.2" + }, + { + "gap_ms": 0.02227, + "after": "loop_add_fusion.7", + "before": "loop_select_fusion.6" + } + ], + "kernel_ms": 28.314641, + "sum_ms": 30.378332025999995, + "wall_ms": 42.94434955000179, + "host_outside_span_ms": 0.0022909720017949553, + "reconciliation_pct": -29.26116626675341, + "unjoined_ms": 0.0, + "unjoined_pct": 0.0, + "other_ms": 0.18009799999999987, + "other_pct": 0.41937531220563656, + "note": "Stage rows attribute the command-buffers-OFF program (see the module docstring): kernel times are the same, the launch overhead the CUDA graphs remove is not. sum_ms = kernel rows + device_idle_ms; the residual against wall_ms is host_outside_span_ms (dispatch before the first kernel, teardown after the last).", + "per_stage_ms_per_lane": { + "border_relocator": 0.09548900000000002, + "chi_squared_evidence": 0.003008, + "curvature_matrix_F": 4.356646, + "inversion_other": 1.837608, + "mapping_matrix": 0.002816, + "memset": 0.03336, + "mesh_construction": 0.34526, + "mixed_fusion": 1.8449345000000001, + "other": 0.18009799999999987, + "pdip_solve": 13.056399000000003, + "psf_convolution_mapping_matrix": 6.556239499999999, + "regularization_H": 0.002783 + }, + "per_lane_divisor": 1, + "host_callback": { + "pure_callback_span_ms": 0, + "qhull_ms": 0.0, + "callback_body_ms_note": "the OUTERMOST matching body event, not a sum: under the probe the body appears twice (the wrapper and the timed re-implementation it calls) and summing them would count the same work twice", + "events_by_name": { + "ThenExecuteCallback:GetEventForComputeStreamSyncPoint": { + "count": 500, + "ms": 0.9566419999999997 + } + }, + "note": "HOST milliseconds per traced BATCH (the whole invocation), aggregated by name because the events nest. Not a row of the device table: the device pays for them as the idle gaps largest_idle_gaps names." + }, + "host_callback_ms": 0 + }, + "hlo_census": { + "status": "excluded", + "reason": "The legacy census anchors PyAutoArray source line numbers that moved after the phase-1 run. No batched attribution is published from unsupported anchors; the device-event table and wall reconciliation remain valid." + }, + "trace_split": { + "expected_calls": 500, + "executions_per_invocation": 50, + "method": "per-call (first-instruction recurrence)", + "note": "DECIDED IN CODE: the scalar arm's trace is split by trace_calls * B, so every lane's execution is its own block and the per-stage median is taken over all of them. The vmap arm's is split by trace_calls, one block per batched execution, and per_stage_ms_per_lane divides those rows by B." + } + } + }, + "certification_report": { + "source": "vmap arm, library solve observed through its stats= out-dict (PyAutoArray #566) and jax.debug.callback(..., ordered=True); ordered because the unordered batching rule returns the lanes permuted. Untimed, separately compiled; max rel diff of its log likelihoods vs the timed arm's: nan", + "rows": 50, + "pdip_iter": "NOT AVAILABLE per lane without changing library numerics. The fallback branch calls the library's own reconstruction_positive_only_from, which returns the solution alone \u2014 jax_nnls.solve_nnls' iteration count is discarded inside the library's custom_vjp primal. The PDIP while_loop's cost is in the pdip_solve stage row of each arm's device table instead, which is a max-over-lanes quantity under vmap because every lane runs the same fixed kernel sequence.", + "passes_semantics": "library `passes`: restricted active-set passes run (jax_active_set.solve_certified)" + }, + "lane_construction": { + "draws_sha256": "7c217e915e674fff34ba83919c3dfc528573c340a55878fb50abf132b7c8404a", + "lane_rows": [ + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349 + ], + "calls": [ + 15, + 16, + 17 + ], + "stage": "pix1", + "regularization_range": { + "galaxies.source.pixelization.regularization.inner_coefficient": { + "min": 1.008689150795624e-06, + "max": 1893.186029242651 + }, + "galaxies.source.pixelization.regularization.outer_coefficient": { + "min": 1.2674564797230935e-06, + "max": 17250.89883253938 + }, + "galaxies.source.pixelization.regularization.signal_scale": { + "min": 0.007619743046985983, + "max": 0.9779334025364208 + } + }, + "phases": [ + "exploration" + ], + "window_rule": "nautilus_batches.timed_window: consecutive captured calls, in call order, from the FIRST call that is not a prior batch, concatenated and truncated to B; at B == n_batch exactly one real Nautilus batch. Falls back to the latest B lanes if the post-prior lanes run out; never repeats a lane.", + "note": "Lane k is captured lane lane_rows[k]: the mass AND shear of a real Nautilus proposal (nautilus_batch_capture.py), lens light fixed at S3, the S3 light-subtracted dataset shared by every lane. `offsets` in the lane table are the mass offsets from the fiducial; the shear is in the capture file." + }, + "captured": { + "batches_path": "/mnt/ral/jnightin/autolens_profiling_wt/certified-solver-phase-c1-lane-rate/results/breakdown/imaging/nautilus_batches_rectangular_pix1.npz", + "batches_sha256": "c0b62fba544cb62c8a273c19837cf364127f5af7fdaa110f3a2c8a973e0b6cc0", + "schema_version": 2, + "n_calls": 972, + "n_lanes": 19440, + "call_sizes_seen": [ + 20 + ], + "calls_by_phase": { + "prior": 15, + "exploration": 957 + }, + "parameter_paths": [ + "galaxies.source.pixelization.regularization.inner_coefficient", + "galaxies.source.pixelization.regularization.outer_coefficient", + "galaxies.source.pixelization.regularization.signal_scale", + "galaxies.lens.mass.centre.centre_0", + "galaxies.lens.mass.centre.centre_1", + "galaxies.lens.mass.einstein_radius", + "galaxies.lens.mass.ell_comps.ell_comps_0", + "galaxies.lens.mass.ell_comps.ell_comps_1", + "galaxies.lens.shear.gamma_1", + "galaxies.lens.shear.gamma_2" + ], + "stage": "pix1", + "regularization": { + "class": "Adapt", + "free": true, + "priors": { + "inner_coefficient": [ + "LogUniform", + 1e-06, + 1000000.0 + ], + "outer_coefficient": [ + "LogUniform", + 1e-06, + 1000000.0 + ], + "signal_scale": [ + "Uniform", + 0.0, + 1.0 + ] + }, + "priors_source": "PyAutoGalaxy packaged config/priors/regularization (adapt_split.yaml / adapt.yaml / constant.yaml); adapt_split.yaml and adapt.yaml are identical to euclid_strong_lens_modeling_pipeline/config/priors/regularization/'s copies" + }, + "nautilus": { + "departures_from_production": [ + "mass/shear priors are the phase-B cell's Gaussians, not chained from source_lp", + "no positions likelihood", + "the cell's mesh (39x39 RectangularBilinearAdaptImage, weight_power 1, weight_floor 0) fixed in both stages; source_pix_1 uses RectangularBilinearAdaptDensity, source_pix_2 frees weight_power / weight_floor", + "seeded (production passes no seed)", + "quick updates disabled (iterations_per_quick_update=1e12; render-only)", + "NullPaths: no output directory, so no checkpoint and one Sampler.run call", + "post-fit perform_update skipped (samples / latent variables never built)" + ], + "n_batch": 20, + "n_like_max": 40000, + "n_live": 150, + "number_of_cores": 1, + "production_reference": "euclid_strong_lens_modeling_pipeline/scripts/full_model.py source_pix_1 (n_live=150) / source_pix_2 (n_live=75): af.Nautilus(n_batch=20, **SettingsSearch.search_dict) with use_jax_vmap=True and number_of_cores=1 (SettingsSearch defaults)", + "production_stage": "source_pix_1", + "seed": 1, + "stage": "pix1", + "use_jax_vmap": true, + "version": "1.0.5" + }, + "capture_fit_status": "sampling complete (n_like_max or convergence); post-fit result skipped", + "capture_library_revisions": { + "PyAutoArray": { + "head": "3de624b5b91a4efa130dc3cb0a3a0f06f85025a3", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoArray" + }, + "PyAutoFit": { + "head": "dd9fbe0aab60c4a57702b1444ca031b317c91331", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoFit" + }, + "PyAutoGalaxy": { + "head": "70a61e26cd715cefe7012a38285698091246a8a4", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy" + }, + "PyAutoLens": { + "head": "86054bbc19baa2f710a12e04a94fa27ab37cc354", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoLens" + }, + "PyAutoNerves": { + "head": "1fa613aa8d89a79613009fb66f5b4e2d21deb57a", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoNerves" + } + }, + "fingerprint_check": { + "fields": [ + "mesh", + "source_pixels", + "dataset_sha256", + "regularization_class", + "regularization_s0_fiducial", + "border_relocator", + "use_mixed_precision", + "log_evidence_s3_library" + ], + "not_identity": "the regularization coefficients: free per lane since the capture frees them", + "log_evidence_s3_library_rel_diff": 0.0, + "passed": true + }, + "timed_window_vs_capture_pdip": { + "reference": "the capture's own figure of merit (library PDIP, Fitness.call_wrap jax.jit(jax.vmap(call)) over parameter vectors) for the same lanes", + "compared_against": "this cell's jit(vmap) library-PDIP reference", + "n_compared": 47, + "max_rel_diff": 8.590505891533537, + "max_abs_diff_nats": 213012.46909258433, + "gated": false, + "note": "RECORDED, NOT GATED: proves the lane trees rebuilt here are the models the sampler evaluated (a wrong parameter mapping shows up as nats, not 1e-10)." + } + }, + "matched": { + "vmap_wall_per_lane_ms": 34.05736626200087, + "scalar_wall_per_lane_ms": 41.65838341399649, + "speedup_vmap_over_scalar": 1.2231827644428386, + "note": "Both walls are the PRODUCTION nesting of their arm, measured in one process on the same B lanes with the SAME library Settings (no injection). A speedup below 1 means the batch is slower per lane than B sequential jitted calls." + }, + "solver_source": "library", + "solver": "certified", + "certified_fallback": "pdip", + "certified_pass_budget": 16, + "certified_pass_budget_basis": "config default (Settings().certified_pass_budget)", + "certified_tau_rel": 1e-09, + "solver_used": "certified", + "solver_check": { + "solver_used": "certified", + "solver_used_source": "AbstractInversion.positive_only_solver_used on the fiducial S3 inversion, built eagerly on the JAX backend (AnalysisImaging(use_jax=True).fit_from) with the arms' Settings", + "reference_solver_used": "pdip", + "traced_solver_kwargs_jax": [ + "certified" + ], + "observed_calls_jax": 1, + "report_rows": 50, + "report_vs_timed_arm_max_rel_diff": NaN + }, + "lanes_certified": [ + false, + false, + false, + true, + true, + false, + true, + true, + false, + false, + false, + false, + false, + false, + true, + true, + false, + true, + false, + false, + true, + true, + false, + true, + false, + true, + false, + true, + true, + false, + false, + true, + false, + true, + true, + false, + false, + false, + false, + false, + true, + true, + true, + false, + false, + false, + false, + true, + true, + true + ], + "lanes_passes": [ + 16, + 16, + 16, + 5, + 1, + 16, + 14, + 7, + 16, + 16, + 16, + 16, + 16, + 16, + 5, + 7, + 16, + 3, + 16, + 16, + 4, + 2, + 16, + 8, + 16, + 11, + 16, + 8, + 12, + 16, + 16, + 12, + 16, + 16, + 5, + 16, + 16, + 16, + 16, + 16, + 2, + 6, + 13, + 16, + 16, + 16, + 16, + 1, + 3, + 3 + ], + "uncertified_lanes": 28, + "per_lane_certification_note": "certified / passes come from the library's own solve through its stats= out-dict (PyAutoArray #566): passes is the number of restricted active-set passes the library ran (0 when the unconstrained solve was already non-negative), certified is its KKT certificate. With certified_fallback=pdip a False lane returned the PDIP solution; with none it returned the last uncertified iterate. null for a library-PDIP row (no certificate).", + "gate": { + "pre_registered": true, + "gated": [ + "per lane: jit(vmap) arm vs jit(vmap) library PDIP <= lane_rtol relative", + "per lane: scalar jit arm vs scalar jit library PDIP <= lane_rtol relative" + ], + "recorded_not_gated": [ + "per lane: jit(vmap) arm vs scalar jit arm (rel_diff, abs_diff_nats)", + "per lane: jit(vmap) library PDIP vs scalar jit library PDIP", + "uncertified_lanes (certified_fallback=none rows)" + ], + "lanes_failed": 12, + "passed": false, + "policy_eligible": false, + "note": "Pre-registered before submission (module docstring; submit header). Phase 3 (results/notes/hst_gpu_residue_phase3_psf_2026_09.md) placed phase 2's ~2.5e-9 certified-vs-PDIP residual BETWEEN the jit(vmap) and scalar-jit compositions, not in the solver \u2014 so each arm is gated against the library-PDIP reference of its OWN composition, and the cross-composition difference is recorded with its nats. A certified_fallback=none row is policy-eligible only if every lane certifies AND passes the gate. Timing is never gated." + }, + "library_revisions": { + "PyAutoArray": { + "head": "3de624b5b91a4efa130dc3cb0a3a0f06f85025a3", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoArray", + "module_file": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/__init__.py" + }, + "PyAutoFit": { + "head": "dd9fbe0aab60c4a57702b1444ca031b317c91331", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoFit", + "module_file": "/mnt/ral/jnightin/PyAuto/PyAutoFit/autofit/__init__.py" + }, + "PyAutoGalaxy": { + "head": "70a61e26cd715cefe7012a38285698091246a8a4", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy", + "module_file": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/__init__.py" + }, + "PyAutoLens": { + "head": "86054bbc19baa2f710a12e04a94fa27ab37cc354", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoLens", + "module_file": "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/__init__.py" + }, + "autoarray_file": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/__init__.py" + } + }, + "headline_arm_note": "`trace`, `hlo_census`, `command_buffers` and `trace_timing` above describe the scalar arm \u2014 the program phase 1 traced. Both arms' full blocks, the lane table and the matched comparison are under `vmap`." +} \ No newline at end of file diff --git a/results/breakdown/imaging/fixed_light_trace_rectangular_jitvmap50_captured_pix1_libcertified_fbon_b16_hpc_a100_fp64_fixed_light_trace.png b/results/breakdown/imaging/fixed_light_trace_rectangular_jitvmap50_captured_pix1_libcertified_fbon_b16_hpc_a100_fp64_fixed_light_trace.png new file mode 100644 index 000000000..432d86837 Binary files /dev/null and b/results/breakdown/imaging/fixed_light_trace_rectangular_jitvmap50_captured_pix1_libcertified_fbon_b16_hpc_a100_fp64_fixed_light_trace.png differ diff --git a/results/breakdown/imaging/fixed_light_trace_rectangular_jitvmap50_captured_pix1_libpdip_fbon_b16_hpc_a100_fp64_fixed_light_trace.json b/results/breakdown/imaging/fixed_light_trace_rectangular_jitvmap50_captured_pix1_libpdip_fbon_b16_hpc_a100_fp64_fixed_light_trace.json new file mode 100644 index 000000000..240dafb97 --- /dev/null +++ b/results/breakdown/imaging/fixed_light_trace_rectangular_jitvmap50_captured_pix1_libpdip_fbon_b16_hpc_a100_fp64_fixed_light_trace.json @@ -0,0 +1,8330 @@ +{ + "device": { + "backend": "gpu", + "device": "cuda:0", + "hostname": "euclid-ral-gpu-1", + "xla_flags": "--xla_disable_hlo_passes=constant_folding --xla_gpu_autotune_level=0 --xla_gpu_enable_triton_gemm=false", + "omp_num_threads": null, + "cpu_count": 124, + "jax_compilation_cache_dir": "/mnt/ral/jnightin/autolens_profiling_wt/certified-solver-phase-c1-lane-rate/output/jax_cache/fixed_light_lanerate_rectangular_pix1_time_50_pdip_on_350768_26", + "autotune_cache_entries_at_start": 0, + "cache_fresh": true, + "nvidia_smi": "NVIDIA A100 80GB PCIe, 61393 MiB, 81920 MiB" + }, + "machine": { + "cpu_model": "AMD EPYC 7702 64-Core Processor", + "cpu_count_os": 124, + "nproc": 4, + "nproc_all": 124, + "nproc_note": "GNU nproc honours OMP_NUM_THREADS, so `nproc` can print 1 on a multi-core host; `nproc_all` is the core count.", + "ram_total": "928298200 kB", + "kernel": "5.14.0-687.50.1.el9_8.x86_64", + "platform": "Linux-5.14.0-687.50.1.el9_8.x86_64-x86_64-with-glibc2.34", + "python": "3.12.4", + "jax_thread_env": { + "NPROC": null + }, + "blas_thread_env": { + "OMP_NUM_THREADS": null, + "OPENBLAS_NUM_THREADS": null, + "MKL_NUM_THREADS": null, + "VECLIB_MAXIMUM_THREADS": null, + "NUMEXPR_NUM_THREADS": null + }, + "thread_env_note": "NPROC sizes XLA's CPU intra-op pool (the JAX rows); the BLAS knobs pin OpenBLAS/MKL/OpenMP (the numpy/scipy rows) and do not touch JAX. Two disjoint families; both are recorded on every CPU timing.", + "gpu": "NVIDIA A100 80GB PCIe, 81920 MiB, 610.57.04" + }, + "precision": "fp64", + "configuration": { + "pixel_scale_arcsec": 0.05, + "mask_radius_arcsec": 3.5, + "image_pixels_masked": 15361, + "over_sampled_pixels": 62752, + "mesh": "rectangular", + "mesh_shape": [ + 39, + 39 + ], + "source_pixels": 1521, + "source_pixels_requested": null, + "dataset": "hst", + "dataset_sha256": { + "data.fits": "e4e833a28e9c6f6fb023cd85c0d3dde74068720256bc77a240633500e5b04fac", + "noise_map.fits": "315c6266a0acd3ac9c8da82fcd2b45a08697362481fd7a35072bab1658530ba3", + "psf.fits": "8389ba0e8bf4a09b4a561cfc246181a2fb944ed396754cd0ff76fdd22910d303" + }, + "cell_source_sha256": "06a162fcdae6b329384ec33322f443df07215d86e56f0505ac15b3d3473eb432", + "inversion_path": "dense", + "pass_budget": 11, + "pass_budget_basis": "phase 3 (autolens_profiling#255): the smallest ZERO-fallback budget per mesh, the budget a production run fixes. NOT phase 0's certifying budget (2 for Delaunay), which falls back on 67.5 % of a graded draw set and is not a production cost.", + "border_relocator_mode": "cell", + "border_relocator": true, + "border_relocator_note": "'cell' is use_border_relocator=True, which every profiling cell in this family forces; 'library' passes None and takes the shipped config default, which is what production runs. The resolved boolean is what this leg actually ran.", + "routes_selected": [ + "b", + "d" + ], + "trace_calls": 10, + "command_buffers_traced": "off", + "use_mixed_precision": false, + "tau_rel": 1e-09, + "regularization": { + "scheme": "constant", + "coefficient": 1.0 + }, + "thread_env": { + "n_threads": null, + "vars": [ + "OPENBLAS_NUM_THREADS", + "MKL_NUM_THREADS", + "OMP_NUM_THREADS", + "VECLIB_MAXIMUM_THREADS", + "NUMEXPR_NUM_THREADS" + ], + "set_to": null, + "preexisting": {}, + "overridden": {}, + "note": "Not pinned (legacy variant): recorded as found." + }, + "over_sample_size_lp_rule": { + "sub_size_list": [ + 4, + 2, + 2 + ], + "radial_list": [ + 0.3, + 0.6 + ], + "centre": [ + 0.0, + 0.0 + ] + }, + "vmap_batch": 50, + "lanes": "captured", + "arms": [ + "vmap", + "scalar" + ], + "fallback": "on", + "draw_seed": 0, + "vmap_composition": "jax.jit(jax.vmap(fn))", + "lane_rtol": 1e-09, + "vmap_flags_note": "Strict ProfileCLI.parse_cell_args rejects unknown flags. These keys record the exact batching program and prevent historical vmap(jit) artifacts from being mistaken for current jit(vmap) measurements.", + "solver_source": "library", + "solver": "pdip", + "certified_fallback": "pdip", + "certified_pass_budget": 16, + "captured_pass": "time", + "batches": "/mnt/ral/jnightin/autolens_profiling_wt/certified-solver-phase-c1-lane-rate/results/breakdown/imaging/nautilus_batches_rectangular_pix1.npz" + }, + "solver_injection": { + "patched": null, + "part_v": "none \u2014 library mode selects the solver through al.Settings", + "part_b_route_d": { + "patched": "autoarray.inversion.inversion.inversion_util.reconstruction_positive_only_from", + "pass_budget": 11, + "fallback": true + }, + "note": "Library mode (phase B, #300): PART V's arms and references run the library's own positive-only solve, selected by Settings(positive_only_solver, certified_fallback, certified_pass_budget); nothing is injected. PART B's single-call route d (the fiducial d == b pin) still uses the phase-1 harness injection at the phase-3 budget and is not a phase-B row. The untimed certification report observes the library solve (library_solver_observed) without changing it." + }, + "routes": { + "b_s3_pdip": { + "label": "S3 PDIP (source-only)", + "status": "ok", + "solver": "library", + "ms": 38.88578369987954, + "log_likelihood": 28622.39485118912 + }, + "d_s3_certified_fallback": { + "label": "S3 certified active set, budget 11, PDIP fallback", + "status": "ok", + "solver": "harness-injected certified active set", + "pass_budget": 11, + "fallback": true, + "injected_solver_calls_jax": 1, + "injected_solver_calls_numpy": 0, + "ms": 30.29389959992841, + "log_likelihood": 28622.394851189252 + } + }, + "equivalence_pins": [ + { + "pin": "route d (certified, fallback) == route b (library PDIP)", + "route": "d_s3_certified_fallback", + "reference": "b_s3_pdip", + "expectation": "the certified active set returns the library's own positive solution", + "rtol": 1e-09, + "got": 28622.394851189252, + "reference_value": 28622.39485118912, + "rel_diff": 4.575691088611358e-15, + "status": "PASS" + } + ], + "equivalence_rtol": 1e-09, + "reference": { + "log_evidence_s0_library": 28622.394851199875, + "log_evidence_s3_library": 28622.39485119987, + "s3": { + "n_params": 1521, + "n_mapper": 1521, + "n_funcs": 0, + "edge_zeroed_pixels": 152, + "subtracted_light_flux": 5253.476646922047 + } + }, + "command_buffers": { + "wall_on_ms": 2022.2077013000671, + "wall_off_ms": 2039.7183146997122, + "command_buffer_delta_ms": 17.51061339964508, + "command_buffer_delta_pct": 0.8659156716883036, + "traced": "off", + "compiler_option": "xla_gpu_enable_command_buffer", + "probe": { + "note": "Not taken in --vmap-batch mode: the CUPTI-inside-a-CUDA-graph probe is a phase-1 diagnostic about the JOIN, and this mode already compiles and times both the command-buffers ON and OFF executable of every arm." + }, + "note": "ONE lowering, TWO compilations, one process. wall_on_ms is the PRODUCTION program (CUDA graphs as XLA ships them) and is the number comparable to phase 5's row; wall_off_ms is the graph-less program the stage rows attribute. The delta is the launch overhead the graphs remove \u2014 it lands in device_idle and host_outside_span, not in any stage. Reconciliation is computed against wall_off_ms." + }, + "trace": { + "parser": "ProfileData.from_file(xplane) + as_text() + stack_frame_index(proto field 17)", + "stage_audit": { + "mesh_construction": [ + { + "instruction": "fusion.2", + "ms": 0.14823715999999942, + "opcode": "fusion", + "shape": "(f64[15361,2]{1,0}, s64[15361,2]{1,0}, s32[15361,2]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:227", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:227 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_select_fusion", + "ms": 0.03952672200000208, + "opcode": "fusion", + "shape": "(u32[2,15361]{1,0}, u32[2,15361]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69 (forward_interp)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:573 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/abstract.py:36 (AbstractInterpolator.mappings)" + ] + }, + { + "instruction": "loop_select_fusion.4", + "ms": 0.03471731400000198, + "opcode": "fusion", + "shape": "(u32[15361]{0}, u32[15361]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_select_fusion.1", + "ms": 0.03456400000000109, + "opcode": "fusion", + "shape": "(u32[15361]{0}, u32[15361]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_add_fusion", + "ms": 0.020973007999999616, + "opcode": "fusion", + "shape": "s64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69 (forward_interp)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:573 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/abstract.py:36 (AbstractInterpolator.mappings)" + ] + }, + { + "instruction": "loop_add_fusion.1", + "ms": 0.02030893799999918, + "opcode": "fusion", + "shape": "s64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "mixed_fusion": [ + { + "instruction": "loop_divide_gather_fusion", + "ms": 0.6956222659999999, + "opcode": "fusion", + "shape": "(f64[15361,1,1,1521]{3,2,1,0}, f64[15361,1,1,1521]{3,2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_add_multiply_fusion", + "ms": 0.08955387599999985, + "opcode": "fusion", + "shape": "(f64[1369,1369]{1,0}, f64[1369,1369]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:61", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:61 (initialize)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:72 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:508 (reconstruction_positive_only_from)" + ] + }, + { + "instruction": "input_transpose_fusion.3", + "ms": 0.030696347999999977, + "opcode": "fusion", + "shape": "f64[1521,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1157 (AbstractInversion.log_det_regularization_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:348 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "loop_reduce_fusion.1", + "ms": 0.02707718400000006, + "opcode": "fusion", + "shape": "f64[92,2]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:556", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:556 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/abstract.py:36 (AbstractInterpolator.mappings)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:167 (Mapper.pix_indexes_for_sub_slim_index)" + ] + }, + { + "instruction": "input_transpose_fusion.2", + "ms": 0.025463392000000022, + "opcode": "fusion", + "shape": "f64[1521,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1078 (AbstractInversion.log_det_curvature_reg_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:347 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "input_transpose_fusion.4", + "ms": 0.016031838000000014, + "opcode": "fusion", + "shape": "f64[1369,1369]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:62", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:62 (initialize)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:72 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:508 (reconstruction_positive_only_from)" + ] + } + ], + "ray_trace_data_grid": [ + { + "instruction": "input_reduce_fusion.16", + "ms": 0.002779664000000011, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:506", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:506 (FlatLambdaCDM._simpson_1d)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:644 (FlatLambdaCDM.angular_diameter_distance_kpc_z1z2)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:151 (LensingCosmology.angular_diameter_distance_between_redshifts_in_kpc_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:355 (LensingCosmology.scaling_factor_between_redshifts_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer_util.py:252 (traced_grid_2d_list_from)" + ] + }, + { + "instruction": "input_reduce_fusion.14", + "ms": 0.0027593139999999893, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:506", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:506 (FlatLambdaCDM._simpson_1d)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:644 (FlatLambdaCDM.angular_diameter_distance_kpc_z1z2)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:133 (LensingCosmology.angular_diameter_distance_to_earth_in_kpc_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:362 (LensingCosmology.scaling_factor_between_redshifts_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer_util.py:252 (traced_grid_2d_list_from)" + ] + }, + { + "instruction": "input_reduce_fusion.15", + "ms": 0.002615129999999994, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:503", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:503 (FlatLambdaCDM._simpson_1d)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:644 (FlatLambdaCDM.angular_diameter_distance_kpc_z1z2)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:133 (LensingCosmology.angular_diameter_distance_to_earth_in_kpc_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:362 (LensingCosmology.scaling_factor_between_redshifts_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer_util.py:252 (traced_grid_2d_list_from)" + ] + }, + { + "instruction": "input_reduce_fusion.17", + "ms": 0.002577294000000005, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:503", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:503 (FlatLambdaCDM._simpson_1d)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:644 (FlatLambdaCDM.angular_diameter_distance_kpc_z1z2)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:151 (LensingCosmology.angular_diameter_distance_between_redshifts_in_kpc_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:355 (LensingCosmology.scaling_factor_between_redshifts_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer_util.py:252 (traced_grid_2d_list_from)" + ] + }, + { + "instruction": "loop_divide_fusion.2", + "ms": 0.002086266000000007, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:380", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:380 (LensingCosmology.scaling_factor_between_redshifts_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer_util.py:252 (traced_grid_2d_list_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer.py:632 (Tracer.traced_grid_2d_list_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/structures/decorators/abstract.py:93 (AbstractMaker.evaluate_func)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/structures/decorators/abstract.py:110 (AbstractMaker.result)" + ] + } + ], + "border_relocator": [ + { + "instruction": "eigh.0", + "ms": 0.07399818400000037, + "opcode": "custom-call", + "shape": "(f64[2,2]{0,1}, f64[2]{0}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "custom-call.2", + "ms": 0.007905104000000001, + "opcode": "custom-call", + "shape": "(f64[2,2]{1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_reduce_fusion.11", + "ms": 0.0052584139999999994, + "opcode": "fusion", + "shape": "(f64[], f64[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:270", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:270 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_add_fusion.7", + "ms": 0.003696837999999999, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:423 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_concatenate_fusion.1", + "ms": 0.003606220000000003, + "opcode": "fusion", + "shape": "f64[15361,2]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:323", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:323 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:423 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_select_sine_fusion", + "ms": 0.0032952079999999944, + "opcode": "fusion", + "shape": "(f64[], f64[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:301", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:301 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:423 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + } + ], + "other": [ + { + "instruction": "copy.31", + "ms": 0.030169616000001783, + "opcode": "copy", + "shape": "u32[2,15361]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.32", + "ms": 0.029892848000004146, + "opcode": "copy", + "shape": "u32[2,15361]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.49", + "ms": 0.028360728000000317, + "opcode": "copy", + "shape": "u32[15361]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.50", + "ms": 0.028327180000000726, + "opcode": "copy", + "shape": "u32[15361]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.40", + "ms": 0.028324714000000757, + "opcode": "copy", + "shape": "u32[15361]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.41", + "ms": 0.028288402000001215, + "opcode": "copy", + "shape": "u32[15361]{0}", + "source": "", + "stack": [] + } + ], + "mapping_matrix": [ + { + "instruction": "loop_broadcast_fusion.1", + "ms": 0.1363581200000002, + "opcode": "fusion", + "shape": "f64[15361,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:342", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:342 (mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:283 (Mapper.mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:91 (AbstractInversionImaging._mapping_matrix_for_convolution_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:137 (AbstractInversionImaging.operated_mapping_matrix_list)" + ] + }, + { + "instruction": "input_reduce_fusion.25", + "ms": 0.002816192000000023, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:362 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + }, + { + "instruction": "loop_divide_fusion.1", + "ms": 0.0023321700000000036, + "opcode": "fusion", + "shape": "f64[1521]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:92", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:92 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:362 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + } + ], + "regularization_H": [ + { + "instruction": "loop_broadcast_fusion.2", + "ms": 0.019144397999999993, + "opcode": "fusion", + "shape": "(f64[1521,1521]{1,0}, f64[1521,1521]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:111", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:111 (weighted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:366 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_scatter_fusion.8", + "ms": 0.002825871999999998, + "opcode": "fusion", + "shape": "f64[1521,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:123 (weighted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:366 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "psf_convolution_mapping_matrix": [ + { + "instruction": "fft.19.0", + "ms": 1.7796628979999987, + "opcode": "fft", + "shape": "f64[1521,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_scatter_fusion", + "ms": 1.4235511599999988, + "opcode": "fusion", + "shape": "f64[1521,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.15.0", + "ms": 1.3825417420000001, + "opcode": "fft", + "shape": "c128[1521,180,91]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.17.0", + "ms": 0.9920297580000013, + "opcode": "fft", + "shape": "c128[1521,91,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_transpose_fusion.1", + "ms": 0.522140612, + "opcode": "fusion", + "shape": "c128[1521,91,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "wrapped_transpose.2", + "ms": 0.5054060140000001, + "opcode": "fusion", + "shape": "c128[1521,180,91]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + } + ], + "curvature_matrix_F": [ + { + "instruction": "cublas-lt-matmul.2", + "ms": 4.398367832000003, + "opcode": "custom-call", + "shape": "(f64[1521,1521]{1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "data_vector_D": [ + { + "instruction": "input_reduce_fusion.7", + "ms": 0.11331941799999992, + "opcode": "fusion", + "shape": "f64[92,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123 (data_vector_via_blurred_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:67 (InversionImagingMapping.data_vector)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:699 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_reduce_fusion.23", + "ms": 0.0037245079999999936, + "opcode": "fusion", + "shape": "f64[1521]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123 (data_vector_via_blurred_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:67 (InversionImagingMapping.data_vector)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:699 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "inversion_other": [ + { + "instruction": "cholesky.60", + "ms": 0.9192102600000055, + "opcode": "custom-call", + "shape": "(f64[1521,1521]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1078 (AbstractInversion.log_det_curvature_reg_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:347 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "cholesky.70", + "ms": 0.9024006600000065, + "opcode": "custom-call", + "shape": "(f64[1521,1521]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1157 (AbstractInversion.log_det_regularization_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:348 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "input_reduce_fusion.13", + "ms": 0.01897318800000001, + "opcode": "fusion", + "shape": "f64[1521]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:946", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:946 (AbstractInversion.regularization_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:346 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)", + "/mnt/ral/jnightin/autolens_profiling_wt/certified-solver-phase-c1-lane-rate/scripts/imaging/likelihood_breakdown/fixed_light_trace.py:1195 (_captured_likelihood_fn.._likelihood)" + ] + }, + { + "instruction": "loop_reduce_window_fusion.3", + "ms": 0.005792840000000006, + "opcode": "fusion", + "shape": "s64[6,16]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "input_scatter_fusion.11", + "ms": 0.0037877980000000163, + "opcode": "fusion", + "shape": "pred[1521]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:526", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:526 (AbstractInversion.zeroed_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:567 (AbstractInversion.solve_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:684 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_reduce_window_fusion.2", + "ms": 0.0030375840000000003, + "opcode": "fusion", + "shape": "s64[86,16]{1,0}", + "source": "", + "stack": [] + } + ], + "pdip_solve": [ + { + "instruction": "cholesky.20", + "ms": 13.788170630000613, + "opcode": "custom-call", + "shape": "(f64[1369,1369]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:106", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:106 (factorize_kkt)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:212 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve", + "ms": 2.100691765999975, + "opcode": "custom-call", + "shape": "(f64[1369,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:213 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve.2", + "ms": 2.006719439999904, + "opcode": "custom-call", + "shape": "(f64[1369,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:217 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve.3", + "ms": 1.9963342719999402, + "opcode": "custom-call", + "shape": "(f64[1369,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:217 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve.1", + "ms": 1.9419095699999078, + "opcode": "custom-call", + "shape": "(f64[1369,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:213 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "cholesky.40", + "ms": 0.8456320920000049, + "opcode": "custom-call", + "shape": "(f64[1369,1369]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:62", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:62 (initialize)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:72 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:508 (reconstruction_positive_only_from)" + ] + } + ], + "mapped_reconstruction": [ + { + "instruction": "input_reduce_fusion.10", + "ms": 0.11165510000000008, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163 (mapped_reconstructed_data_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:120 (InversionImagingMapping._mapped_reconstructed_data_dict_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:196 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + } + ], + "chi_squared_evidence": [ + { + "instruction": "input_reduce_fusion.22", + "ms": 0.0038921880000000043, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:104", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:104 (noise_normalization_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:98 (AbstractFit.noise_normalization)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:306 (FitDataset.noise_normalization)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:349 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)" + ] + }, + { + "instruction": "input_reduce_fusion.24", + "ms": 0.003760919999999982, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:90", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:90 (chi_squared_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:87 (AbstractFit.chi_squared)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:293 (FitDataset.chi_squared)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:345 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)" + ] + }, + { + "instruction": "loop_multiply_fusion.2", + "ms": 0.00301991600000001, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:300", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:300 (AbstractNDArray.__pow__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:60 (unwrap_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:35 (to_new_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:78 (chi_squared_map_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:78 (AbstractFit.chi_squared_map)" + ] + } + ] + }, + "stage_audit_note": "The HLO instructions that contributed most of each stage's milliseconds, with their full source stack. A stage row is only as good as the rules that built it; this is how a reader checks a row against the HLO instead of trusting it.", + "untraced_wall_ms": 40.79158066600212, + "reconciliation_vs_untraced_pct": 4.276367229504719, + "wall_basis": "wall_ms is the TRACED run's wall, the run these kernel durations came from. untraced_wall_ms is the same executable without the profiler; the difference is the profiler's overhead and belongs in neither the stages nor the idle row.", + "calls": 500, + "call_split": "per-call (first-instruction recurrence)", + "call_blocks": 500, + "events": 458780, + "streams": [ + "Stream #14(MemcpyH2D,Compute,MemcpyD2H,Memset,MemcpyD2D)" + ], + "per_stage_ms": { + "border_relocator": { + "median_ms": 0.10614450000000003, + "min_ms": 0.10512100000000003, + "max_ms": 0.10819200000000002 + }, + "chi_squared_evidence": { + "median_ms": 0.010656, + "min_ms": 0.010336, + "max_ms": 0.0112 + }, + "curvature_matrix_F": { + "median_ms": 4.378137, + "min_ms": 4.355097, + "max_ms": 4.566789 + }, + "data_vector_D": { + "median_ms": 0.11705499999999999, + "min_ms": 0.115964, + "max_ms": 0.11830600000000001 + }, + "inversion_other": { + "median_ms": 1.865148, + "min_ms": 1.8479360000000002, + "max_ms": 1.918328 + }, + "mapped_reconstruction": { + "median_ms": 0.111618, + "min_ms": 0.111041, + "max_ms": 0.112834 + }, + "mapping_matrix": { + "median_ms": 0.141506, + "min_ms": 0.14143499999999998, + "max_ms": 0.141627 + }, + "memset": { + "median_ms": 0.05068900000000001, + "min_ms": 0.031969, + "max_ms": 0.06803000000000002 + }, + "mesh_construction": { + "median_ms": 0.38052150000000007, + "min_ms": 0.3778919999999999, + "max_ms": 0.38281800000000005 + }, + "mixed_fusion": { + "median_ms": 0.9884385, + "min_ms": 0.9851650000000001, + "max_ms": 0.9911470000000001 + }, + "other": { + "median_ms": 0.19399899999999978, + "min_ms": 0.19321899999999984, + "max_ms": 0.19469299999999976 + }, + "pdip_solve": { + "median_ms": 25.15693850000001, + "min_ms": 15.270660000000001, + "max_ms": 34.171549000000006 + }, + "psf_convolution_mapping_matrix": { + "median_ms": 6.837016500000001, + "min_ms": 6.809049000000001, + "max_ms": 6.861560999999999 + }, + "ray_trace_data_grid": { + "median_ms": 0.0128, + "min_ms": 0.012703999999999998, + "max_ms": 0.013056000000000002 + }, + "regularization_H": { + "median_ms": 0.021952, + "min_ms": 0.021312, + "max_ms": 0.022881 + } + }, + "stage_order": [ + "ray_trace_data_grid", + "border_relocator", + "mesh_construction", + "mapping_matrix", + "psf_convolution_mapping_matrix", + "data_vector_D", + "curvature_matrix_F", + "regularization_H", + "pdip_solve", + "mapped_reconstruction", + "chi_squared_evidence", + "inversion_other", + "mixed_fusion", + "other", + "memset" + ], + "mixed_fusion": { + "ms": 0.9884385, + "constituent_stage_sets": { + "curvature_matrix_F + psf_convolution_mapping_matrix": 0.6956222659999999, + "inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": 0.08955387599999985, + "inversion_other + regularization_H": 0.030696347999999977, + "border_relocator + mesh_construction": 0.03052141600000018, + "curvature_reg_reduce_gather + inversion_other": 0.025463392000000022, + "border_relocator + inversion_other + mapping_matrix + mesh_construction": 0.02044969, + "border_relocator + pdip_solve": 0.016031838000000014, + "inversion_other + mapping_matrix + regularization_H": 0.0154030920000001, + "inversion_other + mapping_matrix + mesh_construction": 0.012913086000000015, + "grids_and_structures + mass_profile_deflections": 0.010112593999999994, + "inversion_other + mapped_reconstruction + reconstruction_scatter": 0.009514054, + "inversion_other + mapped_reconstruction": 0.008987944000000006, + "inversion_other + mesh_construction": 0.00546953800000006, + "grids_and_structures + mass_profile_deflections + ray_trace_data_grid": 0.0052269759999999995, + "inversion_other + ray_trace_data_grid": 0.0048203019999999925, + "border_relocator + inversion_other": 0.003341529999999998, + "border_relocator + inversion_other + mesh_construction": 0.002450111999999995, + "chi_squared_evidence + inversion_other": 0.0017897900000000007 + }, + "example_kernels": { + "curvature_matrix_F + psf_convolution_mapping_matrix": [ + "loop_divide_gather_fusion" + ], + "inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": [ + "loop_add_multiply_fusion" + ], + "inversion_other + regularization_H": [ + "input_transpose_fusion.3" + ], + "border_relocator + mesh_construction": [ + "loop_reduce_fusion.1", + "loop_select_fusion.5" + ], + "curvature_reg_reduce_gather + inversion_other": [ + "input_transpose_fusion.2" + ], + "border_relocator + inversion_other + mapping_matrix + mesh_construction": [ + "input_scatter_fusion.6", + "input_scatter_fusion.10" + ], + "border_relocator + pdip_solve": [ + "input_transpose_fusion.4" + ], + "inversion_other + mapping_matrix + regularization_H": [ + "input_scatter_fusion.4", + "input_scatter_fusion.5", + "input_scatter_fusion.2", + "input_scatter_fusion.3" + ], + "inversion_other + mapping_matrix + mesh_construction": [ + "input_scatter_fusion.7" + ], + "grids_and_structures + mass_profile_deflections": [ + "loop_divide_minimum_multiply_sine_sqrt_fusion", + "loop_slice_fusion" + ] + }, + "prorated_estimate_ms": { + "curvature_matrix_F": 0.34781113299999994, + "psf_convolution_mapping_matrix": 0.34781113299999994, + "inversion_other": 0.08121209483333337, + "border_relocator": 0.030876518500000092, + "pdip_solve": 0.03040438799999997, + "mapped_reconstruction": 0.030053792333333298, + "mesh_construction": 0.028228965500000126, + "reconstruction_scatter": 0.025559820333333295, + "regularization_H": 0.020482538000000022, + "mapping_matrix": 0.014551148500000038, + "curvature_reg_reduce_gather": 0.012731696000000011, + "grids_and_structures": 0.00679862233333333, + "mass_profile_deflections": 0.00679862233333333, + "ray_trace_data_grid": 0.004152476333333329, + "chi_squared_evidence": 0.0008948950000000004 + }, + "prorated_note": "ESTIMATE ONLY \u2014 a mixed fusion's time split equally across the stages its constituents span. Never summed into the measured table, never reconciled." + }, + "other_sources_ms": { + "copy.31": 0.030169616000001783, + "copy.32": 0.029892848000004146, + "copy.49": 0.028360728000000317, + "copy.50": 0.028327180000000726, + "copy.40": 0.028324714000000757, + "copy.41": 0.028288402000001215, + "loop_reduce_window_fusion": 0.006436629999999936, + "loop_reduce_window_fusion.1": 0.004321369999999981, + "copy.90": 0.001769277999999991, + "loop_broadcast_fusion.3": 0.0017681979999999938, + "copy.69": 0.0017565080000000045, + "copy.24": 0.0015164799999999952, + "copy.42": 0.001504009999999997, + "copy.33": 0.001503557999999997 + }, + "device_span_ms": 41.832656144, + "device_busy_ms": 39.669297189999995, + "device_idle_ms": 2.163358954000003, + "largest_idle_gaps": [ + { + "gap_ms": 0.054655, + "after": "while.28", + "before": "input_scatter_fusion.1" + }, + { + "gap_ms": 0.04147, + "after": "input_concatenate_fusion.4", + "before": "custom-call.2" + }, + { + "gap_ms": 0.031263, + "after": "loop_multiply_fusion.3", + "before": "eigh.0" + }, + { + "gap_ms": 0.027775, + "after": "loop_add_fusion.5", + "before": "loop_select_fusion.4" + }, + { + "gap_ms": 0.025183, + "after": "copy.40", + "before": "copy.41" + }, + { + "gap_ms": 0.021824, + "after": "input_reduce_fusion", + "before": "input_divide_reduce_subtract_fusion" + }, + { + "gap_ms": 0.02128, + "after": "loop_broadcast_fusion.6", + "before": "loop_broadcast_fusion.8" + }, + { + "gap_ms": 0.019391, + "after": "eigh.0", + "before": "eigh.0" + } + ], + "kernel_ms": 40.37261950000001, + "sum_ms": 42.535978454000016, + "wall_ms": 41.83445020799991, + "host_outside_span_ms": 0.0017940639999096675, + "reconciliation_pct": 1.6769151799823516, + "unjoined_ms": 0.0, + "unjoined_pct": 0.0, + "other_ms": 0.19399899999999978, + "other_pct": 0.46373024871951535, + "note": "Stage rows attribute the command-buffers-OFF program (see the module docstring): kernel times are the same, the launch overhead the CUDA graphs remove is not. sum_ms = kernel rows + device_idle_ms; the residual against wall_ms is host_outside_span_ms (dispatch before the first kernel, teardown after the last).", + "per_stage_ms_per_lane": { + "border_relocator": 0.10614450000000003, + "chi_squared_evidence": 0.010656, + "curvature_matrix_F": 4.378137, + "data_vector_D": 0.11705499999999999, + "inversion_other": 1.865148, + "mapped_reconstruction": 0.111618, + "mapping_matrix": 0.141506, + "memset": 0.05068900000000001, + "mesh_construction": 0.38052150000000007, + "mixed_fusion": 0.9884385, + "other": 0.19399899999999978, + "pdip_solve": 25.15693850000001, + "psf_convolution_mapping_matrix": 6.837016500000001, + "ray_trace_data_grid": 0.0128, + "regularization_H": 0.021952 + }, + "per_lane_divisor": 1, + "host_callback": { + "pure_callback_span_ms": 0, + "qhull_ms": 0.0, + "callback_body_ms_note": "the OUTERMOST matching body event, not a sum: under the probe the body appears twice (the wrapper and the timed re-implementation it calls) and summing them would count the same work twice", + "events_by_name": { + "ThenExecuteCallback:GetEventForComputeStreamSyncPoint": { + "count": 500, + "ms": 0.8703228000000002 + } + }, + "note": "HOST milliseconds per traced BATCH (the whole invocation), aggregated by name because the events nest. Not a row of the device table: the device pays for them as the idle gaps largest_idle_gaps names." + }, + "host_callback_ms": 0 + }, + "hlo_census": { + "status": "excluded", + "reason": "The legacy census anchors PyAutoArray source line numbers that moved after the phase-1 run. No batched attribution is published from unsupported anchors; the device-event table and wall reconciliation remain valid." + }, + "stage_map_provenance": [ + { + "label": "log_det_curvature_reg", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 850, + 882 + ], + "requires": { + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 884, + 896 + ] + }, + "function": null + }, + { + "label": "log_det_regularization", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 850, + 882 + ], + "requires": { + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 897, + 943 + ] + }, + "function": null + }, + { + "label": "curvature_reg_add", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 359, + 372 + ], + "requires": null, + "function": null + }, + { + "label": "curvature_reg_reduce_gather", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 374, + 398 + ], + "requires": null, + "function": null + }, + { + "label": "edge_subset_gather", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 606, + 614 + ], + "requires": null, + "function": null + }, + { + "label": "regularization_term", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 786, + 849 + ], + "requires": null, + "function": null + }, + { + "label": "mapped_reconstruction", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 722, + 785 + ], + "requires": null, + "function": null + }, + { + "label": "reconstruction_scatter", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 583, + 605 + ], + "requires": null, + "function": null + }, + { + "label": "reconstruction_scatter", + "path": "PyAutoArray/autoarray/inversion/inversion/abstract.py", + "lines": [ + 615, + 721 + ], + "requires": null, + "function": null + }, + { + "label": "certified_active_set_solve", + "path": "likelihood_breakdown/active_set_steps.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "certified_active_set_solve", + "path": "likelihood_breakdown/library_solver_injection.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "pdip_solve", + "path": "PyAutoArray/autoarray/util/jax_nnls.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "pdip_solve", + "path": "PyAutoArray/autoarray/inversion/inversion/inversion_util.py", + "lines": [ + 256, + 488 + ], + "requires": null, + "function": null + }, + { + "label": "mapped_reconstruction", + "path": "PyAutoArray/autoarray/inversion/inversion/inversion_util.py", + "lines": [ + 156, + 200 + ], + "requires": null, + "function": null + }, + { + "label": "curvature_matrix_F", + "path": "PyAutoArray/autoarray/inversion/inversion/inversion_util.py", + "lines": [ + 12, + 155 + ], + "requires": null, + "function": null + }, + { + "label": "reconstruction_scatter", + "path": "PyAutoArray/autoarray/inversion/inversion/inversion_util.py", + "lines": [ + 201, + 255 + ], + "requires": null, + "function": null + }, + { + "label": "data_vector_D", + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py", + "lines": [ + 54, + 73 + ], + "requires": null, + "function": null + }, + { + "label": "curvature_matrix_F", + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py", + "lines": [ + 74, + 110 + ], + "requires": null, + "function": null + }, + { + "label": "data_vector_D", + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py", + "lines": null, + "requires": null, + "function": "data_vector_via_blurred_mapping_matrix_from" + }, + { + "label": "curvature_matrix_F", + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "likelihood_breakdown/psf_cube_injection.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": [ + 1086, + 1300 + ], + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": [ + 632, + 642 + ], + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": [ + 670, + 691 + ], + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": null, + "requires": { + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": [ + 1086, + 1300 + ] + }, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": null, + "requires": { + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py", + "lines": [ + 119, + 150 + ] + }, + "function": null + }, + { + "label": "psf_convolution_image", + "path": "PyAutoArray/autoarray/operators/convolver.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "psf_convolution_mapping_matrix", + "path": "PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py", + "lines": [ + 119, + 150 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_qhull_callback", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 139, + 172 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_seed_argmin", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 173, + 207 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_locate_walk", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 208, + 372 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_dual_areas", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 373, + 396 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_dual_areas", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 437, + 494 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_dual_areas", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 605, + 615 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_interpolation_weights", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 616, + 695 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_interpolation_weights", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": [ + 896, + 1000 + ], + "requires": null, + "function": null + }, + { + "label": "mesh_construction", + "path": "PyAutoArray/autoarray/inversion/mesh/interpolator/delaunay.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "border_relocator", + "path": "PyAutoArray/autoarray/inversion/mesh/border_relocator.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "mesh_construction", + "path": "PyAutoArray/autoarray/inversion/mesh/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "mapping_matrix", + "path": "PyAutoArray/autoarray/inversion/mappers/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "mapping_matrix", + "path": "PyAutoArray/autoarray/inversion/mappings/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "mapping_matrix", + "path": "PyAutoArray/autoarray/inversion/linear_obj/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "regularization_H", + "path": "PyAutoArray/autoarray/inversion/regularization/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "chi_squared_evidence", + "path": "PyAutoArray/autoarray/fit/fit_util.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "chi_squared_evidence", + "path": "PyAutoArray/autoarray/fit/fit_dataset.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "ray_trace_mesh_grid", + "path": "PyAutoLens/autolens/lens/to_inversion.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "ray_trace_mesh_grid", + "path": "PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "mass_profile_deflections", + "path": "PyAutoGalaxy/autogalaxy/profiles/mass/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "light_profile_image", + "path": "PyAutoGalaxy/autogalaxy/profiles/light/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "light_profile_image", + "path": "PyAutoGalaxy/autogalaxy/operate/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "ray_trace_data_grid", + "path": "PyAutoLens/autolens/lens/tracer.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "ray_trace_data_grid", + "path": "PyAutoLens/autolens/lens/tracer_util.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "grids_and_structures", + "path": "PyAutoArray/autoarray/structures/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "grids_and_structures", + "path": "PyAutoArray/autoarray/operators/over_sampling/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "grids_and_structures", + "path": "PyAutoArray/autoarray/geometry/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "inversion_other", + "path": "PyAutoArray/autoarray/inversion/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "fit_imaging_other", + "path": "PyAutoLens/autolens/imaging/fit_imaging.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "fit_imaging_other", + "path": "PyAutoGalaxy/autogalaxy/imaging/fit_imaging.py", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "fit_imaging_other", + "path": "PyAutoArray/autoarray/fit/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "analysis_other", + "path": "PyAutoLens/autolens/analysis/", + "lines": null, + "requires": null, + "function": null + }, + { + "label": "analysis_other", + "path": "PyAutoGalaxy/autogalaxy/analysis/", + "lines": null, + "requires": null, + "function": null + } + ], + "trace_timing": { + "traced_wall_ms": 41.83445020799991, + "untraced_wall_ms": 40.79158066600212, + "profiler_overhead_ms": 1.0428695419977885, + "profiler_overhead_pct": 2.556580365288398 + }, + "jit_phases": { + "b_s3_pdip_library_likelihood_jit": { + "lower_s": 1.2676979089992528, + "compile_s": 3.3904807580001943, + "first_call_s": 0.10616169499917305, + "steady_per_call_s": 0.038885783699879536 + }, + "d_s3_certified_fallback_library_likelihood_jit": { + "lower_s": 0.4695259440013615, + "compile_s": 3.766263505000097, + "first_call_s": 0.05183702700014692, + "steady_per_call_s": 0.030293899599928408 + } + }, + "peak_bytes": { + "after_setup": 85616640, + "after_routes": 1197479168, + "after_all": 59620975616, + "note": "jax.devices()[0].memory_stats()['peak_bytes_in_use']; None on a backend that does not report it (CPU). Process-wide high-water marks." + }, + "note": "Every stage row is a MEASURED sum of GPU kernel durations joined to library source through the optimized HLO of ONE program \u2014 not arithmetic across compilations. The rows attribute the command-buffers-OFF program: kernel time is the same as production, the launch overhead the CUDA graphs remove is not, and command_buffers.* carries both walls and their delta. sum_ms = kernel rows + measured device_idle_ms; the residual against the wall is host_outside_span_ms and is reported, not absorbed. mixed_fusion.prorated_estimate_ms is an ESTIMATE and is never part of the table. No row may be quoted if reconciliation_pct is outside 5 % or unjoined_ms is non-zero.", + "vmap": { + "batch": 50, + "lanes_mode": "captured", + "arms": [ + "vmap", + "scalar" + ], + "draw_seed": 0, + "fallback": true, + "composition": "jax.jit(jax.vmap(fn))", + "composition_provenance": "Current Fitness._vmap after PyAutoFit#1638. Array 343376 used the retired jax.vmap(jax.jit(fn)) composition and is historical evidence only.", + "headline_arm": "scalar", + "lane_rtol": 1e-09, + "lanes": [ + { + "lane": 0, + "draw_name": "call00015_lane00", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.0017002711605432041, + "centre_1": -0.009377257327484623, + "ell_comps_0": -0.002548851608736212, + "ell_comps_1": -0.004262475027349674, + "einstein_radius": -0.0230617600435421 + }, + "log_likelihood_vmap": 12361.442851754779, + "log_likelihood_scalar": 18463.078970707007, + "log_likelihood_library_pdip": 12361.442851754779, + "log_likelihood_library_pdip_scalar": 18463.078970707007, + "rel_diff_vmap_vs_library_pdip": 0.0, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 6101.636118952229, + "rel_diff": 0.3304777133127638, + "rel_diff_scalar_vs_library_pdip": 0.4936022592286681, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6101.636118952229, + "rel_diff_library_pdip_vmap_vs_scalar": 0.3304777133127638, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 1, + "draw_name": "call00015_lane01", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.00044835385344320865, + "centre_1": -0.003464237160596487, + "ell_comps_0": -0.0010036884316776545, + "ell_comps_1": 0.0020035511501456356, + "einstein_radius": -0.05761540720338343 + }, + "log_likelihood_vmap": 9549.7408319842, + "log_likelihood_scalar": 15734.21749633948, + "log_likelihood_library_pdip": 9549.7408319842, + "log_likelihood_library_pdip_scalar": 15734.21749633948, + "rel_diff_vmap_vs_library_pdip": 0.0, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 6184.476664355279, + "rel_diff": 0.39305905525928314, + "rel_diff_scalar_vs_library_pdip": 0.6476067542735919, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6184.476664355279, + "rel_diff_library_pdip_vmap_vs_scalar": 0.39305905525928314, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 2, + "draw_name": "call00015_lane02", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.0017572218110215735, + "centre_1": 0.0022774942133795186, + "ell_comps_0": 0.0023932647815035485, + "ell_comps_1": -0.011727950927316913, + "einstein_radius": -0.027234805142873908 + }, + "log_likelihood_vmap": 12681.013488957102, + "log_likelihood_scalar": 18706.16598652238, + "log_likelihood_library_pdip": 12681.013488957102, + "log_likelihood_library_pdip_scalar": 18706.16598652238, + "rel_diff_vmap_vs_library_pdip": 0.0, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 6025.152497565279, + "rel_diff": 0.3220944634997009, + "rel_diff_scalar_vs_library_pdip": 0.47513177892383057, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6025.152497565279, + "rel_diff_library_pdip_vmap_vs_scalar": 0.3220944634997009, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 3, + "draw_name": "call00015_lane03", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.002862791114730316, + "centre_1": 0.0038524808804676603, + "ell_comps_0": 0.006111415425061918, + "ell_comps_1": -0.022191169695991525, + "einstein_radius": -0.03531000166767062 + }, + "log_likelihood_vmap": 25946.740782577886, + "log_likelihood_scalar": -22166.221752721794, + "log_likelihood_library_pdip": 25946.7407869777, + "log_likelihood_library_pdip_scalar": -22166.221751589714, + "rel_diff_vmap_vs_library_pdip": 1.6957101707550903e-10, + "rel_diff_scalar_vs_library_pdip_scalar": 5.1072339246305575e-11, + "abs_diff_nats": 48112.96253529968, + "rel_diff": 2.170553153894704, + "rel_diff_scalar_vs_library_pdip": 1.85429695909425, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 48112.962538567415, + "rel_diff_library_pdip_vmap_vs_scalar": 2.170553154152979, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 4, + "draw_name": "call00015_lane04", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.0017545152650242774, + "centre_1": 0.005096768299803747, + "ell_comps_0": 0.00015519416981613077, + "ell_comps_1": 0.007279341501820333, + "einstein_radius": -0.03249658545615719 + }, + "log_likelihood_vmap": -191783.9938022365, + "log_likelihood_scalar": NaN, + "log_likelihood_library_pdip": -191784.2191265166, + "log_likelihood_library_pdip_scalar": NaN, + "rel_diff_vmap_vs_library_pdip": 1.1748843628563253e-06, + "rel_diff_scalar_vs_library_pdip_scalar": NaN, + "abs_diff_nats": NaN, + "rel_diff": NaN, + "rel_diff_scalar_vs_library_pdip": NaN, + "abs_diff_library_pdip_vmap_vs_scalar_nats": NaN, + "rel_diff_library_pdip_vmap_vs_scalar": NaN, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 5, + "draw_name": "call00015_lane05", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.0009851407640018856, + "centre_1": 0.002274591191563648, + "ell_comps_0": 0.006006903437417319, + "ell_comps_1": 0.008497457839948512, + "einstein_radius": -0.07242218866013372 + }, + "log_likelihood_vmap": 8554.981568652838, + "log_likelihood_scalar": 14761.66092976493, + "log_likelihood_library_pdip": 8554.981568640338, + "log_likelihood_library_pdip_scalar": 14761.660929764923, + "rel_diff_vmap_vs_library_pdip": 1.4611481136310376e-12, + "rel_diff_scalar_vs_library_pdip_scalar": 4.928955927657454e-16, + "abs_diff_nats": 6206.679361112092, + "rel_diff": 0.42045941785569313, + "rel_diff_scalar_vs_library_pdip": 0.7255047028828413, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6206.679361124585, + "rel_diff_library_pdip_vmap_vs_scalar": 0.4204594178565396, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 6, + "draw_name": "call00015_lane06", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.002713857824416392, + "centre_1": 0.00891817739575143, + "ell_comps_0": 0.001298959041684998, + "ell_comps_1": -0.0098959428603974, + "einstein_radius": 0.04379561090121875 + }, + "log_likelihood_vmap": 22689.445185632114, + "log_likelihood_scalar": 21597.126871231616, + "log_likelihood_library_pdip": 22689.445185631354, + "log_likelihood_library_pdip_scalar": 21597.126871231252, + "rel_diff_vmap_vs_library_pdip": 3.351062859675698e-14, + "rel_diff_scalar_vs_library_pdip_scalar": 1.6844735083432473e-14, + "abs_diff_nats": 1092.318314400498, + "rel_diff": 0.05057701984681662, + "rel_diff_scalar_vs_library_pdip": 0.04814213417133156, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 1092.3183144001014, + "rel_diff_library_pdip_vmap_vs_scalar": 0.05057701984679911, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 7, + "draw_name": "call00015_lane07", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.01063269420288399, + "centre_1": -0.0015469073410711704, + "ell_comps_0": -0.012689283848227026, + "ell_comps_1": 0.0004952469855790744, + "einstein_radius": 0.02732727396499479 + }, + "log_likelihood_vmap": 26407.810775865124, + "log_likelihood_scalar": 7413.159096724663, + "log_likelihood_library_pdip": 26407.8107762239, + "log_likelihood_library_pdip_scalar": 7413.159096694308, + "rel_diff_vmap_vs_library_pdip": 1.3586036078326026e-11, + "rel_diff_scalar_vs_library_pdip_scalar": 4.094785336511846e-12, + "abs_diff_nats": 18994.65167914046, + "rel_diff": 2.5622884159511456, + "rel_diff_scalar_vs_library_pdip": 0.7192815731851937, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 18994.651679529594, + "rel_diff_library_pdip_vmap_vs_scalar": 2.5622884160141295, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 8, + "draw_name": "call00015_lane08", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.003586333218755102, + "centre_1": 0.0002442650473125539, + "ell_comps_0": -0.0025095685188555317, + "ell_comps_1": 0.008402687166147546, + "einstein_radius": 0.003809182535237543 + }, + "log_likelihood_vmap": 13032.333063604052, + "log_likelihood_scalar": 19060.20267912919, + "log_likelihood_library_pdip": 13032.333063604052, + "log_likelihood_library_pdip_scalar": 19060.20267912919, + "rel_diff_vmap_vs_library_pdip": 0.0, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 6027.869615525138, + "rel_diff": 0.3162542244173311, + "rel_diff_scalar_vs_library_pdip": 0.46253188789039046, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6027.869615525138, + "rel_diff_library_pdip_vmap_vs_scalar": 0.3162542244173311, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 9, + "draw_name": "call00015_lane09", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.004569070502203608, + "centre_1": -0.0008437281377326854, + "ell_comps_0": 0.016330335737132294, + "ell_comps_1": 0.007271610957481866, + "einstein_radius": -0.0644363448871137 + }, + "log_likelihood_vmap": 6404.941310219961, + "log_likelihood_scalar": 12782.70332143049, + "log_likelihood_library_pdip": 6404.941310219961, + "log_likelihood_library_pdip_scalar": 12782.70332143049, + "rel_diff_vmap_vs_library_pdip": 0.0, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 6377.762011210529, + "rel_diff": 0.4989368720244072, + "rel_diff_scalar_vs_library_pdip": 0.9957565108417052, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6377.762011210529, + "rel_diff_library_pdip_vmap_vs_scalar": 0.4989368720244072, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 10, + "draw_name": "call00015_lane10", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.00041413552102611065, + "centre_1": -0.004015077828810355, + "ell_comps_0": 0.005329766760357603, + "ell_comps_1": 0.01667480963359283, + "einstein_radius": 0.011021193939315443 + }, + "log_likelihood_vmap": 19837.830792808098, + "log_likelihood_scalar": 25442.23680048131, + "log_likelihood_library_pdip": 19837.830792808127, + "log_likelihood_library_pdip_scalar": 25442.236800481303, + "rel_diff_vmap_vs_library_pdip": 1.4670873423965693e-15, + "rel_diff_scalar_vs_library_pdip_scalar": 2.8597947858286513e-16, + "abs_diff_nats": 5604.406007673213, + "rel_diff": 0.2202796103040433, + "rel_diff_scalar_vs_library_pdip": 0.28251102987051224, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 5604.406007673177, + "rel_diff_library_pdip_vmap_vs_scalar": 0.22027961030404195, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 11, + "draw_name": "call00015_lane11", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.00234856906735493, + "centre_1": -0.0005637310462631455, + "ell_comps_0": 0.002190699592912508, + "ell_comps_1": -0.01675931647125419, + "einstein_radius": -0.1186639473801736 + }, + "log_likelihood_vmap": -9841.364133505398, + "log_likelihood_scalar": -3234.481430921878, + "log_likelihood_library_pdip": -9841.364133505398, + "log_likelihood_library_pdip_scalar": -3234.481430921878, + "rel_diff_vmap_vs_library_pdip": 0.0, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 6606.88270258352, + "rel_diff": 2.0426404799920133, + "rel_diff_scalar_vs_library_pdip": 0.6713381003848917, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6606.88270258352, + "rel_diff_library_pdip_vmap_vs_scalar": 2.0426404799920133, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 12, + "draw_name": "call00015_lane12", + "draw_kind": "captured", + "offsets": { + "centre_0": -9.326736988388313e-05, + "centre_1": -0.0013488200741109593, + "ell_comps_0": 0.00997667014421897, + "ell_comps_1": -0.014348588092779897, + "einstein_radius": -0.02126731799195114 + }, + "log_likelihood_vmap": 12864.38878979598, + "log_likelihood_scalar": 18883.93355609074, + "log_likelihood_library_pdip": 12864.38878979598, + "log_likelihood_library_pdip_scalar": 18883.93355609074, + "rel_diff_vmap_vs_library_pdip": 0.0, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 6019.544766294759, + "rel_diff": 0.3187654070278828, + "rel_diff_scalar_vs_library_pdip": 0.4679231065427264, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6019.544766294759, + "rel_diff_library_pdip_vmap_vs_scalar": 0.3187654070278828, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 13, + "draw_name": "call00015_lane13", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.007013568613743564, + "centre_1": 0.004528745612839986, + "ell_comps_0": -0.018496405934026655, + "ell_comps_1": 0.0014830576999261711, + "einstein_radius": -0.04673040108359361 + }, + "log_likelihood_vmap": 18253.352706160313, + "log_likelihood_scalar": 23869.4880678158, + "log_likelihood_library_pdip": 18253.35270616031, + "log_likelihood_library_pdip_scalar": 23869.4880678158, + "rel_diff_vmap_vs_library_pdip": 1.9930469024816107e-16, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 5616.135361655488, + "rel_diff": 0.23528511988608383, + "rel_diff_scalar_vs_library_pdip": 0.30767692116967127, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 5616.135361655492, + "rel_diff_library_pdip_vmap_vs_scalar": 0.23528511988608397, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 14, + "draw_name": "call00015_lane14", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.005108692197125562, + "centre_1": -0.010240010499870703, + "ell_comps_0": -0.00684600823433492, + "ell_comps_1": -0.002573928604858717, + "einstein_radius": -0.0214638151942923 + }, + "log_likelihood_vmap": 3734.380062297205, + "log_likelihood_scalar": NaN, + "log_likelihood_library_pdip": 3734.2285641203343, + "log_likelihood_library_pdip_scalar": NaN, + "rel_diff_vmap_vs_library_pdip": 4.057014032996304e-05, + "rel_diff_scalar_vs_library_pdip_scalar": NaN, + "abs_diff_nats": NaN, + "rel_diff": NaN, + "rel_diff_scalar_vs_library_pdip": NaN, + "abs_diff_library_pdip_vmap_vs_scalar_nats": NaN, + "rel_diff_library_pdip_vmap_vs_scalar": NaN, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 15, + "draw_name": "call00015_lane15", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.0015375882948530809, + "centre_1": 0.00010861850037634777, + "ell_comps_0": 0.010624594413718456, + "ell_comps_1": -0.00030576693661378264, + "einstein_radius": 0.018140577124415858 + }, + "log_likelihood_vmap": 25472.292467856336, + "log_likelihood_scalar": 25794.985439516327, + "log_likelihood_library_pdip": 25472.292467839754, + "log_likelihood_library_pdip_scalar": 25794.985439523887, + "rel_diff_vmap_vs_library_pdip": 6.509782118613646e-13, + "rel_diff_scalar_vs_library_pdip_scalar": 2.9306936337918376e-13, + "abs_diff_nats": 322.6929716599916, + "rel_diff": 0.01250991098314969, + "rel_diff_scalar_vs_library_pdip": 0.01266839143292627, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 322.6929716841332, + "rel_diff_library_pdip_vmap_vs_scalar": 0.012509910984081926, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 16, + "draw_name": "call00015_lane16", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.001227759218702405, + "centre_1": 0.016003430753678986, + "ell_comps_0": 0.012636219938870381, + "ell_comps_1": -0.00698902153230205, + "einstein_radius": -0.05127757912787545 + }, + "log_likelihood_vmap": 9903.117799881344, + "log_likelihood_scalar": 16088.259041698664, + "log_likelihood_library_pdip": 9903.117799881365, + "log_likelihood_library_pdip_scalar": 16088.259041698664, + "rel_diff_vmap_vs_library_pdip": 2.204141491966476e-15, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 6185.14124181732, + "rel_diff": 0.38445062488030823, + "rel_diff_scalar_vs_library_pdip": 0.6245650477763067, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6185.141241817299, + "rel_diff_library_pdip_vmap_vs_scalar": 0.3844506248803069, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 17, + "draw_name": "call00015_lane17", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.005083750984013619, + "centre_1": 0.0010204202759534836, + "ell_comps_0": -0.00849477917205129, + "ell_comps_1": 0.011231146696452643, + "einstein_radius": 0.01601143147676365 + }, + "log_likelihood_vmap": NaN, + "log_likelihood_scalar": NaN, + "log_likelihood_library_pdip": NaN, + "log_likelihood_library_pdip_scalar": NaN, + "rel_diff_vmap_vs_library_pdip": NaN, + "rel_diff_scalar_vs_library_pdip_scalar": NaN, + "abs_diff_nats": NaN, + "rel_diff": NaN, + "rel_diff_scalar_vs_library_pdip": NaN, + "abs_diff_library_pdip_vmap_vs_scalar_nats": NaN, + "rel_diff_library_pdip_vmap_vs_scalar": NaN, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 18, + "draw_name": "call00015_lane18", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.0024988577690690035, + "centre_1": -0.001222125045613948, + "ell_comps_0": -0.01895695410631662, + "ell_comps_1": -0.0031279904204321676, + "einstein_radius": 0.01799244839027403 + }, + "log_likelihood_vmap": 12512.778742279312, + "log_likelihood_scalar": 18620.968710155976, + "log_likelihood_library_pdip": 12512.778742279312, + "log_likelihood_library_pdip_scalar": 18620.968710155976, + "rel_diff_vmap_vs_library_pdip": 0.0, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 6108.189967876664, + "rel_diff": 0.32802750828667815, + "rel_diff_scalar_vs_library_pdip": 0.4881561556936796, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6108.189967876664, + "rel_diff_library_pdip_vmap_vs_scalar": 0.32802750828667815, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 19, + "draw_name": "call00015_lane19", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.010541543200940506, + "centre_1": -0.008441200101276233, + "ell_comps_0": 0.007996538161425107, + "ell_comps_1": 0.0034133978687523603, + "einstein_radius": -0.09425697178670522 + }, + "log_likelihood_vmap": 841.7604744383425, + "log_likelihood_scalar": 7217.440786173451, + "log_likelihood_library_pdip": 841.7604744383425, + "log_likelihood_library_pdip_scalar": 7217.440786173451, + "rel_diff_vmap_vs_library_pdip": 0.0, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 6375.680311735108, + "rel_diff": 0.8833713362704805, + "rel_diff_scalar_vs_library_pdip": 7.574221533731703, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6375.680311735108, + "rel_diff_library_pdip_vmap_vs_scalar": 0.8833713362704805, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 20, + "draw_name": "call00016_lane00", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.005867542895042925, + "centre_1": -0.0036003092794745194, + "ell_comps_0": 0.007604733839451844, + "ell_comps_1": -0.020467070639514355, + "einstein_radius": -0.05806481349005321 + }, + "log_likelihood_vmap": -87664.79966936076, + "log_likelihood_scalar": -194096.1993476826, + "log_likelihood_library_pdip": -87664.72619817995, + "log_likelihood_library_pdip_scalar": -194096.25925645384, + "rel_diff_vmap_vs_library_pdip": 8.380928566127606e-07, + "rel_diff_scalar_vs_library_pdip_scalar": 3.086549502635267e-07, + "abs_diff_nats": 106431.39967832183, + "rel_diff": 0.5483435535369362, + "rel_diff_scalar_vs_library_pdip": 1.2140740953082714, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 106431.53305827388, + "rel_diff_library_pdip_vmap_vs_scalar": 0.5483440714725416, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 21, + "draw_name": "call00016_lane01", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.0002320831105386773, + "centre_1": -0.00045439154934870857, + "ell_comps_0": -0.0009373257044041558, + "ell_comps_1": -0.002022036658350745, + "einstein_radius": -0.021310835332350786 + }, + "log_likelihood_vmap": -145323.7429922757, + "log_likelihood_scalar": NaN, + "log_likelihood_library_pdip": -145323.96707457223, + "log_likelihood_library_pdip_scalar": NaN, + "rel_diff_vmap_vs_library_pdip": 1.5419500379079043e-06, + "rel_diff_scalar_vs_library_pdip_scalar": NaN, + "abs_diff_nats": NaN, + "rel_diff": NaN, + "rel_diff_scalar_vs_library_pdip": NaN, + "abs_diff_library_pdip_vmap_vs_scalar_nats": NaN, + "rel_diff_library_pdip_vmap_vs_scalar": NaN, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 22, + "draw_name": "call00016_lane02", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.003012817377174628, + "centre_1": 0.003045021384718303, + "ell_comps_0": 0.014529935343015603, + "ell_comps_1": 0.0009399886282723802, + "einstein_radius": 0.0733730645770998 + }, + "log_likelihood_vmap": 4257.895598700154, + "log_likelihood_scalar": 10567.732718102652, + "log_likelihood_library_pdip": 4257.895598700154, + "log_likelihood_library_pdip_scalar": 10567.732718102652, + "rel_diff_vmap_vs_library_pdip": 0.0, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 6309.8371194024985, + "rel_diff": 0.5970852298898204, + "rel_diff_scalar_vs_library_pdip": 1.4819144746829302, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6309.8371194024985, + "rel_diff_library_pdip_vmap_vs_scalar": 0.5970852298898204, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 23, + "draw_name": "call00016_lane03", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.0005625414873401426, + "centre_1": -0.0026712523310752395, + "ell_comps_0": 0.0033797753961079327, + "ell_comps_1": -0.005313712669892466, + "einstein_radius": 0.007215069179382638 + }, + "log_likelihood_vmap": 26248.6900807009, + "log_likelihood_scalar": 25140.10625017664, + "log_likelihood_library_pdip": 26248.690080657925, + "log_likelihood_library_pdip_scalar": 25140.106250181947, + "rel_diff_vmap_vs_library_pdip": 1.6372414591401669e-12, + "rel_diff_scalar_vs_library_pdip_scalar": 2.1112922223661625e-13, + "abs_diff_nats": 1108.5838305242614, + "rel_diff": 0.04409622694082577, + "rel_diff_scalar_vs_library_pdip": 0.042233872512296405, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 1108.5838304759782, + "rel_diff_library_pdip_vmap_vs_scalar": 0.044096226938895894, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 24, + "draw_name": "call00016_lane04", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.0043072184823141684, + "centre_1": 0.006053631800564527, + "ell_comps_0": 0.012890552900425963, + "ell_comps_1": -0.007502151161552584, + "einstein_radius": 0.062452352201186834 + }, + "log_likelihood_vmap": 7900.668001758997, + "log_likelihood_scalar": 14131.499763663749, + "log_likelihood_library_pdip": 7900.668001758997, + "log_likelihood_library_pdip_scalar": 14131.499763663749, + "rel_diff_vmap_vs_library_pdip": 0.0, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 6230.831761904752, + "rel_diff": 0.4409179397876832, + "rel_diff_scalar_vs_library_pdip": 0.7886461955517592, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6230.831761904752, + "rel_diff_library_pdip_vmap_vs_scalar": 0.4409179397876832, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 25, + "draw_name": "call00016_lane05", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.0030737862156077662, + "centre_1": -0.00663154900697737, + "ell_comps_0": 0.009619752399897409, + "ell_comps_1": 0.003473222516242081, + "einstein_radius": 0.10148938946995334 + }, + "log_likelihood_vmap": 4214.89727104437, + "log_likelihood_scalar": -39972.18336546472, + "log_likelihood_library_pdip": 4214.897270967747, + "log_likelihood_library_pdip_scalar": -39972.18336541251, + "rel_diff_vmap_vs_library_pdip": 1.817911676347283e-11, + "rel_diff_scalar_vs_library_pdip_scalar": 1.3062151587285816e-12, + "abs_diff_nats": 44187.08063650909, + "rel_diff": 1.1054457604306391, + "rel_diff_scalar_vs_library_pdip": 10.483548659843622, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 44187.080636380255, + "rel_diff_library_pdip_vmap_vs_scalar": 1.10544576042886, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 26, + "draw_name": "call00016_lane06", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.004341357254970946, + "centre_1": -0.00831790119054492, + "ell_comps_0": 0.013271194675385727, + "ell_comps_1": 0.007143121048925718, + "einstein_radius": -0.03403515269856339 + }, + "log_likelihood_vmap": 12330.81352531795, + "log_likelihood_scalar": 18491.477137097572, + "log_likelihood_library_pdip": 12330.813594141298, + "log_likelihood_library_pdip_scalar": 18491.477137097572, + "rel_diff_vmap_vs_library_pdip": 5.581411804723038e-09, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 6160.663611779622, + "rel_diff": 0.33316233019698077, + "rel_diff_scalar_vs_library_pdip": 0.4996153332399227, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6160.663542956274, + "rel_diff_library_pdip_vmap_vs_scalar": 0.33316232647508515, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 27, + "draw_name": "call00016_lane07", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.0020237232058323484, + "centre_1": -0.004253084460605827, + "ell_comps_0": 0.0003981152674067054, + "ell_comps_1": 0.010712381327540496, + "einstein_radius": 0.05337705451403374 + }, + "log_likelihood_vmap": 23198.58442083717, + "log_likelihood_scalar": -3056.2632775354286, + "log_likelihood_library_pdip": 23198.584421009087, + "log_likelihood_library_pdip_scalar": -3056.263277475344, + "rel_diff_vmap_vs_library_pdip": 7.41063865742753e-12, + "rel_diff_scalar_vs_library_pdip_scalar": 1.9659581823579156e-11, + "abs_diff_nats": 26254.8476983726, + "rel_diff": 8.59050589370184, + "rel_diff_scalar_vs_library_pdip": 1.131743524607804, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 26254.84769848443, + "rel_diff_library_pdip_vmap_vs_scalar": 8.590505893907316, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 28, + "draw_name": "call00016_lane08", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.0057476736194228255, + "centre_1": 0.008141073378308437, + "ell_comps_0": -0.009529050432167334, + "ell_comps_1": 0.009276150055593011, + "einstein_radius": -0.015892796339859627 + }, + "log_likelihood_vmap": 24795.477251128817, + "log_likelihood_scalar": 25862.74634099714, + "log_likelihood_library_pdip": 24795.47725115031, + "log_likelihood_library_pdip_scalar": 25862.746340985912, + "rel_diff_vmap_vs_library_pdip": 8.668185159170804e-13, + "rel_diff_scalar_vs_library_pdip_scalar": 4.3409166415143557e-13, + "abs_diff_nats": 1067.2690898683213, + "rel_diff": 0.04126665729139935, + "rel_diff_scalar_vs_library_pdip": 0.04304289363082598, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 1067.2690898356013, + "rel_diff_library_pdip_vmap_vs_scalar": 0.04126665729015212, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 29, + "draw_name": "call00016_lane09", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.003084920430777067, + "centre_1": 0.00015583680770681115, + "ell_comps_0": -0.0019086479387713726, + "ell_comps_1": 0.00331115264567712, + "einstein_radius": 0.05906796603811526 + }, + "log_likelihood_vmap": 16899.784149907606, + "log_likelihood_scalar": 22571.886871189417, + "log_likelihood_library_pdip": 16899.784149907617, + "log_likelihood_library_pdip_scalar": 22571.886871189414, + "rel_diff_vmap_vs_library_pdip": 6.458033028389183e-16, + "rel_diff_scalar_vs_library_pdip_scalar": 1.611730037392311e-16, + "abs_diff_nats": 5672.102721281812, + "rel_diff": 0.2512905878737874, + "rel_diff_scalar_vs_library_pdip": 0.3356316667105365, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 5672.102721281797, + "rel_diff_library_pdip_vmap_vs_scalar": 0.2512905878737868, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 30, + "draw_name": "call00016_lane10", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.002767285132569693, + "centre_1": -0.004552229029232065, + "ell_comps_0": -0.0015080579051976115, + "ell_comps_1": -0.004551384501496932, + "einstein_radius": 0.02027269778755647 + }, + "log_likelihood_vmap": 12361.076296418418, + "log_likelihood_scalar": 18458.059022989044, + "log_likelihood_library_pdip": 12361.07629641841, + "log_likelihood_library_pdip_scalar": 18458.059022989044, + "rel_diff_vmap_vs_library_pdip": 5.8861845358009925e-16, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 6096.982726570626, + "rel_diff": 0.3303154854460585, + "rel_diff_scalar_vs_library_pdip": 0.49324044123384453, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6096.9827265706335, + "rel_diff_library_pdip_vmap_vs_scalar": 0.3303154854460589, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 31, + "draw_name": "call00016_lane11", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.008103082773010941, + "centre_1": -0.001496996210041656, + "ell_comps_0": -0.009232329483646967, + "ell_comps_1": -0.007564169499060556, + "einstein_radius": -0.02624013973482553 + }, + "log_likelihood_vmap": 24357.983602745873, + "log_likelihood_scalar": 26925.60946634489, + "log_likelihood_library_pdip": 24357.98360274631, + "log_likelihood_library_pdip_scalar": 26925.60946634489, + "rel_diff_vmap_vs_library_pdip": 1.7922561406182433e-14, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 2567.625863599016, + "rel_diff": 0.09535999052531632, + "rel_diff_scalar_vs_library_pdip": 0.10541208605252059, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 2567.6258635985796, + "rel_diff_library_pdip_vmap_vs_scalar": 0.09535999052530011, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 32, + "draw_name": "call00016_lane12", + "draw_kind": "captured", + "offsets": { + "centre_0": 4.759711172546759e-05, + "centre_1": 0.0036654339222604716, + "ell_comps_0": 0.004022217919654, + "ell_comps_1": 0.01193757547850259, + "einstein_radius": 0.002395607277275502 + }, + "log_likelihood_vmap": 13062.078473348418, + "log_likelihood_scalar": 19082.159112472924, + "log_likelihood_library_pdip": 13062.078473348418, + "log_likelihood_library_pdip_scalar": 19082.159112472924, + "rel_diff_vmap_vs_library_pdip": 0.0, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 6020.080639124506, + "rel_diff": 0.3154821529178803, + "rel_diff_scalar_vs_library_pdip": 0.46088229001286035, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6020.080639124506, + "rel_diff_library_pdip_vmap_vs_scalar": 0.3154821529178803, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 33, + "draw_name": "call00016_lane13", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.003846970544705924, + "centre_1": -0.0007374136612465206, + "ell_comps_0": 0.007065226735817748, + "ell_comps_1": -0.009165455995317547, + "einstein_radius": 0.09219663637797715 + }, + "log_likelihood_vmap": 8952.363820636965, + "log_likelihood_scalar": 6443.2809221750795, + "log_likelihood_library_pdip": 8952.363820637438, + "log_likelihood_library_pdip_scalar": 6443.280922175116, + "rel_diff_vmap_vs_library_pdip": 5.2828197602032664e-14, + "rel_diff_scalar_vs_library_pdip_scalar": 5.646158922811033e-15, + "abs_diff_nats": 2509.0828984618856, + "rel_diff": 0.3894107565334721, + "rel_diff_scalar_vs_library_pdip": 0.2802704345726315, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 2509.082898462322, + "rel_diff_library_pdip_vmap_vs_scalar": 0.3894107565335377, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 34, + "draw_name": "call00016_lane14", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.0037825388019084288, + "centre_1": -0.003065771327334386, + "ell_comps_0": 0.011038948212531964, + "ell_comps_1": -0.0036160410925216925, + "einstein_radius": 0.014342279020181925 + }, + "log_likelihood_vmap": 17857.796999636386, + "log_likelihood_scalar": -135343.94634959853, + "log_likelihood_library_pdip": 17857.787940273007, + "log_likelihood_library_pdip_scalar": -135343.94405867252, + "rel_diff_vmap_vs_library_pdip": 5.073060229963693e-07, + "rel_diff_scalar_vs_library_pdip_scalar": 1.6926697507617213e-08, + "abs_diff_nats": 153201.74334923492, + "rel_diff": 1.1319438178159003, + "rel_diff_scalar_vs_library_pdip": 8.578987207277219, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 153201.73199894553, + "rel_diff_library_pdip_vmap_vs_scalar": 1.1319437531134124, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 35, + "draw_name": "call00016_lane15", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.0017154498332041523, + "centre_1": 0.0011514055436451646, + "ell_comps_0": -0.0007443063599393077, + "ell_comps_1": -0.0023611448129624295, + "einstein_radius": -0.0311831287730564 + }, + "log_likelihood_vmap": 11386.703937364357, + "log_likelihood_scalar": 17571.275632183253, + "log_likelihood_library_pdip": 11386.703937364357, + "log_likelihood_library_pdip_scalar": 17571.275632183253, + "rel_diff_vmap_vs_library_pdip": 0.0, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 6184.5716948188965, + "rel_diff": 0.35197055832937585, + "rel_diff_scalar_vs_library_pdip": 0.5431397644866157, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6184.5716948188965, + "rel_diff_library_pdip_vmap_vs_scalar": 0.35197055832937585, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 36, + "draw_name": "call00016_lane16", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.003055539488297464, + "centre_1": 0.003051945877003319, + "ell_comps_0": -0.006735358389710178, + "ell_comps_1": -0.0012390584664703722, + "einstein_radius": 0.011663273859285228 + }, + "log_likelihood_vmap": 12572.966530240072, + "log_likelihood_scalar": 18664.94647956068, + "log_likelihood_library_pdip": 12572.966530240072, + "log_likelihood_library_pdip_scalar": 18664.94647956068, + "rel_diff_vmap_vs_library_pdip": 0.0, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 6091.979949320608, + "rel_diff": 0.3263861461371839, + "rel_diff_scalar_vs_library_pdip": 0.4845300378926791, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6091.979949320608, + "rel_diff_library_pdip_vmap_vs_scalar": 0.3263861461371839, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 37, + "draw_name": "call00016_lane17", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.0077524538129402154, + "centre_1": -0.005118338666305982, + "ell_comps_0": 0.00027166766422631605, + "ell_comps_1": 0.016267874103674553, + "einstein_radius": -0.04229979729843336 + }, + "log_likelihood_vmap": 8851.033470262522, + "log_likelihood_scalar": 15118.859355707224, + "log_likelihood_library_pdip": 8851.033470262522, + "log_likelihood_library_pdip_scalar": 15118.859355707224, + "rel_diff_vmap_vs_library_pdip": 0.0, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 6267.825885444701, + "rel_diff": 0.4145700239666994, + "rel_diff_scalar_vs_library_pdip": 0.7081462189136651, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6267.825885444701, + "rel_diff_library_pdip_vmap_vs_scalar": 0.4145700239666994, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 38, + "draw_name": "call00016_lane18", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.0017903593057855822, + "centre_1": -0.010524614123222099, + "ell_comps_0": -0.014306999199314711, + "ell_comps_1": 0.007149289065143228, + "einstein_radius": -0.007747474284142131 + }, + "log_likelihood_vmap": 12878.633095268153, + "log_likelihood_scalar": 18915.856016800164, + "log_likelihood_library_pdip": 12878.633095268153, + "log_likelihood_library_pdip_scalar": 18915.856016800164, + "rel_diff_vmap_vs_library_pdip": 0.0, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 6037.222921532011, + "rel_diff": 0.31916202556046297, + "rel_diff_scalar_vs_library_pdip": 0.4687782373231984, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6037.222921532011, + "rel_diff_library_pdip_vmap_vs_scalar": 0.31916202556046297, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 39, + "draw_name": "call00016_lane19", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.0053239296297389604, + "centre_1": 0.008576687228070626, + "ell_comps_0": 0.009980595085990314, + "ell_comps_1": 0.0007633634977672295, + "einstein_radius": 0.004680005976448909 + }, + "log_likelihood_vmap": 13069.925693660298, + "log_likelihood_scalar": 19083.97025057711, + "log_likelihood_library_pdip": 13069.925693660298, + "log_likelihood_library_pdip_scalar": 19083.97025057711, + "rel_diff_vmap_vs_library_pdip": 0.0, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 6014.044556916811, + "rel_diff": 0.31513592182082467, + "rel_diff_scalar_vs_library_pdip": 0.46014374510438005, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6014.044556916811, + "rel_diff_library_pdip_vmap_vs_scalar": 0.31513592182082467, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 40, + "draw_name": "call00017_lane00", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.0008412347806356159, + "centre_1": 0.006598872995945007, + "ell_comps_0": 0.013900473273284593, + "ell_comps_1": -0.005813659391784079, + "einstein_radius": -0.06804976453398881 + }, + "log_likelihood_vmap": NaN, + "log_likelihood_scalar": NaN, + "log_likelihood_library_pdip": NaN, + "log_likelihood_library_pdip_scalar": NaN, + "rel_diff_vmap_vs_library_pdip": NaN, + "rel_diff_scalar_vs_library_pdip_scalar": NaN, + "abs_diff_nats": NaN, + "rel_diff": NaN, + "rel_diff_scalar_vs_library_pdip": NaN, + "abs_diff_library_pdip_vmap_vs_scalar_nats": NaN, + "rel_diff_library_pdip_vmap_vs_scalar": NaN, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 41, + "draw_name": "call00017_lane01", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.003999508715210957, + "centre_1": -0.00769170199263835, + "ell_comps_0": 0.014831080350803293, + "ell_comps_1": 0.015077923229574103, + "einstein_radius": 0.015503022880488437 + }, + "log_likelihood_vmap": 26907.481085831296, + "log_likelihood_scalar": -186104.98816361476, + "log_likelihood_library_pdip": 26907.481147022845, + "log_likelihood_library_pdip_scalar": -186104.98819282377, + "rel_diff_vmap_vs_library_pdip": 2.2741463233435565e-09, + "rel_diff_scalar_vs_library_pdip_scalar": 1.569491069725698e-10, + "abs_diff_nats": 213012.46924944606, + "rel_diff": 1.1445822669845662, + "rel_diff_scalar_vs_library_pdip": 7.916477508494183, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 213012.46933984663, + "rel_diff_library_pdip_vmap_vs_scalar": 1.1445822672906756, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 42, + "draw_name": "call00017_lane02", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.004857416783423787, + "centre_1": 0.0006154585970558757, + "ell_comps_0": 0.015723761388199968, + "ell_comps_1": 0.004357231803243995, + "einstein_radius": 0.08960103667317854 + }, + "log_likelihood_vmap": 10018.611642408338, + "log_likelihood_scalar": 1850.3329082253258, + "log_likelihood_library_pdip": 10018.611642406293, + "log_likelihood_library_pdip_scalar": 1850.3329082256969, + "rel_diff_vmap_vs_library_pdip": 2.0407459262434086e-13, + "rel_diff_scalar_vs_library_pdip_scalar": 2.005443651105904e-13, + "abs_diff_nats": 8168.278734183012, + "rel_diff": 4.414491412800573, + "rel_diff_scalar_vs_library_pdip": 0.8153104467695578, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 8168.278734180596, + "rel_diff_library_pdip_vmap_vs_scalar": 4.414491412798382, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 43, + "draw_name": "call00017_lane03", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.0005909901072315682, + "centre_1": -0.0035249289321458922, + "ell_comps_0": -0.019570318149453904, + "ell_comps_1": -0.0022378854759100147, + "einstein_radius": 0.03831892100220591 + }, + "log_likelihood_vmap": 11776.717406871896, + "log_likelihood_scalar": 17930.423030968814, + "log_likelihood_library_pdip": 11776.717406871896, + "log_likelihood_library_pdip_scalar": 17930.42303106947, + "rel_diff_vmap_vs_library_pdip": 0.0, + "rel_diff_scalar_vs_library_pdip_scalar": 5.613676680142992e-12, + "abs_diff_nats": 6153.705624096918, + "rel_diff": 0.3431991321938388, + "rel_diff_scalar_vs_library_pdip": 0.5225314840709463, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6153.705624197573, + "rel_diff_library_pdip_vmap_vs_scalar": 0.34319913219752585, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 44, + "draw_name": "call00017_lane04", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.004632807269896779, + "centre_1": 0.0033795641333986453, + "ell_comps_0": 0.003716514023928419, + "ell_comps_1": 0.009570511240886145, + "einstein_radius": 0.05347929977212873 + }, + "log_likelihood_vmap": 9830.8899496474, + "log_likelihood_scalar": 16076.3203998807, + "log_likelihood_library_pdip": 9830.889949647397, + "log_likelihood_library_pdip_scalar": 16076.3203998807, + "rel_diff_vmap_vs_library_pdip": 3.7005589786123035e-16, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 6245.4304502333, + "rel_diff": 0.3884863137139047, + "rel_diff_scalar_vs_library_pdip": 0.6352863761288781, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 6245.430450233303, + "rel_diff_library_pdip_vmap_vs_scalar": 0.38848631371390496, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 45, + "draw_name": "call00017_lane05", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.0013313844569187569, + "centre_1": -0.0013834462375134267, + "ell_comps_0": 0.007876545038269143, + "ell_comps_1": 0.0004450456034152751, + "einstein_radius": -0.024930043243791555 + }, + "log_likelihood_vmap": 22630.021263048362, + "log_likelihood_scalar": 27238.298521573277, + "log_likelihood_library_pdip": 22630.021263048417, + "log_likelihood_library_pdip_scalar": 27238.298521573277, + "rel_diff_vmap_vs_library_pdip": 2.411384482235559e-15, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 4608.277258524915, + "rel_diff": 0.1691837415936633, + "rel_diff_scalar_vs_library_pdip": 0.2036355690946485, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 4608.27725852486, + "rel_diff_library_pdip_vmap_vs_scalar": 0.1691837415936613, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 46, + "draw_name": "call00017_lane06", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.00030258801276238025, + "centre_1": -0.007076618443973986, + "ell_comps_0": 0.0006107363200167637, + "ell_comps_1": 0.005821629725281707, + "einstein_radius": -0.03151259938944295 + }, + "log_likelihood_vmap": 19042.623793253435, + "log_likelihood_scalar": 24851.5720079757, + "log_likelihood_library_pdip": 19042.623793253435, + "log_likelihood_library_pdip_scalar": 24851.5720079757, + "rel_diff_vmap_vs_library_pdip": 0.0, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 5808.948214722266, + "rel_diff": 0.23374570481328022, + "rel_diff_scalar_vs_library_pdip": 0.30504978083851575, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 5808.948214722266, + "rel_diff_library_pdip_vmap_vs_scalar": 0.23374570481328022, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "PASS", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 47, + "draw_name": "call00017_lane07", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.0020393356884617223, + "centre_1": 0.0023495909216404397, + "ell_comps_0": 0.012417419672426981, + "ell_comps_1": -0.006304388323220575, + "einstein_radius": 0.05447124763041211 + }, + "log_likelihood_vmap": NaN, + "log_likelihood_scalar": -194382.4667276108, + "log_likelihood_library_pdip": NaN, + "log_likelihood_library_pdip_scalar": -194382.49241128948, + "rel_diff_vmap_vs_library_pdip": NaN, + "rel_diff_scalar_vs_library_pdip_scalar": 1.3212958825672065e-07, + "abs_diff_nats": NaN, + "rel_diff": NaN, + "rel_diff_scalar_vs_library_pdip": NaN, + "abs_diff_library_pdip_vmap_vs_scalar_nats": NaN, + "rel_diff_library_pdip_vmap_vs_scalar": NaN, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 48, + "draw_name": "call00017_lane08", + "draw_kind": "captured", + "offsets": { + "centre_0": 0.010490691068653586, + "centre_1": -0.0006585600890167999, + "ell_comps_0": -0.007252615449586587, + "ell_comps_1": 0.0052043671627278075, + "einstein_radius": -0.0051931933095421545 + }, + "log_likelihood_vmap": -6749.753550818328, + "log_likelihood_scalar": -194328.91349993023, + "log_likelihood_library_pdip": -6749.749083178787, + "log_likelihood_library_pdip_scalar": -194328.912766814, + "rel_diff_vmap_vs_library_pdip": 6.618971291979315e-07, + "rel_diff_scalar_vs_library_pdip_scalar": 3.77255357295568e-09, + "abs_diff_nats": 187579.1599491119, + "rel_diff": 0.9652663444196081, + "rel_diff_scalar_vs_library_pdip": 27.79053889339709, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 187579.1636836352, + "rel_diff_library_pdip_vmap_vs_scalar": 0.9652663672786654, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": null, + "passes": null, + "pdip_iter": null + }, + { + "lane": 49, + "draw_name": "call00017_lane09", + "draw_kind": "captured", + "offsets": { + "centre_0": -0.001929041523067183, + "centre_1": -0.0016089226404154909, + "ell_comps_0": -0.005705855480794712, + "ell_comps_1": 0.005684341952592878, + "einstein_radius": 0.011417498230541279 + }, + "log_likelihood_vmap": -193564.21316545212, + "log_likelihood_scalar": -194376.45086011355, + "log_likelihood_library_pdip": -193564.26100352337, + "log_likelihood_library_pdip_scalar": -194376.45086011355, + "rel_diff_vmap_vs_library_pdip": 2.4714309861105003e-07, + "rel_diff_scalar_vs_library_pdip_scalar": 0.0, + "abs_diff_nats": 812.237694661424, + "rel_diff": 0.004178683637175602, + "rel_diff_scalar_vs_library_pdip": 0.0041959701257836815, + "abs_diff_library_pdip_vmap_vs_scalar_nats": 812.1898565901793, + "rel_diff_library_pdip_vmap_vs_scalar": 0.004178437526748989, + "gated": [ + "rel_diff_vmap_vs_library_pdip", + "rel_diff_scalar_vs_library_pdip_scalar" + ], + "status": "FAIL", + "certified": null, + "passes": null, + "pdip_iter": null + } + ], + "lane_pins": [ + { + "pin": "lane 0: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 12361.442851754779, + "reference_value": 12361.442851754779, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 0: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 18463.078970707007, + "reference_value": 18463.078970707007, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 0: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 12361.442851754779, + "reference_value": 18463.078970707007, + "rel_diff": 0.3304777133127638, + "abs_diff_nats": 6101.636118952229, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 0: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 12361.442851754779, + "reference_value": 18463.078970707007, + "rel_diff": 0.3304777133127638, + "abs_diff_nats": 6101.636118952229, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 1: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 9549.7408319842, + "reference_value": 9549.7408319842, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 1: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 15734.21749633948, + "reference_value": 15734.21749633948, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 1: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 9549.7408319842, + "reference_value": 15734.21749633948, + "rel_diff": 0.39305905525928314, + "abs_diff_nats": 6184.476664355279, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 1: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 9549.7408319842, + "reference_value": 15734.21749633948, + "rel_diff": 0.39305905525928314, + "abs_diff_nats": 6184.476664355279, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 2: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 12681.013488957102, + "reference_value": 12681.013488957102, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 2: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 18706.16598652238, + "reference_value": 18706.16598652238, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 2: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 12681.013488957102, + "reference_value": 18706.16598652238, + "rel_diff": 0.3220944634997009, + "abs_diff_nats": 6025.152497565279, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 2: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 12681.013488957102, + "reference_value": 18706.16598652238, + "rel_diff": 0.3220944634997009, + "abs_diff_nats": 6025.152497565279, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 3: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 25946.740782577886, + "reference_value": 25946.7407869777, + "rel_diff": 1.6957101707550903e-10, + "abs_diff_nats": 4.399815225042403e-06, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 3: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -22166.221752721794, + "reference_value": -22166.221751589714, + "rel_diff": 5.1072339246305575e-11, + "abs_diff_nats": 1.1320807971060276e-06, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 3: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 25946.740782577886, + "reference_value": -22166.221752721794, + "rel_diff": 2.170553153894704, + "abs_diff_nats": 48112.96253529968, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 3: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 25946.7407869777, + "reference_value": -22166.221751589714, + "rel_diff": 2.170553154152979, + "abs_diff_nats": 48112.962538567415, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 4: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -191783.9938022365, + "reference_value": -191784.2191265166, + "rel_diff": 1.1748843628563253e-06, + "abs_diff_nats": 0.22532428009435534, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 4: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": NaN, + "reference_value": NaN, + "rel_diff": NaN, + "abs_diff_nats": NaN, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 4: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -191783.9938022365, + "reference_value": NaN, + "rel_diff": NaN, + "abs_diff_nats": NaN, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 4: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -191784.2191265166, + "reference_value": NaN, + "rel_diff": NaN, + "abs_diff_nats": NaN, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 5: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 8554.981568652838, + "reference_value": 8554.981568640338, + "rel_diff": 1.4611481136310376e-12, + "abs_diff_nats": 1.2500095181167126e-08, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 5: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 14761.66092976493, + "reference_value": 14761.660929764923, + "rel_diff": 4.928955927657454e-16, + "abs_diff_nats": 7.275957614183426e-12, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 5: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 8554.981568652838, + "reference_value": 14761.66092976493, + "rel_diff": 0.42045941785569313, + "abs_diff_nats": 6206.679361112092, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 5: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 8554.981568640338, + "reference_value": 14761.660929764923, + "rel_diff": 0.4204594178565396, + "abs_diff_nats": 6206.679361124585, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 6: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 22689.445185632114, + "reference_value": 22689.445185631354, + "rel_diff": 3.351062859675698e-14, + "abs_diff_nats": 7.60337570682168e-10, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 6: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 21597.126871231616, + "reference_value": 21597.126871231252, + "rel_diff": 1.6844735083432473e-14, + "abs_diff_nats": 3.637978807091713e-10, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 6: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 22689.445185632114, + "reference_value": 21597.126871231616, + "rel_diff": 0.05057701984681662, + "abs_diff_nats": 1092.318314400498, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 6: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 22689.445185631354, + "reference_value": 21597.126871231252, + "rel_diff": 0.05057701984679911, + "abs_diff_nats": 1092.3183144001014, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 7: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 26407.810775865124, + "reference_value": 26407.8107762239, + "rel_diff": 1.3586036078326026e-11, + "abs_diff_nats": 3.5877746995538473e-07, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 7: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 7413.159096724663, + "reference_value": 7413.159096694308, + "rel_diff": 4.094785336511846e-12, + "abs_diff_nats": 3.035529516637325e-08, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 7: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 26407.810775865124, + "reference_value": 7413.159096724663, + "rel_diff": 2.5622884159511456, + "abs_diff_nats": 18994.65167914046, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 7: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 26407.8107762239, + "reference_value": 7413.159096694308, + "rel_diff": 2.5622884160141295, + "abs_diff_nats": 18994.651679529594, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 8: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 13032.333063604052, + "reference_value": 13032.333063604052, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 8: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 19060.20267912919, + "reference_value": 19060.20267912919, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 8: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 13032.333063604052, + "reference_value": 19060.20267912919, + "rel_diff": 0.3162542244173311, + "abs_diff_nats": 6027.869615525138, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 8: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 13032.333063604052, + "reference_value": 19060.20267912919, + "rel_diff": 0.3162542244173311, + "abs_diff_nats": 6027.869615525138, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 9: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 6404.941310219961, + "reference_value": 6404.941310219961, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 9: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 12782.70332143049, + "reference_value": 12782.70332143049, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 9: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 6404.941310219961, + "reference_value": 12782.70332143049, + "rel_diff": 0.4989368720244072, + "abs_diff_nats": 6377.762011210529, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 9: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 6404.941310219961, + "reference_value": 12782.70332143049, + "rel_diff": 0.4989368720244072, + "abs_diff_nats": 6377.762011210529, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 10: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 19837.830792808098, + "reference_value": 19837.830792808127, + "rel_diff": 1.4670873423965693e-15, + "abs_diff_nats": 2.9103830456733704e-11, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 10: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 25442.23680048131, + "reference_value": 25442.236800481303, + "rel_diff": 2.8597947858286513e-16, + "abs_diff_nats": 7.275957614183426e-12, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 10: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 19837.830792808098, + "reference_value": 25442.23680048131, + "rel_diff": 0.2202796103040433, + "abs_diff_nats": 5604.406007673213, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 10: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 19837.830792808127, + "reference_value": 25442.236800481303, + "rel_diff": 0.22027961030404195, + "abs_diff_nats": 5604.406007673177, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 11: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -9841.364133505398, + "reference_value": -9841.364133505398, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 11: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -3234.481430921878, + "reference_value": -3234.481430921878, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 11: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -9841.364133505398, + "reference_value": -3234.481430921878, + "rel_diff": 2.0426404799920133, + "abs_diff_nats": 6606.88270258352, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 11: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -9841.364133505398, + "reference_value": -3234.481430921878, + "rel_diff": 2.0426404799920133, + "abs_diff_nats": 6606.88270258352, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 12: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 12864.38878979598, + "reference_value": 12864.38878979598, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 12: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 18883.93355609074, + "reference_value": 18883.93355609074, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 12: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 12864.38878979598, + "reference_value": 18883.93355609074, + "rel_diff": 0.3187654070278828, + "abs_diff_nats": 6019.544766294759, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 12: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 12864.38878979598, + "reference_value": 18883.93355609074, + "rel_diff": 0.3187654070278828, + "abs_diff_nats": 6019.544766294759, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 13: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 18253.352706160313, + "reference_value": 18253.35270616031, + "rel_diff": 1.9930469024816107e-16, + "abs_diff_nats": 3.637978807091713e-12, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 13: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 23869.4880678158, + "reference_value": 23869.4880678158, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 13: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 18253.352706160313, + "reference_value": 23869.4880678158, + "rel_diff": 0.23528511988608383, + "abs_diff_nats": 5616.135361655488, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 13: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 18253.35270616031, + "reference_value": 23869.4880678158, + "rel_diff": 0.23528511988608397, + "abs_diff_nats": 5616.135361655492, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 14: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 3734.380062297205, + "reference_value": 3734.2285641203343, + "rel_diff": 4.057014032996304e-05, + "abs_diff_nats": 0.15149817687051836, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 14: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": NaN, + "reference_value": NaN, + "rel_diff": NaN, + "abs_diff_nats": NaN, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 14: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 3734.380062297205, + "reference_value": NaN, + "rel_diff": NaN, + "abs_diff_nats": NaN, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 14: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 3734.2285641203343, + "reference_value": NaN, + "rel_diff": NaN, + "abs_diff_nats": NaN, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 15: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 25472.292467856336, + "reference_value": 25472.292467839754, + "rel_diff": 6.509782118613646e-13, + "abs_diff_nats": 1.6581907402724028e-08, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 15: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 25794.985439516327, + "reference_value": 25794.985439523887, + "rel_diff": 2.9306936337918376e-13, + "abs_diff_nats": 7.55971996113658e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 15: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 25472.292467856336, + "reference_value": 25794.985439516327, + "rel_diff": 0.01250991098314969, + "abs_diff_nats": 322.6929716599916, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 15: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 25472.292467839754, + "reference_value": 25794.985439523887, + "rel_diff": 0.012509910984081926, + "abs_diff_nats": 322.6929716841332, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 16: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 9903.117799881344, + "reference_value": 9903.117799881365, + "rel_diff": 2.204141491966476e-15, + "abs_diff_nats": 2.1827872842550278e-11, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 16: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 16088.259041698664, + "reference_value": 16088.259041698664, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 16: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 9903.117799881344, + "reference_value": 16088.259041698664, + "rel_diff": 0.38445062488030823, + "abs_diff_nats": 6185.14124181732, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 16: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 9903.117799881365, + "reference_value": 16088.259041698664, + "rel_diff": 0.3844506248803069, + "abs_diff_nats": 6185.141241817299, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 17: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": NaN, + "reference_value": NaN, + "rel_diff": NaN, + "abs_diff_nats": NaN, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 17: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": NaN, + "reference_value": NaN, + "rel_diff": NaN, + "abs_diff_nats": NaN, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 17: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": NaN, + "reference_value": NaN, + "rel_diff": NaN, + "abs_diff_nats": NaN, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 17: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": NaN, + "reference_value": NaN, + "rel_diff": NaN, + "abs_diff_nats": NaN, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 18: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 12512.778742279312, + "reference_value": 12512.778742279312, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 18: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 18620.968710155976, + "reference_value": 18620.968710155976, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 18: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 12512.778742279312, + "reference_value": 18620.968710155976, + "rel_diff": 0.32802750828667815, + "abs_diff_nats": 6108.189967876664, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 18: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 12512.778742279312, + "reference_value": 18620.968710155976, + "rel_diff": 0.32802750828667815, + "abs_diff_nats": 6108.189967876664, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 19: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 841.7604744383425, + "reference_value": 841.7604744383425, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 19: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 7217.440786173451, + "reference_value": 7217.440786173451, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 19: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 841.7604744383425, + "reference_value": 7217.440786173451, + "rel_diff": 0.8833713362704805, + "abs_diff_nats": 6375.680311735108, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 19: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 841.7604744383425, + "reference_value": 7217.440786173451, + "rel_diff": 0.8833713362704805, + "abs_diff_nats": 6375.680311735108, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 20: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -87664.79966936076, + "reference_value": -87664.72619817995, + "rel_diff": 8.380928566127606e-07, + "abs_diff_nats": 0.07347118080360815, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 20: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -194096.1993476826, + "reference_value": -194096.25925645384, + "rel_diff": 3.086549502635267e-07, + "abs_diff_nats": 0.05990877124713734, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 20: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -87664.79966936076, + "reference_value": -194096.1993476826, + "rel_diff": 0.5483435535369362, + "abs_diff_nats": 106431.39967832183, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 20: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -87664.72619817995, + "reference_value": -194096.25925645384, + "rel_diff": 0.5483440714725416, + "abs_diff_nats": 106431.53305827388, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 21: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -145323.7429922757, + "reference_value": -145323.96707457223, + "rel_diff": 1.5419500379079043e-06, + "abs_diff_nats": 0.22408229653956369, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 21: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": NaN, + "reference_value": NaN, + "rel_diff": NaN, + "abs_diff_nats": NaN, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 21: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -145323.7429922757, + "reference_value": NaN, + "rel_diff": NaN, + "abs_diff_nats": NaN, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 21: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -145323.96707457223, + "reference_value": NaN, + "rel_diff": NaN, + "abs_diff_nats": NaN, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 22: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 4257.895598700154, + "reference_value": 4257.895598700154, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 22: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 10567.732718102652, + "reference_value": 10567.732718102652, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 22: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 4257.895598700154, + "reference_value": 10567.732718102652, + "rel_diff": 0.5970852298898204, + "abs_diff_nats": 6309.8371194024985, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 22: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 4257.895598700154, + "reference_value": 10567.732718102652, + "rel_diff": 0.5970852298898204, + "abs_diff_nats": 6309.8371194024985, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 23: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 26248.6900807009, + "reference_value": 26248.690080657925, + "rel_diff": 1.6372414591401669e-12, + "abs_diff_nats": 4.2975443648174405e-08, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 23: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 25140.10625017664, + "reference_value": 25140.106250181947, + "rel_diff": 2.1112922223661625e-13, + "abs_diff_nats": 5.307811079546809e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 23: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 26248.6900807009, + "reference_value": 25140.10625017664, + "rel_diff": 0.04409622694082577, + "abs_diff_nats": 1108.5838305242614, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 23: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 26248.690080657925, + "reference_value": 25140.106250181947, + "rel_diff": 0.044096226938895894, + "abs_diff_nats": 1108.5838304759782, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 24: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 7900.668001758997, + "reference_value": 7900.668001758997, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 24: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 14131.499763663749, + "reference_value": 14131.499763663749, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 24: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 7900.668001758997, + "reference_value": 14131.499763663749, + "rel_diff": 0.4409179397876832, + "abs_diff_nats": 6230.831761904752, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 24: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 7900.668001758997, + "reference_value": 14131.499763663749, + "rel_diff": 0.4409179397876832, + "abs_diff_nats": 6230.831761904752, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 25: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 4214.89727104437, + "reference_value": 4214.897270967747, + "rel_diff": 1.817911676347283e-11, + "abs_diff_nats": 7.662310963496566e-08, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 25: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -39972.18336546472, + "reference_value": -39972.18336541251, + "rel_diff": 1.3062151587285816e-12, + "abs_diff_nats": 5.2212271839380264e-08, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 25: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 4214.89727104437, + "reference_value": -39972.18336546472, + "rel_diff": 1.1054457604306391, + "abs_diff_nats": 44187.08063650909, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 25: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 4214.897270967747, + "reference_value": -39972.18336541251, + "rel_diff": 1.10544576042886, + "abs_diff_nats": 44187.080636380255, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 26: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 12330.81352531795, + "reference_value": 12330.813594141298, + "rel_diff": 5.581411804723038e-09, + "abs_diff_nats": 6.882334855617955e-05, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 26: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 18491.477137097572, + "reference_value": 18491.477137097572, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 26: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 12330.81352531795, + "reference_value": 18491.477137097572, + "rel_diff": 0.33316233019698077, + "abs_diff_nats": 6160.663611779622, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 26: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 12330.813594141298, + "reference_value": 18491.477137097572, + "rel_diff": 0.33316232647508515, + "abs_diff_nats": 6160.663542956274, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 27: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 23198.58442083717, + "reference_value": 23198.584421009087, + "rel_diff": 7.41063865742753e-12, + "abs_diff_nats": 1.71916326507926e-07, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 27: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -3056.2632775354286, + "reference_value": -3056.263277475344, + "rel_diff": 1.9659581823579156e-11, + "abs_diff_nats": 6.008485797792673e-08, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 27: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 23198.58442083717, + "reference_value": -3056.2632775354286, + "rel_diff": 8.59050589370184, + "abs_diff_nats": 26254.8476983726, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 27: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 23198.584421009087, + "reference_value": -3056.263277475344, + "rel_diff": 8.590505893907316, + "abs_diff_nats": 26254.84769848443, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 28: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 24795.477251128817, + "reference_value": 24795.47725115031, + "rel_diff": 8.668185159170804e-13, + "abs_diff_nats": 2.149317879229784e-08, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 28: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 25862.74634099714, + "reference_value": 25862.746340985912, + "rel_diff": 4.3409166415143557e-13, + "abs_diff_nats": 1.1226802598685026e-08, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 28: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 24795.477251128817, + "reference_value": 25862.74634099714, + "rel_diff": 0.04126665729139935, + "abs_diff_nats": 1067.2690898683213, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 28: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 24795.47725115031, + "reference_value": 25862.746340985912, + "rel_diff": 0.04126665729015212, + "abs_diff_nats": 1067.2690898356013, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 29: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 16899.784149907606, + "reference_value": 16899.784149907617, + "rel_diff": 6.458033028389183e-16, + "abs_diff_nats": 1.0913936421275139e-11, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 29: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 22571.886871189417, + "reference_value": 22571.886871189414, + "rel_diff": 1.611730037392311e-16, + "abs_diff_nats": 3.637978807091713e-12, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 29: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 16899.784149907606, + "reference_value": 22571.886871189417, + "rel_diff": 0.2512905878737874, + "abs_diff_nats": 5672.102721281812, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 29: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 16899.784149907617, + "reference_value": 22571.886871189414, + "rel_diff": 0.2512905878737868, + "abs_diff_nats": 5672.102721281797, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 30: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 12361.076296418418, + "reference_value": 12361.07629641841, + "rel_diff": 5.8861845358009925e-16, + "abs_diff_nats": 7.275957614183426e-12, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 30: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 18458.059022989044, + "reference_value": 18458.059022989044, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 30: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 12361.076296418418, + "reference_value": 18458.059022989044, + "rel_diff": 0.3303154854460585, + "abs_diff_nats": 6096.982726570626, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 30: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 12361.07629641841, + "reference_value": 18458.059022989044, + "rel_diff": 0.3303154854460589, + "abs_diff_nats": 6096.9827265706335, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 31: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 24357.983602745873, + "reference_value": 24357.98360274631, + "rel_diff": 1.7922561406182433e-14, + "abs_diff_nats": 4.3655745685100555e-10, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 31: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 26925.60946634489, + "reference_value": 26925.60946634489, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 31: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 24357.983602745873, + "reference_value": 26925.60946634489, + "rel_diff": 0.09535999052531632, + "abs_diff_nats": 2567.625863599016, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 31: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 24357.98360274631, + "reference_value": 26925.60946634489, + "rel_diff": 0.09535999052530011, + "abs_diff_nats": 2567.6258635985796, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 32: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 13062.078473348418, + "reference_value": 13062.078473348418, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 32: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 19082.159112472924, + "reference_value": 19082.159112472924, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 32: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 13062.078473348418, + "reference_value": 19082.159112472924, + "rel_diff": 0.3154821529178803, + "abs_diff_nats": 6020.080639124506, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 32: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 13062.078473348418, + "reference_value": 19082.159112472924, + "rel_diff": 0.3154821529178803, + "abs_diff_nats": 6020.080639124506, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 33: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 8952.363820636965, + "reference_value": 8952.363820637438, + "rel_diff": 5.2828197602032664e-14, + "abs_diff_nats": 4.729372449219227e-10, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 33: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 6443.2809221750795, + "reference_value": 6443.280922175116, + "rel_diff": 5.646158922811033e-15, + "abs_diff_nats": 3.637978807091713e-11, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 33: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 8952.363820636965, + "reference_value": 6443.2809221750795, + "rel_diff": 0.3894107565334721, + "abs_diff_nats": 2509.0828984618856, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 33: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 8952.363820637438, + "reference_value": 6443.280922175116, + "rel_diff": 0.3894107565335377, + "abs_diff_nats": 2509.082898462322, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 34: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 17857.796999636386, + "reference_value": 17857.787940273007, + "rel_diff": 5.073060229963693e-07, + "abs_diff_nats": 0.009059363379492424, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 34: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -135343.94634959853, + "reference_value": -135343.94405867252, + "rel_diff": 1.6926697507617213e-08, + "abs_diff_nats": 0.0022909260005690157, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 34: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 17857.796999636386, + "reference_value": -135343.94634959853, + "rel_diff": 1.1319438178159003, + "abs_diff_nats": 153201.74334923492, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 34: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 17857.787940273007, + "reference_value": -135343.94405867252, + "rel_diff": 1.1319437531134124, + "abs_diff_nats": 153201.73199894553, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 35: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 11386.703937364357, + "reference_value": 11386.703937364357, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 35: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 17571.275632183253, + "reference_value": 17571.275632183253, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 35: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 11386.703937364357, + "reference_value": 17571.275632183253, + "rel_diff": 0.35197055832937585, + "abs_diff_nats": 6184.5716948188965, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 35: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 11386.703937364357, + "reference_value": 17571.275632183253, + "rel_diff": 0.35197055832937585, + "abs_diff_nats": 6184.5716948188965, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 36: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 12572.966530240072, + "reference_value": 12572.966530240072, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 36: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 18664.94647956068, + "reference_value": 18664.94647956068, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 36: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 12572.966530240072, + "reference_value": 18664.94647956068, + "rel_diff": 0.3263861461371839, + "abs_diff_nats": 6091.979949320608, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 36: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 12572.966530240072, + "reference_value": 18664.94647956068, + "rel_diff": 0.3263861461371839, + "abs_diff_nats": 6091.979949320608, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 37: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 8851.033470262522, + "reference_value": 8851.033470262522, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 37: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 15118.859355707224, + "reference_value": 15118.859355707224, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 37: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 8851.033470262522, + "reference_value": 15118.859355707224, + "rel_diff": 0.4145700239666994, + "abs_diff_nats": 6267.825885444701, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 37: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 8851.033470262522, + "reference_value": 15118.859355707224, + "rel_diff": 0.4145700239666994, + "abs_diff_nats": 6267.825885444701, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 38: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 12878.633095268153, + "reference_value": 12878.633095268153, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 38: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 18915.856016800164, + "reference_value": 18915.856016800164, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 38: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 12878.633095268153, + "reference_value": 18915.856016800164, + "rel_diff": 0.31916202556046297, + "abs_diff_nats": 6037.222921532011, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 38: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 12878.633095268153, + "reference_value": 18915.856016800164, + "rel_diff": 0.31916202556046297, + "abs_diff_nats": 6037.222921532011, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 39: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 13069.925693660298, + "reference_value": 13069.925693660298, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 39: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 19083.97025057711, + "reference_value": 19083.97025057711, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 39: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 13069.925693660298, + "reference_value": 19083.97025057711, + "rel_diff": 0.31513592182082467, + "abs_diff_nats": 6014.044556916811, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 39: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 13069.925693660298, + "reference_value": 19083.97025057711, + "rel_diff": 0.31513592182082467, + "abs_diff_nats": 6014.044556916811, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 40: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": NaN, + "reference_value": NaN, + "rel_diff": NaN, + "abs_diff_nats": NaN, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 40: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": NaN, + "reference_value": NaN, + "rel_diff": NaN, + "abs_diff_nats": NaN, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 40: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": NaN, + "reference_value": NaN, + "rel_diff": NaN, + "abs_diff_nats": NaN, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 40: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": NaN, + "reference_value": NaN, + "rel_diff": NaN, + "abs_diff_nats": NaN, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 41: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 26907.481085831296, + "reference_value": 26907.481147022845, + "rel_diff": 2.2741463233435565e-09, + "abs_diff_nats": 6.119154932093807e-05, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 41: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -186104.98816361476, + "reference_value": -186104.98819282377, + "rel_diff": 1.569491069725698e-10, + "abs_diff_nats": 2.920901170000434e-05, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 41: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 26907.481085831296, + "reference_value": -186104.98816361476, + "rel_diff": 1.1445822669845662, + "abs_diff_nats": 213012.46924944606, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 41: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 26907.481147022845, + "reference_value": -186104.98819282377, + "rel_diff": 1.1445822672906756, + "abs_diff_nats": 213012.46933984663, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 42: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 10018.611642408338, + "reference_value": 10018.611642406293, + "rel_diff": 2.0407459262434086e-13, + "abs_diff_nats": 2.0445440895855427e-09, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 42: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 1850.3329082253258, + "reference_value": 1850.3329082256969, + "rel_diff": 2.005443651105904e-13, + "abs_diff_nats": 3.710738383233547e-10, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 42: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 10018.611642408338, + "reference_value": 1850.3329082253258, + "rel_diff": 4.414491412800573, + "abs_diff_nats": 8168.278734183012, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 42: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 10018.611642406293, + "reference_value": 1850.3329082256969, + "rel_diff": 4.414491412798382, + "abs_diff_nats": 8168.278734180596, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 43: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 11776.717406871896, + "reference_value": 11776.717406871896, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 43: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 17930.423030968814, + "reference_value": 17930.42303106947, + "rel_diff": 5.613676680142992e-12, + "abs_diff_nats": 1.0065559763461351e-07, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 43: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 11776.717406871896, + "reference_value": 17930.423030968814, + "rel_diff": 0.3431991321938388, + "abs_diff_nats": 6153.705624096918, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 43: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 11776.717406871896, + "reference_value": 17930.42303106947, + "rel_diff": 0.34319913219752585, + "abs_diff_nats": 6153.705624197573, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 44: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 9830.8899496474, + "reference_value": 9830.889949647397, + "rel_diff": 3.7005589786123035e-16, + "abs_diff_nats": 3.637978807091713e-12, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 44: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 16076.3203998807, + "reference_value": 16076.3203998807, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 44: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 9830.8899496474, + "reference_value": 16076.3203998807, + "rel_diff": 0.3884863137139047, + "abs_diff_nats": 6245.4304502333, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 44: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 9830.889949647397, + "reference_value": 16076.3203998807, + "rel_diff": 0.38848631371390496, + "abs_diff_nats": 6245.430450233303, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 45: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 22630.021263048362, + "reference_value": 22630.021263048417, + "rel_diff": 2.411384482235559e-15, + "abs_diff_nats": 5.4569682106375694e-11, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 45: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 27238.298521573277, + "reference_value": 27238.298521573277, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 45: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 22630.021263048362, + "reference_value": 27238.298521573277, + "rel_diff": 0.1691837415936633, + "abs_diff_nats": 4608.277258524915, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 45: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 22630.021263048417, + "reference_value": 27238.298521573277, + "rel_diff": 0.1691837415936613, + "abs_diff_nats": 4608.27725852486, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 46: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 19042.623793253435, + "reference_value": 19042.623793253435, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 46: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": 24851.5720079757, + "reference_value": 24851.5720079757, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 46: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 19042.623793253435, + "reference_value": 24851.5720079757, + "rel_diff": 0.23374570481328022, + "abs_diff_nats": 5808.948214722266, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 46: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": 19042.623793253435, + "reference_value": 24851.5720079757, + "rel_diff": 0.23374570481328022, + "abs_diff_nats": 5808.948214722266, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 47: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": NaN, + "reference_value": NaN, + "rel_diff": NaN, + "abs_diff_nats": NaN, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 47: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -194382.4667276108, + "reference_value": -194382.49241128948, + "rel_diff": 1.3212958825672065e-07, + "abs_diff_nats": 0.025683678686618805, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 47: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": NaN, + "reference_value": -194382.4667276108, + "rel_diff": NaN, + "abs_diff_nats": NaN, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 47: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": NaN, + "reference_value": -194382.49241128948, + "rel_diff": NaN, + "abs_diff_nats": NaN, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 48: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -6749.753550818328, + "reference_value": -6749.749083178787, + "rel_diff": 6.618971291979315e-07, + "abs_diff_nats": 0.004467639540962409, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 48: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -194328.91349993023, + "reference_value": -194328.912766814, + "rel_diff": 3.77255357295568e-09, + "abs_diff_nats": 0.0007331162341870368, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 48: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -6749.753550818328, + "reference_value": -194328.91349993023, + "rel_diff": 0.9652663444196081, + "abs_diff_nats": 187579.1599491119, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 48: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -6749.749083178787, + "reference_value": -194328.912766814, + "rel_diff": 0.9652663672786654, + "abs_diff_nats": 187579.1636836352, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 49: jit(vmap) arm == jit(vmap) library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -193564.21316545212, + "reference_value": -193564.26100352337, + "rel_diff": 2.4714309861105003e-07, + "abs_diff_nats": 0.0478380712447688, + "within_rtol": false, + "status": "FAIL" + }, + { + "pin": "lane 49: scalar jit arm == scalar jit library PDIP", + "rtol": 1e-09, + "gated": true, + "got": -194376.45086011355, + "reference_value": -194376.45086011355, + "rel_diff": 0.0, + "abs_diff_nats": 0.0, + "within_rtol": true, + "status": "PASS" + }, + { + "pin": "lane 49: jit(vmap) arm vs scalar jit arm (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -193564.21316545212, + "reference_value": -194376.45086011355, + "rel_diff": 0.004178683637175602, + "abs_diff_nats": 812.237694661424, + "within_rtol": false, + "status": "RECORDED" + }, + { + "pin": "lane 49: jit(vmap) library PDIP vs scalar jit library PDIP (cross-composition)", + "rtol": 1e-09, + "gated": false, + "got": -193564.26100352337, + "reference_value": -194376.45086011355, + "rel_diff": 0.004178437526748989, + "abs_diff_nats": 812.1898565901793, + "within_rtol": false, + "status": "RECORDED" + } + ], + "lanes_failed": 12, + "arm_rows": { + "vmap": { + "arm": "vmap", + "program": "jax.jit(jax.vmap(fn))", + "stands_for": "Nautilus(use_jax_vmap=True) \u2014 Fitness._vmap", + "hlo_source": "jax.jit(jax.vmap(fn)).lower(batched_tree) \u2014 the exact current Fitness._vmap composition (PyAutoFit#1638)", + "batch_wall_ms": 1380.0826719001634, + "wall_production_nesting_ms": 1380.0826719001634, + "wall_aot_command_buffers_on_ms": 1384.7394691001682, + "wall_aot_command_buffers_off_ms": 1387.9445350001333, + "command_buffer_delta_ms": 3.2050658999651205, + "production_nesting_vs_aot_on_delta_ms": -4.656797200004803, + "production_nesting_vs_aot_on_delta_pct": -0.33629410469760673, + "wall_per_lane_ms": 27.601653438003268, + "wall_per_lane_command_buffers_off_ms": 27.758890700002667, + "traced_batch_wall_ms": 1398.1739822000236, + "untraced_batch_wall_ms": 1386.9705258002796, + "traced_wall_per_lane_ms": 27.963479644000472, + "callback_count_per_call": 0.0, + "callback_count_per_lane": 0.0, + "callback_expectation": "0 \u2014 the rectangular mesh has no qhull host callback (asserted)", + "host_qhull_ms": 0.0, + "host_tables_ms": 0.0, + "host_qhull_ms_per_lane": 0.0, + "host_tables_ms_per_lane": 0.0, + "host_callback_probe": { + "calls": 0, + "qhull_ms_total": 0.0, + "tables_ms_total": 0.0, + "total_ms_total": 0.0, + "qhull_ms_mean": 0.0, + "tables_ms_mean": 0.0, + "total_ms_mean": 0.0, + "non_finite_calls": 0, + "n_points": [] + }, + "host_callback_records_first": [], + "device_idle_ms": 25.128374800000074, + "device_idle_ms_per_lane": 0.5025674960000015, + "trace": { + "parser": "ProfileData.from_file(xplane) + as_text() + stack_frame_index(proto field 17)", + "stage_audit": { + "mesh_construction": [ + { + "instruction": "fusion.4", + "ms": 1.2055989, + "opcode": "fusion", + "shape": "(f64[50,15361,2]{2,1,0}, s64[50,15361,2]{2,1,0}, s32[50,15361,2]{2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:227", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:227 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_select_fusion", + "ms": 0.5679704999999999, + "opcode": "fusion", + "shape": "(u32[50,2,15361]{2,1,0}, u32[50,2,15361]{2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69 (forward_interp)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:573 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/abstract.py:36 (AbstractInterpolator.mappings)" + ] + }, + { + "instruction": "loop_subtract_transpose_fusion", + "ms": 0.1285674, + "opcode": "fusion", + "shape": "(f64[50,15361,2]{2,1,0}, f64[1536100,1,1,1]{3,2,1,0}, f64[1536100,1,1,1]{3,2,1,0}, f64[50,15361,2]{2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69 (forward_interp)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:573 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/abstract.py:36 (AbstractInterpolator.mappings)" + ] + }, + { + "instruction": "loop_select_fusion.4", + "ms": 0.10479089999999995, + "opcode": "fusion", + "shape": "(u32[50,15361]{1,0}, u32[50,15361]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_select_fusion.1", + "ms": 0.10433960000000003, + "opcode": "fusion", + "shape": "(u32[50,15361]{1,0}, u32[50,15361]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_gather_fusion", + "ms": 0.0626244, + "opcode": "fusion", + "shape": "(f64[1536100,1,1,1]{3,2,1,0}, f64[1536100,1,1,1]{3,2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69 (forward_interp)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:573 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/abstract.py:36 (AbstractInterpolator.mappings)" + ] + } + ], + "mixed_fusion": [ + { + "instruction": "loop_divide_gather_fusion", + "ms": 45.9176651, + "opcode": "fusion", + "shape": "(f64[15361,50,1,1,1521]{4,3,2,1,0}, f64[15361,50,1,1,1521]{4,3,2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_add_multiply_fusion", + "ms": 6.403297800000001, + "opcode": "fusion", + "shape": "(f64[50,1369,1369]{2,1,0}, f64[50,1369,1369]{2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:61", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:61 (initialize)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:72 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:508 (reconstruction_positive_only_from)" + ] + }, + { + "instruction": "input_transpose_fusion.3", + "ms": 1.4863525, + "opcode": "fusion", + "shape": "f64[50,1521,1521]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1078 (AbstractInversion.log_det_curvature_reg_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:347 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "input_transpose_fusion.4", + "ms": 1.4778533, + "opcode": "fusion", + "shape": "f64[50,1521,1521]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1157 (AbstractInversion.log_det_regularization_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:348 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "input_transpose_fusion.5", + "ms": 0.9679617, + "opcode": "fusion", + "shape": "f64[50,1369,1369]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:62", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:62 (initialize)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:72 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:508 (reconstruction_positive_only_from)" + ] + }, + { + "instruction": "input_scatter_fusion.10", + "ms": 0.31571119999999997, + "opcode": "fusion", + "shape": "f64[15361,50,1521]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:353", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:353 (mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:283 (Mapper.mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:91 (AbstractInversionImaging._mapping_matrix_for_convolution_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:137 (AbstractInversionImaging.operated_mapping_matrix_list)" + ] + } + ], + "ray_trace_data_grid": [ + { + "instruction": "input_reduce_fusion.22", + "ms": 0.0029088000000000004, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:506", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:506 (FlatLambdaCDM._simpson_1d)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:644 (FlatLambdaCDM.angular_diameter_distance_kpc_z1z2)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:133 (LensingCosmology.angular_diameter_distance_to_earth_in_kpc_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:362 (LensingCosmology.scaling_factor_between_redshifts_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer_util.py:252 (traced_grid_2d_list_from)" + ] + }, + { + "instruction": "input_reduce_fusion.24", + "ms": 0.0028576, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:506", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:506 (FlatLambdaCDM._simpson_1d)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:644 (FlatLambdaCDM.angular_diameter_distance_kpc_z1z2)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:151 (LensingCosmology.angular_diameter_distance_between_redshifts_in_kpc_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:355 (LensingCosmology.scaling_factor_between_redshifts_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer_util.py:252 (traced_grid_2d_list_from)" + ] + }, + { + "instruction": "input_reduce_fusion.23", + "ms": 0.0026785, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:503", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:503 (FlatLambdaCDM._simpson_1d)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:644 (FlatLambdaCDM.angular_diameter_distance_kpc_z1z2)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:133 (LensingCosmology.angular_diameter_distance_to_earth_in_kpc_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:362 (LensingCosmology.scaling_factor_between_redshifts_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer_util.py:252 (traced_grid_2d_list_from)" + ] + }, + { + "instruction": "input_reduce_fusion.25", + "ms": 0.0026752, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:503", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:503 (FlatLambdaCDM._simpson_1d)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:644 (FlatLambdaCDM.angular_diameter_distance_kpc_z1z2)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:151 (LensingCosmology.angular_diameter_distance_between_redshifts_in_kpc_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:355 (LensingCosmology.scaling_factor_between_redshifts_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer_util.py:252 (traced_grid_2d_list_from)" + ] + }, + { + "instruction": "loop_divide_fusion.1", + "ms": 0.0021663999999999997, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:380", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:380 (LensingCosmology.scaling_factor_between_redshifts_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer_util.py:252 (traced_grid_2d_list_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer.py:632 (Tracer.traced_grid_2d_list_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/structures/decorators/abstract.py:93 (AbstractMaker.evaluate_func)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/structures/decorators/abstract.py:110 (AbstractMaker.result)" + ] + } + ], + "border_relocator": [ + { + "instruction": "custom-call.2", + "ms": 0.044061300000000005, + "opcode": "custom-call", + "shape": "(f64[50,2,2]{2,1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_add_rsqrt_fusion", + "ms": 0.018015999999999997, + "opcode": "fusion", + "shape": "(f64[50,15361]{1,0}, f64[50,15361]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:311", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:311 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:423 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "eigh.0", + "ms": 0.015305600000000003, + "opcode": "custom-call", + "shape": "(f64[50,2,2]{1,2,0}, f64[50,2]{1,0}, s32[50]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_concatenate_fusion.5", + "ms": 0.014816299999999998, + "opcode": "fusion", + "shape": "f64[50,2,15361]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:323", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:323 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:423 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_cosine_sine_fusion", + "ms": 0.0037312, + "opcode": "fusion", + "shape": "(f64[50]{0}, f64[50]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:301", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:301 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:423 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_reduce_fusion.19", + "ms": 0.0034847000000000007, + "opcode": "fusion", + "shape": "f64[50,2]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:232 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + } + ], + "other": [ + { + "instruction": "copy.52", + "ms": 0.1356814000000001, + "opcode": "copy", + "shape": "u32[50,2,15361]{2,1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.53", + "ms": 0.1298094, + "opcode": "copy", + "shape": "u32[50,2,15361]{2,1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.71", + "ms": 0.09438810000000003, + "opcode": "copy", + "shape": "u32[50,15361]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.61", + "ms": 0.0943272, + "opcode": "copy", + "shape": "u32[50,15361]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.62", + "ms": 0.09162300000000001, + "opcode": "copy", + "shape": "u32[50,15361]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.70", + "ms": 0.09062120000000005, + "opcode": "copy", + "shape": "u32[50,15361]{1,0}", + "source": "", + "stack": [] + } + ], + "mapping_matrix": [ + { + "instruction": "loop_broadcast_fusion", + "ms": 5.1748575, + "opcode": "fusion", + "shape": "f64[15361,50,1521]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:353", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:353 (mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:283 (Mapper.mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:91 (AbstractInversionImaging._mapping_matrix_for_convolution_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:137 (AbstractInversionImaging.operated_mapping_matrix_list)" + ] + }, + { + "instruction": "input_scatter_fusion.5", + "ms": 0.17554009999999998, + "opcode": "fusion", + "shape": "f64[50,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:71", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:71 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:362 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + }, + { + "instruction": "loop_divide_fusion", + "ms": 0.0043776, + "opcode": "fusion", + "shape": "f64[50,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:92", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:92 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:362 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + }, + { + "instruction": "input_reduce_fusion.31", + "ms": 0.0040384, + "opcode": "fusion", + "shape": "f64[50]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:362 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + }, + { + "instruction": "loop_compare_fusion.5", + "ms": 0.0019873, + "opcode": "fusion", + "shape": "pred[4]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:54", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:54 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:362 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + } + ], + "psf_convolution_mapping_matrix": [ + { + "instruction": "input_scatter_fusion", + "ms": 84.45183589999999, + "opcode": "fusion", + "shape": "f64[50,1521,180,180]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.25.0", + "ms": 77.0034218, + "opcode": "fft", + "shape": "c128[50,1521,180,91]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.27.0", + "ms": 49.5877415, + "opcode": "fft", + "shape": "c128[50,1521,91,180]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.29.0", + "ms": 47.67285830000001, + "opcode": "fft", + "shape": "f64[50,1521,180,180]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_transpose_fusion.2", + "ms": 26.721038800000002, + "opcode": "fusion", + "shape": "c128[50,1521,91,180]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "wrapped_transpose.2", + "ms": 24.9570844, + "opcode": "fusion", + "shape": "c128[50,1521,180,91]{3,2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + } + ], + "regularization_H": [ + { + "instruction": "wrapped_broadcast", + "ms": 1.0756008000000001, + "opcode": "fusion", + "shape": "f64[50,1521,1521]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:124", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:124 (weighted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:366 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_broadcast_fusion.3", + "ms": 0.0156259, + "opcode": "fusion", + "shape": "f64[1521,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:111", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:111 (weighted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:366 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_scatter_fusion.7", + "ms": 0.0026016, + "opcode": "fusion", + "shape": "f64[1521,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:123 (weighted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:366 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "curvature_matrix_F": [ + { + "instruction": "cublas-lt-matmul.2", + "ms": 331.30548530000004, + "opcode": "custom-call", + "shape": "(f64[50,1521,1521]{2,1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "inversion_other": [ + { + "instruction": "cholesky.77", + "ms": 14.582718400000028, + "opcode": "custom-call", + "shape": "(f64[50,1521,1521]{1,2,0}, s32[50]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1157 (AbstractInversion.log_det_regularization_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:348 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "cholesky.66", + "ms": 14.412367000000076, + "opcode": "custom-call", + "shape": "(f64[50,1521,1521]{1,2,0}, s32[50]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1078 (AbstractInversion.log_det_curvature_reg_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:347 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "input_reduce_fusion.20", + "ms": 0.533624, + "opcode": "fusion", + "shape": "f64[50,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:946", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:946 (AbstractInversion.regularization_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:346 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)", + "/mnt/ral/jnightin/autolens_profiling_wt/certified-solver-phase-c1-lane-rate/scripts/imaging/likelihood_breakdown/fixed_light_trace.py:1195 (_captured_likelihood_fn.._likelihood)" + ] + }, + { + "instruction": "loop_reduce_window_fusion.3", + "ms": 0.007740799999999999, + "opcode": "fusion", + "shape": "s64[6,16]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "input_reduce_fusion.14", + "ms": 0.0072770000000000005, + "opcode": "fusion", + "shape": "f64[50]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:985", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:985 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1157 (AbstractInversion.log_det_regularization_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:348 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "input_reduce_fusion.15", + "ms": 0.007059299999999999, + "opcode": "fusion", + "shape": "f64[50]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:985", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:985 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1078 (AbstractInversion.log_det_curvature_reg_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:347 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + } + ], + "data_vector_D": [ + { + "instruction": "input_reduce_fusion.13", + "ms": 6.548655500000001, + "opcode": "fusion", + "shape": "f64[92,50,1521]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123 (data_vector_via_blurred_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:67 (InversionImagingMapping.data_vector)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:699 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_reduce_fusion.29", + "ms": 0.044154, + "opcode": "fusion", + "shape": "f64[50,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123 (data_vector_via_blurred_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:67 (InversionImagingMapping.data_vector)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:699 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "pdip_solve": [ + { + "instruction": "cholesky.22", + "ms": 319.1686035999691, + "opcode": "custom-call", + "shape": "(f64[50,1369,1369]{1,2,0}, s32[50]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:106", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:106 (factorize_kkt)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:212 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve", + "ms": 53.969414299999876, + "opcode": "custom-call", + "shape": "(f64[50,1369,1]{1,2,0}, s8[800]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:213 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve.2", + "ms": 51.93662079999997, + "opcode": "custom-call", + "shape": "(f64[50,1369,1]{1,2,0}, s8[800]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:217 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve.1", + "ms": 49.369399999999, + "opcode": "custom-call", + "shape": "(f64[50,1369,1]{1,2,0}, s8[800]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:213 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve.3", + "ms": 49.35235709999889, + "opcode": "custom-call", + "shape": "(f64[50,1369,1]{1,2,0}, s8[800]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:217 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "input_transpose_fusion", + "ms": 27.7273895, + "opcode": "fusion", + "shape": "f64[50,1369,1369]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:106", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:106 (factorize_kkt)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:212 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + } + ], + "mapped_reconstruction": [ + { + "instruction": "input_reduce_fusion.16", + "ms": 5.6164285000000005, + "opcode": "fusion", + "shape": "f64[15361,50]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163 (mapped_reconstructed_data_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:120 (InversionImagingMapping._mapped_reconstructed_data_dict_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:196 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + } + ], + "chi_squared_evidence": [ + { + "instruction": "input_reduce_fusion.12", + "ms": 0.009590300000000001, + "opcode": "fusion", + "shape": "f64[92,50]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:90", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:90 (chi_squared_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:87 (AbstractFit.chi_squared)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:293 (FitDataset.chi_squared)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:345 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)" + ] + }, + { + "instruction": "input_reduce_fusion.28", + "ms": 0.004134400000000001, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:104", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:104 (noise_normalization_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:98 (AbstractFit.noise_normalization)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:306 (FitDataset.noise_normalization)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:349 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)" + ] + }, + { + "instruction": "input_reduce_fusion.30", + "ms": 0.0028001000000000002, + "opcode": "fusion", + "shape": "f64[50]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:90", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:90 (chi_squared_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:87 (AbstractFit.chi_squared)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:293 (FitDataset.chi_squared)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:345 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)" + ] + } + ] + }, + "stage_audit_note": "The HLO instructions that contributed most of each stage's milliseconds, with their full source stack. A stage row is only as good as the rules that built it; this is how a reader checks a row against the HLO instead of trusting it.", + "untraced_wall_ms": 1386.9705258002796, + "reconciliation_vs_untraced_pct": 0.8262293096036939, + "wall_basis": "wall_ms is the TRACED run's wall, the run these kernel durations came from. untraced_wall_ms is the same executable without the profiler; the difference is the profiler's overhead and belongs in neither the stages nor the idle row.", + "calls": 10, + "call_split": "per-call (first-instruction recurrence)", + "call_blocks": 10, + "events": 197550, + "streams": [ + "Stream #14(MemcpyD2D,Compute,MemcpyD2H)" + ], + "per_stage_ms": { + "border_relocator": { + "median_ms": 0.11582599999999998, + "min_ms": 0.11135899999999999, + "max_ms": 0.118785 + }, + "chi_squared_evidence": { + "median_ms": 0.016528, + "min_ms": 0.016352, + "max_ms": 0.016736 + }, + "curvature_matrix_F": { + "median_ms": 331.2921185, + "min_ms": 329.554775, + "max_ms": 332.395055 + }, + "data_vector_D": { + "median_ms": 6.595311000000001, + "min_ms": 6.562073, + "max_ms": 6.608345 + }, + "inversion_other": { + "median_ms": 29.558741000000005, + "min_ms": 29.43476999999997, + "max_ms": 29.68869399999997 + }, + "mapped_reconstruction": { + "median_ms": 5.614605, + "min_ms": 5.608428, + "max_ms": 5.631693 + }, + "mapping_matrix": { + "median_ms": 5.3597725, + "min_ms": 5.342087, + "max_ms": 5.376615999999999 + }, + "mesh_construction": { + "median_ms": 2.6078855, + "min_ms": 2.519816999999998, + "max_ms": 2.6771529999999997 + }, + "mixed_fusion": { + "median_ms": 57.10510949999998, + "min_ms": 56.82595200000001, + "max_ms": 57.703630000000004 + }, + "other": { + "median_ms": 0.6708850000000001, + "min_ms": 0.643898, + "max_ms": 0.6846219999999997 + }, + "pdip_solve": { + "median_ms": 609.5597325000058, + "min_ms": 607.8293130000051, + "max_ms": 610.8885070000053 + }, + "psf_convolution_mapping_matrix": { + "median_ms": 323.698167, + "min_ms": 322.10984699999995, + "max_ms": 323.913853 + }, + "ray_trace_data_grid": { + "median_ms": 0.013295999999999999, + "min_ms": 0.012767999999999998, + "max_ms": 0.013601 + }, + "regularization_H": { + "median_ms": 1.0937305, + "min_ms": 1.092214, + "max_ms": 1.095606 + } + }, + "stage_order": [ + "ray_trace_data_grid", + "border_relocator", + "mesh_construction", + "mapping_matrix", + "psf_convolution_mapping_matrix", + "data_vector_D", + "curvature_matrix_F", + "regularization_H", + "pdip_solve", + "mapped_reconstruction", + "chi_squared_evidence", + "inversion_other", + "mixed_fusion", + "other" + ], + "mixed_fusion": { + "ms": 57.10510949999998, + "constituent_stage_sets": { + "curvature_matrix_F + psf_convolution_mapping_matrix": 45.9176651, + "inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": 6.403297800000001, + "inversion_other + regularization_H": 1.5759981000000003, + "curvature_reg_reduce_gather + inversion_other": 1.4863525, + "border_relocator + pdip_solve": 0.9698273000000001, + "border_relocator + mapping_matrix + mesh_construction": 0.31571119999999997, + "mapping_matrix + mesh_construction": 0.2037646, + "grids_and_structures + mass_profile_deflections + ray_trace_data_grid": 0.09233030000000002, + "border_relocator + mesh_construction": 0.07824699999999998, + "inversion_other + mapping_matrix": 0.028825799999999995, + "inversion_other + mapped_reconstruction + reconstruction_scatter": 0.026781100000000006, + "border_relocator + inversion_other": 0.019564900000000003, + "inversion_other + mapped_reconstruction": 0.011452900000000002, + "mapping_matrix + regularization_H": 0.0055072, + "grids_and_structures + mass_profile_deflections": 0.0052287, + "inversion_other + ray_trace_data_grid": 0.005094400000000001, + "border_relocator + inversion_other + mapping_matrix + mesh_construction": 0.0027968000000000003, + "chi_squared_evidence + inversion_other": 0.0020480999999999997, + "inversion_other + mesh_construction": 0.0018945000000000001 + }, + "example_kernels": { + "curvature_matrix_F + psf_convolution_mapping_matrix": [ + "loop_divide_gather_fusion" + ], + "inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": [ + "loop_add_multiply_fusion" + ], + "inversion_other + regularization_H": [ + "input_scatter_fusion.3", + "input_scatter_fusion.4", + "input_scatter_fusion.1", + "input_scatter_fusion.2" + ], + "curvature_reg_reduce_gather + inversion_other": [ + "input_transpose_fusion.3" + ], + "border_relocator + pdip_solve": [ + "loop_compare_fusion.4", + "input_transpose_fusion.5" + ], + "border_relocator + mapping_matrix + mesh_construction": [ + "input_scatter_fusion.10" + ], + "mapping_matrix + mesh_construction": [ + "loop_and_fusion", + "input_scatter_fusion.6" + ], + "grids_and_structures + mass_profile_deflections + ray_trace_data_grid": [ + "loop_sqrt_fusion", + "loop_slice_fusion", + "loop_subtract_fusion.1" + ], + "border_relocator + mesh_construction": [ + "fusion.534", + "loop_select_fusion.5" + ], + "inversion_other + mapping_matrix": [ + "input_concatenate_fusion.1" + ] + }, + "prorated_estimate_ms": { + "curvature_matrix_F": 22.95883255, + "psf_convolution_mapping_matrix": 22.95883255, + "inversion_other": 3.1760662833333333, + "pdip_solve": 2.0857381000000004, + "mapped_reconstruction": 1.6154779333333336, + "reconstruction_scatter": 1.6097514833333335, + "regularization_H": 0.7907526500000002, + "curvature_reg_reduce_gather": 0.74317625, + "border_relocator": 0.6397558666666666, + "mesh_construction": 0.24788931666666664, + "mapping_matrix": 0.22498506666666665, + "grids_and_structures": 0.03339111666666667, + "mass_profile_deflections": 0.03339111666666667, + "ray_trace_data_grid": 0.03332396666666668, + "chi_squared_evidence": 0.0010240499999999999 + }, + "prorated_note": "ESTIMATE ONLY \u2014 a mixed fusion's time split equally across the stages its constituents span. Never summed into the measured table, never reconciled." + }, + "other_sources_ms": { + "copy.52": 0.1356814000000001, + "copy.53": 0.1298094, + "copy.71": 0.09438810000000003, + "copy.61": 0.0943272, + "copy.62": 0.09162300000000001, + "copy.70": 0.09062120000000005, + "loop_slice_fusion.1": 0.013475299999999999, + "loop_reduce_window_fusion.1": 0.006915499999999999, + "loop_reduce_window_fusion": 0.0035424000000000002, + "loop_broadcast_fusion.1": 0.0031138, + "copy.109": 0.0022304, + "copy.54": 0.0019168000000000002, + "copy.63": 0.0018560000000000002 + }, + "device_span_ms": 1398.0611018, + "device_busy_ms": 1372.9327269999999, + "device_idle_ms": 25.128374800000074, + "largest_idle_gaps": [ + { + "gap_ms": 0.061152, + "after": "loop_broadcast_fusion.7", + "before": "loop_broadcast_fusion.9" + }, + { + "gap_ms": 0.054944, + "after": "cholesky.22", + "before": "cholesky.22" + }, + { + "gap_ms": 0.033376, + "after": "while.52", + "before": "input_reduce_fusion.1" + }, + { + "gap_ms": 0.023936, + "after": "input_concatenate_fusion.6", + "before": "custom-call.2" + }, + { + "gap_ms": 0.023264, + "after": "while.52", + "before": "input_reduce_fusion.1" + }, + { + "gap_ms": 0.021663, + "after": "while.52", + "before": "input_reduce_fusion.1" + }, + { + "gap_ms": 0.018176, + "after": "while.52", + "before": "input_reduce_fusion.1" + }, + { + "gap_ms": 0.017248, + "after": "while.52", + "before": "input_transpose_fusion.1" + } + ], + "kernel_ms": 1373.3017080000059, + "sum_ms": 1398.430082800006, + "wall_ms": 1398.1739822000236, + "host_outside_span_ms": 0.11288040002364141, + "reconciliation_pct": 0.018316790559882452, + "unjoined_ms": 0.0, + "unjoined_pct": 0.0, + "other_ms": 0.6708850000000001, + "other_pct": 0.0479829412176848, + "note": "Stage rows attribute the command-buffers-OFF program (see the module docstring): kernel times are the same, the launch overhead the CUDA graphs remove is not. sum_ms = kernel rows + device_idle_ms; the residual against wall_ms is host_outside_span_ms (dispatch before the first kernel, teardown after the last).", + "per_stage_ms_per_lane": { + "border_relocator": 0.00231652, + "chi_squared_evidence": 0.00033056000000000003, + "curvature_matrix_F": 6.62584237, + "data_vector_D": 0.13190622000000002, + "inversion_other": 0.5911748200000001, + "mapped_reconstruction": 0.1122921, + "mapping_matrix": 0.10719545, + "mesh_construction": 0.05215771, + "mixed_fusion": 1.1421021899999997, + "other": 0.013417700000000001, + "pdip_solve": 12.191194650000115, + "psf_convolution_mapping_matrix": 6.47396334, + "ray_trace_data_grid": 0.00026592, + "regularization_H": 0.02187461 + }, + "per_lane_divisor": 50, + "host_callback": { + "pure_callback_span_ms": 0, + "qhull_ms": 0.0, + "callback_body_ms_note": "the OUTERMOST matching body event, not a sum: under the probe the body appears twice (the wrapper and the timed re-implementation it calls) and summing them would count the same work twice", + "events_by_name": { + "ThenExecuteCallback:GetEventForComputeStreamSyncPoint": { + "count": 10, + "ms": 0.043659500000000004 + } + }, + "note": "HOST milliseconds per traced BATCH (the whole invocation), aggregated by name because the events nest. Not a row of the device table: the device pays for them as the idle gaps largest_idle_gaps names." + }, + "host_callback_ms": 0 + }, + "hlo_census": { + "status": "excluded", + "reason": "The legacy census anchors PyAutoArray source line numbers that moved after the phase-1 run. No batched attribution is published from unsupported anchors; the device-event table and wall reconciliation remain valid." + }, + "trace_split": { + "expected_calls": 10, + "executions_per_invocation": 1, + "method": "per-call (first-instruction recurrence)", + "note": "DECIDED IN CODE: the scalar arm's trace is split by trace_calls * B, so every lane's execution is its own block and the per-stage median is taken over all of them. The vmap arm's is split by trace_calls, one block per batched execution, and per_stage_ms_per_lane divides those rows by B." + } + }, + "scalar": { + "arm": "scalar", + "program": "jax.jit(fn), called B times", + "stands_for": "Nautilus(use_jax_vmap=False, use_jax_jit=True). Plain use_jax_vmap=False is UNJITTED and is NOT this arm", + "hlo_source": "jax.jit(fn).lower(lane_trees[0]) \u2014 the same program phase 1 traced", + "batch_wall_ms": 2022.126814999865, + "wall_production_nesting_ms": 2022.126814999865, + "wall_aot_command_buffers_on_ms": 2022.2077013000671, + "wall_aot_command_buffers_off_ms": 2039.7183146997122, + "command_buffer_delta_ms": 17.51061339964508, + "production_nesting_vs_aot_on_delta_ms": -0.08088630020210985, + "production_nesting_vs_aot_on_delta_pct": -0.003999900710006616, + "wall_per_lane_ms": 40.4425362999973, + "wall_per_lane_command_buffers_off_ms": 40.794366293994244, + "traced_batch_wall_ms": 2091.7225103999954, + "untraced_batch_wall_ms": 2039.579033300106, + "traced_wall_per_lane_ms": 41.83445020799991, + "callback_count_per_call": 0.0, + "callback_count_per_lane": 0.0, + "callback_expectation": "0 \u2014 the rectangular mesh has no qhull host callback (asserted)", + "host_qhull_ms": 0.0, + "host_tables_ms": 0.0, + "host_qhull_ms_per_lane": 0.0, + "host_tables_ms_per_lane": 0.0, + "host_callback_probe": { + "calls": 0, + "qhull_ms_total": 0.0, + "tables_ms_total": 0.0, + "total_ms_total": 0.0, + "qhull_ms_mean": 0.0, + "tables_ms_mean": 0.0, + "total_ms_mean": 0.0, + "non_finite_calls": 0, + "n_points": [] + }, + "host_callback_records_first": [], + "device_idle_ms": 2.163358954000003, + "device_idle_ms_per_lane": 2.163358954000003, + "trace": { + "parser": "ProfileData.from_file(xplane) + as_text() + stack_frame_index(proto field 17)", + "stage_audit": { + "mesh_construction": [ + { + "instruction": "fusion.2", + "ms": 0.14823715999999942, + "opcode": "fusion", + "shape": "(f64[15361,2]{1,0}, s64[15361,2]{1,0}, s32[15361,2]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:227", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:227 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_select_fusion", + "ms": 0.03952672200000208, + "opcode": "fusion", + "shape": "(u32[2,15361]{1,0}, u32[2,15361]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69 (forward_interp)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:573 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/abstract.py:36 (AbstractInterpolator.mappings)" + ] + }, + { + "instruction": "loop_select_fusion.4", + "ms": 0.03471731400000198, + "opcode": "fusion", + "shape": "(u32[15361]{0}, u32[15361]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_select_fusion.1", + "ms": 0.03456400000000109, + "opcode": "fusion", + "shape": "(u32[15361]{0}, u32[15361]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_add_fusion", + "ms": 0.020973007999999616, + "opcode": "fusion", + "shape": "s64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:69 (forward_interp)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:573 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/abstract.py:36 (AbstractInterpolator.mappings)" + ] + }, + { + "instruction": "loop_add_fusion.1", + "ms": 0.02030893799999918, + "opcode": "fusion", + "shape": "s64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:245 (create_transforms_rank)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:396 (_transforms_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:561 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "mixed_fusion": [ + { + "instruction": "loop_divide_gather_fusion", + "ms": 0.6956222659999999, + "opcode": "fusion", + "shape": "(f64[15361,1,1,1521]{3,2,1,0}, f64[15361,1,1,1521]{3,2,1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:133 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_add_multiply_fusion", + "ms": 0.08955387599999985, + "opcode": "fusion", + "shape": "(f64[1369,1369]{1,0}, f64[1369,1369]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:61", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:61 (initialize)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:72 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:508 (reconstruction_positive_only_from)" + ] + }, + { + "instruction": "input_transpose_fusion.3", + "ms": 0.030696347999999977, + "opcode": "fusion", + "shape": "f64[1521,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1157 (AbstractInversion.log_det_regularization_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:348 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "loop_reduce_fusion.1", + "ms": 0.02707718400000006, + "opcode": "fusion", + "shape": "f64[92,2]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:556", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:556 (adaptive_rectangular_mappings_weights_via_interpolation_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/rectangular.py:693 (InterpolatorRectangular._mappings_sizes_weights)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/interpolator/abstract.py:36 (AbstractInterpolator.mappings)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:167 (Mapper.pix_indexes_for_sub_slim_index)" + ] + }, + { + "instruction": "input_transpose_fusion.2", + "ms": 0.025463392000000022, + "opcode": "fusion", + "shape": "f64[1521,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1078 (AbstractInversion.log_det_curvature_reg_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:347 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "input_transpose_fusion.4", + "ms": 0.016031838000000014, + "opcode": "fusion", + "shape": "f64[1369,1369]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:62", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:62 (initialize)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:72 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:508 (reconstruction_positive_only_from)" + ] + } + ], + "ray_trace_data_grid": [ + { + "instruction": "input_reduce_fusion.16", + "ms": 0.002779664000000011, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:506", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:506 (FlatLambdaCDM._simpson_1d)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:644 (FlatLambdaCDM.angular_diameter_distance_kpc_z1z2)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:151 (LensingCosmology.angular_diameter_distance_between_redshifts_in_kpc_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:355 (LensingCosmology.scaling_factor_between_redshifts_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer_util.py:252 (traced_grid_2d_list_from)" + ] + }, + { + "instruction": "input_reduce_fusion.14", + "ms": 0.0027593139999999893, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:506", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:506 (FlatLambdaCDM._simpson_1d)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:644 (FlatLambdaCDM.angular_diameter_distance_kpc_z1z2)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:133 (LensingCosmology.angular_diameter_distance_to_earth_in_kpc_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:362 (LensingCosmology.scaling_factor_between_redshifts_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer_util.py:252 (traced_grid_2d_list_from)" + ] + }, + { + "instruction": "input_reduce_fusion.15", + "ms": 0.002615129999999994, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:503", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:503 (FlatLambdaCDM._simpson_1d)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:644 (FlatLambdaCDM.angular_diameter_distance_kpc_z1z2)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:133 (LensingCosmology.angular_diameter_distance_to_earth_in_kpc_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:362 (LensingCosmology.scaling_factor_between_redshifts_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer_util.py:252 (traced_grid_2d_list_from)" + ] + }, + { + "instruction": "input_reduce_fusion.17", + "ms": 0.002577294000000005, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:503", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:503 (FlatLambdaCDM._simpson_1d)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:644 (FlatLambdaCDM.angular_diameter_distance_kpc_z1z2)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:151 (LensingCosmology.angular_diameter_distance_between_redshifts_in_kpc_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:355 (LensingCosmology.scaling_factor_between_redshifts_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer_util.py:252 (traced_grid_2d_list_from)" + ] + }, + { + "instruction": "loop_divide_fusion.2", + "ms": 0.002086266000000007, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:380", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/cosmology/model.py:380 (LensingCosmology.scaling_factor_between_redshifts_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer_util.py:252 (traced_grid_2d_list_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/lens/tracer.py:632 (Tracer.traced_grid_2d_list_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/structures/decorators/abstract.py:93 (AbstractMaker.evaluate_func)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/structures/decorators/abstract.py:110 (AbstractMaker.result)" + ] + } + ], + "border_relocator": [ + { + "instruction": "eigh.0", + "ms": 0.07399818400000037, + "opcode": "custom-call", + "shape": "(f64[2,2]{0,1}, f64[2]{0}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:245 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "custom-call.2", + "ms": 0.007905104000000001, + "opcode": "custom-call", + "shape": "(f64[2,2]{1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:242 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_reduce_fusion.11", + "ms": 0.0052584139999999994, + "opcode": "fusion", + "shape": "(f64[], f64[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:270", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:270 (ellipse_params_via_border_pca_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:415 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_add_fusion.7", + "ms": 0.003696837999999999, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:308 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:423 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "input_concatenate_fusion.1", + "ms": 0.003606220000000003, + "opcode": "fusion", + "shape": "f64[15361,2]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:323", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:323 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:423 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + }, + { + "instruction": "loop_select_sine_fusion", + "ms": 0.0032952079999999944, + "opcode": "fusion", + "shape": "(f64[], f64[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:301", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:301 (relocated_grid_via_ellipse_border_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/border_relocator.py:423 (BorderRelocator.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/abstract.py:83 (AbstractMesh.relocated_grid_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mesh/mesh/rectangular_rtu_adapt_density.py:267 (RectangularRTUAdaptDensity.interpolator_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/galaxy/to_inversion.py:489 (GalaxiesToInversion.mapper_from)" + ] + } + ], + "other": [ + { + "instruction": "copy.31", + "ms": 0.030169616000001783, + "opcode": "copy", + "shape": "u32[2,15361]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.32", + "ms": 0.029892848000004146, + "opcode": "copy", + "shape": "u32[2,15361]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.49", + "ms": 0.028360728000000317, + "opcode": "copy", + "shape": "u32[15361]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.50", + "ms": 0.028327180000000726, + "opcode": "copy", + "shape": "u32[15361]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.40", + "ms": 0.028324714000000757, + "opcode": "copy", + "shape": "u32[15361]{0}", + "source": "", + "stack": [] + }, + { + "instruction": "copy.41", + "ms": 0.028288402000001215, + "opcode": "copy", + "shape": "u32[15361]{0}", + "source": "", + "stack": [] + } + ], + "mapping_matrix": [ + { + "instruction": "loop_broadcast_fusion.1", + "ms": 0.1363581200000002, + "opcode": "fusion", + "shape": "f64[15361,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:342", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:342 (mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:283 (Mapper.mapping_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:91 (AbstractInversionImaging._mapping_matrix_for_convolution_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:137 (AbstractInversionImaging.operated_mapping_matrix_list)" + ] + }, + { + "instruction": "input_reduce_fusion.25", + "ms": 0.002816192000000023, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:93 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:362 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + }, + { + "instruction": "loop_divide_fusion.1", + "ms": 0.0023321700000000036, + "opcode": "fusion", + "shape": "f64[1521]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:92", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/mapper_util.py:92 (adaptive_pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/mappers/abstract.py:507 (Mapper.pixel_signals_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:339 (Adapt.regularization_weights_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:362 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)" + ] + } + ], + "regularization_H": [ + { + "instruction": "loop_broadcast_fusion.2", + "ms": 0.019144397999999993, + "opcode": "fusion", + "shape": "(f64[1521,1521]{1,0}, f64[1521,1521]{1,0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:111", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:111 (weighted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:366 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_scatter_fusion.8", + "ms": 0.002825871999999998, + "opcode": "fusion", + "shape": "f64[1521,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:123 (weighted_regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/regularization/adapt.py:366 (Adapt.regularization_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/linear_obj/linear_obj.py:171 (LinearObj.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:332 (AbstractInversion.regularization_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "psf_convolution_mapping_matrix": [ + { + "instruction": "fft.19.0", + "ms": 1.7796628979999987, + "opcode": "fft", + "shape": "f64[1521,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_scatter_fusion", + "ms": 1.4235511599999988, + "opcode": "fusion", + "shape": "f64[1521,180,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.15.0", + "ms": 1.3825417420000001, + "opcode": "fft", + "shape": "c128[1521,180,91]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1228 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "fft.17.0", + "ms": 0.9920297580000013, + "opcode": "fft", + "shape": "c128[1521,91,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "input_transpose_fusion.1", + "ms": 0.522140612, + "opcode": "fusion", + "shape": "c128[1521,91,180]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + }, + { + "instruction": "wrapped_transpose.2", + "ms": 0.5054060140000001, + "opcode": "fusion", + "shape": "c128[1521,180,91]{2,1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/operators/convolver.py:1232 (Convolver.convolved_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/abstract.py:136 (AbstractInversionImaging.operated_mapping_matrix_list)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:197 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + } + ], + "curvature_matrix_F": [ + { + "instruction": "cublas-lt-matmul.2", + "ms": 4.398367832000003, + "opcode": "custom-call", + "shape": "(f64[1521,1521]{1,0}, s8[4194304]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:134 (curvature_matrix_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:93 (InversionImagingMapping.curvature_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:389 (AbstractInversion.curvature_reg_matrix)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "data_vector_D": [ + { + "instruction": "input_reduce_fusion.7", + "ms": 0.11331941799999992, + "opcode": "fusion", + "shape": "f64[92,1521]{1,0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123 (data_vector_via_blurred_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:67 (InversionImagingMapping.data_vector)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:699 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "input_reduce_fusion.23", + "ms": 0.0037245079999999936, + "opcode": "fusion", + "shape": "f64[1521]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/inversion_imaging_util.py:123 (data_vector_via_blurred_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:67 (InversionImagingMapping.data_vector)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:699 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + } + ], + "inversion_other": [ + { + "instruction": "cholesky.60", + "ms": 0.9192102600000055, + "opcode": "custom-call", + "shape": "(f64[1521,1521]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1078 (AbstractInversion.log_det_curvature_reg_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:347 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "cholesky.70", + "ms": 0.9024006600000065, + "opcode": "custom-call", + "shape": "(f64[1521,1521]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:986 (AbstractInversion._log_det_symmetric_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:1157 (AbstractInversion.log_det_regularization_matrix_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:348 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)" + ] + }, + { + "instruction": "input_reduce_fusion.13", + "ms": 0.01897318800000001, + "opcode": "fusion", + "shape": "f64[1521]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:946", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:946 (AbstractInversion.regularization_term)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:346 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/model/analysis.py:135 (AnalysisImaging.log_likelihood_function)", + "/mnt/ral/jnightin/autolens_profiling_wt/certified-solver-phase-c1-lane-rate/scripts/imaging/likelihood_breakdown/fixed_light_trace.py:1195 (_captured_likelihood_fn.._likelihood)" + ] + }, + { + "instruction": "loop_reduce_window_fusion.3", + "ms": 0.005792840000000006, + "opcode": "fusion", + "shape": "s64[6,16]{1,0}", + "source": "", + "stack": [] + }, + { + "instruction": "input_scatter_fusion.11", + "ms": 0.0037877980000000163, + "opcode": "fusion", + "shape": "pred[1521]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:526", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:526 (AbstractInversion.zeroed_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:567 (AbstractInversion.solve_ids_to_keep)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:684 (AbstractInversion.reconstruction)", + "/mnt/ral/jnightin/PyAuto/PyAutoNerves/autonerves/tools/decorators.py:22 (CachedProperty.__get__)" + ] + }, + { + "instruction": "loop_reduce_window_fusion.2", + "ms": 0.0030375840000000003, + "opcode": "fusion", + "shape": "s64[86,16]{1,0}", + "source": "", + "stack": [] + } + ], + "pdip_solve": [ + { + "instruction": "cholesky.20", + "ms": 13.788170630000613, + "opcode": "custom-call", + "shape": "(f64[1369,1369]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:106", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:106 (factorize_kkt)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:212 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve", + "ms": 2.100691765999975, + "opcode": "custom-call", + "shape": "(f64[1369,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:213 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve.2", + "ms": 2.006719439999904, + "opcode": "custom-call", + "shape": "(f64[1369,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:217 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve.3", + "ms": 1.9963342719999402, + "opcode": "custom-call", + "shape": "(f64[1369,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:217 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "triangular-solve.1", + "ms": 1.9419095699999078, + "opcode": "custom-call", + "shape": "(f64[1369,1]{0,1}, s8[0]{0})", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:146 (solve_kkt_rhs)", + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:213 (pdip_pc_step)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:83 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)" + ] + }, + { + "instruction": "cholesky.40", + "ms": 0.8456320920000049, + "opcode": "custom-call", + "shape": "(f64[1369,1369]{0,1}, s32[])", + "source": "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:62", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAuto/lib/python3.12/site-packages/jaxnnls/pdip.py:62 (initialize)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:72 (solve_nnls)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:129 (_solve_nnls_primal_with..primal)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/util/jax_nnls.py:164 (solve_nnls_primal_with_status)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:508 (reconstruction_positive_only_from)" + ] + } + ], + "mapped_reconstruction": [ + { + "instruction": "input_reduce_fusion.10", + "ms": 0.11165510000000008, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/inversion_util.py:163 (mapped_reconstructed_data_via_mapping_matrix_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:120 (InversionImagingMapping._mapped_reconstructed_data_dict_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/imaging/mapping.py:196 (InversionImagingMapping.mapped_reconstructed_operated_data_dict)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/inversion/inversion/abstract.py:856 (AbstractInversion.mapped_reconstructed_operated_data)", + "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/imaging/fit_imaging.py:199 (FitImaging.model_data)" + ] + } + ], + "chi_squared_evidence": [ + { + "instruction": "input_reduce_fusion.22", + "ms": 0.0038921880000000043, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:104", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:104 (noise_normalization_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:98 (AbstractFit.noise_normalization)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:306 (FitDataset.noise_normalization)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:349 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)" + ] + }, + { + "instruction": "input_reduce_fusion.24", + "ms": 0.003760919999999982, + "opcode": "fusion", + "shape": "f64[]", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:90", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:90 (chi_squared_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:87 (AbstractFit.chi_squared)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:293 (FitDataset.chi_squared)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:345 (FitDataset.log_evidence)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:360 (FitDataset.figure_of_merit)" + ] + }, + { + "instruction": "loop_multiply_fusion.2", + "ms": 0.00301991600000001, + "opcode": "fusion", + "shape": "f64[15361]{0}", + "source": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:300", + "stack": [ + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:300 (AbstractNDArray.__pow__)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:60 (unwrap_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/abstract_ndarray.py:35 (to_new_array..wrapper)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_util.py:78 (chi_squared_map_from)", + "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/fit/fit_dataset.py:78 (AbstractFit.chi_squared_map)" + ] + } + ] + }, + "stage_audit_note": "The HLO instructions that contributed most of each stage's milliseconds, with their full source stack. A stage row is only as good as the rules that built it; this is how a reader checks a row against the HLO instead of trusting it.", + "untraced_wall_ms": 40.79158066600212, + "reconciliation_vs_untraced_pct": 4.276367229504719, + "wall_basis": "wall_ms is the TRACED run's wall, the run these kernel durations came from. untraced_wall_ms is the same executable without the profiler; the difference is the profiler's overhead and belongs in neither the stages nor the idle row.", + "calls": 500, + "call_split": "per-call (first-instruction recurrence)", + "call_blocks": 500, + "events": 458780, + "streams": [ + "Stream #14(MemcpyH2D,Compute,MemcpyD2H,Memset,MemcpyD2D)" + ], + "per_stage_ms": { + "border_relocator": { + "median_ms": 0.10614450000000003, + "min_ms": 0.10512100000000003, + "max_ms": 0.10819200000000002 + }, + "chi_squared_evidence": { + "median_ms": 0.010656, + "min_ms": 0.010336, + "max_ms": 0.0112 + }, + "curvature_matrix_F": { + "median_ms": 4.378137, + "min_ms": 4.355097, + "max_ms": 4.566789 + }, + "data_vector_D": { + "median_ms": 0.11705499999999999, + "min_ms": 0.115964, + "max_ms": 0.11830600000000001 + }, + "inversion_other": { + "median_ms": 1.865148, + "min_ms": 1.8479360000000002, + "max_ms": 1.918328 + }, + "mapped_reconstruction": { + "median_ms": 0.111618, + "min_ms": 0.111041, + "max_ms": 0.112834 + }, + "mapping_matrix": { + "median_ms": 0.141506, + "min_ms": 0.14143499999999998, + "max_ms": 0.141627 + }, + "memset": { + "median_ms": 0.05068900000000001, + "min_ms": 0.031969, + "max_ms": 0.06803000000000002 + }, + "mesh_construction": { + "median_ms": 0.38052150000000007, + "min_ms": 0.3778919999999999, + "max_ms": 0.38281800000000005 + }, + "mixed_fusion": { + "median_ms": 0.9884385, + "min_ms": 0.9851650000000001, + "max_ms": 0.9911470000000001 + }, + "other": { + "median_ms": 0.19399899999999978, + "min_ms": 0.19321899999999984, + "max_ms": 0.19469299999999976 + }, + "pdip_solve": { + "median_ms": 25.15693850000001, + "min_ms": 15.270660000000001, + "max_ms": 34.171549000000006 + }, + "psf_convolution_mapping_matrix": { + "median_ms": 6.837016500000001, + "min_ms": 6.809049000000001, + "max_ms": 6.861560999999999 + }, + "ray_trace_data_grid": { + "median_ms": 0.0128, + "min_ms": 0.012703999999999998, + "max_ms": 0.013056000000000002 + }, + "regularization_H": { + "median_ms": 0.021952, + "min_ms": 0.021312, + "max_ms": 0.022881 + } + }, + "stage_order": [ + "ray_trace_data_grid", + "border_relocator", + "mesh_construction", + "mapping_matrix", + "psf_convolution_mapping_matrix", + "data_vector_D", + "curvature_matrix_F", + "regularization_H", + "pdip_solve", + "mapped_reconstruction", + "chi_squared_evidence", + "inversion_other", + "mixed_fusion", + "other", + "memset" + ], + "mixed_fusion": { + "ms": 0.9884385, + "constituent_stage_sets": { + "curvature_matrix_F + psf_convolution_mapping_matrix": 0.6956222659999999, + "inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": 0.08955387599999985, + "inversion_other + regularization_H": 0.030696347999999977, + "border_relocator + mesh_construction": 0.03052141600000018, + "curvature_reg_reduce_gather + inversion_other": 0.025463392000000022, + "border_relocator + inversion_other + mapping_matrix + mesh_construction": 0.02044969, + "border_relocator + pdip_solve": 0.016031838000000014, + "inversion_other + mapping_matrix + regularization_H": 0.0154030920000001, + "inversion_other + mapping_matrix + mesh_construction": 0.012913086000000015, + "grids_and_structures + mass_profile_deflections": 0.010112593999999994, + "inversion_other + mapped_reconstruction + reconstruction_scatter": 0.009514054, + "inversion_other + mapped_reconstruction": 0.008987944000000006, + "inversion_other + mesh_construction": 0.00546953800000006, + "grids_and_structures + mass_profile_deflections + ray_trace_data_grid": 0.0052269759999999995, + "inversion_other + ray_trace_data_grid": 0.0048203019999999925, + "border_relocator + inversion_other": 0.003341529999999998, + "border_relocator + inversion_other + mesh_construction": 0.002450111999999995, + "chi_squared_evidence + inversion_other": 0.0017897900000000007 + }, + "example_kernels": { + "curvature_matrix_F + psf_convolution_mapping_matrix": [ + "loop_divide_gather_fusion" + ], + "inversion_other + mapped_reconstruction + pdip_solve + reconstruction_scatter": [ + "loop_add_multiply_fusion" + ], + "inversion_other + regularization_H": [ + "input_transpose_fusion.3" + ], + "border_relocator + mesh_construction": [ + "loop_reduce_fusion.1", + "loop_select_fusion.5" + ], + "curvature_reg_reduce_gather + inversion_other": [ + "input_transpose_fusion.2" + ], + "border_relocator + inversion_other + mapping_matrix + mesh_construction": [ + "input_scatter_fusion.6", + "input_scatter_fusion.10" + ], + "border_relocator + pdip_solve": [ + "input_transpose_fusion.4" + ], + "inversion_other + mapping_matrix + regularization_H": [ + "input_scatter_fusion.4", + "input_scatter_fusion.5", + "input_scatter_fusion.2", + "input_scatter_fusion.3" + ], + "inversion_other + mapping_matrix + mesh_construction": [ + "input_scatter_fusion.7" + ], + "grids_and_structures + mass_profile_deflections": [ + "loop_divide_minimum_multiply_sine_sqrt_fusion", + "loop_slice_fusion" + ] + }, + "prorated_estimate_ms": { + "curvature_matrix_F": 0.34781113299999994, + "psf_convolution_mapping_matrix": 0.34781113299999994, + "inversion_other": 0.08121209483333337, + "border_relocator": 0.030876518500000092, + "pdip_solve": 0.03040438799999997, + "mapped_reconstruction": 0.030053792333333298, + "mesh_construction": 0.028228965500000126, + "reconstruction_scatter": 0.025559820333333295, + "regularization_H": 0.020482538000000022, + "mapping_matrix": 0.014551148500000038, + "curvature_reg_reduce_gather": 0.012731696000000011, + "grids_and_structures": 0.00679862233333333, + "mass_profile_deflections": 0.00679862233333333, + "ray_trace_data_grid": 0.004152476333333329, + "chi_squared_evidence": 0.0008948950000000004 + }, + "prorated_note": "ESTIMATE ONLY \u2014 a mixed fusion's time split equally across the stages its constituents span. Never summed into the measured table, never reconciled." + }, + "other_sources_ms": { + "copy.31": 0.030169616000001783, + "copy.32": 0.029892848000004146, + "copy.49": 0.028360728000000317, + "copy.50": 0.028327180000000726, + "copy.40": 0.028324714000000757, + "copy.41": 0.028288402000001215, + "loop_reduce_window_fusion": 0.006436629999999936, + "loop_reduce_window_fusion.1": 0.004321369999999981, + "copy.90": 0.001769277999999991, + "loop_broadcast_fusion.3": 0.0017681979999999938, + "copy.69": 0.0017565080000000045, + "copy.24": 0.0015164799999999952, + "copy.42": 0.001504009999999997, + "copy.33": 0.001503557999999997 + }, + "device_span_ms": 41.832656144, + "device_busy_ms": 39.669297189999995, + "device_idle_ms": 2.163358954000003, + "largest_idle_gaps": [ + { + "gap_ms": 0.054655, + "after": "while.28", + "before": "input_scatter_fusion.1" + }, + { + "gap_ms": 0.04147, + "after": "input_concatenate_fusion.4", + "before": "custom-call.2" + }, + { + "gap_ms": 0.031263, + "after": "loop_multiply_fusion.3", + "before": "eigh.0" + }, + { + "gap_ms": 0.027775, + "after": "loop_add_fusion.5", + "before": "loop_select_fusion.4" + }, + { + "gap_ms": 0.025183, + "after": "copy.40", + "before": "copy.41" + }, + { + "gap_ms": 0.021824, + "after": "input_reduce_fusion", + "before": "input_divide_reduce_subtract_fusion" + }, + { + "gap_ms": 0.02128, + "after": "loop_broadcast_fusion.6", + "before": "loop_broadcast_fusion.8" + }, + { + "gap_ms": 0.019391, + "after": "eigh.0", + "before": "eigh.0" + } + ], + "kernel_ms": 40.37261950000001, + "sum_ms": 42.535978454000016, + "wall_ms": 41.83445020799991, + "host_outside_span_ms": 0.0017940639999096675, + "reconciliation_pct": 1.6769151799823516, + "unjoined_ms": 0.0, + "unjoined_pct": 0.0, + "other_ms": 0.19399899999999978, + "other_pct": 0.46373024871951535, + "note": "Stage rows attribute the command-buffers-OFF program (see the module docstring): kernel times are the same, the launch overhead the CUDA graphs remove is not. sum_ms = kernel rows + device_idle_ms; the residual against wall_ms is host_outside_span_ms (dispatch before the first kernel, teardown after the last).", + "per_stage_ms_per_lane": { + "border_relocator": 0.10614450000000003, + "chi_squared_evidence": 0.010656, + "curvature_matrix_F": 4.378137, + "data_vector_D": 0.11705499999999999, + "inversion_other": 1.865148, + "mapped_reconstruction": 0.111618, + "mapping_matrix": 0.141506, + "memset": 0.05068900000000001, + "mesh_construction": 0.38052150000000007, + "mixed_fusion": 0.9884385, + "other": 0.19399899999999978, + "pdip_solve": 25.15693850000001, + "psf_convolution_mapping_matrix": 6.837016500000001, + "ray_trace_data_grid": 0.0128, + "regularization_H": 0.021952 + }, + "per_lane_divisor": 1, + "host_callback": { + "pure_callback_span_ms": 0, + "qhull_ms": 0.0, + "callback_body_ms_note": "the OUTERMOST matching body event, not a sum: under the probe the body appears twice (the wrapper and the timed re-implementation it calls) and summing them would count the same work twice", + "events_by_name": { + "ThenExecuteCallback:GetEventForComputeStreamSyncPoint": { + "count": 500, + "ms": 0.8703228000000002 + } + }, + "note": "HOST milliseconds per traced BATCH (the whole invocation), aggregated by name because the events nest. Not a row of the device table: the device pays for them as the idle gaps largest_idle_gaps names." + }, + "host_callback_ms": 0 + }, + "hlo_census": { + "status": "excluded", + "reason": "The legacy census anchors PyAutoArray source line numbers that moved after the phase-1 run. No batched attribution is published from unsupported anchors; the device-event table and wall reconciliation remain valid." + }, + "trace_split": { + "expected_calls": 500, + "executions_per_invocation": 50, + "method": "per-call (first-instruction recurrence)", + "note": "DECIDED IN CODE: the scalar arm's trace is split by trace_calls * B, so every lane's execution is its own block and the per-stage median is taken over all of them. The vmap arm's is split by trace_calls, one block per batched execution, and per_stage_ms_per_lane divides those rows by B." + } + } + }, + "certification_report": { + "source": "vmap arm, library solve observed through its stats= out-dict (PyAutoArray #566) and jax.debug.callback(..., ordered=True); ordered because the unordered batching rule returns the lanes permuted. Untimed, separately compiled; max rel diff of its log likelihoods vs the timed arm's: nan", + "rows": 0, + "pdip_iter": "NOT AVAILABLE per lane without changing library numerics. The fallback branch calls the library's own reconstruction_positive_only_from, which returns the solution alone \u2014 jax_nnls.solve_nnls' iteration count is discarded inside the library's custom_vjp primal. The PDIP while_loop's cost is in the pdip_solve stage row of each arm's device table instead, which is a max-over-lanes quantity under vmap because every lane runs the same fixed kernel sequence.", + "passes_semantics": "library `passes`: restricted active-set passes run (jax_active_set.solve_certified)" + }, + "lane_construction": { + "draws_sha256": "7c217e915e674fff34ba83919c3dfc528573c340a55878fb50abf132b7c8404a", + "lane_rows": [ + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349 + ], + "calls": [ + 15, + 16, + 17 + ], + "stage": "pix1", + "regularization_range": { + "galaxies.source.pixelization.regularization.inner_coefficient": { + "min": 1.008689150795624e-06, + "max": 1893.186029242651 + }, + "galaxies.source.pixelization.regularization.outer_coefficient": { + "min": 1.2674564797230935e-06, + "max": 17250.89883253938 + }, + "galaxies.source.pixelization.regularization.signal_scale": { + "min": 0.007619743046985983, + "max": 0.9779334025364208 + } + }, + "phases": [ + "exploration" + ], + "window_rule": "nautilus_batches.timed_window: consecutive captured calls, in call order, from the FIRST call that is not a prior batch, concatenated and truncated to B; at B == n_batch exactly one real Nautilus batch. Falls back to the latest B lanes if the post-prior lanes run out; never repeats a lane.", + "note": "Lane k is captured lane lane_rows[k]: the mass AND shear of a real Nautilus proposal (nautilus_batch_capture.py), lens light fixed at S3, the S3 light-subtracted dataset shared by every lane. `offsets` in the lane table are the mass offsets from the fiducial; the shear is in the capture file." + }, + "captured": { + "batches_path": "/mnt/ral/jnightin/autolens_profiling_wt/certified-solver-phase-c1-lane-rate/results/breakdown/imaging/nautilus_batches_rectangular_pix1.npz", + "batches_sha256": "c0b62fba544cb62c8a273c19837cf364127f5af7fdaa110f3a2c8a973e0b6cc0", + "schema_version": 2, + "n_calls": 972, + "n_lanes": 19440, + "call_sizes_seen": [ + 20 + ], + "calls_by_phase": { + "prior": 15, + "exploration": 957 + }, + "parameter_paths": [ + "galaxies.source.pixelization.regularization.inner_coefficient", + "galaxies.source.pixelization.regularization.outer_coefficient", + "galaxies.source.pixelization.regularization.signal_scale", + "galaxies.lens.mass.centre.centre_0", + "galaxies.lens.mass.centre.centre_1", + "galaxies.lens.mass.einstein_radius", + "galaxies.lens.mass.ell_comps.ell_comps_0", + "galaxies.lens.mass.ell_comps.ell_comps_1", + "galaxies.lens.shear.gamma_1", + "galaxies.lens.shear.gamma_2" + ], + "stage": "pix1", + "regularization": { + "class": "Adapt", + "free": true, + "priors": { + "inner_coefficient": [ + "LogUniform", + 1e-06, + 1000000.0 + ], + "outer_coefficient": [ + "LogUniform", + 1e-06, + 1000000.0 + ], + "signal_scale": [ + "Uniform", + 0.0, + 1.0 + ] + }, + "priors_source": "PyAutoGalaxy packaged config/priors/regularization (adapt_split.yaml / adapt.yaml / constant.yaml); adapt_split.yaml and adapt.yaml are identical to euclid_strong_lens_modeling_pipeline/config/priors/regularization/'s copies" + }, + "nautilus": { + "departures_from_production": [ + "mass/shear priors are the phase-B cell's Gaussians, not chained from source_lp", + "no positions likelihood", + "the cell's mesh (39x39 RectangularBilinearAdaptImage, weight_power 1, weight_floor 0) fixed in both stages; source_pix_1 uses RectangularBilinearAdaptDensity, source_pix_2 frees weight_power / weight_floor", + "seeded (production passes no seed)", + "quick updates disabled (iterations_per_quick_update=1e12; render-only)", + "NullPaths: no output directory, so no checkpoint and one Sampler.run call", + "post-fit perform_update skipped (samples / latent variables never built)" + ], + "n_batch": 20, + "n_like_max": 40000, + "n_live": 150, + "number_of_cores": 1, + "production_reference": "euclid_strong_lens_modeling_pipeline/scripts/full_model.py source_pix_1 (n_live=150) / source_pix_2 (n_live=75): af.Nautilus(n_batch=20, **SettingsSearch.search_dict) with use_jax_vmap=True and number_of_cores=1 (SettingsSearch defaults)", + "production_stage": "source_pix_1", + "seed": 1, + "stage": "pix1", + "use_jax_vmap": true, + "version": "1.0.5" + }, + "capture_fit_status": "sampling complete (n_like_max or convergence); post-fit result skipped", + "capture_library_revisions": { + "PyAutoArray": { + "head": "3de624b5b91a4efa130dc3cb0a3a0f06f85025a3", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoArray" + }, + "PyAutoFit": { + "head": "dd9fbe0aab60c4a57702b1444ca031b317c91331", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoFit" + }, + "PyAutoGalaxy": { + "head": "70a61e26cd715cefe7012a38285698091246a8a4", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy" + }, + "PyAutoLens": { + "head": "86054bbc19baa2f710a12e04a94fa27ab37cc354", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoLens" + }, + "PyAutoNerves": { + "head": "1fa613aa8d89a79613009fb66f5b4e2d21deb57a", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoNerves" + } + }, + "fingerprint_check": { + "fields": [ + "mesh", + "source_pixels", + "dataset_sha256", + "regularization_class", + "regularization_s0_fiducial", + "border_relocator", + "use_mixed_precision", + "log_evidence_s3_library" + ], + "not_identity": "the regularization coefficients: free per lane since the capture frees them", + "log_evidence_s3_library_rel_diff": 0.0, + "passed": true + }, + "timed_window_vs_capture_pdip": { + "reference": "the capture's own figure of merit (library PDIP, Fitness.call_wrap jax.jit(jax.vmap(call)) over parameter vectors) for the same lanes", + "compared_against": "this cell's jit(vmap) library-PDIP reference", + "n_compared": 47, + "max_rel_diff": 8.5905058915959, + "max_abs_diff_nats": 213012.4692264506, + "gated": false, + "note": "RECORDED, NOT GATED: proves the lane trees rebuilt here are the models the sampler evaluated (a wrong parameter mapping shows up as nats, not 1e-10)." + } + }, + "matched": { + "vmap_wall_per_lane_ms": 27.601653438003268, + "scalar_wall_per_lane_ms": 40.4425362999973, + "speedup_vmap_over_scalar": 1.4652215089518548, + "note": "Both walls are the PRODUCTION nesting of their arm, measured in one process on the same B lanes with the SAME library Settings (no injection). A speedup below 1 means the batch is slower per lane than B sequential jitted calls." + }, + "solver_source": "library", + "solver": "pdip", + "certified_fallback": "pdip", + "certified_pass_budget": 16, + "certified_pass_budget_basis": "config default (Settings().certified_pass_budget)", + "certified_tau_rel": 1e-09, + "solver_used": "pdip", + "solver_check": { + "solver_used": "pdip", + "solver_used_source": "AbstractInversion.positive_only_solver_used on the fiducial S3 inversion, built eagerly on the JAX backend (AnalysisImaging(use_jax=True).fit_from) with the arms' Settings", + "reference_solver_used": "pdip", + "traced_solver_kwargs_jax": [ + "pdip" + ], + "observed_calls_jax": 1, + "report_rows": 0, + "report_vs_timed_arm_max_rel_diff": NaN + }, + "lanes_certified": [ + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null + ], + "lanes_passes": [ + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null + ], + "uncertified_lanes": null, + "per_lane_certification_note": "Not applicable: a library-PDIP row has no certificate or pass count.", + "gate": { + "pre_registered": true, + "gated": [ + "per lane: jit(vmap) arm vs jit(vmap) library PDIP <= lane_rtol relative", + "per lane: scalar jit arm vs scalar jit library PDIP <= lane_rtol relative" + ], + "recorded_not_gated": [ + "per lane: jit(vmap) arm vs scalar jit arm (rel_diff, abs_diff_nats)", + "per lane: jit(vmap) library PDIP vs scalar jit library PDIP", + "uncertified_lanes (certified_fallback=none rows)" + ], + "lanes_failed": 12, + "passed": false, + "policy_eligible": false, + "note": "Pre-registered before submission (module docstring; submit header). Phase 3 (results/notes/hst_gpu_residue_phase3_psf_2026_09.md) placed phase 2's ~2.5e-9 certified-vs-PDIP residual BETWEEN the jit(vmap) and scalar-jit compositions, not in the solver \u2014 so each arm is gated against the library-PDIP reference of its OWN composition, and the cross-composition difference is recorded with its nats. A certified_fallback=none row is policy-eligible only if every lane certifies AND passes the gate. Timing is never gated." + }, + "library_revisions": { + "PyAutoArray": { + "head": "3de624b5b91a4efa130dc3cb0a3a0f06f85025a3", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoArray", + "module_file": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/__init__.py" + }, + "PyAutoFit": { + "head": "dd9fbe0aab60c4a57702b1444ca031b317c91331", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoFit", + "module_file": "/mnt/ral/jnightin/PyAuto/PyAutoFit/autofit/__init__.py" + }, + "PyAutoGalaxy": { + "head": "70a61e26cd715cefe7012a38285698091246a8a4", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy", + "module_file": "/mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/__init__.py" + }, + "PyAutoLens": { + "head": "86054bbc19baa2f710a12e04a94fa27ab37cc354", + "path": "/mnt/ral/jnightin/PyAuto/PyAutoLens", + "module_file": "/mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/__init__.py" + }, + "autoarray_file": "/mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/__init__.py" + } + }, + "headline_arm_note": "`trace`, `hlo_census`, `command_buffers` and `trace_timing` above describe the scalar arm \u2014 the program phase 1 traced. Both arms' full blocks, the lane table and the matched comparison are under `vmap`." +} \ No newline at end of file diff --git a/results/breakdown/imaging/fixed_light_trace_rectangular_jitvmap50_captured_pix1_libpdip_fbon_b16_hpc_a100_fp64_fixed_light_trace.png b/results/breakdown/imaging/fixed_light_trace_rectangular_jitvmap50_captured_pix1_libpdip_fbon_b16_hpc_a100_fp64_fixed_light_trace.png new file mode 100644 index 000000000..129e01379 Binary files /dev/null and b/results/breakdown/imaging/fixed_light_trace_rectangular_jitvmap50_captured_pix1_libpdip_fbon_b16_hpc_a100_fp64_fixed_light_trace.png differ diff --git a/results/notes/certified_solver_phase_c1_job350768.json b/results/notes/certified_solver_phase_c1_job350768.json new file mode 100644 index 000000000..39156a6b0 --- /dev/null +++ b/results/notes/certified_solver_phase_c1_job350768.json @@ -0,0 +1,2721 @@ +{ + "status": "measured-gate-FAIL", + "issue": "autolens_profiling#304 (certified-solver phase C1, lane rate)", + "jobs": { + "capture_rectangular": 350766, + "replay": 350768, + "capture_delaunay_reused": 350659 + }, + "time_note": "sacct start/end columns are RAL local time (BST, UTC+1).", + "profiling_revision": "be01a52b3915f331f883daa8982a0c4b175a08a7", + "profiling_revision_note": "be01a52 on feature/certified-solver-phase-c1-lane-rate is the AP_ROOT rev every 350766/350768 .out prints; every replay JSON configuration.cell_source_sha256 equals sha256 of scripts/imaging/likelihood_breakdown/fixed_light_trace.py at be01a52.", + "cell_source_sha256": "06a162fcdae6b329384ec33322f443df07215d86e56f0505ac15b3d3473eb432", + "composition": "jax.jit(jax.vmap(fn)) matched against B x jax.jit(fn), same captured lanes, same process; solver selected through al.Settings (solver_source=library)", + "library_revisions_replay": { + "PyAutoArray": "3de624b5b91a4efa130dc3cb0a3a0f06f85025a3", + "PyAutoFit": "dd9fbe0aab60c4a57702b1444ca031b317c91331", + "PyAutoGalaxy": "70a61e26cd715cefe7012a38285698091246a8a4", + "PyAutoLens": "86054bbc19baa2f710a12e04a94fa27ab37cc354" + }, + "library_revisions_replay_note": "rate JSONs additionally record PyAutoNerves 1fa613aa8d89a79613009fb66f5b4e2d21deb57a. PyAutoArray 3de624b5 = main after #572 (PDIP stats + raw-forward for mapper-less inversions; mapper inversions keep Jacobi).", + "capture_library_revisions": { + "delaunay (350659)": { + "PyAutoArray": "7fa8d2714f7da43fec2b23c31bff580764831670", + "PyAutoFit": "a736840127be7a3c21e15a5c945e94d8f1082983" + }, + "rectangular (350766)": { + "PyAutoArray": "3de624b5b91a4efa130dc3cb0a3a0f06f85025a3", + "PyAutoFit": "dd9fbe0aab60c4a57702b1444ca031b317c91331" + } + }, + "dataset_sha256": { + "data.fits": "e4e833a28e9c6f6fb023cd85c0d3dde74068720256bc77a240633500e5b04fac", + "noise_map.fits": "315c6266a0acd3ac9c8da82fcd2b45a08697362481fd7a35072bab1658530ba3", + "psf.fits": "8389ba0e8bf4a09b4a561cfc246181a2fb944ed396754cd0ff76fdd22910d303" + }, + "device": "NVIDIA A100 80GB PCIe (euclid-ral-gpu-1 / -2), fp64, fresh JAX compilation cache per task (AUTOTUNE_ENTRIES count=0 in every .out)", + "gate_decision": { + "pre_registered": "unchanged from phase B (#300); stated in the submit header and fixed_light_trace.py docstring at be01a52, committed 2026-09-25 17:04:29 BST, before the 17:23:19 BST start of 350766", + "gated": [ + "per lane: jit(vmap) arm vs jit(vmap) library PDIP <= 1e-9 relative", + "per lane: scalar jit arm vs scalar jit library PDIP <= 1e-9 relative" + ], + "recorded_not_gated": [ + "cross-composition vmap vs scalar (rel + nats)", + "reference cross-composition", + "uncertified_lanes", + "window vs the capture's own PDIP values" + ], + "outcome": "FAIL: 24/24 timed tasks failed the gate (2-40 lanes each); 6/6 B=100 tasks OOM (memory-limit rows); the 4 rate tasks are ungated and completed" + }, + "tasks": [ + { + "task": 0, + "job": "350659_0", + "mesh": "delaunay", + "stage": "pix1", + "pass": "capture", + "batch": 20, + "solver": "-", + "certified_fallback": "-", + "slurm_state": "COMPLETED", + "exit_code": "0:0", + "elapsed": "00:13:13", + "start_bst": "2026-09-24T16:55:22", + "end_bst": "2026-09-24T17:08:35", + "node": "euclid-ral-gpu-1", + "note": "Delaunay capture reused from array 350659 (tasks 0/2 of 350766 were not run); npz on RAL, not committed." + }, + { + "task": 1, + "job": "350766_1", + "mesh": "rectangular", + "stage": "pix1", + "pass": "capture", + "batch": 20, + "solver": "-", + "certified_fallback": "-", + "slurm_state": "COMPLETED", + "exit_code": "0:0", + "elapsed": "00:16:21", + "start_bst": "2026-09-25T17:23:19", + "end_bst": "2026-09-25T17:39:40", + "node": "euclid-ral-gpu-1", + "note": "Rectangular re-capture (Adapt freed). npz on RAL, not committed." + }, + { + "task": 2, + "job": "350659_2", + "mesh": "delaunay", + "stage": "pix2", + "pass": "capture", + "batch": 20, + "solver": "-", + "certified_fallback": "-", + "slurm_state": "COMPLETED", + "exit_code": "0:0", + "elapsed": "00:01:55", + "start_bst": "2026-09-24T16:55:22", + "end_bst": "2026-09-24T16:57:17", + "node": "euclid-ral-gpu-1", + "note": "Delaunay capture reused from array 350659 (tasks 0/2 of 350766 were not run); npz on RAL, not committed." + }, + { + "task": 3, + "job": "350766_3", + "mesh": "rectangular", + "stage": "pix2", + "pass": "capture", + "batch": 20, + "solver": "-", + "certified_fallback": "-", + "slurm_state": "COMPLETED", + "exit_code": "0:0", + "elapsed": "00:06:09", + "start_bst": "2026-09-25T17:23:19", + "end_bst": "2026-09-25T17:29:28", + "node": "euclid-ral-gpu-1", + "note": "Rectangular re-capture (Adapt freed). npz on RAL, not committed." + }, + { + "task": 4, + "job": "350768_4", + "mesh": "delaunay", + "stage": "pix1", + "pass": "rate", + "batch": 20, + "solver": "certified", + "certified_fallback": "off", + "slurm_state": "COMPLETED", + "exit_code": "0:0", + "elapsed": "00:08:12", + "start_bst": "2026-09-25T17:39:41", + "end_bst": "2026-09-25T17:47:53", + "node": "euclid-ral-gpu-1", + "file": "fixed_light_trace_delaunay_captured_rate_libcertified_fboff_b16_pix1_hpc_a100_fp64_fixed_light_trace.json", + "rate": { + "overall": { + "n_lanes": 18640, + "n_uncertified": 368, + "uncertified_rate": 0.019742489270386267, + "max_passes": 16, + "mean_passes": 2.4495171673819742, + "n_at_budget": 387, + "budget": 16, + "passes_histogram": { + "0": 319, + "1": 1146, + "2": 15166, + "3": 734, + "4": 287, + "5": 174, + "6": 100, + "7": 83, + "8": 54, + "9": 48, + "10": 36, + "11": 25, + "12": 22, + "13": 17, + "14": 26, + "15": 16, + "16": 387 + } + }, + "by_nautilus_phase": { + "prior": { + "n_lanes": 300, + "n_uncertified": 35, + "uncertified_rate": 0.11666666666666667, + "max_passes": 16, + "mean_passes": 3.6766666666666667, + "n_at_budget": 42, + "budget": 16, + "passes_histogram": { + "0": 177, + "1": 12, + "2": 14, + "3": 13, + "4": 5, + "5": 4, + "6": 5, + "7": 8, + "8": 2, + "9": 3, + "10": 3, + "11": 3, + "12": 3, + "13": 1, + "14": 4, + "15": 1, + "16": 42 + } + }, + "exploration": { + "n_lanes": 18340, + "n_uncertified": 333, + "uncertified_rate": 0.01815703380588877, + "max_passes": 16, + "mean_passes": 2.429443838604144, + "n_at_budget": 345, + "budget": 16, + "passes_histogram": { + "0": 142, + "1": 1134, + "2": 15152, + "3": 721, + "4": 282, + "5": 170, + "6": 95, + "7": 75, + "8": 52, + "9": 45, + "10": 33, + "11": 22, + "12": 19, + "13": 16, + "14": 22, + "15": 15, + "16": 345 + } + } + }, + "by_call_half": { + "early": { + "n_lanes": 9320, + "n_uncertified": 368, + "uncertified_rate": 0.039484978540772535, + "max_passes": 16, + "mean_passes": 2.8988197424892705, + "n_at_budget": 387, + "budget": 16, + "passes_histogram": { + "0": 319, + "1": 1136, + "2": 5868, + "3": 722, + "4": 287, + "5": 174, + "6": 100, + "7": 83, + "8": 54, + "9": 48, + "10": 36, + "11": 25, + "12": 22, + "13": 17, + "14": 26, + "15": 16, + "16": 387 + } + }, + "late": { + "n_lanes": 9320, + "n_uncertified": 0, + "uncertified_rate": 0.0, + "max_passes": 3, + "mean_passes": 2.000214592274678, + "n_at_budget": 0, + "budget": 16, + "passes_histogram": { + "1": 10, + "2": 9298, + "3": 12 + } + } + } + }, + "vs_capture_pdip": { + "n_compared": 18552, + "n_excluded_resampled_or_nonfinite": 88, + "median_rel_diff": 3.8503027697988626e-13, + "max_rel_diff": 0.28143148056401085, + "max_abs_diff_nats": 81078.13093022996, + "n_above_lane_rtol": 648, + "n_above_lane_rtol_uncertified": 333 + }, + "uncertified_pdip_recheck": { + "n_uncertified": 368, + "n_rechecked": 256, + "max_rel_diff": 0.0020431399602221546 + }, + "rate_pass_wall_s": 462.32700855000076 + }, + { + "task": 5, + "job": "350768_5", + "mesh": "rectangular", + "stage": "pix1", + "pass": "rate", + "batch": 20, + "solver": "certified", + "certified_fallback": "off", + "slurm_state": "COMPLETED", + "exit_code": "0:0", + "elapsed": "00:08:11", + "start_bst": "2026-09-25T17:39:41", + "end_bst": "2026-09-25T17:47:52", + "node": "euclid-ral-gpu-1", + "file": "fixed_light_trace_rectangular_captured_rate_libcertified_fboff_b16_pix1_hpc_a100_fp64_fixed_light_trace.json", + "rate": { + "overall": { + "n_lanes": 19440, + "n_uncertified": 365, + "uncertified_rate": 0.018775720164609055, + "max_passes": 16, + "mean_passes": 5.948251028806585, + "n_at_budget": 376, + "budget": 16, + "passes_histogram": { + "0": 1, + "1": 23, + "2": 132, + "3": 358, + "4": 719, + "5": 9222, + "6": 3935, + "7": 2722, + "8": 1406, + "9": 326, + "10": 131, + "11": 32, + "12": 19, + "13": 13, + "14": 9, + "15": 16, + "16": 376 + } + }, + "by_nautilus_phase": { + "prior": { + "n_lanes": 300, + "n_uncertified": 43, + "uncertified_rate": 0.14333333333333334, + "max_passes": 16, + "mean_passes": 5.626666666666667, + "n_at_budget": 46, + "budget": 16, + "passes_histogram": { + "0": 1, + "1": 8, + "2": 28, + "3": 141, + "4": 26, + "5": 13, + "6": 8, + "7": 12, + "8": 5, + "9": 4, + "10": 5, + "11": 1, + "12": 1, + "15": 1, + "16": 46 + } + }, + "exploration": { + "n_lanes": 19140, + "n_uncertified": 322, + "uncertified_rate": 0.01682340647857889, + "max_passes": 16, + "mean_passes": 5.953291536050156, + "n_at_budget": 330, + "budget": 16, + "passes_histogram": { + "1": 15, + "2": 104, + "3": 217, + "4": 693, + "5": 9209, + "6": 3927, + "7": 2710, + "8": 1401, + "9": 322, + "10": 126, + "11": 31, + "12": 18, + "13": 13, + "14": 9, + "15": 15, + "16": 330 + } + } + }, + "by_call_half": { + "early": { + "n_lanes": 9720, + "n_uncertified": 365, + "uncertified_rate": 0.03755144032921811, + "max_passes": 16, + "mean_passes": 6.660082304526749, + "n_at_budget": 376, + "budget": 16, + "passes_histogram": { + "0": 1, + "1": 23, + "2": 132, + "3": 357, + "4": 664, + "5": 1818, + "6": 1765, + "7": 2637, + "8": 1401, + "9": 326, + "10": 131, + "11": 32, + "12": 19, + "13": 13, + "14": 9, + "15": 16, + "16": 376 + } + }, + "late": { + "n_lanes": 9720, + "n_uncertified": 0, + "uncertified_rate": 0.0, + "max_passes": 8, + "mean_passes": 5.23641975308642, + "n_at_budget": 0, + "budget": 16, + "passes_histogram": { + "3": 1, + "4": 55, + "5": 7404, + "6": 2170, + "7": 85, + "8": 5 + } + } + } + }, + "vs_capture_pdip": { + "n_compared": 19324, + "n_excluded_resampled_or_nonfinite": 116, + "median_rel_diff": 1.0305711991384924e-11, + "max_rel_diff": 0.05000479767687287, + "max_abs_diff_nats": 140.81189957504466, + "n_above_lane_rtol": 518, + "n_above_lane_rtol_uncertified": 354 + }, + "uncertified_pdip_recheck": { + "n_uncertified": 365, + "n_rechecked": 256, + "max_rel_diff": 0.05000479731872855 + }, + "rate_pass_wall_s": 463.1438640999986 + }, + { + "task": 6, + "job": "350768_6", + "mesh": "delaunay", + "stage": "pix2", + "pass": "rate", + "batch": 20, + "solver": "certified", + "certified_fallback": "off", + "slurm_state": "COMPLETED", + "exit_code": "0:0", + "elapsed": "00:00:54", + "start_bst": "2026-09-25T17:39:41", + "end_bst": "2026-09-25T17:40:35", + "node": "euclid-ral-gpu-1", + "file": "fixed_light_trace_delaunay_captured_rate_libcertified_fboff_b16_pix2_hpc_a100_fp64_fixed_light_trace.json", + "rate": { + "overall": { + "n_lanes": 1680, + "n_uncertified": 82, + "uncertified_rate": 0.04880952380952381, + "max_passes": 16, + "mean_passes": 2.979761904761905, + "n_at_budget": 82, + "budget": 16, + "passes_histogram": { + "0": 94, + "1": 34, + "2": 1089, + "3": 278, + "4": 35, + "5": 19, + "6": 11, + "7": 9, + "8": 13, + "9": 3, + "10": 3, + "11": 3, + "12": 3, + "13": 2, + "14": 2, + "16": 82 + } + }, + "by_nautilus_phase": { + "prior": { + "n_lanes": 160, + "n_uncertified": 33, + "uncertified_rate": 0.20625, + "max_passes": 16, + "mean_passes": 4.28125, + "n_at_budget": 33, + "budget": 16, + "passes_histogram": { + "0": 89, + "1": 9, + "2": 7, + "3": 6, + "4": 4, + "5": 3, + "6": 1, + "8": 4, + "9": 1, + "12": 2, + "14": 1, + "16": 33 + } + }, + "exploration": { + "n_lanes": 1440, + "n_uncertified": 49, + "uncertified_rate": 0.034027777777777775, + "max_passes": 16, + "mean_passes": 2.861111111111111, + "n_at_budget": 49, + "budget": 16, + "passes_histogram": { + "0": 5, + "1": 25, + "2": 1043, + "3": 231, + "4": 31, + "5": 16, + "6": 10, + "7": 9, + "8": 9, + "9": 2, + "10": 3, + "11": 3, + "12": 1, + "13": 2, + "14": 1, + "16": 49 + } + }, + "sampling": { + "n_lanes": 80, + "n_uncertified": 0, + "uncertified_rate": 0.0, + "max_passes": 3, + "mean_passes": 2.5125, + "n_at_budget": 0, + "budget": 16, + "passes_histogram": { + "2": 39, + "3": 41 + } + } + }, + "by_call_half": { + "early": { + "n_lanes": 840, + "n_uncertified": 82, + "uncertified_rate": 0.09761904761904762, + "max_passes": 16, + "mean_passes": 3.7607142857142857, + "n_at_budget": 82, + "budget": 16, + "passes_histogram": { + "0": 94, + "1": 34, + "2": 416, + "3": 111, + "4": 35, + "5": 19, + "6": 11, + "7": 9, + "8": 13, + "9": 3, + "10": 3, + "11": 3, + "12": 3, + "13": 2, + "14": 2, + "16": 82 + } + }, + "late": { + "n_lanes": 840, + "n_uncertified": 0, + "uncertified_rate": 0.0, + "max_passes": 3, + "mean_passes": 2.198809523809524, + "n_at_budget": 0, + "budget": 16, + "passes_histogram": { + "2": 673, + "3": 167 + } + } + } + }, + "vs_capture_pdip": { + "n_compared": 1635, + "n_excluded_resampled_or_nonfinite": 45, + "median_rel_diff": 3.4485168042594903e-13, + "max_rel_diff": 0.9999999905122139, + "max_abs_diff_nats": 141599935363399.28, + "n_above_lane_rtol": 147, + "n_above_lane_rtol_uncertified": 75 + }, + "uncertified_pdip_recheck": { + "n_uncertified": 82, + "n_rechecked": 82, + "max_rel_diff": 0.0001416739213986454 + }, + "rate_pass_wall_s": 25.16404759699799 + }, + { + "task": 7, + "job": "350768_7", + "mesh": "rectangular", + "stage": "pix2", + "pass": "rate", + "batch": 20, + "solver": "certified", + "certified_fallback": "off", + "slurm_state": "COMPLETED", + "exit_code": "0:0", + "elapsed": "00:01:00", + "start_bst": "2026-09-25T17:39:41", + "end_bst": "2026-09-25T17:40:41", + "node": "euclid-ral-gpu-1", + "file": "fixed_light_trace_rectangular_captured_rate_libcertified_fboff_b16_pix2_hpc_a100_fp64_fixed_light_trace.json", + "rate": { + "overall": { + "n_lanes": 2840, + "n_uncertified": 70, + "uncertified_rate": 0.02464788732394366, + "max_passes": 16, + "mean_passes": 6.216549295774648, + "n_at_budget": 71, + "budget": 16, + "passes_histogram": { + "1": 4, + "2": 36, + "3": 87, + "4": 90, + "5": 588, + "6": 1285, + "7": 336, + "8": 323, + "9": 3, + "10": 4, + "11": 2, + "12": 2, + "13": 3, + "14": 6, + "16": 71 + } + }, + "by_nautilus_phase": { + "prior": { + "n_lanes": 160, + "n_uncertified": 32, + "uncertified_rate": 0.2, + "max_passes": 16, + "mean_passes": 6.225, + "n_at_budget": 32, + "budget": 16, + "passes_histogram": { + "1": 2, + "2": 25, + "3": 59, + "4": 15, + "5": 9, + "6": 1, + "7": 11, + "8": 1, + "9": 1, + "10": 1, + "13": 2, + "14": 1, + "16": 32 + } + }, + "exploration": { + "n_lanes": 2680, + "n_uncertified": 38, + "uncertified_rate": 0.014179104477611941, + "max_passes": 16, + "mean_passes": 6.216044776119403, + "n_at_budget": 39, + "budget": 16, + "passes_histogram": { + "1": 2, + "2": 11, + "3": 28, + "4": 75, + "5": 579, + "6": 1284, + "7": 325, + "8": 322, + "9": 2, + "10": 3, + "11": 2, + "12": 2, + "13": 1, + "14": 5, + "16": 39 + } + } + }, + "by_call_half": { + "early": { + "n_lanes": 1420, + "n_uncertified": 70, + "uncertified_rate": 0.04929577464788732, + "max_passes": 16, + "mean_passes": 6.707746478873239, + "n_at_budget": 71, + "budget": 16, + "passes_histogram": { + "1": 4, + "2": 36, + "3": 87, + "4": 90, + "5": 162, + "6": 327, + "7": 300, + "8": 323, + "9": 3, + "10": 4, + "11": 2, + "12": 2, + "13": 3, + "14": 6, + "16": 71 + } + }, + "late": { + "n_lanes": 1420, + "n_uncertified": 0, + "uncertified_rate": 0.0, + "max_passes": 7, + "mean_passes": 5.725352112676056, + "n_at_budget": 0, + "budget": 16, + "passes_histogram": { + "5": 426, + "6": 958, + "7": 36 + } + } + } + }, + "vs_capture_pdip": { + "n_compared": 2789, + "n_excluded_resampled_or_nonfinite": 51, + "median_rel_diff": 1.7077709485178465e-11, + "max_rel_diff": 0.00022536838731692863, + "max_abs_diff_nats": 4.328075358156639, + "n_above_lane_rtol": 130, + "n_above_lane_rtol_uncertified": 69 + }, + "uncertified_pdip_recheck": { + "n_uncertified": 70, + "n_rechecked": 70, + "max_rel_diff": 0.00022536836062276628 + }, + "rate_pass_wall_s": 32.792798049998964 + }, + { + "task": 8, + "job": "350768_8", + "mesh": "delaunay", + "stage": "pix1", + "pass": "time", + "batch": 16, + "solver": "pdip", + "certified_fallback": "on", + "slurm_state": "FAILED", + "exit_code": "1:0", + "elapsed": "00:03:52", + "start_bst": "2026-09-25T17:39:41", + "end_bst": "2026-09-25T17:43:33", + "node": "euclid-ral-gpu-2", + "file": "fixed_light_trace_delaunay_jitvmap16_captured_pix1_libpdip_fbon_b16_hpc_a100_fp64_fixed_light_trace.json", + "lanes_failed": 4, + "lanes_nonfinite": 0, + "gate_passed": false, + "policy_eligible": false, + "uncertified_lanes": null, + "lanes_passes": [ + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null + ], + "vmap_ms_per_lane": 47.00753313750283, + "scalar_ms_per_lane": 50.56510295623866, + "worst_rel_vmap_vs_library_pdip_vmap": 4.298232920675486e-06, + "worst_rel_scalar_vs_library_pdip_scalar": 7.945886510077773e-08, + "worst_cross_composition_rel": 5.173624232378081e-06, + "worst_cross_composition_nats": 0.9163405998842791, + "worst_reference_cross_composition_rel": 9.421817026754843e-06, + "failed_lane_rows": [ + 302, + 303, + 309, + 310 + ], + "peak_bytes_after_all": 18893572608, + "cell_source_sha256": "06a162fcdae6b329384ec33322f443df07215d86e56f0505ac15b3d3473eb432" + }, + { + "task": 9, + "job": "350768_9", + "mesh": "delaunay", + "stage": "pix1", + "pass": "time", + "batch": 16, + "solver": "certified", + "certified_fallback": "on", + "slurm_state": "FAILED", + "exit_code": "1:0", + "elapsed": "00:04:07", + "start_bst": "2026-09-25T17:39:41", + "end_bst": "2026-09-25T17:43:48", + "node": "euclid-ral-gpu-2", + "file": "fixed_light_trace_delaunay_jitvmap16_captured_pix1_libcertified_fbon_b16_hpc_a100_fp64_fixed_light_trace.json", + "lanes_failed": 5, + "lanes_nonfinite": 0, + "gate_passed": false, + "policy_eligible": false, + "uncertified_lanes": 4, + "lanes_passes": [ + 10, + 16, + 0, + 0, + 10, + 4, + 0, + 1, + 4, + 0, + 2, + 16, + 9, + 2, + 16, + 16 + ], + "vmap_ms_per_lane": 60.196023100002094, + "scalar_ms_per_lane": 38.94625665000149, + "worst_rel_vmap_vs_library_pdip_vmap": 1.640444555907388e-06, + "worst_rel_scalar_vs_library_pdip_scalar": 2.6697227078407144e-07, + "worst_cross_composition_rel": 1.0188171104775633e-05, + "worst_cross_composition_nats": 1.8045060188160278, + "worst_reference_cross_composition_rel": 1.0238406960707184e-05, + "failed_lane_rows": [ + 302, + 303, + 306, + 309, + 310 + ], + "peak_bytes_after_all": 18893192192, + "cell_source_sha256": "06a162fcdae6b329384ec33322f443df07215d86e56f0505ac15b3d3473eb432" + }, + { + "task": 10, + "job": "350768_10", + "mesh": "delaunay", + "stage": "pix1", + "pass": "time", + "batch": 16, + "solver": "certified", + "certified_fallback": "off", + "slurm_state": "FAILED", + "exit_code": "1:0", + "elapsed": "00:03:23", + "start_bst": "2026-09-25T17:39:41", + "end_bst": "2026-09-25T17:43:04", + "node": "euclid-ral-gpu-2", + "file": "fixed_light_trace_delaunay_jitvmap16_captured_pix1_libcertified_fboff_b16_hpc_a100_fp64_fixed_light_trace.json", + "lanes_failed": 8, + "lanes_nonfinite": 0, + "gate_passed": false, + "policy_eligible": false, + "uncertified_lanes": 4, + "lanes_passes": [ + 10, + 16, + 0, + 0, + 10, + 4, + 0, + 1, + 4, + 0, + 2, + 16, + 9, + 2, + 16, + 16 + ], + "vmap_ms_per_lane": 32.33851297500223, + "scalar_ms_per_lane": 32.061966100013706, + "worst_rel_vmap_vs_library_pdip_vmap": 0.00022621596528470933, + "worst_rel_scalar_vs_library_pdip_scalar": 0.00022621596528346792, + "worst_cross_composition_rel": 7.039447655916832e-06, + "worst_cross_composition_nats": 1.2468112537171692, + "worst_reference_cross_composition_rel": 8.695530044588951e-06, + "failed_lane_rows": [ + 301, + 302, + 303, + 309, + 310, + 311, + 314, + 315 + ], + "peak_bytes_after_all": 18893188096, + "cell_source_sha256": "06a162fcdae6b329384ec33322f443df07215d86e56f0505ac15b3d3473eb432" + }, + { + "task": 11, + "job": "350768_11", + "mesh": "delaunay", + "stage": "pix1", + "pass": "time", + "batch": 20, + "solver": "pdip", + "certified_fallback": "on", + "slurm_state": "FAILED", + "exit_code": "1:0", + "elapsed": "00:04:11", + "start_bst": "2026-09-25T17:39:41", + "end_bst": "2026-09-25T17:43:52", + "node": "euclid-ral-gpu-2", + "file": "fixed_light_trace_delaunay_jitvmap20_captured_pix1_libpdip_fbon_b16_hpc_a100_fp64_fixed_light_trace.json", + "lanes_failed": 4, + "lanes_nonfinite": 1, + "gate_passed": false, + "policy_eligible": false, + "uncertified_lanes": null, + "lanes_passes": [ + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null + ], + "vmap_ms_per_lane": 43.01403590499831, + "scalar_ms_per_lane": 50.016585889989074, + "worst_rel_vmap_vs_library_pdip_vmap": 1.4025511925612143e-06, + "worst_rel_scalar_vs_library_pdip_scalar": 6.055027543960367e-07, + "worst_cross_composition_rel": 4.812395683945833e-06, + "worst_cross_composition_nats": 0.9129550539655611, + "worst_reference_cross_composition_rel": 5.342281822732562e-06, + "failed_lane_rows": [ + 302, + 303, + 309, + 310 + ], + "peak_bytes_after_all": 23614574336, + "cell_source_sha256": "06a162fcdae6b329384ec33322f443df07215d86e56f0505ac15b3d3473eb432" + }, + { + "task": 12, + "job": "350768_12", + "mesh": "delaunay", + "stage": "pix1", + "pass": "time", + "batch": 20, + "solver": "certified", + "certified_fallback": "on", + "slurm_state": "FAILED", + "exit_code": "1:0", + "elapsed": "00:03:29", + "start_bst": "2026-09-25T17:40:36", + "end_bst": "2026-09-25T17:44:05", + "node": "euclid-ral-gpu-1", + "file": "fixed_light_trace_delaunay_jitvmap20_captured_pix1_libcertified_fbon_b16_hpc_a100_fp64_fixed_light_trace.json", + "lanes_failed": 4, + "lanes_nonfinite": 0, + "gate_passed": false, + "policy_eligible": false, + "uncertified_lanes": 7, + "lanes_passes": [ + 10, + 16, + 0, + 0, + 10, + 4, + 0, + 1, + 4, + 0, + 2, + 16, + 9, + 2, + 16, + 16, + 16, + 16, + 16, + 16 + ], + "vmap_ms_per_lane": 54.36106531500627, + "scalar_ms_per_lane": 44.27824533000603, + "worst_rel_vmap_vs_library_pdip_vmap": 2.992162799785495e-06, + "worst_rel_scalar_vs_library_pdip_scalar": 2.776464482099952e-07, + "worst_cross_composition_rel": 7.857386380969996e-06, + "worst_cross_composition_nats": 1.3916830407688394, + "worst_reference_cross_composition_rel": 5.142856822705047e-06, + "failed_lane_rows": [ + 302, + 303, + 306, + 309 + ], + "peak_bytes_after_all": 23614098176, + "cell_source_sha256": "06a162fcdae6b329384ec33322f443df07215d86e56f0505ac15b3d3473eb432" + }, + { + "task": 13, + "job": "350768_13", + "mesh": "delaunay", + "stage": "pix1", + "pass": "time", + "batch": 20, + "solver": "certified", + "certified_fallback": "off", + "slurm_state": "FAILED", + "exit_code": "1:0", + "elapsed": "00:02:50", + "start_bst": "2026-09-25T17:40:41", + "end_bst": "2026-09-25T17:43:31", + "node": "euclid-ral-gpu-1", + "file": "fixed_light_trace_delaunay_jitvmap20_captured_pix1_libcertified_fboff_b16_hpc_a100_fp64_fixed_light_trace.json", + "lanes_failed": 11, + "lanes_nonfinite": 1, + "gate_passed": false, + "policy_eligible": false, + "uncertified_lanes": 7, + "lanes_passes": [ + 10, + 16, + 0, + 0, + 10, + 4, + 0, + 1, + 4, + 0, + 2, + 16, + 9, + 2, + 16, + 16, + 16, + 16, + 16, + 16 + ], + "vmap_ms_per_lane": 30.486898884992115, + "scalar_ms_per_lane": 34.291548905002855, + "worst_rel_vmap_vs_library_pdip_vmap": 0.00022621596528438225, + "worst_rel_scalar_vs_library_pdip_scalar": 0.00022621596528346792, + "worst_cross_composition_rel": 3.6450903088055186e-06, + "worst_cross_composition_nats": 0.6915066842339002, + "worst_reference_cross_composition_rel": 1.0515266238458702e-05, + "failed_lane_rows": [ + 301, + 302, + 303, + 309, + 310, + 311, + 314, + 315, + 317, + 318, + 319 + ], + "peak_bytes_after_all": 23614093824, + "cell_source_sha256": "06a162fcdae6b329384ec33322f443df07215d86e56f0505ac15b3d3473eb432" + }, + { + "task": 14, + "job": "350768_14", + "mesh": "delaunay", + "stage": "pix1", + "pass": "time", + "batch": 50, + "solver": "pdip", + "certified_fallback": "on", + "slurm_state": "FAILED", + "exit_code": "1:0", + "elapsed": "00:05:42", + "start_bst": "2026-09-25T17:43:05", + "end_bst": "2026-09-25T17:48:47", + "node": "euclid-ral-gpu-2", + "file": "fixed_light_trace_delaunay_jitvmap50_captured_pix1_libpdip_fbon_b16_hpc_a100_fp64_fixed_light_trace.json", + "lanes_failed": 14, + "lanes_nonfinite": 0, + "gate_passed": false, + "policy_eligible": false, + "uncertified_lanes": null, + "lanes_passes": [ + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null + ], + "vmap_ms_per_lane": 32.624801890000526, + "scalar_ms_per_lane": 50.141531236004084, + "worst_rel_vmap_vs_library_pdip_vmap": 0.0001600761178607953, + "worst_rel_scalar_vs_library_pdip_scalar": 1.7171281892290406e-06, + "worst_cross_composition_rel": 9.118771069045989, + "worst_cross_composition_nats": 207206.56460660405, + "worst_reference_cross_composition_rel": 9.118771070049632, + "failed_lane_rows": [ + 302, + 303, + 306, + 309, + 310, + 311, + 325, + 326, + 328, + 334, + 338, + 339, + 343, + 349 + ], + "peak_bytes_after_all": 58806084096, + "cell_source_sha256": "06a162fcdae6b329384ec33322f443df07215d86e56f0505ac15b3d3473eb432", + "allocator_warning": { + "count": 10, + "first": "W0925 17:43:39.241504 27283 bfc_allocator.cc:317] Allocator (GPU_0_bfc) ran out of memory trying to allocate 18.31GiB with freed_by_count=0. The caller indicates that this is not a failure, but this may mean that there could be performance gains if more memory were available.", + "note": "Only the B=50 tasks log it; in exactly these tasks the jit(vmap) arm AND the jit(vmap) reference return values far from the scalar composition and the capture on 44-50 of 50 lanes (median about -5200 nats Delaunay, -6000 rectangular). See the note." + } + }, + { + "task": 15, + "job": "350768_15", + "mesh": "delaunay", + "stage": "pix1", + "pass": "time", + "batch": 50, + "solver": "certified", + "certified_fallback": "on", + "slurm_state": "FAILED", + "exit_code": "1:0", + "elapsed": "00:05:50", + "start_bst": "2026-09-25T17:43:32", + "end_bst": "2026-09-25T17:49:22", + "node": "euclid-ral-gpu-1", + "file": "fixed_light_trace_delaunay_jitvmap50_captured_pix1_libcertified_fbon_b16_hpc_a100_fp64_fixed_light_trace.json", + "lanes_failed": 12, + "lanes_nonfinite": 1, + "gate_passed": false, + "policy_eligible": false, + "uncertified_lanes": 24, + "lanes_passes": [ + 16, + 16, + 1, + 3, + 16, + 10, + 3, + 9, + 10, + 2, + 5, + 16, + 16, + 9, + 15, + 16, + 16, + 16, + 16, + 16, + 13, + 6, + 16, + 13, + 13, + 0, + 1, + 11, + 3, + 16, + 11, + 16, + 16, + 16, + 2, + 16, + 16, + 15, + 16, + 4, + 16, + 16, + 6, + 2, + 8, + 16, + 16, + 16, + 16, + 2 + ], + "vmap_ms_per_lane": 40.18500091399619, + "scalar_ms_per_lane": 44.16470036399551, + "worst_rel_vmap_vs_library_pdip_vmap": 0.00014376555485399797, + "worst_rel_scalar_vs_library_pdip_scalar": 4.862249437152171e-07, + "worst_cross_composition_rel": 9.11877106942683, + "worst_cross_composition_nats": 207206.5689132461, + "worst_reference_cross_composition_rel": 9.118771069930967, + "failed_lane_rows": [ + 302, + 303, + 306, + 309, + 310, + 325, + 326, + 328, + 334, + 339, + 343, + 349 + ], + "peak_bytes_after_all": 58804887808, + "cell_source_sha256": "06a162fcdae6b329384ec33322f443df07215d86e56f0505ac15b3d3473eb432", + "allocator_warning": { + "count": 10, + "first": "W0925 17:44:06.429107 29005 bfc_allocator.cc:317] Allocator (GPU_0_bfc) ran out of memory trying to allocate 18.31GiB with freed_by_count=0. The caller indicates that this is not a failure, but this may mean that there could be performance gains if more memory were available.", + "note": "Only the B=50 tasks log it; in exactly these tasks the jit(vmap) arm AND the jit(vmap) reference return values far from the scalar composition and the capture on 44-50 of 50 lanes (median about -5200 nats Delaunay, -6000 rectangular). See the note." + } + }, + { + "task": 16, + "job": "350768_16", + "mesh": "delaunay", + "stage": "pix1", + "pass": "time", + "batch": 50, + "solver": "certified", + "certified_fallback": "off", + "slurm_state": "FAILED", + "exit_code": "1:0", + "elapsed": "00:04:40", + "start_bst": "2026-09-25T17:43:35", + "end_bst": "2026-09-25T17:48:15", + "node": "euclid-ral-gpu-2", + "file": "fixed_light_trace_delaunay_jitvmap50_captured_pix1_libcertified_fboff_b16_hpc_a100_fp64_fixed_light_trace.json", + "lanes_failed": 36, + "lanes_nonfinite": 1, + "gate_passed": false, + "policy_eligible": false, + "uncertified_lanes": 24, + "lanes_passes": [ + 16, + 16, + 1, + 3, + 16, + 10, + 3, + 9, + 10, + 2, + 5, + 16, + 16, + 9, + 15, + 16, + 16, + 16, + 16, + 16, + 13, + 6, + 16, + 13, + 13, + 0, + 1, + 11, + 3, + 16, + 11, + 16, + 16, + 16, + 2, + 16, + 16, + 15, + 16, + 4, + 16, + 16, + 6, + 2, + 8, + 16, + 16, + 16, + 16, + 2 + ], + "vmap_ms_per_lane": 26.698250825997093, + "scalar_ms_per_lane": 34.301709966006456, + "worst_rel_vmap_vs_library_pdip_vmap": 0.0016808435212213046, + "worst_rel_scalar_vs_library_pdip_scalar": 0.00033061327484918784, + "worst_cross_composition_rel": 9.118771067961308, + "worst_cross_composition_nats": 207206.57372340147, + "worst_reference_cross_composition_rel": 9.11877107039591, + "failed_lane_rows": [ + 300, + 301, + 302, + 303, + 304, + 306, + 309, + 310, + 311, + 312, + 314, + 315, + 316, + 317, + 318, + 319, + 322, + 325, + 326, + 328, + 329, + 331, + 332, + 333, + 334, + 335, + 337, + 338, + 339, + 340, + 341, + 343, + 345, + 346, + 348, + 349 + ], + "peak_bytes_after_all": 58804883456, + "cell_source_sha256": "06a162fcdae6b329384ec33322f443df07215d86e56f0505ac15b3d3473eb432", + "allocator_warning": { + "count": 10, + "first": "W0925 17:44:09.806462 28133 bfc_allocator.cc:317] Allocator (GPU_0_bfc) ran out of memory trying to allocate 18.31GiB with freed_by_count=0. The caller indicates that this is not a failure, but this may mean that there could be performance gains if more memory were available.", + "note": "Only the B=50 tasks log it; in exactly these tasks the jit(vmap) arm AND the jit(vmap) reference return values far from the scalar composition and the capture on 44-50 of 50 lanes (median about -5200 nats Delaunay, -6000 rectangular). See the note." + } + }, + { + "task": 17, + "job": "350768_17", + "mesh": "delaunay", + "stage": "pix1", + "pass": "time", + "batch": 100, + "solver": "pdip", + "certified_fallback": "on", + "slurm_state": "FAILED", + "exit_code": "1:0", + "elapsed": "00:00:45", + "start_bst": "2026-09-25T17:43:49", + "end_bst": "2026-09-25T17:44:34", + "node": "euclid-ral-gpu-2", + "kind": "memory-limit row (pre-registered: an OOM task is itself the memory-limit row)", + "oom": { + "where": "fixed_light_trace.py:2340 \u2014 the jit(jax.vmap) library-PDIP reference (_library_pdip_fn(batched_tree)), executable jit__likelihood, before either arm ran", + "err_excerpt": [ + "W0925 17:44:18.896481 28863 hlo_rematerialization.cc:3231] Can't reduce memory use below 56.48GiB (60647426270 bytes) by rematerialization; only reduced to 89.66GiB (96270652980 bytes), down from 89.67GiB (96285884728 bytes) originally", + "W0925 17:44:33.352728 28863 bfc_allocator.cc:514] Allocator (GPU_0_bfc) ran out of memory trying to allocate 73.30GiB (rounded to 78702055168)requested by op", + "jax.errors.JaxRuntimeError: RESOURCE_EXHAUSTED: Out of memory while trying to allocate 73.30GiB. [tf-allocator-allocation-error=''] [executable_name='jit__likelihood']" + ] + } + }, + { + "task": 18, + "job": "350768_18", + "mesh": "delaunay", + "stage": "pix1", + "pass": "time", + "batch": 100, + "solver": "certified", + "certified_fallback": "on", + "slurm_state": "FAILED", + "exit_code": "1:0", + "elapsed": "00:00:45", + "start_bst": "2026-09-25T17:43:52", + "end_bst": "2026-09-25T17:44:37", + "node": "euclid-ral-gpu-2", + "kind": "memory-limit row (pre-registered: an OOM task is itself the memory-limit row)", + "oom": { + "where": "fixed_light_trace.py:2340 \u2014 the jit(jax.vmap) library-PDIP reference (_library_pdip_fn(batched_tree)), executable jit__likelihood, before either arm ran", + "err_excerpt": [ + "W0925 17:44:21.584886 29155 hlo_rematerialization.cc:3231] Can't reduce memory use below 56.48GiB (60647426270 bytes) by rematerialization; only reduced to 89.66GiB (96270652980 bytes), down from 89.67GiB (96285884728 bytes) originally", + "W0925 17:44:36.018757 29155 bfc_allocator.cc:514] Allocator (GPU_0_bfc) ran out of memory trying to allocate 73.30GiB (rounded to 78702055168)requested by op", + "jax.errors.JaxRuntimeError: RESOURCE_EXHAUSTED: Out of memory while trying to allocate 73.30GiB. [tf-allocator-allocation-error=''] [executable_name='jit__likelihood']" + ] + } + }, + { + "task": 19, + "job": "350768_19", + "mesh": "delaunay", + "stage": "pix1", + "pass": "time", + "batch": 100, + "solver": "certified", + "certified_fallback": "off", + "slurm_state": "FAILED", + "exit_code": "1:0", + "elapsed": "00:00:44", + "start_bst": "2026-09-25T17:44:06", + "end_bst": "2026-09-25T17:44:50", + "node": "euclid-ral-gpu-1", + "kind": "memory-limit row (pre-registered: an OOM task is itself the memory-limit row)", + "oom": { + "where": "fixed_light_trace.py:2340 \u2014 the jit(jax.vmap) library-PDIP reference (_library_pdip_fn(batched_tree)), executable jit__likelihood, before either arm ran", + "err_excerpt": [ + "W0925 17:44:35.721253 29822 hlo_rematerialization.cc:3231] Can't reduce memory use below 56.48GiB (60647426270 bytes) by rematerialization; only reduced to 89.66GiB (96270652980 bytes), down from 89.67GiB (96285884728 bytes) originally", + "W0925 17:44:49.734657 29822 bfc_allocator.cc:514] Allocator (GPU_0_bfc) ran out of memory trying to allocate 73.30GiB (rounded to 78702055168)requested by op", + "jax.errors.JaxRuntimeError: RESOURCE_EXHAUSTED: Out of memory while trying to allocate 73.30GiB. [executable_name='jit__likelihood'] [tf-allocator-allocation-error='']" + ] + } + }, + { + "task": 20, + "job": "350768_20", + "mesh": "rectangular", + "stage": "pix1", + "pass": "time", + "batch": 16, + "solver": "pdip", + "certified_fallback": "on", + "slurm_state": "FAILED", + "exit_code": "1:0", + "elapsed": "00:02:13", + "start_bst": "2026-09-25T17:44:35", + "end_bst": "2026-09-25T17:46:48", + "node": "euclid-ral-gpu-2", + "file": "fixed_light_trace_rectangular_jitvmap16_captured_pix1_libpdip_fbon_b16_hpc_a100_fp64_fixed_light_trace.json", + "lanes_failed": 2, + "lanes_nonfinite": 2, + "gate_passed": false, + "policy_eligible": false, + "uncertified_lanes": null, + "lanes_passes": [ + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null + ], + "vmap_ms_per_lane": 33.22804240624464, + "scalar_ms_per_lane": 41.37019584375139, + "worst_rel_vmap_vs_library_pdip_vmap": 9.243390586977035e-07, + "worst_rel_scalar_vs_library_pdip_scalar": 1.3132765315747392e-11, + "worst_cross_composition_rel": 3.9876053361098615e-06, + "worst_cross_composition_nats": 0.7091903705149889, + "worst_reference_cross_composition_rel": 2.208331611230817e-10, + "failed_lane_rows": [ + 304, + 314 + ], + "peak_bytes_after_all": 19155302144, + "cell_source_sha256": "06a162fcdae6b329384ec33322f443df07215d86e56f0505ac15b3d3473eb432" + }, + { + "task": 21, + "job": "350768_21", + "mesh": "rectangular", + "stage": "pix1", + "pass": "time", + "batch": 16, + "solver": "certified", + "certified_fallback": "on", + "slurm_state": "FAILED", + "exit_code": "1:0", + "elapsed": "00:02:45", + "start_bst": "2026-09-25T17:44:38", + "end_bst": "2026-09-25T17:47:23", + "node": "euclid-ral-gpu-2", + "file": "fixed_light_trace_rectangular_jitvmap16_captured_pix1_libcertified_fbon_b16_hpc_a100_fp64_fixed_light_trace.json", + "lanes_failed": 2, + "lanes_nonfinite": 2, + "gate_passed": false, + "policy_eligible": false, + "uncertified_lanes": 7, + "lanes_passes": [ + 16, + 16, + 16, + 4, + 2, + 14, + 6, + 6, + 16, + 16, + 6, + 16, + 16, + 9, + 2, + 8 + ], + "vmap_ms_per_lane": 44.398622018752576, + "scalar_ms_per_lane": 42.345745943748625, + "worst_rel_vmap_vs_library_pdip_vmap": 1.1064675014312083e-07, + "worst_rel_scalar_vs_library_pdip_scalar": 8.059373477961076e-11, + "worst_cross_composition_rel": 5.182956826919294e-10, + "worst_cross_composition_nats": 1.1488657037261873e-05, + "worst_reference_cross_composition_rel": 2.3101233999567986e-10, + "failed_lane_rows": [ + 304, + 314 + ], + "peak_bytes_after_all": 19155306752, + "cell_source_sha256": "06a162fcdae6b329384ec33322f443df07215d86e56f0505ac15b3d3473eb432" + }, + { + "task": 22, + "job": "350768_22", + "mesh": "rectangular", + "stage": "pix1", + "pass": "time", + "batch": 16, + "solver": "certified", + "certified_fallback": "off", + "slurm_state": "FAILED", + "exit_code": "1:0", + "elapsed": "00:02:09", + "start_bst": "2026-09-25T17:44:51", + "end_bst": "2026-09-25T17:47:00", + "node": "euclid-ral-gpu-1", + "file": "fixed_light_trace_rectangular_jitvmap16_captured_pix1_libcertified_fboff_b16_hpc_a100_fp64_fixed_light_trace.json", + "lanes_failed": 9, + "lanes_nonfinite": 2, + "gate_passed": false, + "policy_eligible": false, + "uncertified_lanes": 7, + "lanes_passes": [ + 16, + 16, + 16, + 4, + 2, + 14, + 6, + 6, + 16, + 16, + 6, + 16, + 16, + 9, + 2, + 8 + ], + "vmap_ms_per_lane": 27.924997075001556, + "scalar_ms_per_lane": 30.79918751873265, + "worst_rel_vmap_vs_library_pdip_vmap": 0.0003262651078028279, + "worst_rel_scalar_vs_library_pdip_scalar": 0.0003262651078086841, + "worst_cross_composition_rel": 2.81450959148995e-10, + "worst_cross_composition_nats": 6.238704372663051e-06, + "worst_reference_cross_composition_rel": 4.674659168001253e-10, + "failed_lane_rows": [ + 300, + 301, + 302, + 304, + 308, + 309, + 311, + 312, + 314 + ], + "peak_bytes_after_all": 19155302656, + "cell_source_sha256": "06a162fcdae6b329384ec33322f443df07215d86e56f0505ac15b3d3473eb432" + }, + { + "task": 23, + "job": "350768_23", + "mesh": "rectangular", + "stage": "pix1", + "pass": "time", + "batch": 20, + "solver": "pdip", + "certified_fallback": "on", + "slurm_state": "FAILED", + "exit_code": "1:0", + "elapsed": "00:02:30", + "start_bst": "2026-09-25T17:46:49", + "end_bst": "2026-09-25T17:49:19", + "node": "euclid-ral-gpu-2", + "file": "fixed_light_trace_rectangular_jitvmap20_captured_pix1_libpdip_fbon_b16_hpc_a100_fp64_fixed_light_trace.json", + "lanes_failed": 3, + "lanes_nonfinite": 2, + "gate_passed": false, + "policy_eligible": false, + "uncertified_lanes": null, + "lanes_passes": [ + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null + ], + "vmap_ms_per_lane": 30.633006129992282, + "scalar_ms_per_lane": 41.09624338499998, + "worst_rel_vmap_vs_library_pdip_vmap": 4.402874702241095e-06, + "worst_rel_scalar_vs_library_pdip_scalar": 6.813093545205072e-07, + "worst_cross_composition_rel": 2.638042948330858e-06, + "worst_cross_composition_nats": 0.46917218453017995, + "worst_reference_cross_composition_rel": 2.4435518207195536e-06, + "failed_lane_rows": [ + 304, + 314, + 317 + ], + "peak_bytes_after_all": 23941737472, + "cell_source_sha256": "06a162fcdae6b329384ec33322f443df07215d86e56f0505ac15b3d3473eb432" + }, + { + "task": 24, + "job": "350768_24", + "mesh": "rectangular", + "stage": "pix1", + "pass": "time", + "batch": 20, + "solver": "certified", + "certified_fallback": "on", + "slurm_state": "FAILED", + "exit_code": "1:0", + "elapsed": "00:03:06", + "start_bst": "2026-09-25T17:47:01", + "end_bst": "2026-09-25T17:50:07", + "node": "euclid-ral-gpu-1", + "file": "fixed_light_trace_rectangular_jitvmap20_captured_pix1_libcertified_fbon_b16_hpc_a100_fp64_fixed_light_trace.json", + "lanes_failed": 3, + "lanes_nonfinite": 3, + "gate_passed": false, + "policy_eligible": false, + "uncertified_lanes": 10, + "lanes_passes": [ + 16, + 16, + 16, + 4, + 2, + 14, + 6, + 6, + 16, + 16, + 6, + 16, + 16, + 9, + 2, + 8, + 16, + 3, + 16, + 16 + ], + "vmap_ms_per_lane": 40.443775775001995, + "scalar_ms_per_lane": 44.673493940008484, + "worst_rel_vmap_vs_library_pdip_vmap": 1.0269154037001891e-06, + "worst_rel_scalar_vs_library_pdip_scalar": 1.1000845059984538e-10, + "worst_cross_composition_rel": 2.4203854865916776e-10, + "worst_cross_composition_nats": 5.365080141928047e-06, + "worst_reference_cross_composition_rel": 4.777613298776501e-10, + "failed_lane_rows": [ + 304, + 314, + 317 + ], + "peak_bytes_after_all": 23941742080, + "cell_source_sha256": "06a162fcdae6b329384ec33322f443df07215d86e56f0505ac15b3d3473eb432" + }, + { + "task": 25, + "job": "350768_25", + "mesh": "rectangular", + "stage": "pix1", + "pass": "time", + "batch": 20, + "solver": "certified", + "certified_fallback": "off", + "slurm_state": "FAILED", + "exit_code": "1:0", + "elapsed": "00:02:24", + "start_bst": "2026-09-25T17:47:24", + "end_bst": "2026-09-25T17:49:48", + "node": "euclid-ral-gpu-2", + "file": "fixed_light_trace_rectangular_jitvmap20_captured_pix1_libcertified_fboff_b16_hpc_a100_fp64_fixed_light_trace.json", + "lanes_failed": 13, + "lanes_nonfinite": 3, + "gate_passed": false, + "policy_eligible": false, + "uncertified_lanes": 10, + "lanes_passes": [ + 16, + 16, + 16, + 4, + 2, + 14, + 6, + 6, + 16, + 16, + 6, + 16, + 16, + 9, + 2, + 8, + 16, + 3, + 16, + 16 + ], + "vmap_ms_per_lane": 26.483145425008843, + "scalar_ms_per_lane": 31.29289364000215, + "worst_rel_vmap_vs_library_pdip_vmap": 0.007943062148308363, + "worst_rel_scalar_vs_library_pdip_scalar": 0.007943062148915846, + "worst_cross_composition_rel": 3.465436389373537e-10, + "worst_cross_composition_nats": 7.681563147343695e-06, + "worst_reference_cross_composition_rel": 3.695103045280794e-10, + "failed_lane_rows": [ + 300, + 301, + 302, + 304, + 308, + 309, + 311, + 312, + 314, + 316, + 317, + 318, + 319 + ], + "peak_bytes_after_all": 23941737984, + "cell_source_sha256": "06a162fcdae6b329384ec33322f443df07215d86e56f0505ac15b3d3473eb432" + }, + { + "task": 26, + "job": "350768_26", + "mesh": "rectangular", + "stage": "pix1", + "pass": "time", + "batch": 50, + "solver": "pdip", + "certified_fallback": "on", + "slurm_state": "FAILED", + "exit_code": "1:0", + "elapsed": "00:04:37", + "start_bst": "2026-09-25T17:47:52", + "end_bst": "2026-09-25T17:52:29", + "node": "euclid-ral-gpu-1", + "file": "fixed_light_trace_rectangular_jitvmap50_captured_pix1_libpdip_fbon_b16_hpc_a100_fp64_fixed_light_trace.json", + "lanes_failed": 12, + "lanes_nonfinite": 6, + "gate_passed": false, + "policy_eligible": false, + "uncertified_lanes": null, + "lanes_passes": [ + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null + ], + "vmap_ms_per_lane": 27.601653438003268, + "scalar_ms_per_lane": 40.4425362999973, + "worst_rel_vmap_vs_library_pdip_vmap": 4.057014032996304e-05, + "worst_rel_scalar_vs_library_pdip_scalar": 3.086549502635267e-07, + "worst_cross_composition_rel": 8.59050589370184, + "worst_cross_composition_nats": 213012.46924944606, + "worst_reference_cross_composition_rel": 8.590505893907316, + "failed_lane_rows": [ + 304, + 314, + 317, + 320, + 321, + 326, + 334, + 340, + 341, + 347, + 348, + 349 + ], + "peak_bytes_after_all": 59620975616, + "cell_source_sha256": "06a162fcdae6b329384ec33322f443df07215d86e56f0505ac15b3d3473eb432", + "allocator_warning": { + "count": 10, + "first": "W0925 17:48:22.669720 34605 bfc_allocator.cc:317] Allocator (GPU_0_bfc) ran out of memory trying to allocate 18.56GiB with freed_by_count=0. The caller indicates that this is not a failure, but this may mean that there could be performance gains if more memory were available.", + "note": "Only the B=50 tasks log it; in exactly these tasks the jit(vmap) arm AND the jit(vmap) reference return values far from the scalar composition and the capture on 44-50 of 50 lanes (median about -5200 nats Delaunay, -6000 rectangular). See the note." + } + }, + { + "task": 27, + "job": "350768_27", + "mesh": "rectangular", + "stage": "pix1", + "pass": "time", + "batch": 50, + "solver": "certified", + "certified_fallback": "on", + "slurm_state": "FAILED", + "exit_code": "1:0", + "elapsed": "00:05:17", + "start_bst": "2026-09-25T17:47:53", + "end_bst": "2026-09-25T17:53:10", + "node": "euclid-ral-gpu-1", + "file": "fixed_light_trace_rectangular_jitvmap50_captured_pix1_libcertified_fbon_b16_hpc_a100_fp64_fixed_light_trace.json", + "lanes_failed": 12, + "lanes_nonfinite": 5, + "gate_passed": false, + "policy_eligible": false, + "uncertified_lanes": 28, + "lanes_passes": [ + 16, + 16, + 16, + 5, + 1, + 16, + 14, + 7, + 16, + 16, + 16, + 16, + 16, + 16, + 5, + 7, + 16, + 3, + 16, + 16, + 4, + 2, + 16, + 8, + 16, + 11, + 16, + 8, + 12, + 16, + 16, + 12, + 16, + 16, + 5, + 16, + 16, + 16, + 16, + 16, + 2, + 6, + 13, + 16, + 16, + 16, + 16, + 1, + 3, + 3 + ], + "vmap_ms_per_lane": 34.05736626200087, + "scalar_ms_per_lane": 41.65838341399649, + "worst_rel_vmap_vs_library_pdip_vmap": 0.00010762870210578301, + "worst_rel_scalar_vs_library_pdip_scalar": 7.357512656451285e-06, + "worst_cross_composition_rel": 8.590505893343662, + "worst_cross_composition_nats": 213012.4692670565, + "worst_reference_cross_composition_rel": 8.59050589334364, + "failed_lane_rows": [ + 304, + 314, + 317, + 320, + 321, + 326, + 334, + 340, + 341, + 347, + 348, + 349 + ], + "peak_bytes_after_all": 59620980224, + "cell_source_sha256": "06a162fcdae6b329384ec33322f443df07215d86e56f0505ac15b3d3473eb432", + "allocator_warning": { + "count": 10, + "first": "W0925 17:48:23.367057 34633 bfc_allocator.cc:317] Allocator (GPU_0_bfc) ran out of memory trying to allocate 18.56GiB with freed_by_count=0. The caller indicates that this is not a failure, but this may mean that there could be performance gains if more memory were available.", + "note": "Only the B=50 tasks log it; in exactly these tasks the jit(vmap) arm AND the jit(vmap) reference return values far from the scalar composition and the capture on 44-50 of 50 lanes (median about -5200 nats Delaunay, -6000 rectangular). See the note." + } + }, + { + "task": 28, + "job": "350768_28", + "mesh": "rectangular", + "stage": "pix1", + "pass": "time", + "batch": 50, + "solver": "certified", + "certified_fallback": "off", + "slurm_state": "FAILED", + "exit_code": "1:0", + "elapsed": "00:03:56", + "start_bst": "2026-09-25T17:48:15", + "end_bst": "2026-09-25T17:52:11", + "node": "euclid-ral-gpu-2", + "file": "fixed_light_trace_rectangular_jitvmap50_captured_pix1_libcertified_fboff_b16_hpc_a100_fp64_fixed_light_trace.json", + "lanes_failed": 40, + "lanes_nonfinite": 5, + "gate_passed": false, + "policy_eligible": false, + "uncertified_lanes": 28, + "lanes_passes": [ + 16, + 16, + 16, + 5, + 1, + 16, + 14, + 7, + 16, + 16, + 16, + 16, + 16, + 16, + 5, + 7, + 16, + 3, + 16, + 16, + 4, + 2, + 16, + 8, + 16, + 11, + 16, + 8, + 12, + 16, + 16, + 12, + 16, + 16, + 5, + 16, + 16, + 16, + 16, + 16, + 2, + 6, + 13, + 16, + 16, + 16, + 16, + 1, + 3, + 3 + ], + "vmap_ms_per_lane": 22.072692308000114, + "scalar_ms_per_lane": 30.395002274002763, + "worst_rel_vmap_vs_library_pdip_vmap": 0.029492876534964213, + "worst_rel_scalar_vs_library_pdip_scalar": 0.007943062148915846, + "worst_cross_composition_rel": 8.590505893729043, + "worst_cross_composition_nats": 213012.4689685551, + "worst_reference_cross_composition_rel": 8.59050589342497, + "failed_lane_rows": [ + 300, + 301, + 302, + 303, + 304, + 305, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 324, + 326, + 329, + 330, + 332, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 343, + 344, + 345, + 346, + 347, + 348, + 349 + ], + "peak_bytes_after_all": 59620976128, + "cell_source_sha256": "06a162fcdae6b329384ec33322f443df07215d86e56f0505ac15b3d3473eb432", + "allocator_warning": { + "count": 10, + "first": "W0925 17:48:45.802160 37052 bfc_allocator.cc:317] Allocator (GPU_0_bfc) ran out of memory trying to allocate 18.56GiB with freed_by_count=0. The caller indicates that this is not a failure, but this may mean that there could be performance gains if more memory were available.", + "note": "Only the B=50 tasks log it; in exactly these tasks the jit(vmap) arm AND the jit(vmap) reference return values far from the scalar composition and the capture on 44-50 of 50 lanes (median about -5200 nats Delaunay, -6000 rectangular). See the note." + } + }, + { + "task": 29, + "job": "350768_29", + "mesh": "rectangular", + "stage": "pix1", + "pass": "time", + "batch": 100, + "solver": "pdip", + "certified_fallback": "on", + "slurm_state": "FAILED", + "exit_code": "1:0", + "elapsed": "00:00:41", + "start_bst": "2026-09-25T17:48:48", + "end_bst": "2026-09-25T17:49:29", + "node": "euclid-ral-gpu-2", + "kind": "memory-limit row (pre-registered: an OOM task is itself the memory-limit row)", + "oom": { + "where": "fixed_light_trace.py:2340 \u2014 the jit(jax.vmap) library-PDIP reference (_library_pdip_fn(batched_tree)), executable jit__likelihood, before either arm ran", + "err_excerpt": [ + "W0925 17:49:15.414561 38149 hlo_rematerialization.cc:3231] Can't reduce memory use below 56.48GiB (60647426270 bytes) by rematerialization; only reduced to 90.86GiB (97564728960 bytes), down from 90.91GiB (97613884176 bytes) originally", + "W0925 17:49:28.626967 38149 bfc_allocator.cc:514] Allocator (GPU_0_bfc) ran out of memory trying to allocate 74.27GiB (rounded to 79749325568)requested by op", + "jax.errors.JaxRuntimeError: RESOURCE_EXHAUSTED: Out of memory while trying to allocate 74.27GiB. [executable_name='jit__likelihood'] [tf-allocator-allocation-error='']" + ] + } + }, + { + "task": 30, + "job": "350768_30", + "mesh": "rectangular", + "stage": "pix1", + "pass": "time", + "batch": 100, + "solver": "certified", + "certified_fallback": "on", + "slurm_state": "FAILED", + "exit_code": "1:0", + "elapsed": "00:00:41", + "start_bst": "2026-09-25T17:49:19", + "end_bst": "2026-09-25T17:50:00", + "node": "euclid-ral-gpu-2", + "kind": "memory-limit row (pre-registered: an OOM task is itself the memory-limit row)", + "oom": { + "where": "fixed_light_trace.py:2340 \u2014 the jit(jax.vmap) library-PDIP reference (_library_pdip_fn(batched_tree)), executable jit__likelihood, before either arm ran", + "err_excerpt": [ + "W0925 17:49:46.651752 39379 hlo_rematerialization.cc:3231] Can't reduce memory use below 56.48GiB (60647426270 bytes) by rematerialization; only reduced to 90.86GiB (97564728960 bytes), down from 90.91GiB (97613884176 bytes) originally", + "W0925 17:49:59.853624 39379 bfc_allocator.cc:514] Allocator (GPU_0_bfc) ran out of memory trying to allocate 74.27GiB (rounded to 79749325568)requested by op", + "jax.errors.JaxRuntimeError: RESOURCE_EXHAUSTED: Out of memory while trying to allocate 74.27GiB. [executable_name='jit__likelihood'] [tf-allocator-allocation-error='']" + ] + } + }, + { + "task": 31, + "job": "350768_31", + "mesh": "rectangular", + "stage": "pix1", + "pass": "time", + "batch": 100, + "solver": "certified", + "certified_fallback": "off", + "slurm_state": "FAILED", + "exit_code": "1:0", + "elapsed": "00:00:41", + "start_bst": "2026-09-25T17:49:22", + "end_bst": "2026-09-25T17:50:03", + "node": "euclid-ral-gpu-1", + "kind": "memory-limit row (pre-registered: an OOM task is itself the memory-limit row)", + "oom": { + "where": "fixed_light_trace.py:2340 \u2014 the jit(jax.vmap) library-PDIP reference (_library_pdip_fn(batched_tree)), executable jit__likelihood, before either arm ran", + "err_excerpt": [ + "W0925 17:49:49.361243 37154 hlo_rematerialization.cc:3231] Can't reduce memory use below 56.48GiB (60647426270 bytes) by rematerialization; only reduced to 90.86GiB (97564728960 bytes), down from 90.91GiB (97613884176 bytes) originally", + "W0925 17:50:02.524977 37154 bfc_allocator.cc:514] Allocator (GPU_0_bfc) ran out of memory trying to allocate 74.27GiB (rounded to 79749325568)requested by op", + "jax.errors.JaxRuntimeError: RESOURCE_EXHAUSTED: Out of memory while trying to allocate 74.27GiB. [executable_name='jit__likelihood'] [tf-allocator-allocation-error='']" + ] + } + }, + { + "task": 32, + "job": "350768_32", + "mesh": "delaunay", + "stage": "pix2", + "pass": "time", + "batch": 20, + "solver": "pdip", + "certified_fallback": "on", + "slurm_state": "FAILED", + "exit_code": "1:0", + "elapsed": "00:02:48", + "start_bst": "2026-09-25T17:49:29", + "end_bst": "2026-09-25T17:52:17", + "node": "euclid-ral-gpu-2", + "file": "fixed_light_trace_delaunay_jitvmap20_captured_pix2_libpdip_fbon_b16_hpc_a100_fp64_fixed_light_trace.json", + "lanes_failed": 5, + "lanes_nonfinite": 0, + "gate_passed": false, + "policy_eligible": false, + "uncertified_lanes": null, + "lanes_passes": [ + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null + ], + "vmap_ms_per_lane": 22.847947945010674, + "scalar_ms_per_lane": 49.51313981000567, + "worst_rel_vmap_vs_library_pdip_vmap": 5.253205201316868e-07, + "worst_rel_scalar_vs_library_pdip_scalar": 2.4026623773717825e-08, + "worst_cross_composition_rel": 4.231095781827759e-06, + "worst_cross_composition_nats": 0.5864064415218309, + "worst_reference_cross_composition_rel": 3.7298000277882455e-06, + "failed_lane_rows": [ + 161, + 167, + 175, + 176, + 177 + ], + "peak_bytes_after_all": 2405526272, + "cell_source_sha256": "06a162fcdae6b329384ec33322f443df07215d86e56f0505ac15b3d3473eb432" + }, + { + "task": 33, + "job": "350768_33", + "mesh": "delaunay", + "stage": "pix2", + "pass": "time", + "batch": 20, + "solver": "certified", + "certified_fallback": "on", + "slurm_state": "FAILED", + "exit_code": "1:0", + "elapsed": "00:02:58", + "start_bst": "2026-09-25T17:49:49", + "end_bst": "2026-09-25T17:52:47", + "node": "euclid-ral-gpu-2", + "file": "fixed_light_trace_delaunay_jitvmap20_captured_pix2_libcertified_fbon_b16_hpc_a100_fp64_fixed_light_trace.json", + "lanes_failed": 5, + "lanes_nonfinite": 0, + "gate_passed": false, + "policy_eligible": false, + "uncertified_lanes": 8, + "lanes_passes": [ + 16, + 0, + 2, + 4, + 16, + 16, + 16, + 1, + 2, + 16, + 4, + 16, + 5, + 16, + 2, + 1, + 2, + 0, + 16, + 1 + ], + "vmap_ms_per_lane": 34.06693974000518, + "scalar_ms_per_lane": 43.62431089499296, + "worst_rel_vmap_vs_library_pdip_vmap": 6.933228735609044e-07, + "worst_rel_scalar_vs_library_pdip_scalar": 9.296290734042179e-08, + "worst_cross_composition_rel": 3.474826611056853e-06, + "worst_cross_composition_nats": 0.4815918111708015, + "worst_reference_cross_composition_rel": 2.6885386431002047e-06, + "failed_lane_rows": [ + 161, + 167, + 175, + 176, + 177 + ], + "peak_bytes_after_all": 2748252160, + "cell_source_sha256": "06a162fcdae6b329384ec33322f443df07215d86e56f0505ac15b3d3473eb432" + }, + { + "task": 34, + "job": "350768_34", + "mesh": "delaunay", + "stage": "pix2", + "pass": "time", + "batch": 20, + "solver": "certified", + "certified_fallback": "off", + "slurm_state": "FAILED", + "exit_code": "1:0", + "elapsed": "00:02:09", + "start_bst": "2026-09-25T17:50:01", + "end_bst": "2026-09-25T17:52:10", + "node": "euclid-ral-gpu-2", + "file": "fixed_light_trace_delaunay_jitvmap20_captured_pix2_libcertified_fboff_b16_hpc_a100_fp64_fixed_light_trace.json", + "lanes_failed": 12, + "lanes_nonfinite": 0, + "gate_passed": false, + "policy_eligible": false, + "uncertified_lanes": 8, + "lanes_passes": [ + 16, + 0, + 2, + 4, + 16, + 16, + 16, + 1, + 2, + 16, + 4, + 16, + 5, + 16, + 2, + 1, + 2, + 0, + 16, + 1 + ], + "vmap_ms_per_lane": 13.211890570000833, + "scalar_ms_per_lane": 33.14106489999176, + "worst_rel_vmap_vs_library_pdip_vmap": 0.00014167397759026634, + "worst_rel_scalar_vs_library_pdip_scalar": 0.00014167397754807044, + "worst_cross_composition_rel": 3.4928040560591425e-06, + "worst_cross_composition_nats": 0.48408338747685775, + "worst_reference_cross_composition_rel": 4.959084624209809e-06, + "failed_lane_rows": [ + 160, + 161, + 164, + 165, + 166, + 167, + 169, + 171, + 173, + 175, + 176, + 177 + ], + "peak_bytes_after_all": 2399160064, + "cell_source_sha256": "06a162fcdae6b329384ec33322f443df07215d86e56f0505ac15b3d3473eb432" + }, + { + "task": 35, + "job": "350768_35", + "mesh": "rectangular", + "stage": "pix2", + "pass": "time", + "batch": 20, + "solver": "pdip", + "certified_fallback": "on", + "slurm_state": "FAILED", + "exit_code": "1:0", + "elapsed": "00:02:10", + "start_bst": "2026-09-25T17:50:04", + "end_bst": "2026-09-25T17:52:14", + "node": "euclid-ral-gpu-1", + "file": "fixed_light_trace_rectangular_jitvmap20_captured_pix2_libpdip_fbon_b16_hpc_a100_fp64_fixed_light_trace.json", + "lanes_failed": 5, + "lanes_nonfinite": 0, + "gate_passed": false, + "policy_eligible": false, + "uncertified_lanes": null, + "lanes_passes": [ + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null + ], + "vmap_ms_per_lane": 16.955180554996332, + "scalar_ms_per_lane": 39.75405439499809, + "worst_rel_vmap_vs_library_pdip_vmap": 1.6291373528756156e-07, + "worst_rel_scalar_vs_library_pdip_scalar": 2.2060076843654988e-08, + "worst_cross_composition_rel": 3.4984647472622815e-07, + "worst_cross_composition_nats": 0.06798705598339438, + "worst_reference_cross_composition_rel": 5.016537282690761e-07, + "failed_lane_rows": [ + 162, + 174, + 175, + 176, + 178 + ], + "peak_bytes_after_all": 1885379840, + "cell_source_sha256": "06a162fcdae6b329384ec33322f443df07215d86e56f0505ac15b3d3473eb432" + }, + { + "task": 36, + "job": "350768_36", + "mesh": "rectangular", + "stage": "pix2", + "pass": "time", + "batch": 20, + "solver": "certified", + "certified_fallback": "on", + "slurm_state": "FAILED", + "exit_code": "1:0", + "elapsed": "00:02:33", + "start_bst": "2026-09-25T17:50:08", + "end_bst": "2026-09-25T17:52:41", + "node": "euclid-ral-gpu-1", + "file": "fixed_light_trace_rectangular_jitvmap20_captured_pix2_libcertified_fbon_b16_hpc_a100_fp64_fixed_light_trace.json", + "lanes_failed": 6, + "lanes_nonfinite": 0, + "gate_passed": false, + "policy_eligible": false, + "uncertified_lanes": 6, + "lanes_passes": [ + 10, + 5, + 2, + 16, + 16, + 16, + 8, + 5, + 8, + 8, + 16, + 16, + 16, + 2, + 3, + 4, + 2, + 4, + 2, + 13 + ], + "vmap_ms_per_lane": 26.848780540003645, + "scalar_ms_per_lane": 35.69310757000494, + "worst_rel_vmap_vs_library_pdip_vmap": 8.605790543674856e-08, + "worst_rel_scalar_vs_library_pdip_scalar": 1.538731387792687e-08, + "worst_cross_composition_rel": 3.526904882159963e-07, + "worst_cross_composition_nats": 0.06853974261321127, + "worst_reference_cross_composition_rel": 4.5413566302174853e-07, + "failed_lane_rows": [ + 162, + 174, + 175, + 176, + 177, + 178 + ], + "peak_bytes_after_all": 2184373248, + "cell_source_sha256": "06a162fcdae6b329384ec33322f443df07215d86e56f0505ac15b3d3473eb432" + }, + { + "task": 37, + "job": "350768_37", + "mesh": "rectangular", + "stage": "pix2", + "pass": "time", + "batch": 20, + "solver": "certified", + "certified_fallback": "off", + "slurm_state": "FAILED", + "exit_code": "1:0", + "elapsed": "00:01:57", + "start_bst": "2026-09-25T17:52:12", + "end_bst": "2026-09-25T17:54:09", + "node": "euclid-ral-gpu-2", + "file": "fixed_light_trace_rectangular_jitvmap20_captured_pix2_libcertified_fboff_b16_hpc_a100_fp64_fixed_light_trace.json", + "lanes_failed": 11, + "lanes_nonfinite": 0, + "gate_passed": false, + "policy_eligible": false, + "uncertified_lanes": 6, + "lanes_passes": [ + 10, + 5, + 2, + 16, + 16, + 16, + 8, + 5, + 8, + 8, + 16, + 16, + 16, + 2, + 3, + 4, + 2, + 4, + 2, + 13 + ], + "vmap_ms_per_lane": 11.53781560000425, + "scalar_ms_per_lane": 28.542936440007907, + "worst_rel_vmap_vs_library_pdip_vmap": 0.00015051595679551333, + "worst_rel_scalar_vs_library_pdip_scalar": 0.00015051595679731902, + "worst_cross_composition_rel": 3.87471250973847e-07, + "worst_cross_composition_nats": 0.07529882458038628, + "worst_reference_cross_composition_rel": 4.929098206132775e-07, + "failed_lane_rows": [ + 162, + 163, + 164, + 165, + 170, + 171, + 172, + 174, + 175, + 176, + 178 + ], + "peak_bytes_after_all": 1884339200, + "cell_source_sha256": "06a162fcdae6b329384ec33322f443df07215d86e56f0505ac15b3d3473eb432" + } + ], + "artifact_sha256": { + "fixed_light_trace_delaunay_captured_rate_libcertified_fboff_b16_pix1_hpc_a100_fp64_fixed_light_trace.json": "c65d0d89453137b86a791e2e6c8cf189f6206f455885de94c8590d96abeeabea", + "fixed_light_trace_delaunay_captured_rate_libcertified_fboff_b16_pix2_hpc_a100_fp64_fixed_light_trace.json": "15bb89107d3db867384bb75a557b41af3aabac797b283ddab7fd61170f1c6517", + "fixed_light_trace_delaunay_jitvmap16_captured_pix1_libcertified_fboff_b16_hpc_a100_fp64_fixed_light_trace.json": "ab4c9aca86641ea3e9917496bb8a9b79242b1ff61256de10356c4eafb59390e1", + "fixed_light_trace_delaunay_jitvmap16_captured_pix1_libcertified_fboff_b16_hpc_a100_fp64_fixed_light_trace.png": "2d4a08ce8c77b4662513761365e54913121116720b8c50deaea5d79dd81032cd", + "fixed_light_trace_delaunay_jitvmap16_captured_pix1_libcertified_fbon_b16_hpc_a100_fp64_fixed_light_trace.json": "5870df3c0b6685fc3f0b5972a8735d64346dd5fa068cae431bae447cede15839", + "fixed_light_trace_delaunay_jitvmap16_captured_pix1_libcertified_fbon_b16_hpc_a100_fp64_fixed_light_trace.png": "1bc9897c933a57d7a16ea76c6e3116e221960fbf990fadbd632beef10a317ca6", + "fixed_light_trace_delaunay_jitvmap16_captured_pix1_libpdip_fbon_b16_hpc_a100_fp64_fixed_light_trace.json": "1c9a420df021053450e625ee4a5d1739fca92852b070bafad37c6fa728356e06", + "fixed_light_trace_delaunay_jitvmap16_captured_pix1_libpdip_fbon_b16_hpc_a100_fp64_fixed_light_trace.png": "87ec97d8581ee4a237ed0f46b8c2fa25606552edc2814827ffbd0692ff57e393", + "fixed_light_trace_delaunay_jitvmap20_captured_pix1_libcertified_fboff_b16_hpc_a100_fp64_fixed_light_trace.json": "1bdd09b86feabc6bde78a898b33b036b9c06ef2715f308e50d217c60e28d6542", + "fixed_light_trace_delaunay_jitvmap20_captured_pix1_libcertified_fboff_b16_hpc_a100_fp64_fixed_light_trace.png": "5248dfdd40b9757269191124bc5841f2bee33f3a1c1fc7769053cd6740b1281a", + "fixed_light_trace_delaunay_jitvmap20_captured_pix1_libcertified_fbon_b16_hpc_a100_fp64_fixed_light_trace.json": "88f664791588503bc731d4637dd5464a078fb7b5c0deeb2f0135a01800863117", + "fixed_light_trace_delaunay_jitvmap20_captured_pix1_libcertified_fbon_b16_hpc_a100_fp64_fixed_light_trace.png": "52f34c8a23b658f4bad728a1feb0bf9df9498b359f1234754e842144a8fe6ddf", + "fixed_light_trace_delaunay_jitvmap20_captured_pix1_libpdip_fbon_b16_hpc_a100_fp64_fixed_light_trace.json": "dbcf6f22bdc184042e2f70e60091b8e031620d1b26e442fb470590c8b1914b1b", + "fixed_light_trace_delaunay_jitvmap20_captured_pix1_libpdip_fbon_b16_hpc_a100_fp64_fixed_light_trace.png": "b14c457b4c4d0da0d6a42e20573d99a304ba2bd445ca0b068ca702b2587db7e1", + "fixed_light_trace_delaunay_jitvmap20_captured_pix2_libcertified_fboff_b16_hpc_a100_fp64_fixed_light_trace.json": "8ce459c1bcfad77888bada55ea746161d1fa853710569338947646e8916e1b7b", + "fixed_light_trace_delaunay_jitvmap20_captured_pix2_libcertified_fboff_b16_hpc_a100_fp64_fixed_light_trace.png": "8e8accbf41f8222cd3db16f30dee953e1b3e782b157d27eed1afc812ca2e312b", + "fixed_light_trace_delaunay_jitvmap20_captured_pix2_libcertified_fbon_b16_hpc_a100_fp64_fixed_light_trace.json": "37ac282b1329cb18da443e7eb514293cd028f4f80c751f5907d3fab51977d968", + "fixed_light_trace_delaunay_jitvmap20_captured_pix2_libcertified_fbon_b16_hpc_a100_fp64_fixed_light_trace.png": "daa8e7bac6bab4c836c89af00c3f986fcbddc730ea533f97989c69579b7d9eb0", + "fixed_light_trace_delaunay_jitvmap20_captured_pix2_libpdip_fbon_b16_hpc_a100_fp64_fixed_light_trace.json": "e2269c577edb246df81ad423d27813708d24f69a2f4b36fb231354a536d8dae4", + "fixed_light_trace_delaunay_jitvmap20_captured_pix2_libpdip_fbon_b16_hpc_a100_fp64_fixed_light_trace.png": "eff66988166650e64f788dacf591fedac9e74a36f078a43ae60dca416c665c07", + "fixed_light_trace_delaunay_jitvmap50_captured_pix1_libcertified_fboff_b16_hpc_a100_fp64_fixed_light_trace.json": "0c718a285ecf3ba863600d02cc446a664840d3bf9a306fbd5b7219ecdf38cfb4", + "fixed_light_trace_delaunay_jitvmap50_captured_pix1_libcertified_fboff_b16_hpc_a100_fp64_fixed_light_trace.png": "40aa953aeeebcfb80bdf36cc89f07a9aaf049b56a52684d7fda53570df7f1e5d", + "fixed_light_trace_delaunay_jitvmap50_captured_pix1_libcertified_fbon_b16_hpc_a100_fp64_fixed_light_trace.json": "72543534f7c79f13f77da6ea0111657694de3bd0e85e79519fd21225cdd6954d", + "fixed_light_trace_delaunay_jitvmap50_captured_pix1_libcertified_fbon_b16_hpc_a100_fp64_fixed_light_trace.png": "749a7966c8e04b1d6abd24b10c33d20c68269afe498128e3e0c93779df157760", + "fixed_light_trace_delaunay_jitvmap50_captured_pix1_libpdip_fbon_b16_hpc_a100_fp64_fixed_light_trace.json": "299efdf2100108dd2e4197725a09f524567c0b9292388ad3bb22c6621a8be4cc", + "fixed_light_trace_delaunay_jitvmap50_captured_pix1_libpdip_fbon_b16_hpc_a100_fp64_fixed_light_trace.png": "421f58269b73c92534487e59fff572034ee8bd6f326cc36d71790c80ed89c4b4", + "fixed_light_trace_rectangular_captured_rate_libcertified_fboff_b16_pix1_hpc_a100_fp64_fixed_light_trace.json": "6f6a91c716eca1d3e609aa17c511d9cc35451ada40515940b92113d8b4778c89", + "fixed_light_trace_rectangular_captured_rate_libcertified_fboff_b16_pix2_hpc_a100_fp64_fixed_light_trace.json": "eaf8c1a87b203ea1cdbfff57f3286005ceccbb9f12281d00ee48ac76ce4a2c18", + "fixed_light_trace_rectangular_jitvmap16_captured_pix1_libcertified_fboff_b16_hpc_a100_fp64_fixed_light_trace.json": "bf299120276b36ac578026bada1731f8e8a3212c990129ce0e175a5f31c1af77", + "fixed_light_trace_rectangular_jitvmap16_captured_pix1_libcertified_fboff_b16_hpc_a100_fp64_fixed_light_trace.png": "e5c11e7e6c5569ae78073c583fb83f43735ac0065df322944d597efdae60b228", + "fixed_light_trace_rectangular_jitvmap16_captured_pix1_libcertified_fbon_b16_hpc_a100_fp64_fixed_light_trace.json": "cd1e2af1fef1411d8f5ae580299b155f92c0ecd34702b71f9b0c6f96e2017e61", + "fixed_light_trace_rectangular_jitvmap16_captured_pix1_libcertified_fbon_b16_hpc_a100_fp64_fixed_light_trace.png": "9555a5cf6c586ac5ae736c9ea2730fcc8fd669757b17f056287b879dd696cc89", + "fixed_light_trace_rectangular_jitvmap16_captured_pix1_libpdip_fbon_b16_hpc_a100_fp64_fixed_light_trace.json": "218927f31a7dffb55a4758aa0636574efe8bb19cb3ada4d55feb72d8a0cd139a", + "fixed_light_trace_rectangular_jitvmap16_captured_pix1_libpdip_fbon_b16_hpc_a100_fp64_fixed_light_trace.png": "f3004e65e833ca2a348df85f04df45cccd5bcc172329c21a23d66015ffb9cbba", + "fixed_light_trace_rectangular_jitvmap20_captured_pix1_libcertified_fboff_b16_hpc_a100_fp64_fixed_light_trace.json": "38966281e249996b76b705d075a355fe199b8ecd8112cab0f6ccdeb0dd2074d2", + "fixed_light_trace_rectangular_jitvmap20_captured_pix1_libcertified_fboff_b16_hpc_a100_fp64_fixed_light_trace.png": "aff53ae7d4bd973fa03940f662820696c7a7b2746143956da7dfbe739f8aa5c6", + "fixed_light_trace_rectangular_jitvmap20_captured_pix1_libcertified_fbon_b16_hpc_a100_fp64_fixed_light_trace.json": "a346543c809c1a595024ef645c5eab5d5596cb52b10cedd20b2a85920ea23fa2", + "fixed_light_trace_rectangular_jitvmap20_captured_pix1_libcertified_fbon_b16_hpc_a100_fp64_fixed_light_trace.png": "4970d220714f45a94d488e59f7ede00d3f769114310d2a575fb319f5c0d31b50", + "fixed_light_trace_rectangular_jitvmap20_captured_pix1_libpdip_fbon_b16_hpc_a100_fp64_fixed_light_trace.json": "396f2abe748480bb7492063ebaf25671e4ad282ae2b2938c20d9f5846161b64c", + "fixed_light_trace_rectangular_jitvmap20_captured_pix1_libpdip_fbon_b16_hpc_a100_fp64_fixed_light_trace.png": "0283e9690d621043caa5d5db4bfeca798390b55f91092c35ba05d72d5f43c576", + "fixed_light_trace_rectangular_jitvmap20_captured_pix2_libcertified_fboff_b16_hpc_a100_fp64_fixed_light_trace.json": "b57d82ca252f5a36efc1296df684f24234df94ff81c4f53bab564834931db440", + "fixed_light_trace_rectangular_jitvmap20_captured_pix2_libcertified_fboff_b16_hpc_a100_fp64_fixed_light_trace.png": "21acd5095f5f267bc13d132e6cde954c6f9ae2af91d9b33a176c2ebadb3708ab", + "fixed_light_trace_rectangular_jitvmap20_captured_pix2_libcertified_fbon_b16_hpc_a100_fp64_fixed_light_trace.json": "dd15a6cc9fb6d3a8db2f7ea13a81bde337abe67936091f35d0b7639f268b639c", + "fixed_light_trace_rectangular_jitvmap20_captured_pix2_libcertified_fbon_b16_hpc_a100_fp64_fixed_light_trace.png": "1f8262171cfa0d146a4acc6d47a151120440c1567d48e02104117fe5b63898b1", + "fixed_light_trace_rectangular_jitvmap20_captured_pix2_libpdip_fbon_b16_hpc_a100_fp64_fixed_light_trace.json": "a2725bfddf1bbac17f10023329400e1798ee37e0d92ff9c4a8bcc1a1e7f9b29e", + "fixed_light_trace_rectangular_jitvmap20_captured_pix2_libpdip_fbon_b16_hpc_a100_fp64_fixed_light_trace.png": "ab88fc7f701e0e52649ce9799870e47fce3f2012367b2b28045bdd03f6926461", + "fixed_light_trace_rectangular_jitvmap50_captured_pix1_libcertified_fboff_b16_hpc_a100_fp64_fixed_light_trace.json": "c637ea275032df304ac15f8ddab229d811eeba463da7e65c99101efd50f6ad3d", + "fixed_light_trace_rectangular_jitvmap50_captured_pix1_libcertified_fboff_b16_hpc_a100_fp64_fixed_light_trace.png": "a0d2ea347c031710a9a383917797c9878716fc4652bad1a464a6fc58f09b76cd", + "fixed_light_trace_rectangular_jitvmap50_captured_pix1_libcertified_fbon_b16_hpc_a100_fp64_fixed_light_trace.json": "9847999605ddd931fced28be2372d8726f727fff548fbe5636deb44db6a98478", + "fixed_light_trace_rectangular_jitvmap50_captured_pix1_libcertified_fbon_b16_hpc_a100_fp64_fixed_light_trace.png": "bf555ce78dd3fd6e34ce44b58ce7efece0bc94e7fe576dfb7952083a91627f93", + "fixed_light_trace_rectangular_jitvmap50_captured_pix1_libpdip_fbon_b16_hpc_a100_fp64_fixed_light_trace.json": "a3fc0b9fc5e42e7f9057e0916acd3e20cbdd1295b4f58fe36c5008978e10a58f", + "fixed_light_trace_rectangular_jitvmap50_captured_pix1_libpdip_fbon_b16_hpc_a100_fp64_fixed_light_trace.png": "aafadf4f54f8ee21cc922f7df31350736a61a3a1320acc44c808a31080919586" + }, + "logs": "hpc/batch_gpu/output/output._.out and hpc/batch_gpu/error/error._.err on RAL, /mnt/ral/jnightin/autolens_profiling_wt/certified-solver-phase-c1-lane-rate (not committed)", + "note": "results/notes/certified_solver_phase_c1_lane_rate_2026_09.md" +} \ No newline at end of file diff --git a/results/notes/certified_solver_phase_c1_lane_rate_2026_09.md b/results/notes/certified_solver_phase_c1_lane_rate_2026_09.md new file mode 100644 index 000000000..0e57d6b30 --- /dev/null +++ b/results/notes/certified_solver_phase_c1_lane_rate_2026_09.md @@ -0,0 +1,345 @@ +# Certified positive solver, phase C1: uncertified-lane rate on real Nautilus batches + +Issue [#304](https://github.com/PyAutoLabs/autolens_profiling/issues/304). Follows phase B +([certified_solver_policy_phase_b_2026_09.md](certified_solver_policy_phase_b_2026_09.md), array +350588). Phase B passed its gate on seeded draws near the fiducial with the regularization fixed. +This phase replays lanes that a real `af.Nautilus` run proposed, at the production settings of +both pixelized SLaM stages, with the regularization **free** (production priors and classes). + +## Verdict + +**The pre-registered gate FAILED: all 24 timed tasks failed (2 to 40 lanes each); the 6 B=100 +tasks ran out of memory; the 4 ungated rate tasks completed.** The gate is the phase-B gate, +unchanged: each arm is compared per lane against the library-PDIP reference of its own composition, +at 1e-9 relative. Under the pre-registration nothing in the timed tables supports a production +recommendation, and no `certified_fallback=none` row is policy-eligible. + +What the failures are, from the per-lane data (details under Diagnosis): + +1. **The failures are lane-driven, not solver-driven.** Every failure in a `library PDIP` or + `certified+PDIP` row at B ≤ 20 is on a lane whose captured log likelihood is catastrophic (≤ 0, + i.e. between −3e4 and −1.9e5 against a peak of about +2.9e4). These lanes mostly have a large + inner or outer coefficient (≳ 30). On them, **library PDIP disagrees with itself** at 1e-9 to + 1e-5 relative (up to 1.8 nats) between any two separately compiled programs. That covers + arm against reference with the same solver, vmap reference against scalar reference, and this + cell against the capture's own Fitness evaluation. Some of these programs return NaN on some + of these lanes and a finite value on others. No lane with a positive log likelihood failed in + these rows. +2. **The uncertified lanes are a separate population.** With `certified_fallback=none`, the + remaining failures are lanes where the certificate failed at the budget of 16 passes. These + lanes are under-regularized (both coefficients small, median log10 min about −4) and fit + reasonably well (log L about 1.9e4). The returned iterate is wrong by 1e-6 to 8e-3 relative + (up to 57 nats in a timed window, 141 nats in the rate replay). The error is the same to + 1e-11 in both compositions. This is the failure the fallback exists for, and the fallback + catches it: at B ≤ 20 no `certified+PDIP` row failed on a lane that `none` left uncertified. +3. **At B=50 the `jit(vmap)` program returns wrong values on nearly every lane, on both meshes, + for every solver.** The median error is about 5200 nats (Delaunay) and 6000 nats + (rectangular); the relative error on individual lanes reaches 9x. The scalar arm and the + capture agree with each other. The gate is **blind** to this: the arm and its own-composition + reference share the fault. Only the ungated cross-composition column shows it, at 9.12 and + 8.59 relative. It occurs exactly in the six tasks whose `.err` logs the XLA allocator warning + "ran out of memory trying to allocate 18.3 GiB ... not a failure". It is not a solver + question, and it is unresolved here. +4. **B=100 is the memory limit.** The vmap library-PDIP reference asks for one 73.3 GiB + (Delaunay) or 74.3 GiB (rectangular) allocation. XLA reports that rematerialization cannot get + the program below about 90 GiB. + +Rate (ungated, B=20 chunks, certified+none): **1.9–4.9% of lanes are uncertified overall. All of +them fall in the early half of the run; the late half has 0 and needs at most 3 to 8 passes.** +Timing is never gated. The B ≤ 20 timings are valid measurements of the programs as run. The B=50 +`jit(vmap)` timings are timings of a program that returns wrong values, so they should not be +used. + +Policy is the human's call. The open questions are at the end. + +## Experiment + +- Captures: `nautilus_batch_capture.py`, `af.Nautilus(n_live=150|75, n_batch=20, + use_jax_vmap=True)`, library PDIP, stage pix1 (mass + shear + regularization free) and pix2 + (regularization only), capped at 40000 likelihoods and 3600 s. + - Delaunay (AdaptSplit): reused from array `350659` tasks 0 and 2 (COMPLETED; 18640 and 1680 + lanes), captured on PyAutoArray `7fa8d271` / PyAutoFit `a7368401`. + - Rectangular (Adapt, re-captured after rectangular pix1 moved to Adapt): array `350766` tasks + 1 and 3 (COMPLETED 16m21s and 6m09s; 19440 and 2840 lanes), on PyAutoArray `3de624b5` / + PyAutoFit `dd9fbe0a`. + - The npz captures stay on RAL (not committed). Every replay checks the fingerprint; + `fingerprint_check.passed` is true in every JSON. +- Replays: array `350768` tasks 4–37, started 2026-09-25 17:39:41 BST, on `euclid-ral-gpu-1` and + `-2`. Tasks 4–7 (rate) COMPLETED 0:0. Tasks 8–37 FAILED 1:0: the gate raise in 24 of them, OOM + in 6. Every task's JSON and PNG were written before the raise. +- Profiling source: `be01a52` (feature/certified-solver-phase-c1-lane-rate), the AP_ROOT revision + printed in every `.out`. Every replay JSON's `cell_source_sha256` (`06a162fc…`) is the cell at + that commit. The gate is pre-registered in the submit header and the cell docstring at that + commit (committed 17:04 BST, before the 17:23 BST start of 350766). +- Library mains at replay (JSON `library_revisions`): PyAutoNerves `1fa613aa`, PyAutoFit + `dd9fbe0a`, PyAutoArray `3de624b5` (#567 and #572), PyAutoGalaxy `70a61e26`, PyAutoLens + `86054bbc`. Unreleased. +- Device: NVIDIA A100 80GB PCIe; fp64; HST imaging; fixed lens light at S3; dense inversion; + border relocation on; Delaunay N=1500, rectangular 39x39=1521. Fresh compilation cache per + task; `AUTOTUNE_ENTRIES count=0` in all 36 replay and capture footers. +- Time pass: the phase-B matched pair (`jax.jit(jax.vmap(fn))` and B x `jax.jit(fn)`, one + process) on the `timed_window`. The window is consecutive captured calls from the first + post-prior batch (lane rows 300… for pix1, 160… for pix2), so B=16 and B=20 share lanes and + B=20 is exactly one real Nautilus batch. The solver is selected through `al.Settings`; the + budget is the packaged 16. + +Provenance, per-task sacct rows, OOM and allocator excerpts, and artifact checksums are in +[certified_solver_phase_c1_job350768.json](certified_solver_phase_c1_job350768.json). The 28 JSON +files and 24 PNG files are under `results/breakdown/imaging/`, suffixes +`_jitvmap_captured__lib_fb_b16_…` (time) and +`_captured_rate_libcertified_fboff_b16__…` (rate). + +## Results: the time pass (gated) + +Failed lanes are split into three columns: *catastrophic* (captured log L ≤ 0), *uncertified* +(log L > 0, `certified=False`) and *other*. "nonfinite" counts the lanes where any of the four +values (two arms, two references) is NaN; a NaN lane fails the gate. The cross-composition columns +are recorded, not gated. + +| task | mesh | stage | B | row | failed | catastrophic | uncertified | other | nonfinite | worst gated vmap rel | worst gated scalar rel | cross-comp rel | cross-comp nats | uncertified lanes | vmap ms/lane | scalar ms/lane | +|---:|---|---|---:|---|---:|---:|---:|---:|---:|---:|---:|---:|---:|---:|---:|---:| +| 8 | delaunay | pix1 | 16 | library PDIP | 4/16 | 4 | 0 | 0 | 0 | 4.30e-06 | 7.95e-08 | 5.17e-06 | 0.916 | n/a | 47.0 | 50.6 | +| 9 | delaunay | pix1 | 16 | certified+PDIP | 5/16 | 5 | 0 | 0 | 0 | 1.64e-06 | 2.67e-07 | 1.02e-05 | 1.8 | 4 | 60.2 | 38.9 | +| 10 | delaunay | pix1 | 16 | certified+none | 8/16 | 4 | 4 | 0 | 0 | 2.26e-04 | 2.26e-04 | 7.04e-06 | 1.25 | 4 | 32.3 | 32.1 | +| 11 | delaunay | pix1 | 20 | library PDIP | 4/20 | 4 | 0 | 0 | 1 | 1.40e-06 | 6.06e-07 | 4.81e-06 | 0.913 | n/a | 43.0 | 50.0 | +| 12 | delaunay | pix1 | 20 | certified+PDIP | 4/20 | 4 | 0 | 0 | 0 | 2.99e-06 | 2.78e-07 | 7.86e-06 | 1.39 | 7 | 54.4 | 44.3 | +| 13 | delaunay | pix1 | 20 | certified+none | 11/20 | 4 | 7 | 0 | 1 | 2.26e-04 | 2.26e-04 | 3.65e-06 | 0.692 | 7 | 30.5 | 34.3 | +| 14 | delaunay | pix1 | 50 | library PDIP | 14/50 | 12 | 0 | 2 | 0 | 1.60e-04 | 1.72e-06 | **9.12** | **2.07e5** | n/a | *32.6* | 50.1 | +| 15 | delaunay | pix1 | 50 | certified+PDIP | 12/50 | 12 | 0 | 0 | 1 | 1.44e-04 | 4.86e-07 | **9.12** | **2.07e5** | 24* | *40.2* | 44.2 | +| 16 | delaunay | pix1 | 50 | certified+none | 36/50 | 13 | 22 | 1 | 1 | 1.68e-03 | 3.31e-04 | **9.12** | **2.07e5** | 24* | *26.7* | 34.3 | +| 20 | rectangular | pix1 | 16 | library PDIP | 2/16 | 2 | 0 | 0 | 2 | 9.24e-07 | 1.31e-11 | 3.99e-06 | 0.709 | n/a | 33.2 | 41.4 | +| 21 | rectangular | pix1 | 16 | certified+PDIP | 2/16 | 2 | 0 | 0 | 2 | 1.11e-07 | 8.06e-11 | 5.18e-10 | 1.15e-05 | 7 | 44.4 | 42.3 | +| 22 | rectangular | pix1 | 16 | certified+none | 9/16 | 3 | 6 | 0 | 2 | 3.26e-04 | 3.26e-04 | 2.81e-10 | 6.24e-06 | 7 | 27.9 | 30.8 | +| 23 | rectangular | pix1 | 20 | library PDIP | 3/20 | 3 | 0 | 0 | 2 | 4.40e-06 | 6.81e-07 | 2.64e-06 | 0.469 | n/a | 30.6 | 41.1 | +| 24 | rectangular | pix1 | 20 | certified+PDIP | 3/20 | 3 | 0 | 0 | 3 | 1.03e-06 | 1.10e-10 | 2.42e-10 | 5.37e-06 | 10 | 40.4 | 44.7 | +| 25 | rectangular | pix1 | 20 | certified+none | 13/20 | 4 | 9 | 0 | 3 | 7.94e-03 | 7.94e-03 | 3.47e-10 | 7.68e-06 | 10 | 26.5 | 31.3 | +| 26 | rectangular | pix1 | 50 | library PDIP | 12/50 | 11 | 0 | 1 | 6 | 4.06e-05 | 3.09e-07 | **8.59** | **2.13e5** | n/a | *27.6* | 40.4 | +| 27 | rectangular | pix1 | 50 | certified+PDIP | 12/50 | 11 | 1 | 0 | 5 | 1.08e-04 | 7.36e-06 | **8.59** | **2.13e5** | 28* | *34.1* | 41.7 | +| 28 | rectangular | pix1 | 50 | certified+none | 40/50 | 13 | 27 | 0 | 5 | 2.95e-02 | 7.94e-03 | **8.59** | **2.13e5** | 28* | *22.1* | 30.4 | +| 32 | delaunay | pix2 | 20 | library PDIP | 5/20 | 5 | 0 | 0 | 0 | 5.25e-07 | 2.40e-08 | 4.23e-06 | 0.586 | n/a | 22.8 | 49.5 | +| 33 | delaunay | pix2 | 20 | certified+PDIP | 5/20 | 5 | 0 | 0 | 0 | 6.93e-07 | 9.30e-08 | 3.47e-06 | 0.482 | 8 | 34.1 | 43.6 | +| 34 | delaunay | pix2 | 20 | certified+none | 12/20 | 5 | 7 | 0 | 0 | 1.42e-04 | 1.42e-04 | 3.49e-06 | 0.484 | 8 | 13.2 | 33.1 | +| 35 | rectangular | pix2 | 20 | library PDIP | 5/20 | 5 | 0 | 0 | 0 | 1.63e-07 | 2.21e-08 | 3.50e-07 | 0.068 | n/a | 17.0 | 39.8 | +| 36 | rectangular | pix2 | 20 | certified+PDIP | 6/20 | 6 | 0 | 0 | 0 | 8.61e-08 | 1.54e-08 | 3.53e-07 | 0.0685 | 6 | 26.8 | 35.7 | +| 37 | rectangular | pix2 | 20 | certified+none | 11/20 | 5 | 6 | 0 | 0 | 1.51e-04 | 1.51e-04 | 3.87e-07 | 0.0753 | 6 | 11.5 | 28.5 | + +`*` The B=50 uncertified counts and the *italic* B=50 vmap timings come from the faulty B=50 +`jit(vmap)` program (see Diagnosis 3). They are recorded but not usable. The B=50 scalar columns +are unaffected. + +Worst gated disagreement in nats on the catastrophic lanes at B ≤ 20: at most 0.86 nats (rectangular +pix1 B=20 library PDIP). The uncertified certified+none lanes are off by up to 57 nats (rectangular +pix1 B=20). + +### Matched timing at B ≤ 20 (ms per likelihood, per lane; valid) + +| mesh | stage | B | library PDIP `jit(vmap)` | certified+PDIP `jit(vmap)` | certified+none `jit(vmap)` | scalar PDIP | scalar certified+PDIP | scalar certified+none | +|---|---|---:|---:|---:|---:|---:|---:|---:| +| delaunay | pix1 | 16 | 47.0 | 60.2 | 32.3 | 50.6 | 38.9 | 32.1 | +| delaunay | pix1 | 20 | 43.0 | 54.4 | 30.5 | 50.0 | 44.3 | 34.3 | +| delaunay | pix2 | 20 | 22.8 | 34.1 | 13.2 | 49.5 | 43.6 | 33.1 | +| rectangular | pix1 | 16 | 33.2 | 44.4 | 27.9 | 41.4 | 42.3 | 30.8 | +| rectangular | pix1 | 20 | 30.6 | 40.4 | 26.5 | 41.1 | 44.7 | 31.3 | +| rectangular | pix2 | 20 | 17.0 | 26.8 | 11.5 | 39.8 | 35.7 | 28.5 | + +At the production batch (B=20, one real Nautilus batch): + +- certified+none `jit(vmap)` is 1.41x faster than library PDIP `jit(vmap)` on Delaunay pix1, + 1.16x on rectangular pix1, 1.73x on Delaunay pix2 and 1.47x on rectangular pix2. +- certified+PDIP `jit(vmap)` is slower than library PDIP `jit(vmap)` in every row, as in phase B. + +Against phase B's seeded lanes at Delaunay B16, every captured-lane row is slower: PDIP vmap 47.0 +vs 38.9, certified+PDIP 60.2 vs 45.6, certified+none 32.3 vs 25.9. Real batches are harder, and +under vmap a certified batch runs to its slowest lane's pass count. + +The scalar certified arms vary between tasks more than in phase B. For example, Delaunay pix1 +scalar certified+PDIP is 38.9 ms at B16 and 44.3 ms at B20 on the same lanes plus four. These are +recorded as measured. + +## Results: the rate pass (ungated) + +Certified with `certified_fallback=none`, `jit(vmap)` chunks of 20 (each chunk is exactly one +captured batch), every captured lane, budget 16. + +| mesh | stage | lanes | uncertified | rate | at budget | mean passes | prior phase rate | early half rate | late half rate | late max passes | uncertified vs scalar PDIP: median / max nats | +|---|---|---:|---:|---:|---:|---:|---:|---:|---:|---:|---:| +| delaunay | pix1 | 18640 | 368 | 1.97% | 387 | 2.45 | 11.7% (35/300) | 3.95% | 0 | 3 | 0.28 / 31.4 (256 rechecked) | +| delaunay | pix2 | 1680 | 82 | 4.88% | 82 | 2.98 | 20.6% (33/160) | 9.76% | 0 | 3 | 0.16 / 2.81 | +| rectangular | pix1 | 19440 | 365 | 1.88% | 376 | 5.95 | 14.3% (43/300) | 3.76% | 0 | 8 | 2.69 / 141 (256 rechecked) | +| rectangular | pix2 | 2840 | 70 | 2.46% | 71 | 6.22 | 20.0% (32/160) | 4.93% | 0 | 7 | 2.02 / 4.33 | + +- Every rate task reached pass 16, so the packaged budget is reached, not merely approached. The + late half of every run certifies within at most 3 passes (Delaunay) or 8 (rectangular). +- By Nautilus phase: the exploration phase is 1.4–3.4% uncertified. The only sampling-phase rows + (Delaunay pix2, 80 lanes) had 0. +- The uncertified lanes are under-regularized: median log10 min(inner, outer) is −3.7 to −4.6, + and 71–83% have min coefficient < 1e-3. The certified lanes sit at −0.2 to −3.5 (17–60%). + Uncertified lanes also fit reasonably well (median captured log L about 1.9e4 against about 2.9e4 + for the certified lanes), so they are not far down the likelihood tail where the sampler would + discard them. +- Against the capture's own PDIP value, the median disagreement over all lanes is 3e-13 + (Delaunay) to 2e-11 (rectangular). The number of lanes above 1e-9 is 648, 147, 518 and 130 + respectively. Of those, 333, 75, 354 and 69 are uncertified; the rest are certified lanes, which + concentrate on the catastrophic lanes of Diagnosis 1. + +## Diagnosis + +Per-lane tables were built from the 24 time JSONs, joining each lane to its captured parameter +vector and figure of merit through `vmap.lane_construction.lane_rows`. + +**1. PDIP is not reproducible at 1e-9 on catastrophic lanes, and this is lane-driven.** + +- *Same lanes fail across rows and batch sizes.* At B ≤ 20, in Delaunay pix1 the lanes 302, 303 + and 309 fail in 6/6 rows and 310 in 5/6. The rectangular pix1 lanes 304 and 314 fail in 6/6. The + pix2 catastrophic lanes fail in 3/3. +- *All of these have captured log L ≤ 0.* Examples: −1.9e5 (Delaunay 302), −1.8e5 (309), + −1.9e5 (rectangular 304). Most have a large coefficient: log10 inner = +2.8, +1.75, +1.5 or + log10 outer = +2.2. +- *Every PDIP program disagrees on them, at the same order of magnitude.* In `library PDIP` rows + the arm and the reference both run library PDIP, and the two differ by up to 4.4e-6. The vmap + and scalar references (both PDIP) disagree with each other by up to 1.05e-5 (1.67 nats on + Delaunay 309 at B16). This cell's vmap reference and the capture's Fitness evaluation disagree by up to + 6.8e-6, or 1.3 nats (`timed_window_vs_capture_pdip`, B ≤ 20). The untimed reporting pass and the timed arm (same + Settings, compiled separately) disagree by up to 4.5e-6. +- *NaNs appear in some programs and not others.* Delaunay lane 309 at B=20: the PDIP vmap arm + returns NaN while the PDIP vmap reference returns a finite value. Rectangular lanes 304 and 314: + the scalar composition returns NaN while vmap is finite. Rectangular 317 is NaN everywhere; the + capture recorded it as −1e99, a resampled non-finite value. +- *The composition is not the source at B ≤ 20.* Rectangular certified rows agree across + compositions to 5e-10, but each is off from its PDIP reference by up to 1e-6. So the certified + solve is reproducible there and PDIP is the element that varies. +- *Phase B passed* because its lanes were near-fiducial with the regularization fixed. Its floor was + 2e-10 (Delaunay) and 0 (rectangular). + +**What differs between the arm and the reference in a `library PDIP` row.** Both come from +`_lane_likelihood_fn(system_s3.dataset, settings)`. The arm uses `_settings_library` +(`positive_only_solver="pdip"`, `certified_fallback="pdip"`, `certified_pass_budget=16`); the +reference uses `_settings_pdip_reference` (`positive_only_solver="pdip"` only). They are traced and +compiled separately, and the arm is evaluated inside `host_callback_probe.qhull_probe()`, which is a +no-op on rectangular. On a mapper inversion the library ignores the certified settings when the +solver is PDIP (`positive_only_solver_used` returns "pdip"; `positive_only_preconditioning_used` +returns "jacobi"). So the two are the same algorithm, compiled twice. The data do not show whether +their HLO is byte-identical, or whether one executable run twice returns the same bits. + +The mechanism is a hypothesis, not measured here. These lanes may be ill-conditioned enough that +PDIP (tolerance `min(n·eps, 1e-2)` ≈ 3.3e-13, `max_iter=50`) stops on an iterate that depends on +rounding. The cell records no PDIP iteration or convergence flag (`certification_report.pdip_iter`: +"NOT AVAILABLE"), although PyAutoArray #572, now on main, exposes `converged` and `iterations` in +the PDIP `stats=` dict. + +**2. Uncertified certified+none lanes are a second, separate population.** They fail only in +certified+none rows: in Delaunay pix1, lanes 301, 311, 314 and 315 fail in 2/6 rows, both of them +certified+none. Each is `certified=False, passes=16`. The vmap and scalar arms agree with each other +to 1e-11 to 1e-15 and are off from PDIP by 2.6e-6 to 7.9e-3. The iterate is deterministic and wrong, +as designed for `none`. In the certified+PDIP rows the same lanes fall back and pass. + +This is the pattern behind the observation "vmap ≈ scalar to 1e-13 but both 1e-4..1e-5 from the +reference". Task 37 lanes 3, 4, 5 and 11 (rows 163, 164, 165, 171) are all `certified=False, +passes=16`. That pattern is not PDIP ill-conditioning. + +**3. At B=50, `jit(vmap)` computes a different likelihood.** + +- In all six B=50 tasks, the vmap arm and the vmap reference agree with each other (so most lanes + pass the gate). But they differ from the scalar arm by more than 1e-3 on 44–50 of 50 lanes, and + from the capture on 47–50. +- Example, Delaunay lane 300 (PDIP): vmap 18700.59, scalar 24758.51, capture 24758.51. At B=16 and + B=20 the same lane gives 24758.51 in both compositions. +- The values are not a permutation of other lanes' values (checked on the Delaunay PDIP task). +- The B=50 tasks are the only ones whose `.err` logs `bfc_allocator.cc:317 ... ran out of memory + trying to allocate 18.31 GiB` (18.56 GiB rectangular) "... The caller indicates that this is not + a failure". That size is B x the 0.37 GiB PSF-convolved mapping cube; it appears 10 times per + task, and peak use is 58.8 GB. +- The correlation is exact in this array (6/6 tasks with the warning have the fault; none of the 18 B ≤ 20 time tasks or the 4 rate tasks logs the warning or shows the fault). + It is not a demonstrated cause. +- The per-lane gate as pre-registered cannot see a fault that the arm shares with its reference. + +**4. B=100 memory limit (pre-registered: "an OOM task is itself the memory-limit row").** Tasks +17–19 (Delaunay) and 29–31 (rectangular) failed after 41–45 s at `fixed_light_trace.py:2340`, the +`jit(vmap)` library-PDIP reference, before either arm ran: + +``` +hlo_rematerialization.cc:3231] Can't reduce memory use below 56.48GiB (60647426270 bytes) by rematerialization; only reduced to 89.66GiB (96270652980 bytes), down from 89.67GiB +bfc_allocator.cc:514] Allocator (GPU_0_bfc) ran out of memory trying to allocate 73.30GiB (rounded to 78702055168)requested by op +jax.errors.JaxRuntimeError: RESOURCE_EXHAUSTED: Out of memory while trying to allocate 73.30GiB. [executable_name='jit__likelihood'] +``` + +(rectangular: 90.86 GiB after rematerialization, 74.27 GiB allocation). This fp64 cell at about +1500 source pixels cannot run B=100 as one `jit(vmap)` call on an A100 80GB. + +## Open questions for the human + +1. **The gate failed as pre-registered.** Should phase C1's timed pass be re-registered and re-run? + If so, which gate? The data separate three things the 1e-9 own-composition pin mixes together: + PDIP's own non-reproducibility on catastrophic lanes (≤ 0.86 nats, lanes about 1e5 nats below + the peak), uncertified `none` iterates (up to 57 nats timed, 141 nats in the rate replay), and a + composition-level fault that the pin cannot see (B=50). Options include a nats-based pin, a + pin restricted to lanes within some Δlog L of the batch maximum, or making the cross-composition + and capture checks gated. Those are decisions, not findings, and none is taken here. +2. **Is the C2 guard (re-run uncertified lanes through scalar certified+PDIP) warranted?** The + uncertified rate is 1.9–4.9% overall, all of it in the early half of the run (up to 21% in the + prior phase), and 0 in the late half. The uncertified iterates are off by a median of 0.16–2.7 + nats and at most 141 nats, on lanes that fit reasonably well, so `none` without a guard returns + materially wrong likelihoods early in a search. Arithmetic only, from the valid B=20 timings: + Delaunay pix1 certified+none vmap is 30.5 ms/lane. Adding 2% of lanes re-run at the measured + scalar certified+PDIP 44.3 ms gives about 31.4 ms/lane, against library PDIP vmap at 43.0. +3. **Should B=50 `jit(vmap)` be investigated as a separate bug** (library or XLA under allocator + pressure)? Production `n_batch=20` did not show it here: the rate pass ran at 20 with no + allocator warning, and B ≤ 20 compositions agree away from catastrophic lanes. But any + configuration that batches 50 or more HST-scale lanes in one `jit(vmap)` call is suspect until it + is localised. +4. **Should the next witness record PDIP convergence per lane?** That means `stats=` `converged` and + `iterations`, now available on main after #572. It would test whether the catastrophic lanes hit + `max_iter` without convergence. A second check would be whether the same compiled executable + returns identical bits when re-run on those lanes. +5. **NaN on catastrophic lanes.** Some PDIP programs return NaN on lanes that another composition + evaluates finitely (Delaunay 309, rectangular 304 and 314). Does production care, given that + Fitness resamples non-finite values (rectangular 317 was captured as −1e99)? + +## Decisions (human, 2026-09-25) + +The human's reply to the open questions, verbatim: "I agree to all 3, proceed". The three +proposals it approved were: file the B=50 `jit(vmap)` fault as its own bug, let phase C2 go ahead +under a near-peak gate instead of the strict 1e-9 pin, and push and ship this note. This section +records those decisions. It does not change the Verdict above. **The pre-registered C1 gate stays +FAILED as recorded, and it is not re-registered retroactively.** + +- **Q3 (B=50 `jit(vmap)`) → filed as a separate bug:** PyAutoMind + `draft/bug/autoarray/batched_jit_vmap_b50_wrong_log_likelihood_a100.md`. Target PyAutoArray, + because the failing allocation is B x the PSF-convolved mapping cube of the batched inversion. + The bug may turn out to be in XLA. +- **Q1 / Q2 (gate, and whether C2 is warranted) → C2 proceeds.** The strict own-composition 1e-9 + pin stays recorded as FAILED here. C2 pre-registers a new gate before its run: a nats-based pin + on the lanes within some Δlog L of the batch maximum, plus gated cross-composition and capture + checks, so that a B=50-style fault fails the gate instead of passing it. Rationale: the C1 + failures are on lanes that are irrelevant to the posterior or are the designed failure mode. + One group is the catastrophic lanes, at log L between −3e4 and −1.9e5 against a peak of about + +2.9e4, i.e. about 6e4 to 2.2e5 nats below the peak. On those lanes PDIP disagrees with itself + across compilations by at most 0.86 nats gated (up to 1.8 nats across programs). The other group + is the uncertified `none` iterates, which the fallback or guard exists to catch. Every + uncertified lane is in the early half of the run: the late half has 0 in all four cells. +- **C2's pre-registered build rule, evaluated from this note's B=20 tables.** The rule is: + "projected guarded cost at production B=20 >= 15% below the best zero-code option, + uncertified-lane rate near zero". Guarded cost = certified+none `jit(vmap)` + overall rate x + scalar certified+PDIP (ms per lane). The best safe zero-code option is library PDIP + `jit(vmap)` in every row. Unguarded certified+none is not safe, so it is excluded. + + | mesh | stage | certified+none vmap | overall rate | scalar certified+PDIP | guarded | library PDIP vmap | saving | >= 15%? | + |---|---|---:|---:|---:|---:|---:|---:|---| + | delaunay | pix1 | 30.5 | 1.97% | 44.3 | 31.4 | 43.0 | 27% | yes | + | delaunay | pix2 | 13.2 | 4.88% | 43.6 | 15.3 | 22.8 | 33% | yes | + | rectangular | pix1 | 26.5 | 1.88% | 44.7 | 27.3 | 30.6 | 11% | **no** | + | rectangular | pix2 | 11.5 | 2.46% | 35.7 | 12.4 | 17.0 | 27% | yes | + + At the prior-phase rates (11.7–20.6%) the guard costs more on rectangular: + + - rectangular pix1 guarded is 26.5 + 14.3% x 44.7 ≈ 32.9 ms against 30.6 for PDIP, i.e. slower; + - rectangular pix2 guarded is 11.5 + 20.0% x 35.7 ≈ 18.6 ms against 17.0, also slower; + - Delaunay pix2 roughly ties, 22.2 against 22.8; + - Delaunay pix1 still wins, 35.7 against 43.0. + + Whether the rate is "near zero" is arguable: it is 1.9–4.9% overall and 0 in the late half. + **The human chose to proceed with 3/4 cells passing.** Rectangular pix1 may need to stay on + library PDIP. That per-mesh policy question is carried into C2. +- **Q4 (PDIP `converged` / `iterations` per lane, #572) and Q5 (NaN on catastrophic lanes)** are + carried into C2's witness as open items. The C2 prompt is PyAutoMind + `draft/feature/autofit/certified_solver_batched_guard_c2.md`. diff --git a/scripts/imaging/likelihood_breakdown/fixed_light_trace.py b/scripts/imaging/likelihood_breakdown/fixed_light_trace.py index 73dcac472..d7109e9bd 100644 --- a/scripts/imaging/likelihood_breakdown/fixed_light_trace.py +++ b/scripts/imaging/likelihood_breakdown/fixed_light_trace.py @@ -187,6 +187,54 @@ cell then raises if any gated lane failed. Harness mode keeps phase 2's three-way gate unchanged. +The captured-lane mode (certified-solver phase C1, autolens_profiling#304) +------------------------------------------------------------------------- + +``--lanes captured --batches `` (library mode only) replaces phase B's +seeded draw family with the lanes of a REAL Nautilus run, recorded by +``nautilus_batch_capture.py`` at the production ``source_pix[1]`` settings +(``n_live=150``, ``n_batch=20``). A captured lane is the mass AND shear of one +proposal's physical parameter vector — mass, shear AND regularization for a +``pix1`` capture, the regularization alone for ``pix2`` — evaluated the way +``Fitness.call`` evaluates it (``_captured_likelihood_fn``: the capture's model, +rebuilt by the same ``nautilus_batches.capture_model_from``, instantiated from the +vector inside the trace), so every lane's own regularization reaches the +likelihood in both passes; lens light fixed at S3 as in every lane of this cell. +The file is refused unless its recorded S3 fingerprint — dataset sha256s, mesh, +source pixels, the regularization CLASS the capture freed +(``nautilus_batches.regularization_class_for(mesh, stage)``: AdaptSplit on Delaunay, +Adapt on rectangular, not the S0 class) and the S0 fiducial scheme and +coefficients that built S3, border relocator, precision and the eager S3 figure of merit +(``EQUIVALENCE_RTOL``) — matches the system built here, and unless the rebuilt +model's parameter paths equal the capture's, in order. The per-lane +regularization coefficients are NOT identity: they are what the lanes vary. Without ``--lanes captured`` nothing below happens, and ``--batches``, +``--batch-sample`` and ``--captured-pass`` are rejected. + +``--captured-pass time`` (default) is the phase-B harness exactly — PART V, both +arms, both per-composition references and the same PRE-REGISTERED gate at +``LANE_RTOL`` (1e-9, no tighter: Delaunay has a ~2e-10 run-to-run floor and a +~2.5e-9 cross-composition residual) — on ``B`` captured lanes chosen by +``nautilus_batches.timed_window``: consecutive captured calls from the first +post-prior batch, so at ``B == n_batch`` the batch IS one real Nautilus batch. +The JSON gains ``vmap.captured`` (the file, its fingerprint check, and the +window's library-PDIP values against the capture's own figures of merit — +RECORDED, it proves the rebuilt trees are the models the sampler evaluated). + +``--captured-pass rate`` (needs ``--solver certified``) is PART R: UNTIMED, it +runs every captured lane — or every lane of ``--batch-sample K`` calls evenly +spaced over the run — through the library's certified solve under +``jax.jit(jax.vmap(fn))`` in chunks of ``--vmap-batch`` (the last chunk padded +by repeating its final lane, padded rows dropped), observed with +``library_solver_observed``. It reports the uncertified-lane rate and the pass +distribution against the budget, overall, by Nautilus phase and by call-index +half (the split rules are stated in ``nautilus_batches``: phase = the sampler's +bound count and ``explored`` flag when the batch was requested; early = call +index below the median replayed call). RECORDED beside it: every lane's certified +value against the capture's library-PDIP figure of merit, and every uncertified +lane (up to ``RATE_PDIP_RECHECK_MAX``) re-run through scalar library PDIP — what +a guard's second pass would return. It writes its own JSON after PART B and +exits; PART C and PART V do not run. + The PSF-cube mode (phase 3, autolens_profiling#295) --------------------------------------------------- @@ -338,7 +386,10 @@ ``results/breakdown/imaging/fixed_light_trace_[_border_off][_n][_jitvmap__fb][_psf_][_logdet_]_.{json,png}``. Library mode replaces the batched token with -``_jitvmap__lib_fb_b``. +``_jitvmap__lib_fb_b`` (```` is +``captured_`` for a phase-C1 timed pass). The phase-C1 rate pass writes +``fixed_light_trace__captured_rate_lib_fb_b_[_sample]_.json`` +and no PNG. The ``--config-name`` used for the phase-1 legs (``local_rtx2060_fp64_fixed_light_trace``, ``hpc_a100_fp64_fixed_light_trace``) @@ -406,6 +457,7 @@ def _profiling_root() -> _Path: host_callback_probe, library_solver_injection, logdet_reuse_injection, + nautilus_batches, psf_cube_injection, timing, xla_attribution, @@ -470,7 +522,9 @@ def _profiling_root() -> _Path: # NONE of them appears there when it is off, so a phase-1 JSON written by this # checkout is key-for-key the JSON phase 1 wrote. _cell_parser.add_argument("--vmap-batch", type=int, default=None) -_cell_parser.add_argument("--lanes", choices=("distinct", "identical"), default="distinct") +_cell_parser.add_argument( + "--lanes", choices=("distinct", "identical", "captured"), default="distinct" +) _cell_parser.add_argument("--arms", choices=("vmap", "scalar", "both"), default="both") _cell_parser.add_argument("--draw-seed", type=int, default=0) _cell_parser.add_argument("--fallback", choices=("on", "off"), default="on") @@ -480,6 +534,11 @@ def _profiling_root() -> _Path: _cell_parser.add_argument("--solver-source", choices=("harness", "library"), default="harness") _cell_parser.add_argument("--solver", choices=("pdip", "certified"), default=None) _cell_parser.add_argument("--certified-budget", type=int, default=None) +# --- certified-solver phase C1 (#304): lanes replayed from a Nautilus capture -- +# Only meaningful with --lanes captured (library mode); rejected otherwise. +_cell_parser.add_argument("--batches", default=None) +_cell_parser.add_argument("--batch-sample", type=int, default=None) +_cell_parser.add_argument("--captured-pass", choices=("time", "rate"), default=None) # --- phase 3 (#295): the PSF mapping-matrix cube candidates ----------------- # The choices are a LITERAL (the contracts test execs these statements alone); # test_psf_cube_injection pins them to psf_cube_injection.CANDIDATES. @@ -570,6 +629,44 @@ def _profiling_root() -> _Path: if _cell_args.certified_budget is not None and _cell_args.certified_budget < 1: raise ValueError(f"--certified-budget must be >= 1 (got {_cell_args.certified_budget})") +#: Phase C1 (#304): ``--lanes captured`` replays a nautilus_batch_capture.py file. +CAPTURED_LANES = LANES_MODE == "captured" +#: ``time`` is the phase-B harness on captured lanes; ``rate`` is the untimed +#: per-lane certification pass over the whole capture (or --batch-sample calls). +CAPTURED_PASS = (_cell_args.captured_pass or "time") if CAPTURED_LANES else None +BATCH_SAMPLE = _cell_args.batch_sample +if CAPTURED_LANES: + if not LIBRARY_SOLVER_MODE: + raise ValueError( + "--lanes captured runs in the library-solver mode only (--solver-source library): " + "the replay measures the library's own certified solve" + ) + if _cell_args.batches is None: + raise ValueError("--lanes captured needs --batches from nautilus_batch_capture.py") + if CAPTURED_PASS == "rate" and LIBRARY_SOLVER != "certified": + raise ValueError( + "--captured-pass rate measures the certified solver's uncertified-lane rate; it " + "needs --solver certified" + ) + if CAPTURED_PASS == "time" and BATCH_SAMPLE is not None: + raise ValueError( + "--batch-sample only means anything with --captured-pass rate; the timed pass " + "replays one fixed window of B lanes (nautilus_batches.timed_window)" + ) + if BATCH_SAMPLE is not None and BATCH_SAMPLE < 1: + raise ValueError(f"--batch-sample must be >= 1 (got {BATCH_SAMPLE})") +else: + for _flag, _value in ( + ("--batches", _cell_args.batches), + ("--batch-sample", _cell_args.batch_sample), + ("--captured-pass", _cell_args.captured_pass), + ): + if _value is not None: + raise ValueError( + f"{_flag} only means anything with --lanes captured; this leg would silently " + f"ignore it" + ) + #: ``None`` is phase 1. A name turns on the PSF-cube experiment (#295). PSF_CANDIDATE = _cell_args.psf_candidate #: ``None`` is phase 1. A name turns on the log-det reuse experiment (#303). @@ -998,6 +1095,117 @@ def _sha256(path: Path) -> str: log_evidence_s3_library = float(system_s3.fit.figure_of_merit) print(f" S3 figure_of_merit (library) = {log_evidence_s3_library}") +# --------------------------------------------------------------------------- +# Phase C1 (#304): the captured batches, and the proof they fit THIS S3 system +# --------------------------------------------------------------------------- +# nautilus_batch_capture.py copies PART A and records the fingerprint of the S3 +# system it fitted. A lane is a parameter vector, which means nothing on a +# different dataset, mesh, regularization or relocator — so every one of those is +# re-derived here and a mismatch refuses the file. +captured = None +captured_record: dict | None = None +if CAPTURED_LANES: + _batches_path = Path(_cell_args.batches) + captured = nautilus_batches.load(_batches_path) + _fp = captured["meta"]["s3_fingerprint"] + CAPTURED_STAGE = captured["meta"]["stage"] + _mismatch = { + _key: (_want, _got) + for _key, _want, _got in ( + ("mesh", _fp["mesh"], MESH), + ("source_pixels", int(_fp["source_pixels"]), int(n_source_pixels)), + ("dataset_sha256", _fp["dataset_sha256"], dataset_sha256), + # The regularization COEFFICIENTS are free parameters of the capture (and + # of every replayed lane), so they are not the system's identity. The + # CLASS the capture freed is (nautilus_batches.regularization_class_for; + # Adapt on rectangular, not the S0 Constant) — and so is the S0 fiducial the S3 subtraction was built with (its scheme and + # coefficients here, its figure of merit in log_evidence_s3_library below). + ( + "regularization_class", + _fp["regularization_class"], + nautilus_batches.regularization_class_for(MESH, CAPTURED_STAGE), + ), + ("regularization_s0_fiducial", _fp["regularization_s0_fiducial"], reg_provenance), + ("border_relocator", bool(_fp["border_relocator"]), BORDER_RELOCATOR_RESOLVED), + ( + "use_mixed_precision", + bool(_fp["use_mixed_precision"]), + bool(_cli.use_mixed_precision), + ), + ) + if _want != _got + } + _s3_rel = abs(float(_fp["log_evidence_s3_library"]) - log_evidence_s3_library) / max( + abs(log_evidence_s3_library), 1e-300 + ) + if _s3_rel > EQUIVALENCE_RTOL: + _mismatch["log_evidence_s3_library"] = ( + float(_fp["log_evidence_s3_library"]), + log_evidence_s3_library, + ) + if _mismatch: + raise AssertionError( + f"{_batches_path} was captured on a different S3 system: {_mismatch}. Its lanes " + f"are parameter vectors of that system and are not this cell's lanes." + ) + # The replay model: the SAME builder the capture used, so a lane vector means + # the same parameters here as it did to the sampler. Its order is asserted. + _replay_model = nautilus_batches.capture_model_from( + CAPTURED_STAGE, + mesh=MESH, + mesh_obj=mesh_obj, + lens_fixed=list(system_s3.source_only_tracer.galaxies)[0], + ) + _replay_paths = [".".join(_p) for _p in _replay_model.paths] + if _replay_paths != list(captured["meta"]["parameter_paths"]): + raise AssertionError( + f"{_batches_path} parameter paths {captured['meta']['parameter_paths']} are not " + f"this checkout's {CAPTURED_STAGE} model {_replay_paths} (order included)" + ) + _reg_cols = [ + _replay_paths.index(_p) for _p in nautilus_batches.regularization_paths(_replay_paths) + ] + captured_record = { + "batches_path": str(_batches_path), + "batches_sha256": _sha256(_batches_path), + "schema_version": int(captured["schema_version"]), + "n_calls": int(captured["call_size"].shape[0]), + "n_lanes": int(captured["parameters"].shape[0]), + "call_sizes_seen": sorted({int(_c) for _c in captured["call_size"]}), + "calls_by_phase": { + _p: int((captured["call_phase"] == _p).sum()) + for _p in dict.fromkeys(captured["call_phase"].tolist()) + }, + "parameter_paths": list(captured["meta"]["parameter_paths"]), + "stage": CAPTURED_STAGE, + "regularization": captured["meta"]["regularization"], + "nautilus": captured["meta"]["nautilus"], + "capture_fit_status": captured["meta"].get("fit_status"), + "capture_library_revisions": captured["meta"].get("library_revisions"), + "fingerprint_check": { + "fields": [ + "mesh", + "source_pixels", + "dataset_sha256", + "regularization_class", + "regularization_s0_fiducial", + "border_relocator", + "use_mixed_precision", + "log_evidence_s3_library", + ], + "not_identity": ( + "the regularization coefficients: free per lane since the capture frees them" + ), + "log_evidence_s3_library_rel_diff": _s3_rel, + "passed": True, + }, + } + print( + f" captured batches: {captured_record['n_calls']} calls, " + f"{captured_record['n_lanes']} lanes ({captured_record['calls_by_phase']}); " + f"S3 fingerprint matches (rel {_s3_rel:.2e})" + ) + peak_after_setup = peak_bytes() # =================================================================== @@ -1056,6 +1264,16 @@ def _lane_tree(draw): return jax.tree_util.tree_map(jnp.asarray, _inst) +def _regularization_range(rows) -> dict: + """Min / max of every free regularization parameter over the capture *rows*.""" + _paths = captured["meta"]["parameter_paths"] + _vals = captured["parameters"][np.asarray(rows, dtype=int)] + return { + _paths[_c]: {"min": float(_vals[:, _c].min()), "max": float(_vals[:, _c].max())} + for _c in _reg_cols + } + + def _psf_context(): """The phase-3 PSF injection, or a no-op yielding zero counts in every other mode. @@ -1068,6 +1286,30 @@ def _psf_context(): return psf_cube_injection.psf_convolution_injected(PSF_CANDIDATE) +def _captured_likelihood_fn(dataset_for_route, settings_for_route): + """``parameter vector -> log likelihood``, exactly as ``Fitness.call`` does it. + + Phase C1 (#304): a captured lane is a physical parameter vector of the + capture's model (mass, shear AND regularization in pix1; regularization only + in pix2). ``_replay_model.instance_from_vector(..., xp=jnp)`` inside the trace + is the Fitness JAX path (``ignore_assertions=True``), so every lane's own + regularization coefficients reach the likelihood as traced values — which a + pytree of the S3 instance cannot do: its Pixelization sits in static aux data. + """ + analysis = al.AnalysisImaging( + dataset=dataset_for_route, + adapt_images=adapt_images, + settings=settings_for_route, + use_jax=True, + ) + + def _likelihood(vector): + instance = _replay_model.instance_from_vector(vector=vector, ignore_assertions=True, xp=jnp) + return analysis.log_likelihood_function(instance=instance) + + return _likelihood + + def _likelihood_fn(dataset_for_route, settings_for_route): """``params tree -> log likelihood`` through the library's analysis path.""" analysis = al.AnalysisImaging( @@ -1083,6 +1325,11 @@ def _likelihood(tree): return _likelihood +#: The likelihood builder PART V and PART R use for their LANES: the S3 tree +#: function in every phase-B/phase-2 mode, the Fitness-style vector function for +#: captured lanes. PART B (the fiducial routes) always uses ``_likelihood_fn``. +_lane_likelihood_fn = _captured_likelihood_fn if CAPTURED_LANES else _likelihood_fn + print("\n" + "=" * 70) print("LIBRARY PATH — one full likelihood call per route") print("=" * 70) @@ -1565,6 +1812,305 @@ def _logdet_report_fn(tree): f"{logdet_interleaved['saving_median_ms']:+.3f} ms" ) +# =================================================================== +# PART R — the captured-lane RATE pass (phase C1, #304), untimed +# =================================================================== +# ``--lanes captured --captured-pass rate``: every captured lane (or every lane of +# ``--batch-sample K`` evenly spaced calls) through the library's certified solve +# under the production composition ``jax.jit(jax.vmap(fn))``, in chunks of +# ``--vmap-batch`` lanes (at B = n_batch a chunk IS one real Nautilus batch), with +# the solve OBSERVED (``library_solver_observed``: the library's own stats= +# out-dict through an ordered debug callback, nothing computed changed). Nothing +# here is timed; the cell writes its own JSON and exits before PART C / PART V. + + +def _c1_library_revisions() -> dict: + """``git rev-parse HEAD`` of every PyAuto library this process imported.""" + import subprocess as _subprocess + + import autoarray as _autoarray + import autogalaxy as _autogalaxy + import autonerves as _autonerves + + def _rev(module) -> dict: + _repo = Path(module.__file__).resolve().parents[1] + try: + _sha = _subprocess.run( + ["git", "-C", str(_repo), "rev-parse", "HEAD"], + capture_output=True, + text=True, + check=True, + ).stdout.strip() + except (OSError, _subprocess.CalledProcessError): + _sha = None + return {"head": _sha, "path": str(_repo), "module_file": module.__file__} + + return { + "PyAutoNerves": _rev(_autonerves), + "PyAutoFit": _rev(af), + "PyAutoArray": _rev(_autoarray), + "PyAutoGalaxy": _rev(_autogalaxy), + "PyAutoLens": _rev(al), + } + + +#: At most this many uncertified lanes get a scalar library-PDIP re-evaluation in +#: the rate pass (RECORDED): the rare-event check must not become the pass. +RATE_PDIP_RECHECK_MAX = 256 + +if CAPTURED_LANES and "shear" not in _LENS_ATTRS: + raise AssertionError( + "the S3 source-only lens has no `shear` attribute — a captured lane's shear would " + "have nowhere to go" + ) + +if CAPTURED_PASS == "rate": + print("\n" + "=" * 70) + print( + f"CAPTURED-LANE RATE PASS — library {LIBRARY_SOLVER}, certified_fallback " + f"{LIBRARY_FALLBACK}, budget {CERTIFIED_BUDGET}, chunks of {VMAP_BATCH}" + ) + print("=" * 70) + + _call_index = captured["call_index"] + _calls = nautilus_batches.sample_calls(int(captured["call_size"].shape[0]), BATCH_SAMPLE) + _lanes = nautilus_batches.lanes_of_calls(_call_index, _calls) + _chunks = nautilus_batches.chunked(_lanes, VMAP_BATCH) + print( + f" replaying {_lanes.shape[0]} lanes from {_calls.shape[0]} of " + f"{captured_record['n_calls']} calls in {len(_chunks)} chunks" + ) + + _rate_rows: list[tuple[int, bool]] = [] + + def _collect_rate(passes, certified): + _rate_rows.append((int(passes), bool(certified))) + + _ll_rate = np.empty(_lanes.shape[0], dtype=float) + _certified = np.empty(_lanes.shape[0], dtype=bool) + _passes = np.empty(_lanes.shape[0], dtype=int) + _pos = 0 + _t_rate = time.perf_counter() + with library_solver_injection.library_solver_observed(report=_collect_rate) as _observed: + _fn_rate = jax.jit(jax.vmap(_lane_likelihood_fn(system_s3.dataset, _settings_library))) + with timer.section("captured_rate_pass"): + for _ci, (_chunk, _n_real) in enumerate(_chunks): + _batched = jnp.asarray(captured["parameters"][_chunk]) + _before = len(_rate_rows) + _ll = np.asarray(block(_fn_rate(_batched)), dtype=float) + jax.effects_barrier() + _rows = _rate_rows[_before:] + if len(_rows) != VMAP_BATCH or _ll.shape != (VMAP_BATCH,): + raise AssertionError( + f"chunk {_ci}: {len(_rows)} certification rows and log likelihoods of " + f"shape {_ll.shape} for a batch of {VMAP_BATCH} — the report is not " + f"one row per lane" + ) + _ll_rate[_pos : _pos + _n_real] = _ll[:_n_real] + _passes[_pos : _pos + _n_real] = [_r[0] for _r in _rows[:_n_real]] + _certified[_pos : _pos + _n_real] = [_r[1] for _r in _rows[:_n_real]] + _pos += _n_real + if _ci % 50 == 0 or _ci == len(_chunks) - 1: + print( + f" chunk {_ci + 1}/{len(_chunks)}: {_pos} lanes, " + f"{int((~_certified[:_pos]).sum())} uncertified, " + f"max passes {int(_passes[:_pos].max())} " + f"[{time.perf_counter() - _t_rate:.1f} s]" + ) + _jax_solvers = sorted(set(_observed["solvers_jax"])) + if _jax_solvers != [LIBRARY_SOLVER]: + raise AssertionError( + f"the rate pass traced the positive-only solve with solver={_jax_solvers}, not " + f"[{LIBRARY_SOLVER!r}] — the rate would be some other solver's" + ) + + # Per-lane labels: the Nautilus phase of the lane's call, and early / late. + _lane_calls = _call_index[_lanes] + _lane_phase = captured["call_phase"][_lane_calls] + _lane_half = nautilus_batches.early_late(_lane_calls, _calls) + + # RECORDED, not gated: this pass's certified log likelihood against the value + # the capture's own library-PDIP Fitness returned for the same lane (the + # Fitness jit(vmap) composition over parameter vectors, not this cell's tree + # composition). Resampled lanes (-1e99 sentinel, non-finite) are excluded. + _fom = captured["figure_of_merit"][_lanes] + _valid = np.isfinite(_fom) & (_fom > -1.0e98) & np.isfinite(_ll_rate) + _rel_vs_capture = np.abs(_ll_rate - _fom) / np.maximum(np.abs(_fom), 1e-300) + _vs_capture = { + "reference": ( + "the capture's own figure of merit for the lane: library PDIP through " + "Fitness.call_wrap's jax.jit(jax.vmap(call)) over parameter vectors" + ), + "n_compared": int(_valid.sum()), + "n_excluded_resampled_or_nonfinite": int((~_valid).sum()), + "max_rel_diff": float(_rel_vs_capture[_valid].max()) if _valid.any() else None, + "median_rel_diff": float(np.median(_rel_vs_capture[_valid])) if _valid.any() else None, + "max_abs_diff_nats": ( + float(np.abs(_ll_rate - _fom)[_valid].max()) if _valid.any() else None + ), + "n_above_lane_rtol": int((_rel_vs_capture[_valid] > LANE_RTOL).sum()), + "n_above_lane_rtol_uncertified": int( + (_rel_vs_capture[_valid & ~_certified] > LANE_RTOL).sum() + ), + "lane_rtol": LANE_RTOL, + "gated": False, + "note": ( + "RECORDED, NOT GATED: a cross-composition comparison (Fitness over vectors vs this " + "cell over trees) and, for certified lanes, certified vs PDIP. The gated 1e-9 pin is " + "the timed pass's (same composition, same lanes). It still shows whether a " + "certified_fallback=none lane that FAILED its certificate returned a wrong answer." + ), + } + + # RECORDED: every uncertified lane (up to RATE_PDIP_RECHECK_MAX) re-run through + # scalar library PDIP — what a guard's host-side second pass would return. + _uncert_idx = np.flatnonzero(~_certified) + _recheck_rows: list[dict] = [] + if _uncert_idx.size: + _pdip_scalar = jax.jit(_lane_likelihood_fn(system_s3.dataset, _settings_pdip_reference)) + with timer.section("captured_rate_uncertified_pdip_recheck"): + for _j in _uncert_idx[:RATE_PDIP_RECHECK_MAX]: + _k = int(_lanes[_j]) + _ref = float(block(_pdip_scalar(jnp.asarray(captured["parameters"][_k])))) + _recheck_rows.append( + { + "lane_row": _k, + "call_index": int(_call_index[_k]), + "lane_in_call": int(captured["lane_in_call"][_k]), + "phase": str(_lane_phase[_j]), + "passes": int(_passes[_j]), + "log_likelihood_certified_none": float(_ll_rate[_j]), + "log_likelihood_scalar_library_pdip": _ref, + "rel_diff": abs(float(_ll_rate[_j]) - _ref) / max(abs(_ref), 1e-300), + "abs_diff_nats": abs(float(_ll_rate[_j]) - _ref), + } + ) + + rate_block = { + "pass": "rate", + "solver": LIBRARY_SOLVER, + "certified_fallback": LIBRARY_FALLBACK, + "certified_pass_budget": CERTIFIED_BUDGET, + "certified_pass_budget_basis": CERTIFIED_BUDGET_BASIS, + "composition": "jax.jit(jax.vmap(fn)) — the current Fitness._vmap composition", + "chunk_size": int(VMAP_BATCH), + "chunk_rule": ( + "the replayed lanes in capture order, split into chunks of --vmap-batch; the last " + "chunk is padded by repeating its final lane and the padded rows are dropped. At " + "--vmap-batch == n_batch every chunk is exactly one captured Nautilus batch." + ), + "batch_sample": BATCH_SAMPLE, + "stage": CAPTURED_STAGE, + "regularization_range": _regularization_range(_lanes), + "calls_replayed": int(_calls.shape[0]), + "calls_rule": ( + "all captured calls" + if BATCH_SAMPLE is None or BATCH_SAMPLE >= captured_record["n_calls"] + else f"{int(_calls.shape[0])} calls evenly spaced over the run " + f"(nautilus_batches.sample_calls: first and last call included)" + ), + "report_source": ( + "library solve observed through its stats= out-dict (PyAutoArray #566) and " + "jax.debug.callback(..., ordered=True); untimed; one row per lane checked per chunk" + ), + "traced_solver_kwargs_jax": _jax_solvers, + "overall": nautilus_batches.rate_summary(_certified, _passes, CERTIFIED_BUDGET), + "by_nautilus_phase": nautilus_batches.grouped_rate_summaries( + _certified, _passes, CERTIFIED_BUDGET, _lane_phase + ), + "by_call_half": nautilus_batches.grouped_rate_summaries( + _certified, _passes, CERTIFIED_BUDGET, _lane_half + ), + "phase_rule": ( + "by_nautilus_phase: the sampler state when the batch was requested " + "(nautilus_batches.phase_of) — prior = only the unit-cube bound (prior draws), " + "exploration = more bounds and Sampler.explored False, sampling = explored True. " + "by_call_half: early = call index below the median replayed call index, late = the " + "rest." + ), + "vs_capture_pdip": _vs_capture, + "uncertified_pdip_recheck": { + "n_uncertified": int(_uncert_idx.size), + "n_rechecked": len(_recheck_rows), + "cap": RATE_PDIP_RECHECK_MAX, + "max_rel_diff": max((_r["rel_diff"] for _r in _recheck_rows), default=None), + "rows": _recheck_rows, + "gated": False, + }, + "lane_certified": _certified.astype(int).tolist(), + "lane_passes": _passes.tolist(), + "lane_rows": _lanes.tolist(), + "rate_pass_wall_s": time.perf_counter() - _t_rate, + } + _ov = rate_block["overall"] + print( + f"\n RATE: {_ov['n_uncertified']}/{_ov['n_lanes']} uncertified " + f"(rate {_ov['uncertified_rate']:.3e}); max passes {_ov['max_passes']} vs budget " + f"{CERTIFIED_BUDGET}; {_ov['n_at_budget']} lanes at the budget" + ) + for _label, _row in {**rate_block["by_nautilus_phase"], **rate_block["by_call_half"]}.items(): + print( + f" {_label:<12} {_row['n_uncertified']:>6}/{_row['n_lanes']:<7} " + f"max passes {_row['max_passes']}" + ) + print( + f" vs capture PDIP (recorded): max rel {_vs_capture['max_rel_diff']}, " + f"{_vs_capture['n_above_lane_rtol']} lanes above {LANE_RTOL:.0e}" + ) + + rate_summary_json = { + "device": device_info_dict(), + "machine": machine_info_dict(), + "precision": "mixed" if _cli.use_mixed_precision else "fp64", + "configuration": { + "mesh": MESH, + "source_pixels": int(n_source_pixels), + "dataset": DATASET, + "dataset_sha256": dataset_sha256, + "cell_source_sha256": cell_source_sha256, + "border_relocator_mode": BORDER_RELOCATOR_MODE, + "border_relocator": BORDER_RELOCATOR_RESOLVED, + "regularization": reg_provenance, + "vmap_batch": int(VMAP_BATCH), + "lanes": LANES_MODE, + "captured_pass": CAPTURED_PASS, + "batch_sample": BATCH_SAMPLE, + "solver_source": SOLVER_SOURCE, + "solver": LIBRARY_SOLVER, + "certified_fallback": LIBRARY_FALLBACK, + "certified_pass_budget": CERTIFIED_BUDGET, + "certified_tau_rel": float(_settings_library.certified_tau_rel), + "use_mixed_precision": bool(_cli.use_mixed_precision), + "thread_env": _observe_thread_env(), + }, + "captured": captured_record, + "rate": rate_block, + "routes": routes, + "equivalence_pins": equivalence_pins, + "reference": {"log_evidence_s3_library": log_evidence_s3_library}, + "library_revisions": _c1_library_revisions(), + "timer": {_label: _secs for _label, _secs in timer.records}, + "note": ( + "Phase C1 (#304) rate pass: untimed. No millisecond here is a result. The rate is " + "the fraction of captured lanes whose certificate failed under the named " + "certified_fallback; the phase-C2 verdict takes it together with the timed pass." + ), + } + _rate_name = ( + f"fixed_light_trace_{MESH}_captured_rate_lib{LIBRARY_SOLVER}" + f"_fb{'on' if FALLBACK_ON else 'off'}_b{CERTIFIED_BUDGET}_{CAPTURED_STAGE}" + + (f"_sample{int(BATCH_SAMPLE)}" if BATCH_SAMPLE is not None else "") + ) + _rate_json, _ = resolve_output_paths( + _cli, + default_dir=_workspace_root / "results" / "breakdown" / "imaging", + default_basename=f"{_rate_name}_trace_{DATASET}_v{al.__version__}", + cell=_rate_name, + ) + _rate_json.write_text(json.dumps(rate_summary_json, indent=2, default=str)) + print(f"\n Rate JSON saved to: {_rate_json}") + sys.exit(0) + # =================================================================== # PART C — one lowering, two executables, one timeline # =================================================================== @@ -1834,8 +2380,45 @@ def _sum_host_ms(predicate) -> float: # ``fixed_light_draws.py`` uses (``flds.mass_from(BASE_MASS, offsets)``). # The S3 dataset is the FIDUCIAL light-subtracted one and is shared by every # lane, exactly as production shares one dataset across a batch. + captured_window = None if LANES_MODE == "distinct": lane_draws = flds.random_draws(DRAW_SEED, VMAP_BATCH) + elif LANES_MODE == "captured": + # Phase C1 (#304): B lanes of REAL Nautilus proposal batches — the window + # rule is nautilus_batches.timed_window (consecutive calls from the first + # post-prior batch; at B == n_batch exactly one captured batch). The Draw + # records the mass offsets from the fiducial for the lane table; the lane + # TREE (mass and shear) is built from the captured vector itself. + captured_window = nautilus_batches.timed_window( + captured["call_index"], captured["call_phase"], VMAP_BATCH + ) + _paths = captured["meta"]["parameter_paths"] + _mass_keys = { + "galaxies.lens.mass.centre.centre_0": "centre_0", + "galaxies.lens.mass.centre.centre_1": "centre_1", + "galaxies.lens.mass.ell_comps.ell_comps_0": "ell_comps_0", + "galaxies.lens.mass.ell_comps.ell_comps_1": "ell_comps_1", + "galaxies.lens.mass.einstein_radius": "einstein_radius", + } + lane_draws = [] + for _k in captured_window: + _vals = dict(zip(_paths, (float(_x) for _x in captured["parameters"][_k]))) + lane_draws.append( + flds.Draw( + name=( + f"call{int(captured['call_index'][_k]):05d}" + f"_lane{int(captured['lane_in_call'][_k]):02d}" + ), + kind="captured", + offsets={ + _short: _vals[_long] - BASE_MASS[_short] + for _long, _short in _mass_keys.items() + if _long in _vals + }, + index=int(_k), + mass_cls="Isothermal", + ) + ) else: lane_draws = [ flds.Draw(name="fiducial", kind="fiducial", offsets={}, mass_cls="Isothermal") @@ -1856,13 +2439,26 @@ def _sum_host_ms(predicate) -> float: separators=(",", ":"), ).encode() ).hexdigest() + if captured_window is not None: + # The captured lanes carry the shear too, which the Draw offsets do not. + lane_draws_sha256 = hashlib.sha256( + np.ascontiguousarray(captured["parameters"][captured_window]).tobytes() + ).hexdigest() # The lane trees come from ``_lane_tree`` (hoisted above PART B so the # phase-3 draw pins build the SAME trees). with timer.section("vmap_lane_build"): - lane_trees = [_lane_tree(_d) for _d in lane_draws] - _fiducial_structure = jax.tree_util.tree_structure(params_tree_s3) + if captured_window is None: + lane_trees = [_lane_tree(_d) for _d in lane_draws] + else: + # Captured lanes are parameter VECTORS (see _captured_likelihood_fn). + lane_trees = [jnp.asarray(captured["parameters"][_k]) for _k in captured_window] + _fiducial_structure = ( + jax.tree_util.tree_structure(params_tree_s3) + if captured_window is None + else jax.tree_util.tree_structure(lane_trees[0]) + ) for _i, _t in enumerate(lane_trees): if jax.tree_util.tree_structure(_t) != _fiducial_structure: raise AssertionError( @@ -1873,7 +2469,10 @@ def _sum_host_ms(predicate) -> float: ) batched_tree = jax.tree_util.tree_map(lambda *xs: jnp.stack(xs), *lane_trees) - print(f" lanes built: {len(lane_trees)} ({LANES_MODE}, seed {DRAW_SEED})") + print( + f" lanes built: {len(lane_trees)} ({LANES_MODE}, " + + (f"seed {DRAW_SEED})" if captured_window is None else "captured window)") + ) for _d in lane_draws[: min(4, len(lane_draws))]: _shown = {_p: round(float(_o), 5) for _p, _o in _d.offsets.items()} print(f" {_d.name:<14} {_shown}") @@ -2144,7 +2743,7 @@ def _invoke_ex(ex): # same lane trees; agreement between the two harness arms is insufficient. # (Library mode builds it from ``_settings_pdip_reference``, which names PDIP # explicitly; harness mode passes ``_settings`` exactly as phase 2 did.) - _fn_library_pdip = _likelihood_fn(system_s3.dataset, _settings_pdip_reference) + _fn_library_pdip = _lane_likelihood_fn(system_s3.dataset, _settings_pdip_reference) _library_pdip_fn = jax.jit(jax.vmap(_fn_library_pdip)) with timer.section("vmap_lane_library_pdip_reference"): _ll_library_pdip = np.asarray(block(_library_pdip_fn(batched_tree)), dtype=float) @@ -2225,7 +2824,7 @@ def _fiducial_solver_used(settings_for_check) -> str: ): # The wrappers reproduce current Fitness._vmap and the scalar-jit # control. Both close over the same likelihood function. - _fn_v = _likelihood_fn(system_s3.dataset, _arm_settings) + _fn_v = _lane_likelihood_fn(system_s3.dataset, _arm_settings) _scalar_pin_fn = jax.jit(_fn_v) _vmap_pin_fn = jax.jit(jax.vmap(_fn_v)) @@ -2483,7 +3082,7 @@ def _collect_report(pass_at, certified): # It changes nothing that is computed, and it runs on a separately # compiled program that is never timed. with library_solver_injection.library_solver_observed(report=_collect_report) as _observed: - _fn_report = _likelihood_fn(system_s3.dataset, _settings_library) + _fn_report = _lane_likelihood_fn(system_s3.dataset, _settings_library) with timer.section("vmap_certification_report"): if _report_arm == "vmap": _ll_report = np.asarray( @@ -2596,6 +3195,58 @@ def _collect_report(pass_at, certified): ), }, } + if captured_window is not None: + # Phase C1 (#304). Only in captured mode, so a phase-B JSON written by this + # checkout keeps its key set. + _win_calls = captured["call_index"][captured_window] + _fom = captured["figure_of_merit"][captured_window] + _valid = np.isfinite(_fom) & (_fom > -1.0e98) + _rel_capture = np.abs(_ll_library_pdip - _fom) / np.maximum(np.abs(_fom), 1e-300) + vmap_block["lane_construction"] = { + "draws_sha256": lane_draws_sha256, + "lane_rows": captured_window.tolist(), + "calls": sorted({int(_c) for _c in _win_calls}), + "stage": CAPTURED_STAGE, + "regularization_range": _regularization_range(captured_window), + "phases": sorted({str(captured["call_phase"][_c]) for _c in _win_calls}), + "window_rule": ( + "nautilus_batches.timed_window: consecutive captured calls, in call order, from " + "the FIRST call that is not a prior batch, concatenated and truncated to B; at B " + "== n_batch exactly one real Nautilus batch. Falls back to the latest B lanes if " + "the post-prior lanes run out; never repeats a lane." + ), + "note": ( + "Lane k is captured lane lane_rows[k]: the mass AND shear of a real Nautilus " + "proposal (nautilus_batch_capture.py), lens light fixed at S3, the S3 " + "light-subtracted dataset shared by every lane. `offsets` in the lane table are " + "the mass offsets from the fiducial; the shear is in the capture file." + ), + } + vmap_block["captured"] = { + **captured_record, + "timed_window_vs_capture_pdip": { + "reference": ( + "the capture's own figure of merit (library PDIP, Fitness.call_wrap " + "jax.jit(jax.vmap(call)) over parameter vectors) for the same lanes" + ), + "compared_against": "this cell's jit(vmap) library-PDIP reference", + "n_compared": int(_valid.sum()), + "max_rel_diff": float(_rel_capture[_valid].max()) if _valid.any() else None, + "max_abs_diff_nats": ( + float(np.abs(_ll_library_pdip - _fom)[_valid].max()) if _valid.any() else None + ), + "gated": False, + "note": ( + "RECORDED, NOT GATED: proves the lane trees rebuilt here are the models the " + "sampler evaluated (a wrong parameter mapping shows up as nats, not 1e-10)." + ), + }, + } + print( + f" captured window vs capture PDIP (recorded): max rel " + f"{vmap_block['captured']['timed_window_vs_capture_pdip']['max_rel_diff']}" + ) + if "vmap" in arm_blocks and "scalar" in arm_blocks: _v_ms = arm_blocks["vmap"]["wall_per_lane_ms"] _s_ms = arm_blocks["scalar"]["wall_per_lane_ms"] @@ -3316,6 +3967,10 @@ def _git(*args): "certified_pass_budget": CERTIFIED_BUDGET, } ) + if CAPTURED_LANES: + trace_summary["configuration"].update( + {"captured_pass": CAPTURED_PASS, "batches": str(_cell_args.batches)} + ) trace_summary["solver_injection"] = { "patched": None, "part_v": "none — library mode selects the solver through al.Settings", @@ -3404,7 +4059,8 @@ def _git(*args): # token keeps these files disjoint from every harness-mode file. _cell_name = ( f"{_cell_name}_jitvmap{int(VMAP_BATCH)}_{LANES_MODE}" - f"_lib{LIBRARY_SOLVER}_fb{'on' if FALLBACK_ON else 'off'}_b{CERTIFIED_BUDGET}" + + (f"_{CAPTURED_STAGE}" if CAPTURED_LANES else "") + + f"_lib{LIBRARY_SOLVER}_fb{'on' if FALLBACK_ON else 'off'}_b{CERTIFIED_BUDGET}" ) if PSF_CANDIDATE is not None: diff --git a/scripts/imaging/likelihood_breakdown/nautilus_batch_capture.py b/scripts/imaging/likelihood_breakdown/nautilus_batch_capture.py new file mode 100644 index 000000000..7f566a503 --- /dev/null +++ b/scripts/imaging/likelihood_breakdown/nautilus_batch_capture.py @@ -0,0 +1,663 @@ +""" +JAX Profiling: Fixed Lens Light — CAPTURE real Nautilus proposal batches +======================================================================= + +Certified-solver phase C1 (autolens_profiling#304), step 1 of 2. + +Phase B (autolens_profiling#300, ``results/notes/certified_solver_policy_phase_b_2026_09.md``) +measured the library's certified solver under the production composition +``jax.jit(jax.vmap(fn))`` with ``certified_fallback="none"`` as the fastest +batched row, with **zero** uncertified lanes. Its lanes, though, were one seeded +draw family near the fiducial (``fixed_light_draws_steps.random_draws``). Whether +an uncertified-lane guard (phase C2) is worth building depends on how often a lane +fails its certificate on the batches a real search actually proposes. This cell +records those batches; ``fixed_light_trace.py --lanes captured`` replays them. + +What it does +------------ + +1. Builds the phase-B cell's S3 system — the HST dataset, the fixed-light + subtraction, the Delaunay (Hilbert, N=1500, AdaptSplit) or rectangular + (39x39 ``RectangularBilinearAdaptImage``, S0 Constant) source — with PART A of + ``fixed_light_trace.py`` copied line for line (the house rule of this family: "if a sibling cell's model + changes, this cell must change with it"). The replay does not trust the copy: + it re-derives the S3 fingerprint recorded here (dataset sha256s, mesh, source + pixels, the regularization CLASS, border relocator, the eager S3 figure of + merit) and refuses a file that does not match. The regularization + coefficients are free parameters of the capture and are no longer part of the + system's identity. +2. Fits that S3 system with ``af.Nautilus`` at the settings of the production + ``source_pix[1]`` stage of + ``euclid_strong_lens_modeling_pipeline/scripts/full_model.py``: + ``n_live=150`` (``source_pix[2]``: 75), ``n_batch=20``, ``use_jax_vmap=True`` (the ``SettingsSearch`` + default), one core, every other Nautilus argument at its default. The + likelihood is the library's own — ``AnalysisImaging(use_jax=True)`` with the + packaged positive-only solver (library PDIP): the batches must be the ones + production proposes, so nothing about the solver is changed here. +3. Records every batched parameter array that reaches ``Fitness.call_wrap`` with + its call index, the figure of merit it returned, its wall time and the + Nautilus phase it was proposed in (``likelihood_breakdown.nautilus_batches``: + a script-scoped patch of ``Fitness.call_wrap`` and + ``nautilus.Sampler.evaluate_likelihood``, restored on exit — no library is + edited). + +The model: ``--stage pix1|pix2``, and where it departs from production +--------------------------------------------------------------------- + +The model is built by ``nautilus_batches.capture_model_from`` — ONE builder the +replay re-instantiates, so the parameter order cannot drift between the two cells. + +- ``pix1`` (default; production ``source_pix_1``): the lens ``Isothermal`` + (centre, ell_comps, einstein_radius) and ``ExternalShear`` free with the + phase-B cell's Gaussian priors, AND the regularization free — 10 parameters + on both meshes (``AdaptSplit`` on Delaunay, ``Adapt`` on rectangular). +- ``pix2`` (production ``source_pix_2``): the mass and shear FIXED at the S3 + lens (the cell's fiducial values) and only the regularization free — 3 + parameters on both meshes. + +The regularization class is ``nautilus_batches.regularization_class_for(mesh, +stage)``, and its priors are production's (``nautilus_batches.REGULARIZATION_PRIORS``, +set explicitly): inner and outer coefficient ``LogUniform(1e-6, 1e6)``, +``signal_scale`` ``Uniform(0, 1)`` — the packaged PyAutoGalaxy ``adapt_split.yaml`` +/ ``adapt.yaml``, each identical to the pipeline's own config. Delaunay frees +``AdaptSplit`` in both stages, as production (its fixed coefficients 0.1 / 10 / +0.1 are the S0 fit that defines S3, and nothing else). Rectangular frees +``Adapt`` in both stages, as every SLaM pixelized source stage on a rectangular +mesh does (``autolens_workspace/scripts/guides/modeling/slam_start_here.py``: +``regularization_init=al.reg.Adapt`` for ``source_pix_1``, +``RectangularBilinearAdaptImage`` + ``al.reg.Adapt`` for ``source_pix_2``; +``AdaptSplit`` needs split cross-points the rectangular interpolator does not +have). The S3 system itself is built with the S0 ``Constant`` (coefficient 1.0) +either way; ``Adapt`` reads the same adapt image the cell already hands +``AdaptImages``. + +Remaining departures from production: mass and shear priors are the cell's, not +chained from ``source_lp``; no positions likelihood; the mesh is the cell's +(Hilbert 1500 vertices, ``weight_power=1``) in both stages, where ``source_pix_2`` +redraws a 500-vertex Hilbert grid at ``weight_power=3.5`` from the pix1 result; on +rectangular the mesh is the cell's 39x39 ``RectangularBilinearAdaptImage`` at +``weight_power=1``, ``weight_floor=0`` (the production ``source_pix_2`` class), +fixed, in both stages, where ``source_pix_1`` uses +``RectangularBilinearAdaptDensity`` and ``source_pix_2`` frees ``weight_power`` / +``weight_floor``. +Nautilus is seeded (``--seed``, default 1) so a capture is reproducible; +production passes no seed. Quick updates are disabled (they only render the +current best fit and never change what Nautilus proposes), and the search's +post-fit ``perform_update`` is replaced by a stop: the samples and the per-sample +latent-variable pass it would build cost more than the sampling on the laptop and +record nothing. + +Flags (beyond the shared ``_profile_cli`` set) +---------------------------------------------- + +``--mesh {delaunay,rectangular}`` (required) — the phase-B meshes. +``--stage {pix1,pix2}`` (default ``pix1``) — which production stage's free +parameters (above). +``--n-like-max N`` (default 40000) — Nautilus's own likelihood cap. On the A100 +this is roughly an hour of sampling (phase B: ~39 ms per Delaunay lane under +library PDIP ``jit(vmap)``, plus Nautilus's CPU-side bound training); a laptop +witness passes a few batches' worth. +``--capture-seconds S`` (default: no limit) — a hard wall-clock cap. The batch +that crosses it is recorded, then Nautilus is unwound and the file written. +``--n-live`` (default: the stage's production value, 150 for pix1 and 75 for +pix2), ``--n-batch`` (default 20), ``--seed`` (default 1). + +Output +------ + +``/nautilus_batches__[_n].npz`` and ``.json`` beside +it (default output dir ``results/breakdown/imaging``). The npz keys are +``nautilus_batches.SCHEMA_VERSION``'s: ``parameters`` ``(n_lanes, n_dim)`` physical +values in ``meta.parameter_paths`` order, ``figure_of_merit``, ``call_index``, +``lane_in_call``, and per call ``call_size``, ``call_phase``, ``call_n_bounds``, +``call_explored``, ``call_n_like_before``, ``call_wall_s``; ``meta_json`` repeats +the provenance JSON's ``meta``. The JSON adds library source revisions, device, +the Nautilus settings and the batch-shape census. + +What may not be quoted from this file +------------------------------------- + +- ``call_wall_s`` as a likelihood cost. It is the wall of ``call_wrap`` under a + running sampler, including the first call's compile; the timed pass of + ``fixed_light_trace.py`` is where milliseconds come from. +- Any rate at all. This cell only records batches; the certified rate is the + replay's (``fixed_light_trace.py --lanes captured --captured-pass rate``). +""" + +import sys as _sys +from pathlib import Path as _Path + + +def _profiling_root() -> _Path: + for _p in _Path(__file__).resolve().parents: + if (_p / "ruff.toml").exists(): + return _p + raise RuntimeError("autolens_profiling root (ruff.toml) not found") + + +_misc_dir = str(_profiling_root() / "scripts" / "misc") +if _misc_dir not in _sys.path: + _sys.path.insert(0, str(_misc_dir)) + + +import argparse +import hashlib +import json +import math +import subprocess +import sys +import time +from pathlib import Path + +import autofit as af +import autolens as al +import jax +import jax.numpy as jnp +import numpy as np +from autofit.jax import register_model as _register_model_pytrees + +sys.path.insert(0, str(_profiling_root())) + +import os as _smoke_os +import sys as _smoke_sys + +from likelihood_breakdown import ( # noqa: E402 + active_set_steps, + nautilus_batches, + timing, +) + +from _adapt_image_util import adapt_image_for_dataset # noqa: E402 + +# AUTOLENS_PROFILING_SMOKE=1 short-circuit (CI lint smoke): imports + module +# setup, before any argparse, so a smoke run needs no flags. +if _smoke_os.environ.get("AUTOLENS_PROFILING_SMOKE") == "1": + print(f"[smoke] {__file__}: imports + module setup OK; exiting.") + _smoke_sys.exit(0) + +from simulators.imaging import INSTRUMENTS # noqa: E402 + +from _production_config import observe_thread_env as _observe_thread_env # noqa: E402 +from _profile_cli import ( # noqa: E402 + auto_simulate_if_missing, + delaunay_regularization, + device_info_dict, + machine_info_dict, + parse_profile_cli, + rect_mesh_classes, +) + +_cli = parse_profile_cli() + +#: euclid_strong_lens_modeling_pipeline/scripts/full_model.py: source_pix_1 runs +#: n_live=150, source_pix_2 n_live=75; both default n_batch=20. +PRODUCTION_N_LIVE = {"pix1": 150, "pix2": 75} +PRODUCTION_N_BATCH = 20 + +_cell_parser = argparse.ArgumentParser(add_help=False, allow_abbrev=False) +_cell_parser.add_argument("--mesh", choices=("rectangular", "delaunay"), required=True) +_cell_parser.add_argument("--source-pixels", type=int, default=None) +_cell_parser.add_argument("--n-like-max", type=int, default=40000) +_cell_parser.add_argument("--capture-seconds", type=float, default=None) +_cell_parser.add_argument("--n-live", type=int, default=None) +_cell_parser.add_argument("--n-batch", type=int, default=PRODUCTION_N_BATCH) +_cell_parser.add_argument("--seed", type=int, default=1) +_cell_parser.add_argument("--stage", choices=nautilus_batches.STAGES, default="pix1") +_cell_args = _cli.parse_cell_args(_cell_parser) + +MESH = _cell_args.mesh +N_LIKE_MAX = int(_cell_args.n_like_max) +CAPTURE_SECONDS = _cell_args.capture_seconds +N_BATCH = int(_cell_args.n_batch) +SEED = int(_cell_args.seed) +STAGE = _cell_args.stage +N_LIVE = int(_cell_args.n_live if _cell_args.n_live is not None else PRODUCTION_N_LIVE[STAGE]) +for _flag, _value in (("--n-like-max", N_LIKE_MAX), ("--n-live", N_LIVE), ("--n-batch", N_BATCH)): + if _value < 1: + raise ValueError(f"{_flag} must be >= 1 (got {_value})") +if CAPTURE_SECONDS is not None and CAPTURE_SECONDS <= 0: + raise ValueError(f"--capture-seconds must be > 0 (got {CAPTURE_SECONDS})") + +SOURCE_PIXELS_REQUESTED = ( + _cell_args.source_pixels if _cell_args.source_pixels is not None else _cli.source_pixels +) + +DATASET = "hst" +if _cli.instrument is not None and _cli.instrument != DATASET: + raise ValueError(f"--instrument {_cli.instrument!r} is not this cell's dataset (HST only).") + +timer = timing.Timer() + +# =================================================================== +# PART A — Setup: fixed_light_trace.py PART A, copied line for line +# =================================================================== + +print("=" * 70) +print(f"NAUTILUS BATCH CAPTURE — {MESH} {STAGE} — n_live {N_LIVE}, n_batch {N_BATCH}") +print("=" * 70) + +_workspace_root = _profiling_root() +pixel_scale = INSTRUMENTS[DATASET]["pixel_scale"] +dataset_path = Path("dataset") / "imaging" / DATASET + + +def _sha256(path: Path) -> str: + digest = hashlib.sha256() + with path.open("rb") as file_obj: + for chunk in iter(lambda: file_obj.read(1024 * 1024), b""): + digest.update(chunk) + return digest.hexdigest() + + +auto_simulate_if_missing( + dataset_path, + dataset_type="imaging", + instrument=DATASET, + workspace_root=_workspace_root, +) + +dataset_sha256 = { + name: _sha256(dataset_path / name) for name in ("data.fits", "noise_map.fits", "psf.fits") +} +cell_source_sha256 = _sha256(Path(__file__).resolve()) + +with timer.section("dataset_load"): + dataset = al.Imaging.from_fits( + data_path=dataset_path / "data.fits", + psf_path=dataset_path / "psf.fits", + noise_map_path=dataset_path / "noise_map.fits", + pixel_scales=pixel_scale, + ) + +with timer.section("mask_and_oversample"): + mask_radius = 3.5 + + mask = al.Mask2D.circular( + shape_native=dataset.shape_native, + pixel_scales=dataset.pixel_scales, + radius=mask_radius, + ) + + dataset = dataset.apply_mask(mask=mask) + dataset = dataset.apply_over_sampling( + over_sample_size_lp=4, + over_sample_size_pixelization=1, + ) + + over_sample_size = al.util.over_sample.over_sample_size_via_radial_bins_from( + grid=dataset.grid, + sub_size_list=[4, 2, 2], + radial_list=[0.3, 0.6], + centre_list=[(0.0, 0.0)], + ) + + dataset = dataset.apply_over_sampling( + over_sample_size_lp=over_sample_size, + over_sample_size_pixelization=1, + ) + +if MESH == "rectangular": + mesh_pixels_yx = ( + 39 if SOURCE_PIXELS_REQUESTED is None else int(round(math.sqrt(SOURCE_PIXELS_REQUESTED))) + ) + mesh_shape = (mesh_pixels_yx, mesh_pixels_yx) + n_source_pixels = mesh_pixels_yx * mesh_pixels_yx + n_mesh_vertices = None +else: + mesh_pixels_yx = None + mesh_shape = None + n_mesh_vertices = 1500 if SOURCE_PIXELS_REQUESTED is None else int(SOURCE_PIXELS_REQUESTED) + n_source_pixels = n_mesh_vertices + +print(f" Source pixels: {n_source_pixels}") + +with timer.section("adapt_image_build"): + adapt_image = adapt_image_for_dataset(dataset_path=dataset_path, dataset=dataset) + +image_plane_mesh_grid = None +if MESH != "rectangular": + with timer.section("image_mesh_hilbert"): + image_mesh = al.image_mesh.Hilbert( + pixels=n_mesh_vertices, weight_power=1.0, weight_floor=0.0 + ) + image_plane_mesh_grid = image_mesh.image_plane_mesh_grid_from( + mask=dataset.mask, adapt_data=adapt_image + ) + print(f" Mesh vertices placed: {image_plane_mesh_grid.shape[0]}") + +with timer.section("model_build"): + lens_bulge = al.model_util.mge_model_from( + mask_radius=mask_radius, + total_gaussians=60, + centre_prior_is_uniform=True, + ) + + mass = af.Model(al.mp.Isothermal) + mass.centre.centre_0 = af.GaussianPrior(mean=0.0, sigma=0.005) + mass.centre.centre_1 = af.GaussianPrior(mean=0.0, sigma=0.005) + mass.einstein_radius = af.GaussianPrior(mean=1.6, sigma=0.05) + _lens_mass_ell = al.convert.ell_comps_from(axis_ratio=0.9, angle=45.0) + mass.ell_comps.ell_comps_0 = af.GaussianPrior(mean=_lens_mass_ell[0], sigma=0.01) + mass.ell_comps.ell_comps_1 = af.GaussianPrior(mean=_lens_mass_ell[1], sigma=0.01) + + shear = af.Model(al.mp.ExternalShear) + shear.gamma_1 = af.GaussianPrior(mean=0.05, sigma=0.005) + shear.gamma_2 = af.GaussianPrior(mean=0.05, sigma=0.005) + + lens = af.Model(al.Galaxy, redshift=0.5, bulge=lens_bulge, mass=mass, shear=shear) + + if MESH == "rectangular": + reg_scheme = "constant" + mesh_obj = rect_mesh_classes(_cli)[1](shape=mesh_shape, weight_power=1.0, weight_floor=0.0) + regularization = al.reg.Constant(coefficient=1.0) + reg_provenance = {"scheme": reg_scheme, "coefficient": 1.0} + else: + mesh_obj = al.mesh.Delaunay(pixels=n_mesh_vertices, zeroed_pixels=0) + reg_scheme, regularization, reg_provenance = delaunay_regularization(_cli) + + pixelization = al.Pixelization(mesh=mesh_obj, regularization=regularization) + source = af.Model(al.Galaxy, redshift=1.0, pixelization=pixelization) + model = af.Collection(galaxies=af.Collection(lens=lens, source=source)) + +param_vector = model.physical_values_from_prior_medians +instance = model.instance_from_vector(vector=param_vector) +tracer = al.Tracer(galaxies=list(instance.galaxies)) + +_adapt_kwargs = { + "galaxy_image_dict": {instance.galaxies.source: adapt_image}, + "galaxy_name_image_dict": {"('galaxies', 'source')": adapt_image}, +} +if image_plane_mesh_grid is not None: + _adapt_kwargs["galaxy_image_plane_mesh_grid_dict"] = { + instance.galaxies.source: image_plane_mesh_grid + } + _adapt_kwargs["galaxy_name_image_plane_mesh_grid_dict"] = { + "('galaxies', 'source')": image_plane_mesh_grid + } +adapt_images = al.AdaptImages(**_adapt_kwargs) + +# The cell's border relocator mode ``cell`` (True), as phase B ran it. +_settings = al.Settings( + use_border_relocator=True, + use_mixed_precision=_cli.use_mixed_precision, +) +BORDER_RELOCATOR_RESOLVED = bool(_settings.use_border_relocator) + +print("\n--- S0 -> S3: lens light converted to regular profiles + subtracted (eager) ---") +with timer.section("fit_imaging_eager"): + fit = al.FitImaging( + dataset=dataset, + tracer=tracer, + adapt_images=adapt_images, + settings=_settings, + xp=np, + ) +with timer.section("s3_system_build"): + system_s3 = active_set_steps.fixed_light_system_from( + fit, + dataset, + adapt_images=adapt_images, + settings=_settings, + name="S3_mge_converted_to_regular", + ) +log_evidence_s3_library = float(system_s3.fit.figure_of_merit) +print(f" S3 figure_of_merit (library) = {log_evidence_s3_library}") + +# =================================================================== +# PART N — the Nautilus fit of the S3 system, recorded +# =================================================================== +# The fixed-light model: the S3 lens has no light (it was subtracted from the +# dataset), so the lens is mass + shear (free in pix1, the S3 lens itself in pix2); +# the source is the cell's mesh with the regularization FREE at production priors. + +_s3_lens, _s3_source = list(system_s3.source_only_tracer.galaxies) +_s3_lens_attrs = sorted( + _k for _k in vars(_s3_lens) if not _k.startswith("_") and _k not in {"id", "redshift"} +) +if _s3_lens_attrs != ["mass", "shear"]: + raise AssertionError( + f"the S3 source-only lens carries {_s3_lens_attrs}, not ['mass', 'shear'] — the " + f"captured lanes would not be the phase-B lane family" + ) + +capture_model = nautilus_batches.capture_model_from( + STAGE, mesh=MESH, mesh_obj=mesh_obj, lens_fixed=_s3_lens +) +REGULARIZATION_CLASS = nautilus_batches.regularization_class_for(MESH, STAGE) +parameter_paths = [".".join(_p) for _p in capture_model.paths] +print( + f"\n Capture model ({STAGE}): {capture_model.total_free_parameters} free parameters, " + f"regularization {REGULARIZATION_CLASS} free" +) +for _p in parameter_paths: + print(f" {_p}") +_register_model_pytrees(capture_model) + +analysis = al.AnalysisImaging( + dataset=system_s3.dataset, + adapt_images=adapt_images, + settings=_settings, + use_jax=True, +) + +# The prior-median vector through the SAME analysis and the Fitness path +# (instance_from_vector under jit): the mass/shear medians are the S3 fiducial, +# the regularization medians are the prior's (recorded, and a sanity print). +_median_vector = jnp.asarray(capture_model.physical_values_from_prior_medians) +with timer.section("fiducial_jit"): + _fiducial_ll = float( + jax.jit( + lambda _v: analysis.log_likelihood_function( + instance=capture_model.instance_from_vector( + vector=_v, ignore_assertions=True, xp=jnp + ) + ) + )(_median_vector) + ) +print(f" prior-median log likelihood (jit, library PDIP): {_fiducial_ll:.6f}") + +search = af.Nautilus( + n_live=N_LIVE, + n_batch=N_BATCH, + n_like_max=N_LIKE_MAX, + seed=SEED, + number_of_cores=1, + use_jax_vmap=True, + iterations_per_quick_update=1e12, + silence=False, +) + + +class _SamplingComplete(Exception): + """Raised in place of the search's post-fit ``perform_update``. + + With ``NullPaths`` Nautilus runs ONE ``Sampler.run`` to ``n_like_max`` and + autofit then calls ``perform_update`` once, which builds the samples and + evaluates a per-sample latent-variable jit over every accepted sample — on the + laptop witness that cost more than the sampling itself, and none of it changes + a recorded batch. The capture ends at the last batch instead. + """ + + +def _skip_post_fit(*_args, **_kwargs): + raise _SamplingComplete() + + +search.perform_update = _skip_post_fit + +recorder = nautilus_batches.BatchRecorder( + deadline=(time.monotonic() + CAPTURE_SECONDS) if CAPTURE_SECONDS is not None else None +) +fit_status = "search.fit returned (post-fit hook not reached)" +fit_error = None +_t_start = time.perf_counter() +try: + with nautilus_batches.recording(recorder): + _result = search.fit(model=capture_model, analysis=analysis) +except _SamplingComplete: + fit_status = "sampling complete (n_like_max or convergence); post-fit result skipped" +except nautilus_batches.CaptureBudgetReached as _exc: + fit_status = "capture-seconds reached" + fit_error = str(_exc) +except Exception as _exc: # noqa: BLE001 — record what was captured before re-raising below + fit_status = "error" + fit_error = f"{type(_exc).__name__}: {_exc}" +capture_wall_s = time.perf_counter() - _t_start +print( + f"\n capture: {recorder.n_calls} calls, {recorder.n_lanes} lanes, " + f"{capture_wall_s:.1f} s — {fit_status}" +) + +# =================================================================== +# Output +# =================================================================== + + +def _library_revision(module) -> dict: + _repo = Path(module.__file__).resolve().parents[1] + try: + _sha = subprocess.run( + ["git", "-C", str(_repo), "rev-parse", "HEAD"], + capture_output=True, + text=True, + check=True, + ).stdout.strip() + except (OSError, subprocess.CalledProcessError): + _sha = None + return {"head": _sha, "path": str(_repo)} + + +import autoarray as _autoarray # noqa: E402 +import autogalaxy as _autogalaxy # noqa: E402 +import autonerves as _autonerves # noqa: E402 +import nautilus as _nautilus # noqa: E402 + +meta = { + "schema_version": nautilus_batches.SCHEMA_VERSION, + "mesh": MESH, + "stage": STAGE, + "dataset": DATASET, + "parameter_paths": parameter_paths, + "prior_median_vector": [float(_x) for _x in _median_vector], + "regularization": { + "class": REGULARIZATION_CLASS, + "free": True, + "priors": nautilus_batches.REGULARIZATION_PRIORS[REGULARIZATION_CLASS], + "priors_source": ( + "PyAutoGalaxy packaged config/priors/regularization (adapt_split.yaml / " + "adapt.yaml / constant.yaml); adapt_split.yaml and adapt.yaml are identical to " + "euclid_strong_lens_modeling_pipeline/config/priors/regularization/'s copies" + ), + }, + "s3_fingerprint": { + "dataset_sha256": dataset_sha256, + "mesh": MESH, + "source_pixels": int(n_source_pixels), + "regularization_class": REGULARIZATION_CLASS, + "regularization_s0_fiducial": reg_provenance, + "border_relocator": BORDER_RELOCATOR_RESOLVED, + "use_mixed_precision": bool(_cli.use_mixed_precision), + "log_evidence_s3_library": log_evidence_s3_library, + }, + "fiducial_log_likelihood_jit": _fiducial_ll, + "nautilus": { + "n_live": N_LIVE, + "n_batch": N_BATCH, + "n_like_max": N_LIKE_MAX, + "seed": SEED, + "use_jax_vmap": True, + "number_of_cores": 1, + "version": getattr(_nautilus, "__version__", None), + "production_reference": ( + "euclid_strong_lens_modeling_pipeline/scripts/full_model.py source_pix_1 " + "(n_live=150) / source_pix_2 (n_live=75): af.Nautilus(n_batch=20, " + "**SettingsSearch.search_dict) with use_jax_vmap=True and number_of_cores=1 " + "(SettingsSearch defaults)" + ), + "stage": STAGE, + "production_stage": "source_pix_1" if STAGE == "pix1" else "source_pix_2", + "departures_from_production": [ + "mass/shear priors are the phase-B cell's Gaussians, not chained from source_lp" + if STAGE == "pix1" + else "mass/shear fixed at the S3 fiducial, not at a source_pix_1 result", + "no positions likelihood", + "the cell's mesh (Hilbert 1500, weight_power 1) in both stages; source_pix_2 " + "redraws a 500-vertex Hilbert grid at weight_power 3.5" + if MESH != "rectangular" + else "the cell's mesh (39x39 RectangularBilinearAdaptImage, weight_power 1, " + "weight_floor 0) fixed in both stages; source_pix_1 uses " + "RectangularBilinearAdaptDensity, source_pix_2 frees weight_power / weight_floor", + "seeded (production passes no seed)", + "quick updates disabled (iterations_per_quick_update=1e12; render-only)", + "NullPaths: no output directory, so no checkpoint and one Sampler.run call", + "post-fit perform_update skipped (samples / latent variables never built)", + ], + }, + "solver": "library default positive-only solver (Settings() as packaged; PDIP)", + "capture_seconds": CAPTURE_SECONDS, + "fit_status": fit_status, + "fit_error": fit_error, + "capture_wall_s": capture_wall_s, + "cell_source_sha256": cell_source_sha256, + "library_revisions": { + "PyAutoNerves": _library_revision(_autonerves), + "PyAutoFit": _library_revision(af), + "PyAutoArray": _library_revision(_autoarray), + "PyAutoGalaxy": _library_revision(_autogalaxy), + "PyAutoLens": _library_revision(al), + }, +} + +_output_dir = ( + _cli.output_dir + if _cli.output_dir is not None + else _workspace_root / "results" / "breakdown" / "imaging" +) +_stem = f"nautilus_batches_{MESH}_{STAGE}" +if SOURCE_PIXELS_REQUESTED is not None: + _stem = f"{_stem}_n{int(n_source_pixels)}" +npz_path = Path(_output_dir) / f"{_stem}.npz" +json_path = Path(_output_dir) / f"{_stem}.json" + +file_summary = nautilus_batches.save(npz_path, recorder, meta) if recorder.n_calls else None +_call_sizes = [int(_p.shape[0]) for _p in recorder.parameters] +provenance = { + "meta": meta, + "file": { + "npz": str(npz_path), + "npz_sha256": _sha256(npz_path) if file_summary else None, + **(file_summary or {"n_calls": 0, "n_lanes": 0}), + }, + "batch_shape_census": { + "n_batch": N_BATCH, + "all_calls_are_n_batch": bool(_call_sizes) and all(_s == N_BATCH for _s in _call_sizes), + "sizes_seen": sorted(set(_call_sizes)), + "note": ( + "Nautilus.fit_x1_cpu hands call_wrap to nautilus.Sampler with vectorized=" + "use_jax_vmap; Sampler.evaluate_likelihood passes every proposal batch whole. A " + "size other than n_batch is a Nautilus batch of another shape, recorded as it came." + ), + }, + "first_call_wall_s": recorder.call_wall_s[0] if recorder.call_wall_s else None, + "median_call_wall_s": ( + float(np.median(recorder.call_wall_s[1:])) if len(recorder.call_wall_s) > 1 else None + ), + "device": device_info_dict(), + "machine": machine_info_dict(), + "thread_env": _observe_thread_env(), + "timer": {_label: _secs for _label, _secs in timer.records}, + "note": ( + "Captured proposal batches only. No rate and no millisecond in this file is a result: " + "the certified rate and the timed table come from fixed_light_trace.py --lanes captured." + ), +} +json_path.parent.mkdir(parents=True, exist_ok=True) +json_path.write_text(json.dumps(provenance, indent=2, default=str)) +print(f" batches: {npz_path}") +print(f" provenance: {json_path}") +print(f" batch sizes seen: {sorted(set(_call_sizes))} (n_batch {N_BATCH})") + +if fit_status == "error": + raise RuntimeError(f"the Nautilus fit raised after {recorder.n_calls} calls: {fit_error}") +if recorder.n_calls == 0: + raise RuntimeError("no batch reached Fitness.call_wrap — nothing was captured") diff --git a/scripts/misc/likelihood_breakdown/fixed_light_numba_memo_policy_steps.py b/scripts/misc/likelihood_breakdown/fixed_light_numba_memo_policy_steps.py index 33b0c701c..effdd4bc3 100644 --- a/scripts/misc/likelihood_breakdown/fixed_light_numba_memo_policy_steps.py +++ b/scripts/misc/likelihood_breakdown/fixed_light_numba_memo_policy_steps.py @@ -7,6 +7,7 @@ from __future__ import annotations import contextlib +import inspect import math import os import time @@ -260,6 +261,11 @@ def policy_get(key: str, n: int): record(score=score, reason=reason, accepted=accepted, elapsed_ns=elapsed_ns) return result + # The library's #566 `solver` / `stats` and #572 `preconditioning` keywords are + # accepted (the inversion passes them by name) and forwarded only to a library + # that declares them. + _outer_params = inspect.signature(original_outer).parameters + def policy_outer( data_vector, curvature_reg_matrix, @@ -267,6 +273,9 @@ def policy_outer( xp=np, fingerprint=None, factor=None, + solver="pdip", + stats=None, + preconditioning="jacobi", ): nonlocal last_memo_snapshot use_policy = ( @@ -301,6 +310,15 @@ def policy_outer( xp=xp, fingerprint=fingerprint, factor=factor, + **{ + name: value + for name, value in ( + ("solver", solver), + ("stats", stats), + ("preconditioning", preconditioning), + ) + if name in _outer_params + }, ) finally: current.pop() diff --git a/scripts/misc/likelihood_breakdown/fixed_light_numpy_solvers.py b/scripts/misc/likelihood_breakdown/fixed_light_numpy_solvers.py index 1e5dd4394..80bb271f6 100644 --- a/scripts/misc/likelihood_breakdown/fixed_light_numpy_solvers.py +++ b/scripts/misc/likelihood_breakdown/fixed_light_numpy_solvers.py @@ -619,8 +619,11 @@ def numpy_solver_injected(solver, *, label: str): # injected kernel *is* the solve, so the library's `solver` choice does not reach # it. The wrapper's keyword must be spelled `solver` (the library passes it by # name), so the injected kernel is held as `injected`. + # PyAutoArray #572's `preconditioning` (the JAX PDIP scaling) is handled the same way. original_forwarded = frozenset( - name for name in ("solver", "stats") if name in inspect.signature(original).parameters + name + for name in ("solver", "stats", "preconditioning") + if name in inspect.signature(original).parameters ) injected = solver @@ -633,13 +636,18 @@ def patched( factor=None, solver="pdip", stats=None, + preconditioning="jacobi", ): if xp.__name__.startswith("jax"): counts["jax"] += 1 kwargs = {} if original_takes_factor: kwargs["factor"] = factor - for name, value in (("solver", solver), ("stats", stats)): + for name, value in ( + ("solver", solver), + ("stats", stats), + ("preconditioning", preconditioning), + ): if name in original_forwarded: kwargs[name] = value return original( diff --git a/scripts/misc/likelihood_breakdown/library_solver_injection.py b/scripts/misc/likelihood_breakdown/library_solver_injection.py index 29262df5d..ca4de16c0 100644 --- a/scripts/misc/likelihood_breakdown/library_solver_injection.py +++ b/scripts/misc/likelihood_breakdown/library_solver_injection.py @@ -207,6 +207,7 @@ def certified_reconstruction_from( fingerprint=None, factor=None, report=None, + preconditioning="jacobi", ): """The certified active-set solve of ``(curvature_reg_matrix, data_vector)``. @@ -218,6 +219,11 @@ def certified_reconstruction_from( iterate is returned unconditionally, which is the shape a batched row must use (see the module docstring). + ``preconditioning`` is the library's PyAutoArray #571/#572 keyword, as the + library passed it. The active-set solve always runs on the Jacobi-scaled + system (as the library's own certified solver does); the keyword is only + forwarded to the PDIP fallback, so a fallback is the library's own call. + ``report`` is an optional ``fn(pass_at_certification, certified)`` host callback (see the module docstring). It changes nothing that is computed; it is an ordered ``jax.debug.callback``, so it serialises the batch and is @@ -253,7 +259,9 @@ def certified_reconstruction_from( # Route (d)'s fallback is the library's PDIP by definition: pin it, so a # library config selecting another positive-only solver cannot change it. - fallback_kwargs = _library_kwargs(original, solver="pdip", stats=None) + fallback_kwargs = _library_kwargs( + original, solver="pdip", stats=None, preconditioning=preconditioning + ) def _library_pdip(): return original( @@ -305,8 +313,8 @@ def certified_solver_injected( original = inversion_util.reconstruction_positive_only_from counts = {"jax": 0, "numpy": 0} - # Read once: which of the #566 keywords the installed library accepts. - forwarded = frozenset(_library_kwargs(original, solver=None, stats=None)) + # Read once: which of the #566 / #572 keywords the installed library accepts. + forwarded = frozenset(_library_kwargs(original, solver=None, stats=None, preconditioning=None)) def patched( data_vector, @@ -317,6 +325,7 @@ def patched( factor=None, solver="pdip", stats=None, + preconditioning="jacobi", ): if not xp.__name__.startswith("jax"): counts["numpy"] += 1 @@ -327,7 +336,15 @@ def patched( xp=xp, fingerprint=fingerprint, factor=factor, - **{k: v for k, v in (("solver", solver), ("stats", stats)) if k in forwarded}, + **{ + k: v + for k, v in ( + ("solver", solver), + ("stats", stats), + ("preconditioning", preconditioning), + ) + if k in forwarded + }, ) counts["jax"] += 1 return certified_reconstruction_from( @@ -342,6 +359,7 @@ def patched( fingerprint=fingerprint, factor=factor, report=report, + preconditioning=preconditioning, ) _assert_signature_covers(original, patched) @@ -397,6 +415,7 @@ def observed( factor=None, solver="pdip", stats=None, + preconditioning="jacobi", ): is_jax = xp.__name__.startswith("jax") local_stats = {} if stats is None else stats @@ -409,6 +428,7 @@ def observed( factor=factor, solver=solver, stats=local_stats, + **_library_kwargs(original, preconditioning=preconditioning), ) if not is_jax: seen["numpy"] += 1 diff --git a/scripts/misc/likelihood_breakdown/nautilus_batches.py b/scripts/misc/likelihood_breakdown/nautilus_batches.py new file mode 100644 index 000000000..0ee2dbbc4 --- /dev/null +++ b/scripts/misc/likelihood_breakdown/nautilus_batches.py @@ -0,0 +1,427 @@ +"""Captured Nautilus proposal batches — the recorder, the file format and the lane rules. + +Certified-solver phase C1 (autolens_profiling#304). Two cells share this module: + +- ``scripts/imaging/likelihood_breakdown/nautilus_batch_capture.py`` runs a real + ``af.Nautilus`` fit and records every batched parameter array that reaches + ``Fitness.call_wrap`` (:class:`BatchRecorder`, :func:`recording`, :func:`save`); +- ``scripts/imaging/likelihood_breakdown/fixed_light_trace.py --lanes captured`` + replays those lanes (:func:`load`, :func:`sample_calls`, :func:`timed_window`, + :func:`chunked`, :func:`rate_summary`). + +Everything here except :func:`recording` and :func:`capture_model_from` is pure numpy, so the selection and +summary rules are unit-tested without JAX (``scripts/misc/test/test_nautilus_batches.py``). + +The recorder +------------ + +:func:`recording` patches two methods for the duration of a ``with`` block and +restores both on exit — nothing in any library is edited: + +1. ``nautilus.Sampler.evaluate_likelihood`` — to read the sampler's state at the + moment it asks for a batch: how many bounds it holds, whether it has finished + exploring, and ``n_like`` so far. That is the Nautilus *phase* of the batch + (:func:`phase_of`). The wrapper forwards the call unchanged. +2. ``autofit.non_linear.fitness.Fitness.call_wrap`` — the host-side batched entry + Nautilus is handed as its ``likelihood`` (``Nautilus.fit_x1_cpu``, + ``likelihood=fitness.call_wrap, vectorized=fitness.use_jax_vmap``). The + wrapper copies the ``(n, n_dim)`` physical parameter array it receives, calls + the original, and copies the figure of merit it returns. Call index = the + order ``call_wrap`` was entered. + +The phase rule (stated once, used by both cells) +------------------------------------------------ + +``phase_of(n_bounds, explored)``: + +- ``prior`` — the sampler holds only its first bound, the unit cube, so the + batch is a set of prior draws (Nautilus fills its first ``n_live`` points this + way); +- ``exploration`` — more than one bound, exploration not finished; +- ``sampling`` — ``Sampler.explored`` is True (the shells are being refined). + +``early`` / ``late`` is the call-index split: a call is ``early`` if its call +index is below the median call index of the calls replayed (``n // 2``), else +``late``. Both splits are reported; neither is a Nautilus internal quantity that +a later Nautilus version could redefine silently, except ``explored``, which the +recorder reads straight off the sampler. +""" + +from __future__ import annotations + +import contextlib +import json +import time +from dataclasses import dataclass, field +from pathlib import Path + +import numpy as np + +#: Bump when the npz key set changes; ``load`` refuses a file it does not know. +SCHEMA_VERSION = 2 + +#: Phase labels, in run order. +PHASES = ("prior", "exploration", "sampling") + + +def phase_of(n_bounds: int, explored: bool) -> str: + """The Nautilus phase of a batch, from the sampler state when it was requested.""" + if explored: + return "sampling" + if int(n_bounds) <= 1: + return "prior" + return "exploration" + + +class CaptureBudgetReached(Exception): + """Raised from inside ``call_wrap`` once the capture's wall-clock budget is spent. + + The batch that crosses the budget IS recorded first; the exception then + unwinds Nautilus, and the capture cell catches it and writes the file. + """ + + +@dataclass +class BatchRecorder: + """Everything the two patched methods saw, in call order.""" + + deadline: float | None = None + parameters: list = field(default_factory=list) + figure_of_merit: list = field(default_factory=list) + call_wall_s: list = field(default_factory=list) + call_phase: list = field(default_factory=list) + call_n_bounds: list = field(default_factory=list) + call_explored: list = field(default_factory=list) + call_n_like_before: list = field(default_factory=list) + #: The sampler state set by the evaluate_likelihood wrapper, consumed by the + #: next call_wrap. ``None`` if call_wrap was reached some other way. + _pending_state: dict | None = None + + @property + def n_calls(self) -> int: + return len(self.parameters) + + @property + def n_lanes(self) -> int: + return int(sum(p.shape[0] for p in self.parameters)) + + def note_sampler_state(self, sampler) -> None: + n_bounds = len(getattr(sampler, "bounds", []) or []) + explored = bool(getattr(sampler, "explored", False)) + self._pending_state = { + "n_bounds": n_bounds, + "explored": explored, + "n_like_before": int(getattr(sampler, "n_like", -1)), + "phase": phase_of(n_bounds, explored), + } + + def record(self, parameters, figure_of_merit, wall_s: float) -> None: + params = np.array(parameters, dtype=float, copy=True) + if params.ndim == 1: + params = params[None, :] + fom = np.array(figure_of_merit, dtype=float, copy=True).reshape(-1) + if fom.shape[0] != params.shape[0]: + raise AssertionError( + f"call_wrap returned {fom.shape[0]} figures of merit for {params.shape[0]} " + f"parameter vectors — the batch axis is not the lane axis" + ) + state = self._pending_state or { + "n_bounds": -1, + "explored": False, + "n_like_before": -1, + "phase": "unknown", + } + self._pending_state = None + self.parameters.append(params) + self.figure_of_merit.append(fom) + self.call_wall_s.append(float(wall_s)) + self.call_phase.append(state["phase"]) + self.call_n_bounds.append(int(state["n_bounds"])) + self.call_explored.append(bool(state["explored"])) + self.call_n_like_before.append(int(state["n_like_before"])) + + +@contextlib.contextmanager +def recording(recorder: BatchRecorder): + """Patch ``Sampler.evaluate_likelihood`` and ``Fitness.call_wrap``; restore both on exit.""" + import nautilus + from autofit.non_linear.fitness import Fitness + + original_call_wrap = Fitness.call_wrap + original_evaluate = nautilus.Sampler.evaluate_likelihood + + def evaluate_likelihood(self, points): + recorder.note_sampler_state(self) + return original_evaluate(self, points) + + def call_wrap(self, parameters): + start = time.perf_counter() + figure_of_merit = original_call_wrap(self, parameters) + recorder.record(parameters, figure_of_merit, time.perf_counter() - start) + if recorder.deadline is not None and time.monotonic() >= recorder.deadline: + raise CaptureBudgetReached( + f"capture wall-clock budget reached after {recorder.n_calls} calls" + ) + return figure_of_merit + + call_wrap.__doc__ = original_call_wrap.__doc__ + Fitness.call_wrap = call_wrap + nautilus.Sampler.evaluate_likelihood = evaluate_likelihood + try: + yield recorder + finally: + Fitness.call_wrap = original_call_wrap + nautilus.Sampler.evaluate_likelihood = original_evaluate + + +# --------------------------------------------------------------------------- +# The captured model — ONE builder, used by the capture and by the replay +# --------------------------------------------------------------------------- + +#: The capture stages (``--stage``), after the production pipeline's pixelized +#: stages (euclid_strong_lens_modeling_pipeline/scripts/full_model.py). +STAGES = ("pix1", "pix2") + +#: The production regularization priors. ``AdaptSplit``'s are the packaged +#: PyAutoGalaxy ``config/priors/regularization/adapt_split.yaml`` and ``Adapt``'s +#: the packaged ``adapt.yaml``, each identical to the pipeline's own +#: ``euclid_strong_lens_modeling_pipeline/config/priors/regularization/`` copy. +#: Set EXPLICITLY on the model so the capture does not depend on which config +#: directory is active. +REGULARIZATION_PRIORS = { + "AdaptSplit": { + "inner_coefficient": ("LogUniform", 1.0e-6, 1.0e6), + "outer_coefficient": ("LogUniform", 1.0e-6, 1.0e6), + "signal_scale": ("Uniform", 0.0, 1.0), + }, + "Adapt": { + "inner_coefficient": ("LogUniform", 1.0e-6, 1.0e6), + "outer_coefficient": ("LogUniform", 1.0e-6, 1.0e6), + "signal_scale": ("Uniform", 0.0, 1.0), + }, +} + + +def regularization_class_for(mesh: str, stage: str) -> str: + """The regularization class *stage* frees on *mesh*. + + Delaunay, both stages: ``AdaptSplit``, as production ``source_pix_1`` / + ``source_pix_2`` (and as the phase-B cell already uses). Rectangular, both + stages: ``Adapt``, as every SLaM pixelized source stage on a rectangular mesh + (``autolens_workspace/scripts/guides/modeling/slam_start_here.py``: + ``regularization_init=al.reg.Adapt`` for ``source_pix_1``, + ``RectangularBilinearAdaptImage`` + ``al.reg.Adapt`` for ``source_pix_2``); + ``AdaptSplit`` is not an option there, as it needs the interpolator's split + cross-points (``_mappings_sizes_weights_split``), which only the Delaunay / + KNN / Sibson interpolators define. Both stages free the same class today; + *stage* is kept so a stage-dependent choice has one place to live. + """ + if stage not in STAGES: + raise ValueError(f"unknown stage {stage!r} (want one of {STAGES})") + return "Adapt" if mesh == "rectangular" else "AdaptSplit" + + +def capture_model_from(stage: str, *, mesh: str, mesh_obj, lens_fixed): + """The fixed-light model a capture fits and a replay re-instantiates. + + ``pix1`` (production ``source_pix_1``): lens Isothermal + ExternalShear free + with the phase-B cell's Gaussian priors, AND the regularization free with the + production priors. ``pix2`` (production ``source_pix_2``): the lens is + *lens_fixed* (the S3 source-only lens — the cell's fiducial mass and shear) and + only the regularization is free. The regularization class is + :func:`regularization_class_for`. The mesh is the cell's (*mesh_obj*) in both. + + Returns the ``af.Collection``; its ``paths`` order is the capture's + ``parameter_paths`` and the replay asserts it is unchanged. + """ + import autofit as af + import autolens as al + + if stage not in STAGES: + raise ValueError(f"unknown stage {stage!r} (want one of {STAGES})") + + reg_name = regularization_class_for(mesh, stage) + regularization = af.Model(getattr(al.reg, reg_name)) + for attr, (kind, lower, upper) in REGULARIZATION_PRIORS[reg_name].items(): + prior_cls = af.LogUniformPrior if kind == "LogUniform" else af.UniformPrior + setattr(regularization, attr, prior_cls(lower_limit=lower, upper_limit=upper)) + pixelization = af.Model(al.Pixelization, mesh=mesh_obj, regularization=regularization) + source = af.Model(al.Galaxy, redshift=1.0, pixelization=pixelization) + + if stage == "pix1": + mass = af.Model(al.mp.Isothermal) + mass.centre.centre_0 = af.GaussianPrior(mean=0.0, sigma=0.005) + mass.centre.centre_1 = af.GaussianPrior(mean=0.0, sigma=0.005) + mass.einstein_radius = af.GaussianPrior(mean=1.6, sigma=0.05) + ell = al.convert.ell_comps_from(axis_ratio=0.9, angle=45.0) + mass.ell_comps.ell_comps_0 = af.GaussianPrior(mean=ell[0], sigma=0.01) + mass.ell_comps.ell_comps_1 = af.GaussianPrior(mean=ell[1], sigma=0.01) + shear = af.Model(al.mp.ExternalShear) + shear.gamma_1 = af.GaussianPrior(mean=0.05, sigma=0.005) + shear.gamma_2 = af.GaussianPrior(mean=0.05, sigma=0.005) + lens = af.Model(al.Galaxy, redshift=0.5, mass=mass, shear=shear) + else: + lens = lens_fixed + + return af.Collection(galaxies=af.Collection(lens=lens, source=source)) + + +def regularization_paths(parameter_paths) -> list[str]: + """The regularization entries of a capture's ``parameter_paths``.""" + return [p for p in parameter_paths if ".regularization." in p] + + +# --------------------------------------------------------------------------- +# The file +# --------------------------------------------------------------------------- + + +def save(path: Path, recorder: BatchRecorder, meta: dict) -> dict: + """Write the npz; returns the per-file summary the provenance JSON records.""" + if recorder.n_calls == 0: + raise ValueError("no batches were recorded — nothing reached Fitness.call_wrap") + sizes = np.array([p.shape[0] for p in recorder.parameters], dtype=int) + call_index = np.repeat(np.arange(recorder.n_calls, dtype=int), sizes) + lane_in_call = np.concatenate([np.arange(s, dtype=int) for s in sizes]) + arrays = { + "schema_version": np.array(SCHEMA_VERSION, dtype=int), + "parameters": np.concatenate(recorder.parameters, axis=0), + "figure_of_merit": np.concatenate(recorder.figure_of_merit, axis=0), + "call_index": call_index, + "lane_in_call": lane_in_call, + "call_size": sizes, + "call_wall_s": np.array(recorder.call_wall_s, dtype=float), + "call_phase": np.array(recorder.call_phase, dtype="U16"), + "call_n_bounds": np.array(recorder.call_n_bounds, dtype=int), + "call_explored": np.array(recorder.call_explored, dtype=bool), + "call_n_like_before": np.array(recorder.call_n_like_before, dtype=int), + "meta_json": np.array(json.dumps(meta, sort_keys=True, default=str)), + } + path.parent.mkdir(parents=True, exist_ok=True) + np.savez_compressed(path, **arrays) + return { + "n_calls": int(recorder.n_calls), + "n_lanes": int(sizes.sum()), + "call_sizes": {str(int(s)): int((sizes == s).sum()) for s in np.unique(sizes)}, + "calls_by_phase": { + p: int(sum(1 for q in recorder.call_phase if q == p)) + for p in (*PHASES, "unknown") + if any(q == p for q in recorder.call_phase) + }, + } + + +def load(path: Path) -> dict: + """Read a captured-batches npz back, refusing an unknown schema.""" + with np.load(path, allow_pickle=False) as data: + out = {key: data[key] for key in data.files} + version = int(out.get("schema_version", -1)) + if version != SCHEMA_VERSION: + raise ValueError(f"{path}: schema_version {version}, this checkout reads {SCHEMA_VERSION}") + out["meta"] = json.loads(str(out.pop("meta_json"))) + return out + + +# --------------------------------------------------------------------------- +# The lane rules +# --------------------------------------------------------------------------- + + +def sample_calls(n_calls: int, k: int | None) -> np.ndarray: + """``k`` call indices evenly spaced over the run (all calls when ``k`` is None). + + Deterministic, first and last call always included, so a sampled rate still + spans every phase of the run. + """ + if n_calls < 1: + raise ValueError("no calls to sample") + if k is None or k >= n_calls: + return np.arange(n_calls, dtype=int) + if k < 1: + raise ValueError(f"--batch-sample must be >= 1 (got {k})") + return np.unique(np.round(np.linspace(0, n_calls - 1, int(k))).astype(int)) + + +def lanes_of_calls(call_index: np.ndarray, calls: np.ndarray) -> np.ndarray: + """Lane (row) indices of every lane belonging to *calls*, in call order.""" + mask = np.isin(call_index, calls) + return np.flatnonzero(mask) + + +def timed_window(call_index: np.ndarray, call_phase: np.ndarray, batch: int) -> np.ndarray: + """The ``batch`` lanes the timed pass replays. + + RULE: consecutive captured calls, in call order, starting at the FIRST call + that is not a ``prior`` batch (the first batch proposed from a learned + bound — what the bulk of a run evaluates); lanes are concatenated across + calls and truncated to ``batch``. At ``batch == n_batch`` this is exactly one + real Nautilus batch. If the post-prior lanes run out, the window starts + earlier (the latest ``batch`` lanes of the capture), and if the capture holds + fewer than ``batch`` lanes in total it is an error, never a silent repeat. + """ + n_lanes = int(call_index.shape[0]) + if batch > n_lanes: + raise ValueError( + f"the capture holds {n_lanes} lanes; a timed batch of {batch} would have to " + f"repeat lanes, which is not a real batch" + ) + not_prior = np.flatnonzero(call_phase != "prior") + start_call = int(not_prior[0]) if not_prior.size else 0 + start = int(np.flatnonzero(call_index >= start_call)[0]) + start = min(start, n_lanes - batch) + return np.arange(start, start + batch, dtype=int) + + +def chunked(indices: np.ndarray, size: int) -> list[tuple[np.ndarray, int]]: + """Split *indices* into chunks of exactly ``size`` (one compiled batch shape). + + The final chunk is padded by repeating its last index; returns + ``[(chunk, n_real), ...]`` so the caller drops the padded tail. + """ + if size < 1: + raise ValueError("chunk size must be >= 1") + out = [] + for start in range(0, len(indices), size): + chunk = np.asarray(indices[start : start + size], dtype=int) + n_real = int(chunk.shape[0]) + if n_real < size: + chunk = np.concatenate([chunk, np.full(size - n_real, chunk[-1], dtype=int)]) + out.append((chunk, n_real)) + return out + + +def rate_summary(certified, passes, budget: int) -> dict: + """Uncertified-lane rate and the pass distribution against the budget.""" + certified = np.asarray(certified, dtype=bool) + passes = np.asarray(passes, dtype=int) + n = int(certified.shape[0]) + n_uncertified = int((~certified).sum()) + values, counts = np.unique(passes, return_counts=True) if n else ([], []) + return { + "n_lanes": n, + "n_uncertified": n_uncertified, + "uncertified_rate": (n_uncertified / n) if n else None, + "max_passes": int(passes.max()) if n else None, + "mean_passes": float(passes.mean()) if n else None, + "n_at_budget": int((passes >= int(budget)).sum()) if n else 0, + "budget": int(budget), + "passes_histogram": {str(int(v)): int(c) for v, c in zip(values, counts)}, + } + + +def grouped_rate_summaries(certified, passes, budget: int, labels) -> dict: + """:func:`rate_summary` per distinct label (phase, or early / late).""" + labels = np.asarray(labels) + certified = np.asarray(certified, dtype=bool) + passes = np.asarray(passes, dtype=int) + return { + str(label): rate_summary(certified[labels == label], passes[labels == label], budget) + for label in dict.fromkeys(labels.tolist()) + } + + +def early_late(call_index_of_lane: np.ndarray, calls_replayed: np.ndarray) -> np.ndarray: + """``early`` / ``late`` per lane: below / at-or-above the median replayed call.""" + ordered = np.sort(np.asarray(calls_replayed, dtype=int)) + split = int(ordered[len(ordered) // 2]) if ordered.size else 0 + return np.where(np.asarray(call_index_of_lane) < split, "early", "late") diff --git a/scripts/misc/likelihood_breakdown/xla_attribution.py b/scripts/misc/likelihood_breakdown/xla_attribution.py index 4c42ab03d..4f37aa35f 100644 --- a/scripts/misc/likelihood_breakdown/xla_attribution.py +++ b/scripts/misc/likelihood_breakdown/xla_attribution.py @@ -62,9 +62,9 @@ This matters because the stages are not separable by the innermost frame alone. Both Bayesian-evidence log determinants are the *same* three lines of -``inversion/inversion/abstract.py`` (``_log_det_symmetric_from``, 924-968 at 681938ae) and are -told apart only by their caller — ``log_det_curvature_reg_matrix_term`` (1051) or -``log_det_regularization_matrix_term`` (1130). So a :class:`StageRule` may declare +``inversion/inversion/abstract.py`` (``_log_det_symmetric_from``, 951-995 at 5f8a8dee) and are +told apart only by their caller — ``log_det_curvature_reg_matrix_term`` (1078) or +``log_det_regularization_matrix_term`` (1157). So a :class:`StageRule` may declare a ``requires`` frame that must also appear somewhere in the same stack. Fusions carry their constituents @@ -613,20 +613,21 @@ def satisfied_by(self, frames: Sequence[Frame]) -> bool: _LOGDET_HARNESS = "likelihood_breakdown/logdet_reuse_injection.py" #: The PyAutoArray ``main`` the ``abstract.py`` / ``inversion_util.py`` ranges -#: below were read from (re-anchored 2026-09-24, phase 4, #303). -LIBRARY_ANCHOR_REVISION = "PyAutoArray main 681938ae (2026-09-24)" +#: below were read from (re-anchored 2026-09-24, phase 4, #303; re-pinned +#: 2026-09-25 after PyAutoArray#571 moved everything below line 602). +LIBRARY_ANCHOR_REVISION = "PyAutoArray main 5f8a8dee (2026-09-25)" #: ``_log_det_symmetric_from`` — the shared body of both log determinants. -_ABSTRACT_LOG_DET_BODY = (924, 968) +_ABSTRACT_LOG_DET_BODY = (951, 995) #: ``log_det_curvature_reg_matrix_term`` (decorator to last line). -_ABSTRACT_LOG_DET_CURVATURE_CALLER = (970, 1051) +_ABSTRACT_LOG_DET_CURVATURE_CALLER = (997, 1078) #: ``log_det_regularization_matrix_term`` (decorator to last line). -_ABSTRACT_LOG_DET_REGULARIZATION_CALLER = (1071, 1132) +_ABSTRACT_LOG_DET_REGULARIZATION_CALLER = (1098, 1159) #: ``curvature_reg_matrix``'s single-line ``self._xp.add(F, H)``. _ABSTRACT_CURVATURE_ADD_LINE = 389 #: ``curvature_reg_matrix_reduced`` (the ``mapper_indices`` gathers). _ABSTRACT_REDUCED_GATHER = (392, 415) #: ``reconstruction``'s edge-zeroed branch: the two ``[ids_to_keep]`` subsets. -_ABSTRACT_EDGE_SUBSET = (671, 678) +_ABSTRACT_EDGE_SUBSET = (696, 703) #: Ordered rules. **Order is the contract**: a stack is walked innermost frame #: first, and at each frame the rules are tried in this order, so the earliest @@ -644,12 +645,15 @@ def satisfied_by(self, frames: Sequence[Frame]) -> bool: #: and the 2026-09-16 factor-reuse edits had moved every range below #: ``curvature_reg_matrix`` by 17-81 lines, so the log-det rules pointed into #: ``regularization_term`` and ``reconstruction`` started 51 lines early. +#: RE-PINNED 2026-09-25 against PyAutoArray ``main`` 5f8a8dee: #571 inserted +#: ``positive_only_preconditioning_used`` (abstract.py +25..+27 from line 603) +#: and the raw-forward PDIP branch (inversion_util.py Jacobi block +56). #: ``LIBRARY_ANCHOR_REVISION`` names that revision in the provenance. STAGE_MAP: tuple[StageRule, ...] = ( # --- the two log determinants: same lines, told apart by their caller ---- - # ``_log_det_symmetric_from`` 924-968; its callers - # ``log_det_curvature_reg_matrix_term`` 970-1051 and - # ``log_det_regularization_matrix_term`` 1071-1132. + # ``_log_det_symmetric_from`` 951-995; its callers + # ``log_det_curvature_reg_matrix_term`` 997-1078 and + # ``log_det_regularization_matrix_term`` 1098-1159. StageRule( "log_det_curvature_reg", _ARRAY + _INVERSION_ABSTRACT, @@ -681,26 +685,27 @@ def satisfied_by(self, frames: Sequence[Frame]) -> bool: # --- the F + lambda*H add, and the two [ids][:, ids] gathers ------------- StageRule("curvature_reg_add", _ARRAY + _INVERSION_ABSTRACT, (368, 389)), StageRule("curvature_reg_reduce_gather", _ARRAY + _INVERSION_ABSTRACT, (391, 415)), - # ``reconstruction`` spans 634-731. 671-678 is the edge-zeroed branch - # (``ids_to_keep is not None``): the two ``[ids_to_keep]`` subsets. 679-708 - # is the partial solve plus the scatter back to full shape; 710-725 is the + # ``reconstruction`` spans 659-758. 696-703 is the edge-zeroed branch + # (``ids_to_keep is not None``): the two ``[ids_to_keep]`` subsets. 704-734 + # is the partial solve plus the scatter back to full shape; 736-752 is the # else branch, which is what the Delaunay family runs (no edge zeroing). - # 679-793 runs on through ``reconstruction_reduced`` / ``_dict`` / + # 704-820 runs on through ``reconstruction_reduced`` / ``_dict`` / # ``source_quantity_dict_from``, as the 2026-09-16 map's 615-721 did. StageRule("edge_subset_gather", _ARRAY + _INVERSION_ABSTRACT, _ABSTRACT_EDGE_SUBSET), - StageRule("regularization_term", _ARRAY + _INVERSION_ABSTRACT, (858, 922)), - StageRule("mapped_reconstruction", _ARRAY + _INVERSION_ABSTRACT, (795, 857)), - StageRule("reconstruction_scatter", _ARRAY + _INVERSION_ABSTRACT, (634, 670)), - StageRule("reconstruction_scatter", _ARRAY + _INVERSION_ABSTRACT, (679, 793)), + StageRule("regularization_term", _ARRAY + _INVERSION_ABSTRACT, (885, 949)), + StageRule("mapped_reconstruction", _ARRAY + _INVERSION_ABSTRACT, (822, 884)), + StageRule("reconstruction_scatter", _ARRAY + _INVERSION_ABSTRACT, (659, 695)), + StageRule("reconstruction_scatter", _ARRAY + _INVERSION_ABSTRACT, (704, 820)), # --- the PDIP / active-set solve ---------------------------------------- - # ``inversion_util.py`` ranges (re-anchored 2026-09-24, 681938ae): 12-93 + # ``inversion_util.py`` ranges (re-anchored 2026-09-24, 681938ae; re-pinned + # 2026-09-25, 5f8a8dee, after #571): 12-93 # curvature diag/added/mirrored helpers, 96-148 curvature_matrix_via_ # mapping_matrix_from (F), 151-193 mapped_reconstructed_data_* (the mapped # reconstruction, NOT D), 196-248 reconstruction_positive_negative_from, # 251-288 _certified_positive_only_from (the library certified solve, #566; - # its nested ``pdip_fn`` 265-272 is the PDIP fallback), 291-593 + # its nested ``pdip_fn`` 265-272 is the PDIP fallback), 291-644 # reconstruction_positive_only_from, whose Jacobi preconditioning block is - # 433-464 (shared by BOTH solvers, so it is its own row). + # 489-516 (shared by BOTH solvers, so it is its own row). # The harness certified active set (``library_solver_injection``) rebinds the # library's positive-only entry point, so its kernels trace to this repo, not # to PyAutoArray. Without these rules they walk outward to the @@ -715,20 +720,20 @@ def satisfied_by(self, frames: Sequence[Frame]) -> bool: StageRule( "certified_active_set_solve", _ARRAY + "inversion/inversion/inversion_util.py", (251, 288) ), - # 433-436 build D = 1/sqrt(diag M), Q_pc = D M D and q_pc = D q; 439-450 and - # 455-464 are the ``(...) * D`` that maps each solver's answer back. The + # 489-492 build D = 1/sqrt(diag M), Q_pc = D M D and q_pc = D q; 495-506 and + # 508-516 are the ``(...) * D`` that maps each solver's answer back. The # solver calls inside them have deeper innermost frames and resolve above. StageRule( "nnls_jacobi_preconditioning", _ARRAY + "inversion/inversion/inversion_util.py", - (433, 450), + (489, 506), ), StageRule( "nnls_jacobi_preconditioning", _ARRAY + "inversion/inversion/inversion_util.py", - (455, 464), + (508, 516), ), - StageRule("pdip_solve", _ARRAY + "inversion/inversion/inversion_util.py", (291, 593)), + StageRule("pdip_solve", _ARRAY + "inversion/inversion/inversion_util.py", (291, 644)), StageRule( "mapped_reconstruction", _ARRAY + "inversion/inversion/inversion_util.py", (151, 193) ), @@ -1509,7 +1514,7 @@ def hlo_census(index: Mapping[str, Instruction]) -> dict: earlier JSON stays comparable key-for-key. The ranges actually matched are the re-anchored ``_ABSTRACT_*`` constants (``LIBRARY_ANCHOR_REVISION``): the add is now line 389, the reduced gathers 392-415, the edge subset - 671-678. + 696-703. """ def _hits(predicate) -> list[Instruction]: diff --git a/scripts/misc/test/test_fixed_light_cell.py b/scripts/misc/test/test_fixed_light_cell.py index c50e43210..35eec997a 100644 --- a/scripts/misc/test/test_fixed_light_cell.py +++ b/scripts/misc/test/test_fixed_light_cell.py @@ -87,6 +87,7 @@ def _submits() -> list[_Path]: and "_fixed_light_vmap_" not in p.name and "_fixed_light_psf_cube_" not in p.name and "_fixed_light_certified_policy_" not in p.name + and "_fixed_light_certified_lane_rate_" not in p.name and "_fixed_light_logdet_reuse_" not in p.name ) diff --git a/scripts/misc/test/test_fixed_light_certified_lane_rate_submit.py b/scripts/misc/test/test_fixed_light_certified_lane_rate_submit.py new file mode 100644 index 000000000..88f6c6bf3 --- /dev/null +++ b/scripts/misc/test/test_fixed_light_certified_lane_rate_submit.py @@ -0,0 +1,226 @@ +"""Static checks for the phase-C1 ``fixed_light_certified_lane_rate`` A100 submit (#304). + +**No imaging, no JAX, no GPU** — these read the submit script and the two cells as text. + +The submit runs two cells: ``nautilus_batch_capture.py`` (tasks 0-3, the pix1 / pix2 +captures on both meshes) and ``fixed_light_trace.py --lanes captured`` (tasks 4-37, +the rate and timing replays). +It is a sixth ``fixed_light`` submit family with its own file-name prefix, excluded +from ``test_fixed_light_cell.py``'s glob for the reason that file states; this file +is the family's half of that bargain, mirroring +``test_fixed_light_certified_policy_submit.py``. + +What a wrong submit would look like, and what catches it: + +- the arm tables and ``--array`` disagree — ``test__array_range_matches_the_arms``; +- a row of the verdict table is missing — ``test__the_array_is_the_pre_registered_task_table``; +- the replay starts before (or without) the capture — + ``test__replay_refuses_a_missing_capture_and_documents_the_two_step``; +- the capture drifts from the production Nautilus settings — + ``test__capture_runs_the_production_nautilus_settings``; +- the gate is not written down before submission, or is drawn tighter than 1e-9 — + ``test__the_gate_is_pre_registered_and_no_tighter_than_1e_9``. +""" + +from __future__ import annotations + +import itertools +import re +import subprocess +import sys as _sys +from pathlib import Path as _Path + + +def _profiling_root() -> _Path: + for _p in _Path(__file__).resolve().parents: + if (_p / "ruff.toml").exists(): + return _p + raise RuntimeError("autolens_profiling root (ruff.toml) not found") + + +ROOT = _profiling_root() +SUBMIT = ( + ROOT + / "hpc" + / "batch_gpu" + / "submit_breakdown_imaging_fixed_light_certified_lane_rate_a100_hst_fp64" +) +CELL = ROOT / "scripts" / "imaging" / "likelihood_breakdown" / "fixed_light_trace.py" +CAPTURE = ROOT / "scripts" / "imaging" / "likelihood_breakdown" / "nautilus_batch_capture.py" +PIPELINE_FULL_MODEL = ( + ROOT.parent / "euclid_strong_lens_modeling_pipeline" / "scripts" / "full_model.py" +) + +_misc = ROOT / "scripts" / "misc" +if str(_misc) not in _sys.path: + _sys.path.insert(0, str(_misc)) + +CONFIG_NAME = "hpc_a100_fp64_fixed_light_trace" +TABLES = ("MESHES", "STAGES", "PASSES", "BATCHES", "SOLVERS", "FALLBACKS") + + +def _arm_table(text: str, name: str) -> list[str]: + match = re.search(rf"^{name}=\((.*?)\)", text, re.M) + return match.group(1).split() if match else [] + + +def _executable(text: str) -> str: + return "\n".join("" if ln.lstrip().startswith("#") else ln for ln in text.splitlines()) + + +def _arms() -> list[tuple[str, ...]]: + text = SUBMIT.read_text() + return list(zip(*(_arm_table(text, name) for name in TABLES))) + + +def test__submit_is_valid_executable_bash(): + result = subprocess.run(["bash", "-n", str(SUBMIT)], capture_output=True, text=True) + assert result.returncode == 0, result.stderr + assert SUBMIT.stat().st_mode & 0o111, "the submit is not executable" + + +def test__the_family_is_excluded_from_the_phase_0_glob(): + other = (ROOT / "scripts" / "misc" / "test" / "test_fixed_light_cell.py").read_text() + assert '"_fixed_light_certified_lane_rate_" not in p.name' in other + + +def test__array_range_matches_the_arms(): + text = SUBMIT.read_text() + lengths = {name: len(_arm_table(text, name)) for name in TABLES} + assert len(set(lengths.values())) == 1, lengths + array = re.search(r"^#SBATCH --array=(\d+)-(\d+)", text, re.M) + assert array and int(array.group(1)) == 0 + assert int(array.group(2)) == lengths["MESHES"] - 1 + assert "FATAL: no (mesh, stage, pass, batch, solver, fallback) arm" in text + + +def test__the_array_is_the_pre_registered_task_table(): + """4 captures, 4 rate passes, the pix1 B grid, then pix2 at B=20.""" + both = [ + (mesh, stage) + for stage, mesh in itertools.product(("pix1", "pix2"), ("delaunay", "rectangular")) + ] + expected = [(mesh, stage, "capture", "20", "-", "-") for mesh, stage in both] + expected += [(mesh, stage, "rate", "20", "certified", "off") for mesh, stage in both] + rows = [("pdip", "on"), ("certified", "on"), ("certified", "off")] + expected += [ + (mesh, "pix1", "time", str(batch), solver, fallback) + for mesh, batch, (solver, fallback) in itertools.product( + ("delaunay", "rectangular"), (16, 20, 50, 100), rows + ) + ] + expected += [ + (mesh, "pix2", "time", "20", solver, fallback) + for mesh, (solver, fallback) in itertools.product(("delaunay", "rectangular"), rows) + ] + assert _arms() == expected + + +def test__replay_refuses_a_missing_capture_and_documents_the_two_step(): + text = SUBMIT.read_text() + executable = _executable(text) + assert 'if [ "$PASS" != "capture" ] && [ ! -f "$NPZ" ]; then' in executable + assert "sbatch --parsable --array=0-3" in text + assert "--array=4-37 --dependency=afterok:${CAP}" in text + assert ( + 'NPZ="$AP_ROOT/results/breakdown/imaging/nautilus_batches_${MESH}_${STAGE}.npz"' + in executable + ) + + +def test__capture_runs_the_production_nautilus_settings(): + executable = _executable(SUBMIT.read_text()) + for flag in ("--stage $STAGE", "--n-batch 20", "--n-like-max 40000", "--capture-seconds"): + assert flag in executable, f"the capture does not pass {flag}" + assert "--n-live" not in executable, "n_live must come from the stage's production value" + capture = CAPTURE.read_text() + assert 'PRODUCTION_N_LIVE = {"pix1": 150, "pix2": 75}' in capture + assert "PRODUCTION_N_BATCH = 20" in capture + assert "use_jax_vmap=True" in capture + if PIPELINE_FULL_MODEL.exists(): + # The production stage the capture mirrors still uses these settings. + pipeline = PIPELINE_FULL_MODEL.read_text() + source_pix_1 = pipeline.split("def source_pix_1(", 1)[1].split("\ndef ", 1)[0] + assert "n_batch: int = 20" in source_pix_1 + assert "n_live=150" in source_pix_1 + source_pix_2 = pipeline.split("def source_pix_2(", 1)[1].split("\ndef ", 1)[0] + assert "n_batch: int = 20" in source_pix_2 + assert "n_live=75" in source_pix_2 + # Both stages free the AdaptSplit regularization the capture frees. + assert "regularization_init=al.reg.AdaptSplit" in pipeline + assert "regularization=al.reg.AdaptSplit" in pipeline + + +def test__replay_runs_the_library_mode_on_captured_lanes(): + executable = _executable(SUBMIT.read_text()) + for flag in ( + "--lanes captured", + '--batches "$NPZ"', + "--captured-pass rate", + "--captured-pass time", + "--solver-source library", + "--solver $SOLVER", + "--arms both", + ): + assert flag in executable, f"the submit does not pass {flag}" + assert f"CONFIG_NAME={CONFIG_NAME}" in executable + assert "--certified-budget" not in executable, ( + "the rows must run the library's resolved budget, the value production takes" + ) + + +def test__submit_guards_against_a_stale_checkout_and_mirror(): + executable = _executable(SUBMIT.read_text()) + assert 'grep -q -- "--captured-pass"' in executable + assert "predates #304" in executable + assert "11b93476" in executable, "no guard that the mirror carries PyAutoArray#567" + assert "PYAUTO_HPC_BASE=/mnt/ral/jnightin/PyAuto" in SUBMIT.read_text() + + +def test__submit_preserves_footer_when_the_numerical_gate_fails(): + executable = _executable(SUBMIT.read_text()) + python_pos = executable.index("python3 -u") + census_pos = executable.index("AUTOTUNE_ENTRIES count=") + assert "SAVED_ERR_TRAP=$(trap -p ERR)" in executable[:python_pos] + assert "trap - ERR" in executable[:python_pos] + assert 'eval "$SAVED_ERR_TRAP"' in executable[python_pos:census_pos] + assert "CELL_EXIT=$CELL_RC" in executable[census_pos:] + + +def test__submit_starts_from_a_fresh_compilation_cache(): + text = SUBMIT.read_text() + assert 'rm -rf "$JAX_COMPILATION_CACHE_DIR"' in text + assert 'rm -rf "$TRACE_DIR"' in text + assert "SLURM_ARRAY_TASK_ID" in text.split("JAX_COMPILATION_CACHE_DIR=", 1)[1].splitlines()[0] + + +def test__the_gate_is_pre_registered_and_no_tighter_than_1e_9(): + submit = SUBMIT.read_text() + cell = CELL.read_text() + assert "PRE-REGISTERED" in submit + assert "hst_gpu_residue_phase3_psf_2026_09.md" in submit + assert "GATED at 1e-9 relative: the jit(vmap) arm vs the jit(vmap) library PDIP" in submit + assert "GATED at 1e-9 relative: the scalar jit arm vs the scalar jit library PDIP" in submit + assert "LANE_RTOL = 1.0e-9" in cell + + +def test__the_cell_declares_the_phase_c1_flags(): + cell = CELL.read_text() + for flag in ("--batches", "--batch-sample", "--captured-pass"): + assert f'"{flag}"' in cell + assert '"identical", "captured"' in cell + for key in ("captured_pass", "by_nautilus_phase", "by_call_half", "vs_capture_pdip"): + assert f'"{key}"' in cell + assert "_captured_rate_lib{LIBRARY_SOLVER}" in cell + + +def test__submit_carries_a_wall_basis_block_that_the_gate_accepts(): + from wall.check_submits import check_text, parse_basis_rows + + text = SUBMIT.read_text() + rows = parse_basis_rows(text) + assert {row["cell"] for row in rows} == { + "imaging/nautilus_batch_capture/hst", + "imaging/fixed_light_trace/hst", + } + assert not check_text(text), check_text(text) diff --git a/scripts/misc/test/test_nautilus_batches.py b/scripts/misc/test/test_nautilus_batches.py new file mode 100644 index 000000000..15268e285 --- /dev/null +++ b/scripts/misc/test/test_nautilus_batches.py @@ -0,0 +1,160 @@ +"""The captured-batch file format and lane rules (``likelihood_breakdown.nautilus_batches``). + +Pure numpy: no JAX, no Nautilus run. The recorder's patching is exercised by the +capture cell itself; these pin the rules the replay's numbers depend on. +""" + +from __future__ import annotations + +import sys as _sys +from pathlib import Path as _Path + +import numpy as np +import pytest + + +def _profiling_root() -> _Path: + for _p in _Path(__file__).resolve().parents: + if (_p / "ruff.toml").exists(): + return _p + raise RuntimeError("autolens_profiling root (ruff.toml) not found") + + +_misc = _profiling_root() / "scripts" / "misc" +if str(_misc) not in _sys.path: + _sys.path.insert(0, str(_misc)) + +from likelihood_breakdown import nautilus_batches as nb # noqa: E402 + + +class _Sampler: + def __init__(self, n_bounds, explored, n_like): + self.bounds = [object()] * n_bounds + self.explored = explored + self.n_like = n_like + + +def _recorder(sizes, states): + rec = nb.BatchRecorder() + rng = np.random.default_rng(0) + for size, (n_bounds, explored) in zip(sizes, states): + rec.note_sampler_state(_Sampler(n_bounds, explored, rec.n_lanes)) + params = rng.normal(size=(size, 7)) + rec.record(params, params.sum(axis=1), wall_s=0.1) + return rec + + +def test__phase_of(): + assert nb.phase_of(1, False) == "prior" + assert nb.phase_of(0, False) == "prior" + assert nb.phase_of(3, False) == "exploration" + assert nb.phase_of(3, True) == "sampling" + + +def test__save_load_round_trip(tmp_path): + rec = _recorder([4, 4, 3], [(1, False), (2, False), (2, True)]) + summary = nb.save(tmp_path / "b.npz", rec, {"parameter_paths": list("abcdefg")}) + assert summary["n_calls"] == 3 and summary["n_lanes"] == 11 + assert summary["call_sizes"] == {"3": 1, "4": 2} + data = nb.load(tmp_path / "b.npz") + assert data["parameters"].shape == (11, 7) + assert data["call_index"].tolist() == [0] * 4 + [1] * 4 + [2] * 3 + assert data["lane_in_call"].tolist() == [0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2] + assert data["call_phase"].tolist() == ["prior", "exploration", "sampling"] + assert data["call_n_like_before"].tolist() == [0, 4, 8] + assert data["meta"]["parameter_paths"] == list("abcdefg") + np.testing.assert_allclose(data["figure_of_merit"], data["parameters"].sum(axis=1)) + + +def test__record_refuses_a_batch_axis_mismatch(): + rec = nb.BatchRecorder() + with pytest.raises(AssertionError): + rec.record(np.zeros((4, 7)), np.zeros(3), wall_s=0.0) + + +def test__save_refuses_an_empty_capture(tmp_path): + with pytest.raises(ValueError): + nb.save(tmp_path / "b.npz", nb.BatchRecorder(), {}) + + +def test__sample_calls_spans_the_run(): + assert nb.sample_calls(10, None).tolist() == list(range(10)) + assert nb.sample_calls(10, 50).tolist() == list(range(10)) + sampled = nb.sample_calls(101, 5).tolist() + assert sampled == [0, 25, 50, 75, 100] + + +def test__timed_window_starts_at_the_first_post_prior_call(): + call_index = np.repeat(np.arange(5), 4) + call_phase = np.array(["prior", "prior", "exploration", "exploration", "sampling"]) + window = nb.timed_window(call_index, call_phase, 4) + assert window.tolist() == [8, 9, 10, 11] # exactly call 2 + window = nb.timed_window(call_index, call_phase, 6) + assert call_index[window].tolist() == [2, 2, 2, 2, 3, 3] + # Not enough post-prior lanes: the window slides back, never repeats a lane. + window = nb.timed_window(call_index, call_phase, 16) + assert window.tolist() == list(range(4, 20)) + with pytest.raises(ValueError): + nb.timed_window(call_index, call_phase, 21) + + +def test__chunked_pads_the_last_chunk_and_reports_real_rows(): + chunks = nb.chunked(np.arange(7), 3) + assert [c.tolist() for c, _ in chunks] == [[0, 1, 2], [3, 4, 5], [6, 6, 6]] + assert [n for _, n in chunks] == [3, 3, 1] + + +def test__rate_summary_and_groups(): + certified = [True, True, False, True] + passes = [0, 3, 16, 2] + summary = nb.rate_summary(certified, passes, budget=16) + assert summary["n_uncertified"] == 1 + assert summary["uncertified_rate"] == 0.25 + assert summary["max_passes"] == 16 + assert summary["n_at_budget"] == 1 + assert summary["passes_histogram"] == {"0": 1, "2": 1, "3": 1, "16": 1} + groups = nb.grouped_rate_summaries(certified, passes, 16, ["a", "a", "b", "b"]) + assert groups["a"]["n_uncertified"] == 0 and groups["b"]["n_uncertified"] == 1 + + +def test__early_late_split_is_the_median_replayed_call(): + labels = nb.early_late(np.array([0, 1, 2, 3]), np.array([0, 1, 2, 3])) + assert labels.tolist() == ["early", "early", "late", "late"] + + +@pytest.mark.parametrize( + "stage, mesh, n_free, n_reg", + [ + ("pix1", "delaunay", 10, 3), + ("pix1", "rectangular", 10, 3), + ("pix2", "delaunay", 3, 3), + ("pix2", "rectangular", 3, 3), + ], +) +def test__capture_model_frees_the_regularization_at_production_priors(stage, mesh, n_free, n_reg): + al = pytest.importorskip("autolens") + mesh_obj = ( + al.mesh.RectangularBilinearAdaptImage(shape=(10, 10)) + if mesh == "rectangular" + else al.mesh.Delaunay(pixels=100, zeroed_pixels=0) + ) + lens = al.Galaxy(redshift=0.5, mass=al.mp.Isothermal(), shear=al.mp.ExternalShear()) + model = nb.capture_model_from(stage, mesh=mesh, mesh_obj=mesh_obj, lens_fixed=lens) + paths = [".".join(p) for p in model.paths] + assert model.total_free_parameters == n_free + reg = nb.regularization_paths(paths) + assert len(reg) == n_reg + expected_cls = "Adapt" if mesh == "rectangular" else "AdaptSplit" + assert nb.regularization_class_for(mesh, stage) == expected_cls + assert type(model.galaxies.source.pixelization.regularization).__name__ == "Model" + assert model.galaxies.source.pixelization.regularization.cls.__name__ == expected_cls + for path in reg: + attr = path.rsplit(".", 1)[1] + kind, lower, upper = nb.REGULARIZATION_PRIORS[expected_cls][attr] + prior = model.galaxies.source.pixelization.regularization + prior = getattr(prior, attr) + assert type(prior).__name__ == f"{kind}Prior" + assert (prior.lower_limit, prior.upper_limit) == (lower, upper) + # The same builder twice gives the same order: the replay's assertion holds. + again = nb.capture_model_from(stage, mesh=mesh, mesh_obj=mesh_obj, lens_fixed=lens) + assert [".".join(p) for p in again.paths] == paths diff --git a/scripts/misc/test/test_xla_attribution.py b/scripts/misc/test/test_xla_attribution.py index 59d5efd60..e2a939720 100644 --- a/scripts/misc/test/test_xla_attribution.py +++ b/scripts/misc/test/test_xla_attribution.py @@ -135,7 +135,7 @@ def _encode_stack_frame_index( (2, 5, 586, 21), # 5 convolver.py:586 the shared rfft2 (4, 6, 136, 20), # 6 imaging/abstract.py:136 operated_mapping_matrix_list (3, 7, 295, 12), # 7 delaunay.py:295 the visibility walk while_loop - (1, 8, 675, 40), # 8 abstract.py:675 the edge-subset gather + (1, 8, 700, 40), # 8 abstract.py:700 the edge-subset gather (2, 9, 660, 15), # 9 convolver.py:660 _convolved_image_over_sampled_jax_from (3, 10, 659, 18), # 10 delaunay.py:659 pixel_weights_delaunay_from ] @@ -456,7 +456,7 @@ def test_the_library_certified_solver_is_the_certified_row_not_pdip(): assert xa.stage_for_frames((caller,)) == "certified_active_set_solve" fallback = xa.Frame(file=_UTIL, function="pdip_fn", line=266) assert xa.stage_for_frames((fallback, caller)) == "pdip_solve" - jacobi = xa.Frame(file=_UTIL, function="reconstruction_positive_only_from", line=435) + jacobi = xa.Frame(file=_UTIL, function="reconstruction_positive_only_from", line=491) assert xa.stage_for_frames((jacobi,)) == "nnls_jacobi_preconditioning"