diff --git a/README.md b/README.md index 4c1efafad..259e21b22 100644 --- a/README.md +++ b/README.md @@ -254,6 +254,16 @@ separately per likelihood × transform. Standing conclusions: not baselines. The reported September 4.9× / 2.4× gain from dropping the throwaway `jnp.unique` is still a hypothesis for phase 2. Findings: [`results/notes/point_source_cpu_campaign.md`](./results/notes/point_source_cpu_campaign.md). +- **Point-source CPU speed-up, phase 2 (2026-09)** — removing the throwaway JAX-path `jnp.unique` + vertex dedup (static `size=3N` made it save zero deflections while sorting 3N fp64 rows every + refinement step; PyAutoArray #568). Interleaved in-process A/B, RAL job 350582 (`ral`, EPYC 7763, + 8 CPUs): simple solved 24.00 → 5.38 ms (**4.47×**, 90 % CI 4.37–4.57), vmap-4 2.63×, two-source + cluster 155 → 78 ms (**1.98×**); HLO sorts 15 → 7 / 25 → 12, compile 11–21 % faster. Log-likelihoods, + positions and gradients bit-identical on every instance. GPU regression check (RAL job 350587, + A100, 20 × 20 calls, branch PyAutoArray imported): no regression, nodedup 1.71–2.05× faster + (simple solved 1.70 → 0.84 ms, cluster 4.21 → 2.46 ms), every gate bit-identical. Accepted; the post-fix call is + deflection-dominated (70 % of FLOPs), so phase 3 is the static initial-lattice precompute. + Findings: [`results/notes/point_source_cpu_campaign.md`](./results/notes/point_source_cpu_campaign.md). ## How to read this repo diff --git a/hpc/batch_cpu/submit_breakdown_point_source_vertex_dedup_ab_ral_cpu_fp64 b/hpc/batch_cpu/submit_breakdown_point_source_vertex_dedup_ab_ral_cpu_fp64 new file mode 100755 index 000000000..709fbc678 --- /dev/null +++ b/hpc/batch_cpu/submit_breakdown_point_source_vertex_dedup_ab_ral_cpu_fp64 @@ -0,0 +1,156 @@ +#!/bin/bash -l +# +# 2026-09 point-source CPU speed-up campaign, phase 2: the vertex-dedup A/B +# (PyAutoArray#568). +# +# WHAT THIS MEASURES. One interleaved, in-process A/B of +# CoordinateArrayTriangles._vertices_and_indices inside the production +# point-source likelihoods, on a quiet RAL CPU node: +# +# scripts/point_source/likelihood_breakdown/vertex_dedup_ab.py +# control = the PRE-fix jnp.unique(size=3N) body, carried verbatim in the +# cell (copied from PyAutoArray main 11b93476); +# nodedup = the POST-fix body (flat 3N vertex table + arange index map); +# library = no substitution -- whatever the shared install runs. The cell +# self-labels it (library_matches = control | nodedup | neither) +# from the HLO sort count of each route's compiled program. +# Rows: simple (phase-1 galaxy-scale model, 100x100 @ 0.2", precision 0.001") +# solved + plain + vmap-4 of solved; cluster (2 dPIE + 10 scaling dPIE + NFW, +# two sources, 200x200 @ 0.7", precision 0.01") solved + plain. Each route is +# compiled once from a fresh closure after jax.clear_caches(), warmed, then +# the three routes are timed round-robin (20 rounds x 5 calls, the route order +# rotating each round) on the same fixed-seed parameter-vector stream. +# Correctness gates (log L ==, solved positions array_equal, simple-solved +# grad allclose 1e-10 and vmap parity) are RECORDED, never asserted. +# +# The shared PyAutoArray on RAL stays on main: the cell injects both variants +# itself, so the control/nodedup comparison does not depend on which library is +# installed. Only the `library` route (and its library_matches label) does -- +# before the #568 fix is merged and synced it should read `control`. +# +# Writes results/breakdown/point_source/vertex_dedup_ab_hpc_ral_cpu_fp64.{json,png}. +# The laptop witness is vertex_dedup_ab_local_cpu_fp64 beside it; compare +# ratios within a host, never a bare millisecond across hosts. +# +# THREADS. OMP/MKL/OPENBLAS are pinned to 1 -- that pins the BLAS family only. +# The JAX CPU backend sizes its own intra-op (Eigen) thread pool from the CPUs +# the process can see, i.e. the 8 CPUs of --cpus-per-task=8, so these are +# 8-CPU JAX numbers, the same shape as the laptop's 8-core rows. The JSON +# records thread_environment, sched_affinity (len(os.sched_getaffinity(0))), +# os_cpu_count and loadavg at start and end. +# +# XLA_FLAGS are set IDENTICAL to the phase-1 submit and the laptop witness +# (device.xla_flags). activate.sh sets no XLA_FLAGS / JAX_* of its own. The two +# --xla_gpu_* flags are inert on CPU and are kept only so the recorded string +# matches byte for byte; constant_folding is disabled so a constant-foldable +# prefix cannot be pre-evaluated at compile time. + +# THE PARTITION THIS DECLARES, AND THE FALLBACK. +# +# `ral` (the CPU partition) is the partition meant for CPU work, so it is what +# the #SBATCH block below asks for. It was saturated for days in 2026-09-15's +# fixed-light work, so check before you submit: +# +# sinfo -p ral,gpu -N -o "%N %t %C %O" +# +# If `ral` would queue, the fallback is the gpu partition used CPUs-only, with +# NO --gres so both A100s stay free for the GPU cells: +# +# sbatch --partition=gpu --cpus-per-task=8 +# +# `imp` is NOT an option: euclid-imp-compute-* do not mount /mnt/ral, so the +# repo, the venv and activate.sh are absent and the job dies in 0 s. +# +# DECLARE THE PARTITION THAT ACTUALLY RAN. Whichever partition the job landed +# on (the provenance block prints the hostname; `sacct -j -o Partition` +# confirms it) is what the campaign note must report, and if it was the gpu +# fallback this header should be edited to say so -- a script that declares a +# partition its numbers never used is a trap, not a record. + +# WALL-BASIS: +# Laptop (WSL2, 8 cores, loaded, 2026-09-23): the committed +# vertex_dedup_ab_local_cpu_fp64 witness run of this exact cell and protocol +# (20 rounds x 5 calls, simple + cluster) took 939 s wall end to end +# (the JSON's wall_s), almost all of it the 18 route compiles. The phase-1 +# RAL rows compiled ~2x faster than the laptop; the 2.0 headroom and the +# 3-hour request cover a slower or busier node regardless. +# cell: point_source/vertex_dedup_ab/simple device: cpu precision: fp64 +# source: measured-wall wall: 939 ref: laptop-point_source-vertex_dedup_ab_local_cpu_fp64 headroom: 2.0 + +#SBATCH -J vertex_dedup_ab +#SBATCH --partition=ral +#SBATCH --ntasks=1 +#SBATCH --cpus-per-task=8 +#SBATCH --mem=32gb +#SBATCH --time=3:00:00 +#SBATCH -o output/output.%A.out +#SBATCH -e error/error.%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_cpu/../..) +# rather than hardcoding /mnt/ral/jnightin/autolens_profiling, so it runs from +# a worktree of the feature branch. The -o/-e paths above are relative, so +# sbatch from inside hpc/batch_cpu/. +export AP_ROOT="$(cd "${SLURM_SUBMIT_DIR:-$(dirname "$0")}/../.." && pwd)" +echo "AP_ROOT=$AP_ROOT" +source $AP_ROOT/activate.sh + +# BLAS family only (see THREADS above); JAX's CPU pool sizes from the 8 CPUs. +export OMP_NUM_THREADS=1 +export MKL_NUM_THREADS=1 +export OPENBLAS_NUM_THREADS=1 +export NPROC=${SLURM_CPUS_PER_TASK:-8} +export JAX_PLATFORMS=cpu +export JAX_ENABLE_X64=1 +export XLA_FLAGS="--xla_disable_hlo_passes=constant_folding --xla_gpu_autotune_level=0 --xla_gpu_enable_triton_gemm=false" +# Per-job caches: output/ is gitignored and ${SLURM_JOB_ID} keeps concurrent +# jobs on the same node from fighting over one cache directory. +export NUMBA_CACHE_DIR=$AP_ROOT/output/numba_cache_${SLURM_JOB_ID:-local} +export MPLCONFIGDIR=/tmp/matplotlib_${SLURM_JOB_ID:-local} +mkdir -p "$NUMBA_CACHE_DIR" "$MPLCONFIGDIR" +# Fresh JAX compile cache per job, as the phase-1 submit does: a seeded +# persistent cache changes compile times and kernels (results/notes/xla_autotune_triton_gemm.md), +# and RAL $HOME is node-local, so an inherited cache would not be reproducible. +# (Within the job, routes lower to different HLO, so the persistent cache cannot +# serve one route's executable to another.) +export JAX_COMPILATION_CACHE_DIR="$AP_ROOT/output/jax_cache/vertex_dedup_ab_${SLURM_JOB_ID:-local}" +rm -rf "$JAX_COMPILATION_CACHE_DIR" && mkdir -p "$JAX_COMPILATION_CACHE_DIR" +echo "JAX_COMPILATION_CACHE_DIR=$JAX_COMPILATION_CACHE_DIR (fresh)" + +echo "==========================================" +date +hostname +lscpu | grep 'Model name' || true +echo "partition: ${SLURM_JOB_PARTITION:-unset}" +echo "cpus-per-task: ${SLURM_CPUS_PER_TASK:-unset}" +echo "sched_affinity: $(python3 -c 'import os; print(len(os.sched_getaffinity(0)))')" +echo "loadavg: $(cat /proc/loadavg)" +echo "Cell: point_source/likelihood_breakdown/vertex_dedup_ab" +echo "Precision: fp64 (JAX_ENABLE_X64=$JAX_ENABLE_X64)" +echo "Backend: JAX_PLATFORMS=$JAX_PLATFORMS" +echo "Thread env: OMP=$OMP_NUM_THREADS MKL=$MKL_NUM_THREADS OPENBLAS=$OPENBLAS_NUM_THREADS NPROC=$NPROC" +echo "XLA_FLAGS: $XLA_FLAGS" + +echo "=== source revisions (shared install, untouched) ===" +for r in PyAutoNerves PyAutoFit PyAutoArray PyAutoGalaxy PyAutoLens; do + printf '%-14s %s\n' "$r" "$(git -C /mnt/ral/jnightin/PyAuto/$r rev-parse HEAD 2>&1)" +done +echo "AP_ROOT rev: $(git -C $AP_ROOT rev-parse HEAD 2>&1)" +echo "AP_ROOT branch: $(git -C $AP_ROOT rev-parse --abbrev-ref HEAD 2>&1)" + +cd $AP_ROOT + +echo "=== import provenance ===" +python3 -c "import autoarray, autolens, autofit, autogalaxy, jax; print('autoarray.__file__ =', autoarray.__file__); print('autoarray.__version__ =', autoarray.__version__); print('autolens.__file__ =', autolens.__file__); print('autolens.__version__ =', autolens.__version__); print('autogalaxy.__file__ =', autogalaxy.__file__); print('autofit.__file__ =', autofit.__file__); print('jax.__version__ =', jax.__version__); print('jax devices =', jax.devices())" + +echo "==========================================" +echo "vertex-dedup A/B: control vs nodedup vs library (simple + cluster, full protocol)" +date +echo "loadavg: $(cat /proc/loadavg)" +python3 -u scripts/point_source/likelihood_breakdown/vertex_dedup_ab.py --config-name hpc_ral_cpu_fp64 + +echo "==========================================" +echo "loadavg: $(cat /proc/loadavg)" +echo "Finished." +date diff --git a/hpc/batch_gpu/submit_breakdown_point_source_vertex_dedup_ab_a100_fp64 b/hpc/batch_gpu/submit_breakdown_point_source_vertex_dedup_ab_a100_fp64 new file mode 100755 index 000000000..39b504f55 --- /dev/null +++ b/hpc/batch_gpu/submit_breakdown_point_source_vertex_dedup_ab_a100_fp64 @@ -0,0 +1,145 @@ +#!/bin/bash -l +# +# 2026-09 point-source CPU speed-up campaign, phase 2: the GPU regression check +# for the vertex-dedup change (PyAutoArray#568). +# +# WHAT THIS MEASURES. The same interleaved, in-process A/B as the RAL CPU +# submit (hpc/batch_cpu/submit_breakdown_point_source_vertex_dedup_ab_ral_cpu_fp64), +# on ONE RAL A100: +# +# scripts/point_source/likelihood_breakdown/vertex_dedup_ab.py +# control = the PRE-fix jnp.unique(size=3N) body, carried verbatim in the +# cell (PyAutoArray main 11b93476); +# nodedup = the POST-fix body (flat 3N vertex table + arange index map); +# library = no substitution -- the PyAutoArray that is imported. HERE that +# is the FEATURE BRANCH clone (see LIBRARY below), so `library` +# is the shipped fix itself and must self-label +# library_matches = nodedup. +# Rows: simple solved + plain + vmap-4 of solved; cluster solved + plain. +# Protocol: 20 rounds x 20 calls (the #568 plan's >= 20 calls per round; the +# CPU run used 5), route order rotated each round, fixed-seed stream. +# Correctness gates (log L bit-identical, solved positions array_equal, +# simple-solved grad allclose 1e-10 + finite, vmap-vs-scalar parity) are +# recorded in the JSON's gate_summary. +# +# PRECISION. fp64 only. The PointSolver has no Settings mixed-precision switch +# (image_plane.py records the same), so there is no "mp" leg to run. +# +# LIBRARY. The shared /mnt/ral/jnightin/PyAuto mirror is PyAutoArray main +# (pre-fix). control/nodedup do not depend on it (the cell injects both), but +# to exercise the real branch code on GPU this submit PREPENDS a git clone of +# PyAutoArray feature/point-source-cpu-p2 to PYTHONPATH. Prepare it once: +# +# git clone --shared /mnt/ral/jnightin/PyAuto/PyAutoArray $AA_BRANCH_SRC +# git -C $AA_BRANCH_SRC fetch https://github.com/PyAutoLabs/PyAutoArray.git \ +# feature/point-source-cpu-p2 && git -C $AA_BRANCH_SRC checkout --detach FETCH_HEAD +# +# The job refuses to run if autoarray is not imported from that clone, and the +# JSON's source_revisions.PyAutoArray records its HEAD. +# +# BACKEND. JAX_PLATFORMS=cuda (NOT "cuda,cpu": a list can silently fall back to +# CPU) and JAX_PLATFORM_NAME=cuda; the job asserts jax.default_backend()=="gpu" +# before running the cell. XLA_FLAGS are byte-identical to the CPU submit, so on +# this backend --xla_gpu_autotune_level=0 and triton_gemm=false are LIVE (they +# were inert on CPU); they apply identically to every route. + +# WALL-BASIS: +# RAL CPU job 350582 (EPYC 7763, 8 CPUs, 2026-09-23) ran this cell and +# protocol at 20 rounds x 5 calls in 628 s wall (the JSON's wall_s), almost all +# of it the 18 route compiles. 20 calls per round adds 4x the timed calls +# (sub-ms to tens of ms each on GPU) and GPU compiles of the ~70k-line cluster +# HLO may be slower than CPU; 3 h covers both with wide margin. +# cell: point_source/vertex_dedup_ab/simple device: gpu precision: fp64 +# source: measured-wall wall: 628 ref: ral-cpu-job-350582-vertex_dedup_ab_hpc_ral_cpu_fp64 headroom: 4.0 + +#SBATCH -J vertex_dedup_ab_gpu +#SBATCH --partition=gpu +#SBATCH --gres=gpu:1 +#SBATCH --ntasks=1 +#SBATCH --cpus-per-task=8 +#SBATCH --mem=32gb +#SBATCH --time=3:00:00 +#SBATCH -o output/output.%A.out +#SBATCH -e error/error.%A.err +#SBATCH --mail-type=END,FAIL +#SBATCH --mail-user=james.w.nightingale@durham.ac.uk + +# Repo root from where this was submitted (hpc/batch_gpu/../..), so it runs +# from a worktree of the feature branch. sbatch from inside hpc/batch_gpu/. +export AP_ROOT="$(cd "${SLURM_SUBMIT_DIR:-$(dirname "$0")}/../.." && pwd)" +echo "AP_ROOT=$AP_ROOT" +source $AP_ROOT/activate.sh + +export AA_BRANCH_SRC="${AA_BRANCH_SRC:-/mnt/ral/jnightin/autolens_profiling_wt/PyAutoArray_point-source-cpu-p2}" +if [ ! -f "$AA_BRANCH_SRC/autoarray/__init__.py" ]; then + echo "FATAL: AA_BRANCH_SRC=$AA_BRANCH_SRC is not a PyAutoArray checkout (see LIBRARY in the header)" >&2 + exit 2 +fi +export PYTHONPATH="$AA_BRANCH_SRC:$PYTHONPATH" + +export OMP_NUM_THREADS=1 +export MKL_NUM_THREADS=1 +export OPENBLAS_NUM_THREADS=1 +export NPROC=${SLURM_CPUS_PER_TASK:-8} +export JAX_PLATFORM_NAME=cuda +export JAX_PLATFORMS=cuda +export XLA_PYTHON_CLIENT_PREALLOCATE=false +export JAX_ENABLE_X64=1 +export XLA_FLAGS="--xla_disable_hlo_passes=constant_folding --xla_gpu_autotune_level=0 --xla_gpu_enable_triton_gemm=false" +export NUMBA_CACHE_DIR=$AP_ROOT/output/numba_cache_${SLURM_JOB_ID:-local} +export MPLCONFIGDIR=/tmp/matplotlib_${SLURM_JOB_ID:-local} +mkdir -p "$NUMBA_CACHE_DIR" "$MPLCONFIGDIR" +# Fresh per-job JAX compile cache (see the CPU submit). Note `library` lowers to +# the nodedup program here, so it may hit nodedup's cache entry: its compile_s +# is not comparable, as control's was on CPU. +export JAX_COMPILATION_CACHE_DIR="$AP_ROOT/output/jax_cache/vertex_dedup_ab_gpu_${SLURM_JOB_ID:-local}" +rm -rf "$JAX_COMPILATION_CACHE_DIR" && mkdir -p "$JAX_COMPILATION_CACHE_DIR" +echo "JAX_COMPILATION_CACHE_DIR=$JAX_COMPILATION_CACHE_DIR (fresh)" + +echo "==========================================" +date +hostname +lscpu | grep 'Model name' || true +nvidia-smi --query-gpu=name,driver_version,memory.total,utilization.gpu --format=csv || true +echo "partition: ${SLURM_JOB_PARTITION:-unset}" +echo "gpus: ${CUDA_VISIBLE_DEVICES:-unset}" +echo "cpus-per-task: ${SLURM_CPUS_PER_TASK:-unset}" +echo "loadavg: $(cat /proc/loadavg)" +echo "Cell: point_source/likelihood_breakdown/vertex_dedup_ab" +echo "Precision: fp64 (JAX_ENABLE_X64=$JAX_ENABLE_X64)" +echo "Backend: JAX_PLATFORMS=$JAX_PLATFORMS JAX_PLATFORM_NAME=$JAX_PLATFORM_NAME" +echo "XLA_FLAGS: $XLA_FLAGS" + +echo "=== source revisions ===" +for r in PyAutoNerves PyAutoFit PyAutoArray PyAutoGalaxy PyAutoLens; do + printf '%-14s %s\n' "$r (shared)" "$(git -C /mnt/ral/jnightin/PyAuto/$r rev-parse HEAD 2>&1)" +done +echo "PyAutoArray (branch clone, IMPORTED): $(git -C $AA_BRANCH_SRC rev-parse HEAD 2>&1)" +echo "AP_ROOT rev: $(git -C $AP_ROOT rev-parse HEAD 2>&1)" +echo "AP_ROOT branch: $(git -C $AP_ROOT rev-parse --abbrev-ref HEAD 2>&1)" + +cd $AP_ROOT + +echo "=== import provenance + backend assertion ===" +python3 -c " +import os, autoarray, autolens, autofit, autogalaxy, jax +print('autoarray.__file__ =', autoarray.__file__) +print('autolens.__file__ =', autolens.__file__) +print('autofit.__file__ =', autofit.__file__) +print('jax.__version__ =', jax.__version__) +print('jax devices =', jax.devices()) +print('jax default backend =', jax.default_backend()) +assert jax.default_backend() == 'gpu', 'JAX is not on the GPU' +assert os.path.realpath(autoarray.__file__).startswith(os.path.realpath(os.environ['AA_BRANCH_SRC'])), 'autoarray not imported from the branch clone' +print('ASSERT OK: GPU backend, autoarray from the branch clone') +" + +echo "==========================================" +echo "vertex-dedup A/B on A100: control vs nodedup vs library (simple + cluster, 20 x 20)" +date +python3 -u scripts/point_source/likelihood_breakdown/vertex_dedup_ab.py --config-name hpc_ral_a100_fp64 --rounds 20 --calls 20 + +echo "==========================================" +nvidia-smi --query-gpu=name,memory.used --format=csv || true +echo "Finished." +date diff --git a/results/breakdown/point_source/vertex_dedup_ab_hpc_ral_a100_fp64.json b/results/breakdown/point_source/vertex_dedup_ab_hpc_ral_a100_fp64.json new file mode 100644 index 000000000..25509164c --- /dev/null +++ b/results/breakdown/point_source/vertex_dedup_ab_hpc_ral_a100_fp64.json @@ -0,0 +1,10087 @@ +{ + "cell": "vertex_dedup_ab", + "issue": "PyAutoLabs/PyAutoArray#568", + "config_name": "hpc_ral_a100_fp64", + "quick": false, + "models": [ + "simple", + "cluster" + ], + "library_versions": { + "autolens": "2026.8.17.1", + "autoarray": "2026.8.17.1", + "autofit": "2026.8.17.1" + }, + "package_versions": { + "jax": "0.10.2", + "jaxlib": "0.10.2" + }, + "source_revisions": { + "autolens_profiling": "f8836b345bd66889e3113758eefe56b4baabe8ec", + "PyAutoNerves": "1fa613aa8d89a79613009fb66f5b4e2d21deb57a", + "PyAutoFit": "a736840127be7a3c21e15a5c945e94d8f1082983", + "PyAutoArray": "25894d10a7497d1efa6bc140032dba2f49d1795f", + "PyAutoGalaxy": "70a61e26cd715cefe7012a38285698091246a8a4", + "PyAutoLens": "2aaa1c1a8bb4a5923edf30a18451fcea330a6bd4" + }, + "autoarray_imported_from": "/mnt/ral/jnightin/autolens_profiling_wt/PyAutoArray_point-source-cpu-p2", + "target": "autoarray.structures.triangles.coordinate_array.CoordinateArrayTriangles._vertices_and_indices", + "control_source": { + "repo": "PyAutoArray", + "sha": "11b93476", + "path": "autoarray/structures/triangles/coordinate_array.py", + "body": "def _control_vertices_and_indices(self):\n \"\"\"PRE-fix ``_vertices_and_indices`` \u2014 verbatim from PyAutoArray ``11b93476``.\"\"\"\n import jax.numpy as jnp\n\n flat_triangles = self.triangles.reshape(-1, 2)\n vertices, inverse_indices = jnp.unique(\n flat_triangles,\n axis=0,\n return_inverse=True,\n size=3 * self.coordinates.shape[0],\n equal_nan=True,\n fill_value=jnp.nan,\n )\n\n nan_mask = jnp.isnan(vertices).any(axis=1)\n inverse_indices = jnp.where(nan_mask[inverse_indices], -1, inverse_indices)\n\n indices = inverse_indices.reshape(-1, 3)\n return vertices, indices\n", + "bytecode_sha256": "8abe1a83fb00257c" + }, + "nodedup_body": "def _nodedup_vertices_and_indices(self):\n \"\"\"POST-fix ``_vertices_and_indices``: the flat 3N table and an ``arange`` index map.\"\"\"\n import jax.numpy as jnp\n\n flat = self.triangles.reshape(-1, 2)\n indices = jnp.arange(flat.shape[0]).reshape(-1, 3)\n return flat, indices\n", + "nodedup_bytecode_sha256": "b71cfb285a8d13c2", + "body_provenance_captured": "import time (see _body_provenance)", + "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": "1", + "cpu_count": 124, + "jax_compilation_cache_dir": "/vertex_dedup_ab_gpu_350587", + "autotune_cache_entries_at_start": 0, + "cache_fresh": true, + "nvidia_smi": "NVIDIA A100 80GB PCIe, 559 MiB, 81920 MiB" + }, + "jax_devices": [ + "cuda:0" + ], + "machine": { + "cpu_model": "AMD EPYC 7702 64-Core Processor", + "cpu_count_os": 124, + "nproc": 1, + "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": "928298232 kB", + "kernel": "5.14.0-687.39.1.el9_8.x86_64", + "platform": "Linux-5.14.0-687.39.1.el9_8.x86_64-x86_64-with-glibc2.34", + "python": "3.12.4", + "jax_thread_env": { + "NPROC": "8" + }, + "blas_thread_env": { + "OMP_NUM_THREADS": "1", + "OPENBLAS_NUM_THREADS": "1", + "MKL_NUM_THREADS": "1", + "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" + }, + "thread_environment": { + "NPROC": "8", + "OMP_NUM_THREADS": "1", + "OPENBLAS_NUM_THREADS": "1", + "MKL_NUM_THREADS": "1" + }, + "sched_affinity": 8, + "os_cpu_count": 124, + "xla_flags": "--xla_disable_hlo_passes=constant_folding --xla_gpu_autotune_level=0 --xla_gpu_enable_triton_gemm=false", + "jax_platforms": "cuda", + "jax_enable_x64": true, + "loadavg_start": [ + 0.44, + 0.11, + 0.04 + ], + "loadavg_end": [ + 1.55, + 1.57, + 0.95 + ], + "protocol": { + "routes": [ + "control", + "nodedup", + "library" + ], + "n_rounds": 20, + "n_calls_per_round": 20, + "n_warm": 3, + "n_stream": 16, + "n_gate_instances": 3, + "vmap_batch": 4, + "instance_seed": 568, + "instance_stream": "entry 0 = prior medians; rest = vector_from_unit_vector(U(0.25,0.75))", + "argument": "physical parameter vector; instance_from_vector(xp=jnp) inside the trace", + "cache_trap_guard": "fresh closure + fresh solver/analyses per route; jax.clear_caches()", + "bootstrap": { + "samples": 2000, + "seed": 12345, + "interval": "90%" + }, + "cluster_gates": "log-likelihood and positions only (no cluster grad/vmap)", + "pytrees": "autofit.jax.register_model(model) for every model before any trace" + }, + "free_parameters": { + "simple_solved": 5, + "simple_plain": 8, + "cluster_solved": 13, + "cluster_plain": 17 + }, + "model_configuration": { + "simple": { + "dataset": "dataset/point_source/simple/point_dataset_positions_only.json", + "solver_grid_shape": [ + 100, + 100 + ], + "solver_grid_pixel_scale": 0.2, + "solver_pixel_scale_precision": 0.001, + "magnification_threshold": 0.1, + "likelihoods": { + "solved": "FitPositionsImagePairAllSolved", + "plain": "FitPositionsImagePairAll" + } + }, + "cluster": { + "dataset": "dataset/cluster/simple/point_datasets.csv", + "n_systems": 2, + "n_mass_profiles": 13, + "solver_grid_shape": [ + 200, + 200 + ], + "solver_grid_pixel_scale": 0.7, + "solver_pixel_scale_precision": 0.01, + "source_centres_from": "back-traced observed-image centroids (cluster cell step 1)", + "likelihoods": { + "solved": "FitPositionsImagePairRepeatSolved (summed over systems)", + "plain": "FitPositionsImagePairRepeat (summed over systems)" + } + } + }, + "library_label": { + "per_row": { + "simple_solved": { + "hlo_sort_count": { + "control": 15, + "nodedup": 7, + "library": 7 + }, + "stablehlo_sort_count": { + "control": 3, + "nodedup": 1, + "library": 1 + }, + "library_matches": "nodedup", + "library_hlo_identical_to": [ + "nodedup" + ] + }, + "simple_solved_vmap4": { + "hlo_sort_count": { + "control": 15, + "nodedup": 7, + "library": 7 + }, + "stablehlo_sort_count": { + "control": 3, + "nodedup": 1, + "library": 1 + }, + "library_matches": "nodedup", + "library_hlo_identical_to": [ + "nodedup" + ] + }, + "simple_plain": { + "hlo_sort_count": { + "control": 15, + "nodedup": 7, + "library": 7 + }, + "stablehlo_sort_count": { + "control": 3, + "nodedup": 1, + "library": 1 + }, + "library_matches": "nodedup", + "library_hlo_identical_to": [ + "nodedup" + ] + }, + "cluster_solved": { + "hlo_sort_count": { + "control": 25, + "nodedup": 12, + "library": 12 + }, + "stablehlo_sort_count": { + "control": 3, + "nodedup": 1, + "library": 1 + }, + "library_matches": "nodedup", + "library_hlo_identical_to": [ + "nodedup" + ] + }, + "cluster_plain": { + "hlo_sort_count": { + "control": 25, + "nodedup": 12, + "library": 12 + }, + "stablehlo_sort_count": { + "control": 3, + "nodedup": 1, + "library": 1 + }, + "library_matches": "nodedup", + "library_hlo_identical_to": [ + "nodedup" + ] + } + }, + "library_matches": "nodedup" + }, + "library_matches": "nodedup", + "bit_identical": true, + "gate_summary": { + "simple_solved.log_likelihood.control_vs_nodedup": { + "pass": true, + "max_abs_delta": 0.0, + "max_rel_delta": 0.0 + }, + "simple_solved.log_likelihood.control_vs_library": { + "pass": true, + "max_abs_delta": 0.0, + "max_rel_delta": 0.0 + }, + "simple_solved_vmap4.log_likelihood.control_vs_nodedup": { + "pass": true, + "max_abs_delta": 0.0, + "max_rel_delta": 0.0 + }, + "simple_solved_vmap4.log_likelihood.control_vs_library": { + "pass": true, + "max_abs_delta": 0.0, + "max_rel_delta": 0.0 + }, + "simple_plain.log_likelihood.control_vs_nodedup": { + "pass": true, + "max_abs_delta": 0.0, + "max_rel_delta": 0.0 + }, + "simple_plain.log_likelihood.control_vs_library": { + "pass": true, + "max_abs_delta": 0.0, + "max_rel_delta": 0.0 + }, + "cluster_solved.log_likelihood.control_vs_nodedup": { + "pass": true, + "max_abs_delta": 0.0, + "max_rel_delta": 0.0 + }, + "cluster_solved.log_likelihood.control_vs_library": { + "pass": true, + "max_abs_delta": 0.0, + "max_rel_delta": 0.0 + }, + "cluster_plain.log_likelihood.control_vs_nodedup": { + "pass": true, + "max_abs_delta": 0.0, + "max_rel_delta": 0.0 + }, + "cluster_plain.log_likelihood.control_vs_library": { + "pass": true, + "max_abs_delta": 0.0, + "max_rel_delta": 0.0 + }, + "simple_solved_positions.control_vs_nodedup": { + "pass": true, + "max_abs_delta": 0.0 + }, + "simple_solved_positions.control_vs_library": { + "pass": true, + "max_abs_delta": 0.0 + }, + "simple_solved_grad.control_vs_nodedup": { + "pass": true, + "bit_identical": true, + "max_abs_delta": 0.0, + "max_rel_delta": 0.0 + }, + "simple_solved_grad.control_vs_library": { + "pass": true, + "bit_identical": true, + "max_abs_delta": 0.0, + "max_rel_delta": 0.0 + }, + "simple_solved_vmap4.vmap_vs_scalar.control": { + "pass": true, + "bit_identical": true, + "max_abs_delta": 0.0 + }, + "simple_solved_vmap4.vmap_vs_scalar.nodedup": { + "pass": true, + "bit_identical": true, + "max_abs_delta": 0.0 + }, + "simple_solved_vmap4.vmap_vs_scalar.library": { + "pass": true, + "bit_identical": true, + "max_abs_delta": 0.0 + }, + "cluster_solved_positions.control_vs_nodedup": { + "pass": true, + "max_abs_delta": 0.0 + }, + "cluster_solved_positions.control_vs_library": { + "pass": true, + "max_abs_delta": 0.0 + } + }, + "rows": { + "simple_solved": { + "label": "simple_solved", + "batch": null, + "n_rounds": 20, + "n_calls_per_round": 20, + "n_warm": 3, + "route_order": "round-robin, start rotated each round", + "per_call_ms": { + "control": [ + 1.8514469265937805, + 1.7804191447794437, + 1.7864187248051167, + 1.8219579942524433, + 1.8367478623986244, + 1.8132580444216728, + 1.7756680026650429, + 1.7799781635403633, + 1.8476280383765697, + 1.8010679632425308, + 1.7800088971853256, + 1.791507937014103, + 1.7932192422449589, + 1.8110782839357853, + 1.7936388030648232, + 1.753218937665224, + 1.747368834912777, + 1.7843982204794884, + 1.7971880733966827, + 1.7704982310533524, + 2.2279727272689342, + 1.7200680449604988, + 1.7144293524324894, + 1.7090789042413235, + 1.7118589021265507, + 1.7083389684557915, + 1.6985698603093624, + 1.694168895483017, + 1.692960038781166, + 1.709240023046732, + 1.709850039333105, + 1.6958587802946568, + 1.6996399499475956, + 1.702168956398964, + 1.7004599794745445, + 1.7031398601830006, + 1.7037601210176945, + 1.7066285945475101, + 1.6977502964437008, + 1.699178945273161, + 1.7546368762850761, + 1.764007844030857, + 1.714108046144247, + 1.7097690142691135, + 1.7243986949324608, + 1.7008399590849876, + 1.6999198123812675, + 1.7066900618374348, + 1.6985898837447166, + 1.7007100395858288, + 1.7011100426316261, + 1.7033587209880352, + 1.6974098980426788, + 1.7131590284407139, + 1.6993400640785694, + 1.7033587209880352, + 1.7003901302814484, + 1.6989889554679394, + 1.7573894001543522, + 1.756239216774702, + 1.6725598834455013, + 1.6851592808961868, + 1.6776197589933872, + 1.6775098629295826, + 1.6748299822211266, + 1.6729198396205902, + 1.7000301741063595, + 1.7114686779677868, + 1.7137699760496616, + 1.7000390216708183, + 1.7372691072523594, + 1.7394288443028927, + 1.7367289401590824, + 1.7051491886377335, + 1.7048600129783154, + 1.704028807580471, + 1.6970690339803696, + 1.7049298621714115, + 1.699408981949091, + 1.697469037026167, + 1.7168992199003696, + 1.6989288851618767, + 1.6957703046500683, + 1.6950489953160286, + 1.6938187181949615, + 1.6956501640379429, + 1.6955803148448467, + 1.6958690248429775, + 1.6984697431325912, + 1.6968999989330769, + 1.6943099908530712, + 1.696030143648386, + 1.69305969029665, + 1.69431883841753, + 1.694429200142622, + 1.7203688621520996, + 1.7448891885578632, + 1.750569324940443, + 1.7284988425672054, + 1.7489590682089329, + 1.6878796741366386, + 1.6919500194489956, + 1.6926289536058903, + 1.6907299868762493, + 1.6864798963069916, + 1.7074891366064548, + 1.7065401189029217, + 1.7047696746885777, + 1.7239791341125965, + 1.6983202658593655, + 1.707639079540968, + 1.6961400397121906, + 1.6955891624093056, + 1.6992287710309029, + 1.6989102587103844, + 1.6986289992928505, + 1.6909101977944374, + 1.7038392834365368, + 1.7001498490571976, + 1.69774005189538, + 1.7396691255271435, + 1.7026402056217194, + 1.694700215011835, + 1.7037796787917614, + 1.7007696442306042, + 1.7062891274690628, + 1.7012995667755604, + 1.7047300934791565, + 1.703748945146799, + 1.7056399956345558, + 1.7024790868163109, + 1.7026602290570736, + 1.6934988088905811, + 1.6972492448985577, + 1.6973400488495827, + 1.7022788524627686, + 1.7017200589179993, + 1.6949102282524109, + 1.6984189860522747, + 1.6969600692391396, + 1.6974089667201042, + 1.6890494152903557, + 1.6779289580881596, + 1.6818386502563953, + 1.6825180500745773, + 1.6749287024140358, + 1.684639137238264, + 1.670838799327612, + 1.6919979825615883, + 1.689189113676548, + 1.6791382804512978, + 1.6935388557612896, + 1.6798288561403751, + 1.6750483773648739, + 1.6723787412047386, + 1.6952292062342167, + 1.697239000350237, + 1.6968087293207645, + 1.7046085558831692, + 1.7012199386954308, + 1.6632797196507454, + 1.6755498945713043, + 1.6695302911102772, + 1.6737999394536018, + 1.6675898805260658, + 1.6748798079788685, + 1.6777901910245419, + 1.6762800514698029, + 1.6988092102110386, + 1.6999002546072006, + 1.700070220977068, + 1.6964790411293507, + 1.702548936009407, + 1.6964389942586422, + 1.693699974566698, + 1.6971388831734657, + 1.7009503208100796, + 1.701320055872202, + 1.7050993628799915, + 1.7104102298617363, + 1.7075389623641968, + 1.7029102891683578, + 1.6972189769148827, + 1.7000092193484306, + 1.706660259515047, + 1.7049992457032204, + 1.705380156636238, + 1.7087487503886223, + 1.7147487960755825, + 1.697929110378027, + 1.701799686998129, + 1.6978890635073185, + 1.69669883325696, + 1.6952697187662125, + 1.6942089423537254, + 1.7041303217411041, + 1.7021102830767632, + 1.6925092786550522, + 1.6965800896286964, + 1.6984599642455578, + 1.6969582065939903, + 1.6679586842656136, + 1.6709091141819954, + 1.6672187484800816, + 1.6673789359629154, + 1.6690492630004883, + 1.6721086576581001, + 1.6824188642203808, + 1.6781389713287354, + 1.6629588790237904, + 1.661451067775488, + 1.6700699925422668, + 1.6649500466883183, + 1.6631600446999073, + 1.6716700047254562, + 1.6630501486361027, + 1.6729999333620071, + 1.6806889325380325, + 1.6845199279487133, + 1.686879899352789, + 1.6815299168229103, + 1.681949943304062, + 1.6803201287984848, + 1.679929904639721, + 1.686709001660347, + 1.6729803755879402, + 1.6887797974050045, + 1.6953288577497005, + 1.695989165455103, + 1.7076400108635426, + 1.6974699683487415, + 1.7790687270462513, + 1.6856100410223007, + 1.6868598759174347, + 1.6803997568786144, + 1.6789697110652924, + 1.6777501441538334, + 1.6768700443208218, + 1.681529451161623, + 1.7083198763430119, + 1.686010044068098, + 1.6950489953160286, + 1.6951300203800201, + 1.6933702863752842, + 1.6858801245689392, + 1.686139963567257, + 1.6898796893656254, + 1.680249348282814, + 1.6880887560546398, + 1.6874992288649082, + 1.6834591515362263, + 1.6846777871251106, + 1.691548153758049, + 1.6850992105901241, + 1.6891080886125565, + 1.6902079805731773, + 1.69310811907053, + 1.6920682974159718, + 1.7013680189847946, + 1.6925190575420856, + 1.7174500972032547, + 1.7016599886119366, + 1.6931099817156792, + 1.688309945166111, + 1.6900203190743923, + 1.6836789436638355, + 1.69373769313097, + 1.6870582476258278, + 1.6627190634608269, + 1.6690688207745552, + 1.6685491427779198, + 1.6783089376986027, + 1.7086579464375973, + 3.4937672317028046, + 1.797687727957964, + 1.7435187473893166, + 1.7367778345942497, + 1.7341980710625648, + 1.7563281580805779, + 1.7327680252492428, + 1.676460262387991, + 1.6840100288391113, + 1.691920217126608, + 1.685979776084423, + 1.683490350842476, + 1.6769389621913433, + 1.6956301406025887, + 1.698970329016447, + 1.695448998361826, + 1.6877385787665844, + 1.6930191777646542, + 1.7149890772998333, + 1.7015491612255573, + 1.700409222394228, + 1.6740676946938038, + 1.6715992242097855, + 1.6853781417012215, + 1.6981177031993866, + 1.6758390702307224, + 1.6998592764139175, + 1.6833697445690632, + 1.6860999166965485, + 1.691840123385191, + 1.6820398159325123, + 1.6810698434710503, + 1.6808593645691872, + 1.7592390067875385, + 1.679839100688696, + 1.6791797243058681, + 1.699579879641533, + 1.6827299259603024, + 1.6910098493099213, + 1.7003295943140984, + 1.680589746683836, + 1.6845399513840675, + 1.672539860010147, + 1.6796202398836613, + 1.6787699423730373, + 1.681789755821228, + 1.7023500986397266, + 1.7122882418334484, + 1.697308849543333, + 1.6901488415896893, + 1.6904580406844616, + 1.6859378665685654, + 1.6873679123818874, + 1.6637789085507393, + 1.663960050791502, + 1.6672201454639435, + 1.6695098020136356, + 1.6676010563969612, + 1.6628596931695938, + 1.6616899520158768, + 1.6712597571313381, + 1.672541256994009, + 1.6802400350570679, + 1.6691600903868675, + 1.6745002940297127, + 1.674829050898552, + 1.6883299686014652, + 1.6792500391602516, + 1.6727400943636894, + 1.669599674642086, + 1.6723498702049255, + 1.669350080192089, + 1.670120283961296, + 1.6713901422917843, + 1.684579998254776, + 1.6792803071439266, + 1.6695503145456314, + 1.6708900220692158, + 1.669580116868019, + 1.6734199598431587, + 1.6737901605665684, + 1.6712788492441177, + 1.674158964306116, + 1.667299773544073, + 1.682950183749199, + 1.6883197240531445, + 1.677749678492546, + 1.6860389150679111, + 1.6852892003953457, + 1.6807089559733868, + 1.6802391037344933, + 1.6757287085056305, + 1.7069089226424694, + 1.7020287923514843, + 1.7043990083038807, + 1.69327761977911, + 1.6940180212259293, + 1.7029889859259129, + 1.7003589309751987, + 1.6808491200208664, + 1.6882792115211487, + 1.6930392012000084, + 1.684409100562334, + 1.6919788904488087, + 1.719208899885416, + 1.7117899842560291, + 1.7143189907073975, + 1.6920804046094418, + 1.674520317465067, + 1.6693202778697014, + 1.6727698966860771, + 1.6759103164076805, + 1.67797040194273, + 1.6838503070175648, + 1.674099825322628, + 1.6794693656265736, + 1.6911192797124386, + 1.6908389516174793, + 1.6911099664866924, + 1.6990001313388348, + 1.7047193832695484, + 1.700528897345066, + 1.698439009487629, + 1.6950499266386032, + 1.6911798156797886, + 1.6865902580320835, + 1.6861287876963615 + ], + "nodedup": [ + 0.9183892980217934, + 0.9192894212901592, + 0.8992389775812626, + 0.8764700032770634, + 0.892919022589922, + 0.8670799434185028, + 0.8885799907147884, + 0.8767391555011272, + 0.8754800073802471, + 0.8695889264345169, + 0.8718702010810375, + 0.8868789300322533, + 0.8747493848204613, + 0.8748997934162617, + 0.8970280177891254, + 0.8713393472135067, + 0.886780209839344, + 0.8638291619718075, + 0.8688997477293015, + 0.8719190955162048, + 0.8896593935787678, + 1.3450440019369125, + 0.9422888979315758, + 0.9228982962667942, + 0.9601479396224022, + 0.9080097079277039, + 0.9166980162262917, + 0.9020897559821606, + 0.9244089014828205, + 0.9169387631118298, + 0.9134188294410706, + 0.9039188735187054, + 0.9245681576430798, + 0.9079198352992535, + 0.901529099792242, + 0.9217597544193268, + 0.8988990448415279, + 0.9182780049741268, + 0.8937199600040913, + 0.8967788890004158, + 0.8969497866928577, + 0.8566388860344887, + 0.8571399375796318, + 0.854788813740015, + 0.8783498778939247, + 0.8685998618602753, + 0.8628792129456997, + 0.8606403134763241, + 0.8589900098741055, + 0.8525000885128975, + 0.8564391173422337, + 0.8454201743006706, + 0.8359807543456554, + 0.8393600583076477, + 0.8395202457904816, + 0.8320203050971031, + 0.8563189767301083, + 0.8414210751652718, + 0.8267685770988464, + 0.8373898454010487, + 0.8623301982879639, + 0.8573690429329872, + 0.8520199917256832, + 0.8545191958546638, + 0.8774190209805965, + 0.8628908544778824, + 0.8234302513301373, + 0.841749832034111, + 0.8296500891447067, + 0.830451026558876, + 0.8548786863684654, + 0.837668776512146, + 0.8403700776398182, + 0.833430327475071, + 0.8293809369206429, + 0.8307588286697865, + 0.831100158393383, + 0.8511198684573174, + 0.8421586826443672, + 0.8345711976289749, + 0.8178488351404667, + 0.8422001264989376, + 0.8495696820318699, + 0.8289488032460213, + 0.8183210156857967, + 0.8297301828861237, + 0.8224812336266041, + 0.8177203126251698, + 0.8269012905657291, + 0.8587101474404335, + 0.8459193632006645, + 0.8342904038727283, + 0.8235401473939419, + 0.8178809657692909, + 0.819929875433445, + 0.8256006985902786, + 0.8158995769917965, + 0.821160152554512, + 0.8401493541896343, + 0.8453191258013248, + 0.8789696730673313, + 0.8610589429736137, + 0.8761798962950706, + 0.8602989837527275, + 0.8571688085794449, + 0.8539510890841484, + 0.8592088706791401, + 0.8734599687159061, + 0.8635190315544605, + 0.859919935464859, + 0.8684899657964706, + 0.8559189736843109, + 0.8625499904155731, + 0.8806088007986546, + 0.8761491626501083, + 0.856960192322731, + 0.8555189706385136, + 0.8593997918069363, + 0.8759386837482452, + 0.8671688847243786, + 0.8613001555204391, + 0.8866190910339355, + 0.8662291802465916, + 0.8557001128792763, + 0.8510989136993885, + 0.8508102037012577, + 0.875519122928381, + 0.87008997797966, + 0.8586402982473373, + 0.8809692226350307, + 0.8530500344932079, + 0.8555697277188301, + 0.880110077559948, + 0.8561103604733944, + 0.83498889580369, + 0.8343011140823364, + 0.83590904250741, + 0.8319509215652943, + 0.8527790196239948, + 0.8357707411050797, + 0.829590018838644, + 0.8314400911331177, + 0.8324398659169674, + 0.8325707167387009, + 0.8650892414152622, + 0.837820116430521, + 0.8708792738616467, + 0.8475598879158497, + 0.8333399891853333, + 0.8348096162080765, + 0.8581099100410938, + 0.83933025598526, + 0.8330699056386948, + 0.8408897556364536, + 0.8312701247632504, + 0.8310801349580288, + 0.8600191213190556, + 0.8410611189901829, + 0.8528889156877995, + 0.8394899778068066, + 0.8919499814510345, + 0.9023980237543583, + 0.8803396485745907, + 0.8687288500368595, + 0.8553089573979378, + 0.8816900663077831, + 0.8552493527531624, + 0.877810176461935, + 0.8732788264751434, + 0.8556093089282513, + 0.8633998222649097, + 0.8594891987740993, + 0.8601201698184013, + 0.8859089575707912, + 0.8856100030243397, + 0.8746189996600151, + 0.8545597083866596, + 0.8604503236711025, + 0.8820588700473309, + 0.8708597160875797, + 0.8560302667319775, + 0.8920389227569103, + 0.8658901788294315, + 0.8540088310837746, + 0.8580498397350311, + 0.8621299639344215, + 0.8773691952228546, + 0.8588498458266258, + 0.8502686396241188, + 0.8868989534676075, + 0.8537699468433857, + 0.8734087459743023, + 0.8627111092209816, + 0.8470290340483189, + 0.8481689728796482, + 0.8497606031596661, + 0.8565094321966171, + 0.8488600142300129, + 0.8418592624366283, + 0.8355309255421162, + 0.8219410665333271, + 0.8449689485132694, + 0.8310298435389996, + 0.8216002024710178, + 0.8209198713302612, + 0.8286787196993828, + 0.8310289122164249, + 0.8271900005638599, + 0.8434997871518135, + 0.8443109691143036, + 0.8354890160262585, + 0.8241110481321812, + 0.8289390243589878, + 0.8233389817178249, + 0.8260402828454971, + 0.8218889124691486, + 0.8451309986412525, + 0.8500791154801846, + 0.8277911692857742, + 0.8188299834728241, + 0.8677798323333263, + 0.8759992197155952, + 0.8519492112100124, + 0.8543799631297588, + 0.8452390320599079, + 0.8538011461496353, + 0.8328389376401901, + 0.832471065223217, + 0.8202590979635715, + 0.8245492354035378, + 0.8212090469896793, + 0.8223690092563629, + 0.8232099935412407, + 0.8422289974987507, + 0.8330107666552067, + 0.8188290521502495, + 0.8200099691748619, + 0.8216598071157932, + 0.8279299363493919, + 0.8273608982563019, + 0.8746488019824028, + 0.8488497696816921, + 0.8562589064240456, + 0.8376403711736202, + 0.825089868158102, + 0.825521070510149, + 0.8276090957224369, + 0.8287890814244747, + 0.8370899595320225, + 0.8486500009894371, + 0.8491501212120056, + 0.8364901877939701, + 0.8378010243177414, + 0.8260593749582767, + 0.8276887238025665, + 0.8249087259173393, + 0.8289790712296963, + 0.8423700928688049, + 0.8481401018798351, + 0.8300100453197956, + 0.8254796266555786, + 0.8541601710021496, + 0.8402210660278797, + 0.8284291252493858, + 0.8307211101055145, + 0.8218097500503063, + 0.8259601891040802, + 0.8235806599259377, + 0.8404399268329144, + 0.8505298756062984, + 0.8370098657906055, + 0.8429298177361488, + 0.8290600962936878, + 0.8210898377001286, + 0.833089929074049, + 0.8313101716339588, + 0.8451100438833237, + 0.839918851852417, + 0.8411011658608913, + 0.8237389847636223, + 1.1784550733864307, + 0.8430401794612408, + 0.8414192125201225, + 0.835150945931673, + 0.8380087092518806, + 0.8346396498382092, + 0.8346713148057461, + 0.8586687035858631, + 0.8493200875818729, + 0.8366703987121582, + 0.8348100818693638, + 0.8381488732993603, + 0.8288896642625332, + 0.837419182062149, + 0.8282889612019062, + 0.8544502779841423, + 0.8604489266872406, + 0.8502509444952011, + 0.8315886370837688, + 0.8327499963343143, + 0.8502188138663769, + 0.8557802066206932, + 0.8569890633225441, + 0.8568302728235722, + 0.8521797135472298, + 0.8502588607370853, + 0.8434299379587173, + 0.8535790257155895, + 0.8345008827745914, + 0.8362201042473316, + 0.8270107209682465, + 0.823410227894783, + 0.8362689986824989, + 0.8471696637570858, + 0.8434387855231762, + 0.8344310335814953, + 0.8312901481986046, + 0.8309506811201572, + 0.825089868158102, + 0.8281311020255089, + 0.8658901788294315, + 0.8652391843497753, + 0.9541492909193039, + 0.832738820463419, + 0.8268388919532299, + 0.849009957164526, + 0.8539799600839615, + 0.8381796069443226, + 0.836959108710289, + 0.8341209031641483, + 0.8240300230681896, + 0.8215708658099174, + 0.8276300504803658, + 0.8482690900564194, + 0.8544200100004673, + 0.8331499993801117, + 0.8384501561522484, + 0.8293800055980682, + 0.8285008370876312, + 0.8236500434577465, + 0.8528400212526321, + 0.8285087533295155, + 0.8308109827339649, + 0.855869147926569, + 1.0908371768891811, + 0.8497699163854122, + 0.8248290978372097, + 0.8311313576996326, + 0.8266298100352287, + 0.8276998996734619, + 0.8330587297677994, + 0.8498090319335461, + 0.8397810161113739, + 0.8360599167644978, + 0.8304798975586891, + 0.8343998342752457, + 0.8304310031235218, + 0.8288901299238205, + 0.8269599638879299, + 0.8488991297781467, + 0.8470499888062477, + 0.8473293855786324, + 0.8329791016876698, + 0.8355798199772835, + 0.8255401626229286, + 0.8293907158076763, + 0.8267001248896122, + 0.8286098018288612, + 0.8398192003369331, + 0.8460390381515026, + 0.8396212942898273, + 0.828069169074297, + 0.8262703195214272, + 0.8275089785456657, + 0.8247899822890759, + 0.8299793116748333, + 0.8256402797996998, + 0.8481889963150024, + 0.8415002375841141, + 0.8459300734102726, + 0.827339943498373, + 0.8252211846411228, + 0.8251797407865524, + 0.821530818939209, + 0.8466802537441254, + 0.8348789997398853, + 0.8231210522353649, + 0.8306298404932022, + 0.8274703286588192, + 0.8276286534965038, + 0.8204011246562004, + 0.8321097120642662, + 0.8562086150050163, + 0.8404012769460678, + 0.8247401565313339, + 0.8258200250566006, + 0.8294600993394852, + 0.8257310837507248, + 0.8257497102022171, + 0.8247806690633297 + ], + "library": [ + 0.8716280572116375, + 0.8287010714411736, + 0.8254796266555786, + 0.8133011870086193, + 0.8110101334750652, + 0.8195908740162849, + 0.8171601220965385, + 0.8263899944722652, + 0.8230991661548615, + 0.8203098550438881, + 0.8366690017282963, + 0.8245292119681835, + 0.834289938211441, + 0.8135698735713959, + 0.8163200691342354, + 0.8215988054871559, + 0.8192309178411961, + 0.826789066195488, + 0.8272286504507065, + 0.8478099480271339, + 1.1267159134149551, + 0.882249791175127, + 0.8309599943459034, + 0.8297697640955448, + 0.8326401002705097, + 0.8303592912852764, + 0.8491501212120056, + 0.8352589793503284, + 0.8272300474345684, + 0.8385102264583111, + 0.8342298679053783, + 0.8553401567041874, + 0.8390191942453384, + 0.8347202092409134, + 0.8352100849151611, + 0.8334401063621044, + 0.831299927085638, + 0.8602687157690525, + 0.8417600765824318, + 0.8354587480425835, + 0.8306996896862984, + 0.8550886996090412, + 0.841009896248579, + 0.8449889719486237, + 0.8376613259315491, + 0.8301790803670883, + 0.8432311005890369, + 0.8528688922524452, + 0.8620591834187508, + 0.844860915094614, + 0.8347802795469761, + 0.8308207616209984, + 0.8287690579891205, + 0.8310410194098949, + 0.8485191501677036, + 0.8388301357626915, + 0.838941428810358, + 0.8339490741491318, + 0.8297511376440525, + 0.8325693197548389, + 0.8069803006947041, + 0.8060312829911709, + 0.8081700652837753, + 0.8039707317948341, + 0.8253799751400948, + 0.8113402873277664, + 0.8084410801529884, + 0.8013797923922539, + 0.8092001080513, + 0.8017690852284431, + 0.8010808378458023, + 0.8018896915018559, + 0.8234311826527119, + 0.8251890540122986, + 0.8107898756861687, + 0.7918612100183964, + 0.7901899516582489, + 0.8017811924219131, + 0.7991492748260498, + 0.7970212027430534, + 0.8010091260075569, + 0.8056885562837124, + 0.7901107892394066, + 0.7984200492501259, + 0.7953708991408348, + 0.80451974645257, + 0.799090601503849, + 0.7935501635074615, + 0.8222609758377075, + 0.8084503933787346, + 0.8125901222229004, + 0.7951110601425171, + 0.805519986897707, + 0.7996708154678345, + 0.8383891545236111, + 0.8375602774322033, + 0.8147689513862133, + 0.8059502579271793, + 0.8081509731709957, + 0.8073695935308933, + 0.8300188928842545, + 0.8374610915780067, + 0.8346289396286011, + 0.8285911753773689, + 0.8507990278303623, + 0.9246687404811382, + 0.8128499612212181, + 0.807689968496561, + 0.8139698766171932, + 0.8107097819447517, + 0.8157510310411453, + 0.8081798441708088, + 0.8322210051119328, + 0.8171200752258301, + 0.8246088400483131, + 0.8075009100139141, + 0.8124299347400665, + 0.8068396709859371, + 0.8089090697467327, + 0.8361199870705605, + 0.8368603885173798, + 0.8434890769422054, + 0.8297702297568321, + 0.8379798382520676, + 0.8198292925953865, + 0.8003809489309788, + 0.8096899837255478, + 0.80909114331007, + 0.8100001141428947, + 0.8153896778821945, + 0.8262894116342068, + 0.8197510614991188, + 0.8025285787880421, + 0.8026789873838425, + 0.8124806918203831, + 0.8066799491643906, + 0.8076312951743603, + 0.8061802946031094, + 0.8274312131106853, + 0.8223392069339752, + 0.801911111921072, + 0.8050901815295219, + 0.8071414195001125, + 0.8296696469187737, + 0.818250235170126, + 0.8249189704656601, + 0.8115898817777634, + 0.812311191111803, + 0.8068801835179329, + 0.8075907826423645, + 0.8334103040397167, + 0.812930054962635, + 0.811220146715641, + 0.8050492033362389, + 0.8166697807610035, + 0.8088499307632446, + 0.8063511922955513, + 0.8269501850008965, + 0.8352296426892281, + 0.817629974335432, + 0.8480390533804893, + 0.8295299485325813, + 0.8519389666616917, + 0.8416608907282352, + 0.8417489007115364, + 0.826369971036911, + 0.8219107985496521, + 0.8200500160455704, + 0.8215811103582382, + 0.8562891744077206, + 0.8336813189089298, + 0.8156690746545792, + 0.7970607839524746, + 0.8024307899177074, + 0.8030100725591183, + 0.8069709874689579, + 0.8005700074136257, + 0.805180985480547, + 0.8182991296052933, + 0.8075311779975891, + 0.8103400468826294, + 0.8004400879144669, + 0.8149901404976845, + 0.8595488034188747, + 0.8129212073981762, + 0.8090892806649208, + 0.7978999055922031, + 0.7979888468980789, + 0.8072401396930218, + 0.8053509518504143, + 0.8098399266600609, + 0.8048410527408123, + 0.8276300504803658, + 0.8102511055767536, + 0.8095200173556805, + 0.8104699663817883, + 0.8006300777196884, + 0.7981401868164539, + 0.7991609163582325, + 0.7955897599458694, + 0.8004400879144669, + 0.799200963228941, + 0.7976200431585312, + 0.7943008095026016, + 0.804469920694828, + 0.8238912560045719, + 0.8123391307890415, + 0.8086804300546646, + 0.8198888972401619, + 0.7957196794450283, + 0.8116788230836391, + 0.8012601174414158, + 0.7940712384879589, + 0.7973611354827881, + 0.7933410815894604, + 0.8173799142241478, + 0.808600801974535, + 0.8061700500547886, + 0.8108611218631268, + 0.7983902469277382, + 0.8077011443674564, + 0.8164402097463608, + 0.8053206838667393, + 0.8040387183427811, + 0.797799788415432, + 0.7952507585287094, + 0.7950798608362675, + 0.7938207127153873, + 0.8188202045857906, + 0.8232411928474903, + 0.8086999878287315, + 0.7964507676661015, + 0.7945899851620197, + 0.8011898025870323, + 0.793329905718565, + 0.7994696497917175, + 0.7987609133124352, + 0.7968703284859657, + 0.7973811589181423, + 0.8189487271010876, + 0.8151400834321976, + 0.960969366133213, + 0.7957196794450283, + 0.798520166426897, + 0.7955809123814106, + 0.819170381873846, + 0.8032112382352352, + 0.8037597872316837, + 0.8215908892452717, + 0.796319916844368, + 0.8015809580683708, + 0.8022100664675236, + 0.8066492155194283, + 0.808939803391695, + 0.837390311062336, + 0.8152700029313564, + 0.8045700378715992, + 0.8043008856475353, + 0.8097989484667778, + 0.8087297901511192, + 0.7973499596118927, + 0.8045597933232784, + 1.005128026008606, + 0.8235005661845207, + 0.9069675579667091, + 0.8027506992220879, + 0.9942869655787945, + 0.7964791730046272, + 0.794221181422472, + 0.8206190541386604, + 0.8187601342797279, + 0.8096098899841309, + 0.8034510537981987, + 0.8088098838925362, + 0.7963608950376511, + 0.804780051112175, + 0.798800028860569, + 0.7971697486937046, + 0.7895100861787796, + 0.7886011153459549, + 1.1391863226890564, + 0.8611399680376053, + 0.8531692437827587, + 0.8436697535216808, + 0.8428492583334446, + 0.8417791686952114, + 0.8372399024665356, + 0.866978894919157, + 0.850409734994173, + 0.8675591088831425, + 0.8415300399065018, + 0.8348990231752396, + 0.8051409386098385, + 0.802020076662302, + 0.8010398596525192, + 0.8014789782464504, + 0.8034599013626575, + 0.8241613395512104, + 0.8185990154743195, + 0.8074408397078514, + 0.8172900415956974, + 0.821670051664114, + 0.8261213079094887, + 0.8089202456176281, + 0.8192509412765503, + 0.7995599880814552, + 0.8027702569961548, + 0.8009700104594231, + 0.7944200187921524, + 0.8206511847674847, + 0.8083893917500973, + 0.8063795976340771, + 0.800310168415308, + 0.7980912923812866, + 0.7966798730194569, + 0.7958598434925079, + 0.7979301735758781, + 0.7993900217115879, + 0.7984600961208344, + 0.820960383862257, + 0.8211098611354828, + 0.8219610899686813, + 0.8119796402752399, + 0.798461027443409, + 0.7994300685822964, + 0.8044010028243065, + 0.7973699830472469, + 0.7955110631883144, + 0.7995287887752056, + 0.7986398413777351, + 0.8151009678840637, + 0.814520288258791, + 0.8044708520174026, + 0.8020191453397274, + 0.8204197511076927, + 0.8047297596931458, + 0.801481306552887, + 0.7956898771226406, + 0.796580221503973, + 0.7999502122402191, + 0.8075013756752014, + 0.8115200325846672, + 0.8080010302364826, + 0.8039888925850391, + 0.8050799369812012, + 0.8204099722206593, + 0.8267099037766457, + 0.8124513551592827, + 0.8084997534751892, + 0.8009499870240688, + 0.8075390942394733, + 0.802340917289257, + 0.7970202714204788, + 0.806150957942009, + 0.8022901602089405, + 0.8231401443481445, + 0.8370811119675636, + 0.8136788383126259, + 0.801451038569212, + 0.7993304170668125, + 0.8092899806797504, + 0.7991809397935867, + 0.7963697426021099, + 0.7959408685564995, + 0.8036796934902668, + 0.8188989013433456, + 0.8190288208425045, + 0.8139489218592644, + 0.7960908114910126, + 0.8165002800524235, + 0.7996009662747383, + 0.8014901541173458, + 0.7975511252880096, + 0.7987497374415398, + 0.7996312342584133, + 0.8108098991215229, + 0.8188900537788868, + 0.8096206001937389, + 0.806259922683239, + 0.8207010105252266, + 0.813039019703865, + 0.8184188045561314, + 0.797721091657877, + 0.8033798076212406, + 0.7969909347593784, + 0.8037900552153587, + 0.805131159722805, + 0.8074701763689518, + 0.8248300291597843, + 0.8157608099281788, + 0.8001001551747322, + 0.795271247625351, + 0.8056699298322201, + 0.8005909621715546, + 0.8008102886378765, + 0.796751119196415, + 0.7972796447575092, + 0.7989308796823025, + 0.8249301463365555, + 0.8124900050461292 + ] + }, + "warm_ms": { + "control": [ + 7.886864710599184, + 1.9658571109175682, + 1.772778108716011 + ], + "nodedup": [ + 2.6782569475471973, + 0.9587490931153297, + 0.9164176881313324 + ], + "library": [ + 1.0667280294001102, + 0.8983379229903221, + 0.8914102800190449 + ] + }, + "stats": { + "control": { + "n": 400, + "median_ms": 1.6949796117842197, + "p10_ms": 1.672325748950243, + "p90_ms": 1.732911029830575, + "min_ms": 1.661451067775488, + "max_ms": 3.4937672317028046, + "mean_ms": 1.7045107658486813 + }, + "nodedup": { + "n": 400, + "median_ms": 0.8432350587099791, + "p10_ms": 0.8249007631093264, + "p90_ms": 0.8817269466817379, + "min_ms": 0.8158995769917965, + "max_ms": 1.3450440019369125, + "mean_ms": 0.8517269906587899 + }, + "library": { + "n": 400, + "median_ms": 0.8096552919596434, + "p10_ms": 0.7970568258315325, + "p90_ms": 0.8389492053538561, + "min_ms": 0.7886011153459549, + "max_ms": 1.1391863226890564, + "mean_ms": 0.817810045555234 + } + }, + "ratio_control_over_nodedup": { + "ratio": 2.0100914854954914, + "ci90_low": 2.0002065729677834, + "ci90_high": 2.0166774669356378, + "bootstrap_samples": 2000 + }, + "ratio_library_over_nodedup": { + "ratio": 0.9601774541944359, + "ci90_low": 0.9556268305457554, + "ci90_high": 0.9643371268976172, + "bootstrap_samples": 2000 + }, + "ratio_control_over_library": { + "ratio": 2.093458325557026, + "ci90_low": 2.0876485991928675, + "ci90_high": 2.096584971875778, + "bootstrap_samples": 2000 + }, + "paired_round_ratio_control_over_nodedup": { + "median": 2.014243564280994, + "p10": 1.9682843354019028, + "p90": 2.04332628980802 + }, + "minimum_detectable_improvement": 0.035743958487239214, + "compile": { + "control": { + "lower_s": 3.097098669037223, + "compile_s": 9.6949109332636, + "first_call_s": 0.023168369196355343, + "trace_calls": 32, + "flops": 17394672.0, + "hlo_sort_count": 15, + "stablehlo_sort_count": 3, + "hlo_sort_shapes": [ + "(f64[69849]{0}, f64[69849]{0}, s64[69849]{0}, s32[69849]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0}, s32[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0}, s32[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0}, s32[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0}, s32[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0}, s32[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0}, s32[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0}, s32[720]{0})" + ], + "hlo_sha256": "099aa053e52b3ea4", + "hlo_lines": 14562 + }, + "nodedup": { + "lower_s": 2.8049009991809726, + "compile_s": 5.648509600199759, + "first_call_s": 0.011043314822018147, + "trace_calls": 32, + "flops": 6598454.0, + "hlo_sort_count": 7, + "stablehlo_sort_count": 1, + "hlo_sort_shapes": [ + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})" + ], + "hlo_sha256": "a55e34d05ecb663f", + "hlo_lines": 10468 + }, + "library": { + "lower_s": 2.7420755699276924, + "compile_s": 0.4922253992408514, + "first_call_s": 0.013589904177933931, + "trace_calls": 32, + "flops": 6598454.0, + "hlo_sort_count": 7, + "stablehlo_sort_count": 1, + "hlo_sort_shapes": [ + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})" + ], + "hlo_sha256": "a55e34d05ecb663f", + "hlo_lines": 10468 + } + }, + "instances_compared": [ + [ + 0 + ], + [ + 1 + ], + [ + 2 + ], + [ + 3 + ], + [ + 4 + ], + [ + 5 + ], + [ + 6 + ], + [ + 7 + ], + [ + 8 + ], + [ + 9 + ], + [ + 10 + ], + [ + 11 + ], + [ + 12 + ], + [ + 13 + ], + [ + 14 + ], + [ + 15 + ] + ], + "values": { + "control": [ + 7.743201200876806, + 4.90119982600354, + 8.551453428732433, + 7.64017039895814, + 7.25809567478034, + 9.29357838657636, + 3.033879650515197, + 8.714615086385908, + 4.73517315947449, + 3.2233889243165876, + 9.296501815740568, + 6.74861581547119, + -1.402814315064127, + 0.5885274382499839, + 6.162997261446637, + -10.499150878933385 + ], + "nodedup": [ + 7.743201200876806, + 4.90119982600354, + 8.551453428732433, + 7.64017039895814, + 7.25809567478034, + 9.29357838657636, + 3.033879650515197, + 8.714615086385908, + 4.73517315947449, + 3.2233889243165876, + 9.296501815740568, + 6.74861581547119, + -1.402814315064127, + 0.5885274382499839, + 6.162997261446637, + -10.499150878933385 + ], + "library": [ + 7.743201200876806, + 4.90119982600354, + 8.551453428732433, + 7.64017039895814, + 7.25809567478034, + 9.29357838657636, + 3.033879650515197, + 8.714615086385908, + 4.73517315947449, + 3.2233889243165876, + 9.296501815740568, + 6.74861581547119, + -1.402814315064127, + 0.5885274382499839, + 6.162997261446637, + -10.499150878933385 + ] + }, + "deterministic_within_route": { + "control": true, + "nodedup": true, + "library": true + }, + "likelihood_gate": { + "control_vs_nodedup": { + "bit_identical": true, + "max_abs_delta": 0.0, + "max_rel_delta": 0.0, + "nan_pattern_equal": true + }, + "control_vs_library": { + "bit_identical": true, + "max_abs_delta": 0.0, + "max_rel_delta": 0.0, + "nan_pattern_equal": true + }, + "nodedup_vs_library": { + "bit_identical": true, + "max_abs_delta": 0.0, + "max_rel_delta": 0.0, + "nan_pattern_equal": true + } + }, + "fiducial_log_likelihood": { + "control": 7.743201200876806, + "nodedup": 7.743201200876806, + "library": 7.743201200876806 + } + }, + "simple_solved_vmap4": { + "label": "simple_solved_vmap4", + "batch": 4, + "n_rounds": 20, + "n_calls_per_round": 20, + "n_warm": 3, + "route_order": "round-robin, start rotated each round", + "per_call_ms": { + "control": [ + 2.1434039808809757, + 2.0308452658355236, + 2.024745102971792, + 2.060844097286463, + 2.0537846721708775, + 2.019195817410946, + 2.002206165343523, + 1.9992860034108162, + 1.9400459714233875, + 1.9684359431266785, + 2.0112660713493824, + 1.9970359280705452, + 2.015745732933283, + 2.0114160142838955, + 1.9693057984113693, + 1.9977260380983353, + 1.985906157642603, + 2.0405049435794353, + 2.0452546887099743, + 2.0140563137829304, + 2.0630336366593838, + 1.8719257786870003, + 1.9113658927381039, + 1.9074971787631512, + 1.8516378477215767, + 1.8583768978714943, + 1.8854769878089428, + 1.9437861628830433, + 1.8774773925542831, + 1.8919273279607296, + 1.863937359303236, + 1.9570360891520977, + 1.873767003417015, + 1.9554868340492249, + 1.9497857429087162, + 1.8781968392431736, + 1.8785260617733002, + 1.9209268502891064, + 1.8864572048187256, + 1.8591983243823051, + 1.9592568278312683, + 1.9559357315301895, + 1.869297120720148, + 1.9507049582898617, + 1.9435673020780087, + 1.9053258001804352, + 1.894438173621893, + 1.8918472342193127, + 1.9217259250581264, + 1.8632481805980206, + 1.8686670809984207, + 1.9277166575193405, + 1.9450257532298565, + 1.8805069848895073, + 1.8821670673787594, + 1.9409763626754284, + 2.2731521166861057, + 1.9214767962694168, + 1.8788683228194714, + 1.8861168064177036, + 1.970025710761547, + 1.9025569781661034, + 1.8963571637868881, + 1.854647882282734, + 1.8727369606494904, + 1.895667053759098, + 1.9088666886091232, + 1.88160827383399, + 1.8718382343649864, + 1.933487132191658, + 1.8678284250199795, + 1.8723579123616219, + 1.9119172357022762, + 1.9129659049212933, + 1.8700668588280678, + 2.2818930447101593, + 1.863407902419567, + 1.8662572838366032, + 1.8631769344210625, + 1.8455879762768745, + 1.9307257607579231, + 1.8314076587557793, + 1.8324381671845913, + 1.8724570982158184, + 1.873666886240244, + 1.8356279470026493, + 1.8334281630814075, + 1.8374379724264145, + 1.8274583853781223, + 1.8524457700550556, + 1.905656885355711, + 1.8707872368395329, + 1.8664677627384663, + 1.8611080013215542, + 1.8642870709300041, + 1.8676570616662502, + 1.9626556895673275, + 1.8704673275351524, + 1.8564779311418533, + 1.8999166786670685, + 1.91531702876091, + 1.8303380347788334, + 1.867127139121294, + 1.8890667706727982, + 1.8518678843975067, + 1.8405979499220848, + 1.8286081030964851, + 1.8305177800357342, + 1.8300581723451614, + 1.866925973445177, + 1.9082366488873959, + 1.8605873920023441, + 1.8505980260670185, + 1.8849470652639866, + 1.8776068463921547, + 1.8920483998954296, + 1.9156471826136112, + 1.856077928096056, + 1.859727781265974, + 2.29151314124465, + 1.936216838657856, + 1.8265782855451107, + 1.871705986559391, + 1.8949871882796288, + 1.8399981781840324, + 1.8201577477157116, + 1.8213489092886448, + 1.8612570129334927, + 1.8804967403411865, + 1.902436837553978, + 1.9093570299446583, + 1.9008568488061428, + 1.8570167012512684, + 1.8794070929288864, + 1.880707684904337, + 1.9137971103191376, + 1.872386783361435, + 1.8497277051210403, + 1.887287013232708, + 1.8823170103132725, + 1.9994559697806835, + 1.828996930271387, + 1.8214080482721329, + 1.8182480707764626, + 1.8166480585932732, + 1.8133078701794147, + 1.8602879717946053, + 1.8825558945536613, + 1.8277880735695362, + 1.8376978114247322, + 1.8175877630710602, + 1.8262178637087345, + 1.8182778730988503, + 1.8201791681349277, + 1.8836166709661484, + 1.8569580279290676, + 1.8289079889655113, + 1.8339683301746845, + 1.8190480768680573, + 1.8495870754122734, + 1.9189170561730862, + 1.8220278434455395, + 1.8371879123151302, + 1.8284479156136513, + 2.0275949500501156, + 1.8479381687939167, + 1.8414775840938091, + 1.8732771277427673, + 1.8316279165446758, + 1.8350379541516304, + 1.8709679134190083, + 1.8774657510221004, + 1.8396577797830105, + 1.832667738199234, + 1.8226378597319126, + 1.8713166937232018, + 1.861346885561943, + 1.9069057889282703, + 1.8675769679248333, + 1.8733972683548927, + 1.905576791614294, + 1.8478482961654663, + 1.8400168046355247, + 1.847837120294571, + 1.8757772631943226, + 1.8762480467557907, + 1.8332581967115402, + 1.8270076252520084, + 1.83187797665596, + 1.8359380774199963, + 1.8276176415383816, + 1.8722382374107838, + 1.8919161520898342, + 1.8371581099927425, + 1.8338179215788841, + 1.8339268863201141, + 1.8340079113841057, + 1.8306877464056015, + 1.8558073788881302, + 1.8887268379330635, + 1.946337055414915, + 1.837738323956728, + 1.8342779949307442, + 2.0902948454022408, + 1.8602684140205383, + 1.8302868120372295, + 1.8277978524565697, + 1.8390477634966373, + 1.8433267250657082, + 1.839368138462305, + 1.8755276687443256, + 1.878388226032257, + 1.8495372496545315, + 1.8279682844877243, + 1.8630772829055786, + 1.8334477208554745, + 1.8323077820241451, + 1.862207893282175, + 1.8757078796625137, + 1.866387203335762, + 1.9147670827805996, + 1.8310579471290112, + 1.8937373533844948, + 1.8812171183526516, + 1.8432256765663624, + 1.8358873203396797, + 1.8369383178651333, + 1.9854260608553886, + 1.8661366775631905, + 1.8855072557926178, + 1.843737903982401, + 1.84326758608222, + 1.8348381854593754, + 1.8360377289354801, + 1.8337680958211422, + 1.8496271222829819, + 1.93109642714262, + 1.9069472327828407, + 1.8477770499885082, + 1.8639182671904564, + 1.969396136701107, + 1.8213270232081413, + 1.8255878239870071, + 1.8311580643057823, + 1.8345876596868038, + 1.8327082507312298, + 1.8608169630169868, + 1.9064671359956264, + 1.876607071608305, + 1.8427381291985512, + 1.8401979468762875, + 1.828768290579319, + 1.8352866172790527, + 1.8347082659602165, + 1.894467044621706, + 1.8942872993648052, + 1.8913159146904945, + 1.8583880737423897, + 1.8870769999921322, + 1.8833870999515057, + 1.9952962175011635, + 1.8260679207742214, + 1.8412880599498749, + 1.8380680121481419, + 1.8370579928159714, + 1.8451767973601818, + 1.8692873418331146, + 1.8847770988941193, + 1.8451670184731483, + 1.819597091525793, + 1.8233070150017738, + 1.8407069146633148, + 1.8410580232739449, + 1.84986786916852, + 1.8737982027232647, + 1.8700878135859966, + 1.8437677063047886, + 1.8472671508789062, + 1.8419483676552773, + 1.836508046835661, + 1.9736462272703648, + 1.8432671204209328, + 1.8218876793980598, + 1.8303473480045795, + 1.8399679102003574, + 1.8276679329574108, + 1.8489579670131207, + 1.881228294223547, + 1.976595725864172, + 1.8210280686616898, + 1.8271375447511673, + 1.8348279409110546, + 1.8248679116368294, + 1.8839077092707157, + 1.903897151350975, + 1.8695569597184658, + 1.8418272957205772, + 1.8566669896245003, + 1.8907766789197922, + 1.8818271346390247, + 1.9665057770907879, + 1.8650470301508904, + 1.8429472111165524, + 1.839956734329462, + 1.8352679908275604, + 1.838407013565302, + 1.8766168504953384, + 1.864538062363863, + 1.83956790715456, + 1.8537179566919804, + 1.882587093859911, + 1.8738065846264362, + 1.8989169038832188, + 1.8783370032906532, + 1.8466766923666, + 1.8566567450761795, + 1.8877070397138596, + 1.8527978099882603, + 1.8825680017471313, + 1.9030170515179634, + 1.949795987457037, + 1.833748072385788, + 1.8663471564650536, + 1.8840581178665161, + 1.849947962909937, + 1.8605571240186691, + 1.833388116210699, + 1.840247306972742, + 1.8399269320070744, + 1.834438182413578, + 1.8651075661182404, + 1.877657137811184, + 1.848028041422367, + 1.8347571603953838, + 2.39767087623477, + 1.8472177907824516, + 1.8527968786656857, + 1.8368680030107498, + 1.836137380450964, + 1.8353667110204697, + 1.9203368574380875, + 1.9495370797812939, + 1.8785269930958748, + 1.876886934041977, + 1.8516466952860355, + 1.8329978920519352, + 1.8306979909539223, + 1.8340670503675938, + 1.8374673090875149, + 1.832467969506979, + 1.8798368982970715, + 1.8827267922461033, + 1.8529477529227734, + 1.8308069556951523, + 1.833667978644371, + 1.83164793998003, + 1.82441808283329, + 1.9124671816825867, + 1.9100368954241276, + 1.8679969944059849, + 1.9290558993816376, + 1.8365280702710152, + 1.8432480283081532, + 1.8871380016207695, + 1.8995469436049461, + 1.8401076085865498, + 1.8584178760647774, + 1.8432182259857655, + 1.8400470726191998, + 1.8708971329033375, + 1.9083158113062382, + 1.8737968057394028, + 1.8667271360754967, + 1.865386962890625, + 1.8835272639989853, + 1.8879882991313934, + 1.9078170880675316, + 1.8679178319871426, + 1.8678782507777214, + 1.869706902652979, + 1.9818460568785667, + 1.8624970689415932, + 1.8404382281005383, + 1.832387875765562, + 1.8369057215750217, + 1.8701269291341305, + 1.8878374248743057, + 1.8491470254957676, + 1.8575480207800865, + 1.8691378645598888, + 1.8325382843613625, + 1.8276083283126354, + 1.8699574284255505, + 1.8881969153881073, + 1.8544578924775124, + 1.8212879076600075, + 1.8239677883684635, + 1.8409676849842072, + 1.8317978829145432, + 1.8399767577648163 + ], + "nodedup": [ + 1.0442258790135384, + 1.0558883659541607, + 1.0227668099105358, + 1.01371668279171, + 1.0278979316353798, + 0.9803692810237408, + 0.9873369708657265, + 1.0127779096364975, + 0.9704087860882282, + 0.9665871039032936, + 0.9915190748870373, + 0.9657293558120728, + 0.9639281779527664, + 1.0380977764725685, + 0.9662490338087082, + 0.9574079886078835, + 0.9986278600990772, + 0.9756973013281822, + 0.9643579833209515, + 1.0134479962289333, + 0.9862082079052925, + 0.9934566915035248, + 1.0003182105720043, + 0.9650588035583496, + 0.9997370652854443, + 0.9723990224301815, + 0.9707189165055752, + 0.9543579071760178, + 0.9918189607560635, + 0.9668981656432152, + 0.9853579103946686, + 1.0398677550256252, + 1.0128277353942394, + 0.9650969877839088, + 1.0204380378127098, + 0.9592878632247448, + 0.966907013207674, + 1.0278979316353798, + 0.9649479761719704, + 0.965707004070282, + 1.0213181376457214, + 0.9725377894937992, + 0.953218899667263, + 0.9631887078285217, + 0.9627277031540871, + 0.9643686935305595, + 0.9661689400672913, + 1.0316669940948486, + 0.9664790704846382, + 0.9536189027130604, + 1.021797303110361, + 0.9847888723015785, + 0.9596291929483414, + 1.0190969333052635, + 0.9678485803306103, + 0.9523490443825722, + 1.0041282512247562, + 1.001948956400156, + 0.9557688608765602, + 1.0402770712971687, + 1.1283368803560734, + 0.9671077132225037, + 0.947178341448307, + 0.9797182865440845, + 0.963196624070406, + 0.9477292187511921, + 1.0003577917814255, + 0.9601376950740814, + 0.9554391726851463, + 0.9924080222845078, + 0.9573078714311123, + 0.9469790384173393, + 0.9516589343547821, + 0.9812768548727036, + 0.9561493061482906, + 0.9497879073023796, + 0.987728126347065, + 0.980868935585022, + 0.9490479715168476, + 0.9823781438171864, + 0.9805881418287754, + 0.9656781330704689, + 0.9639277122914791, + 0.9553977288305759, + 0.9840480051934719, + 0.9729089215397835, + 0.9632380679249763, + 0.9497487917542458, + 0.979109201580286, + 0.9785881265997887, + 0.9652287699282169, + 0.949447974562645, + 0.9853183291852474, + 0.9795189835131168, + 0.959817785769701, + 0.9466591291129589, + 0.9797289967536926, + 0.9785881265997887, + 0.9639589115977287, + 0.949198380112648, + 1.0103569366037846, + 0.9566592052578926, + 0.961607787758112, + 1.0131881572306156, + 0.9657293558120728, + 0.952898059040308, + 0.9901882149279118, + 0.9721489623188972, + 0.9567178785800934, + 0.9374492801725864, + 0.9862477891147137, + 0.9568678215146065, + 0.9352392517030239, + 0.9327777661383152, + 0.9662779048085213, + 0.951508991420269, + 0.9476877748966217, + 0.9307488799095154, + 0.9613488800823689, + 0.9676981717348099, + 1.0161781683564186, + 0.9671980515122414, + 0.9550494141876698, + 0.9578880853950977, + 1.0186471045017242, + 0.9719477966427803, + 0.9565879590809345, + 0.9408579207956791, + 0.98815793171525, + 0.9442176669836044, + 0.9348597377538681, + 0.9313682094216347, + 0.9862869046628475, + 1.734619028866291, + 0.9506889618933201, + 0.9352779015898705, + 0.9609181433916092, + 0.9437492117285728, + 0.9465194307267666, + 0.9390292689204216, + 0.9460090659558773, + 0.936517957597971, + 0.9380290284752846, + 0.9867679327726364, + 0.9463676251471043, + 1.2475051917135715, + 0.9277490898966789, + 0.9268689900636673, + 0.9343787096440792, + 0.9370278567075729, + 1.0045873932540417, + 0.9499490261077881, + 0.9495280683040619, + 0.9497976861894131, + 0.9720791131258011, + 0.9288187138736248, + 0.929409172385931, + 0.9256480261683464, + 0.9849676862359047, + 0.9405589662492275, + 0.9875982068479061, + 0.9329691529273987, + 0.9639188647270203, + 0.9530880488455296, + 0.9354278445243835, + 0.9307400323450565, + 0.9675482288002968, + 0.9499480947852135, + 0.9369999170303345, + 0.9348276071250439, + 0.930379144847393, + 0.9776689112186432, + 0.9741079993546009, + 0.935109332203865, + 0.931848306208849, + 0.9798076935112476, + 0.9469892829656601, + 0.9296578355133533, + 0.9331698529422283, + 0.9893570095300674, + 0.9601889178156853, + 0.9344080463051796, + 0.9405189193785191, + 0.9812680073082447, + 0.9480379521846771, + 0.9311200119554996, + 0.9334683418273926, + 0.973318237811327, + 0.9378399699926376, + 0.9433683007955551, + 0.9333998896181583, + 0.928007997572422, + 0.9843367151916027, + 0.9422991424798965, + 0.9349780157208443, + 0.9417901746928692, + 0.9787688031792641, + 0.9409282356500626, + 0.936869066208601, + 0.9322981350123882, + 0.970717053860426, + 0.9597777388989925, + 0.929409172385931, + 0.930659007281065, + 0.9631379507482052, + 0.9614392183721066, + 0.9429575875401497, + 0.932828988879919, + 0.9658080525696278, + 0.9689079597592354, + 0.9441589936614037, + 0.9314892813563347, + 0.9347088634967804, + 0.9784270077943802, + 0.9470977820456028, + 0.9340988472104073, + 0.9342082776129246, + 0.9782291017472744, + 0.9511788375675678, + 0.9354078210890293, + 0.9903581812977791, + 1.0049478150904179, + 0.9707678109407425, + 0.9500379674136639, + 0.936589203774929, + 0.9801071137189865, + 0.95802778378129, + 1.4081131666898727, + 0.966247171163559, + 0.9412593208253384, + 0.9354287758469582, + 0.9385775774717331, + 0.9796279482543468, + 0.9531192481517792, + 0.9366078302264214, + 0.9391396306455135, + 0.9862077422440052, + 0.9388476610183716, + 0.9355591610074043, + 0.9331880137324333, + 1.0168268345296383, + 0.9705079719424248, + 0.960448756814003, + 0.9389086626470089, + 0.9831488132476807, + 0.9440891444683075, + 0.9362176060676575, + 0.9325286373496056, + 0.9765671566128731, + 0.9439191780984402, + 0.9525585919618607, + 0.9361281991004944, + 0.940859317779541, + 0.9799678809940815, + 0.9559076279401779, + 0.9397901594638824, + 0.9382679127156734, + 0.983069185167551, + 0.9386488236486912, + 0.9380979463458061, + 1.0003987699747086, + 0.937179196625948, + 0.9264489635825157, + 0.9280601516366005, + 0.9896671399474144, + 0.9373477660119534, + 0.9347996674478054, + 0.9367079474031925, + 0.9715692140161991, + 0.9458581916987896, + 0.9457478299736977, + 0.9401887655258179, + 0.9336280636489391, + 0.9738290682435036, + 0.9446390904486179, + 0.9362879209220409, + 1.0358281433582306, + 0.987187959253788, + 0.9487280622124672, + 0.9326888248324394, + 1.038846094161272, + 0.9737578220665455, + 0.9595691226422787, + 0.9576883167028427, + 1.0093688033521175, + 1.0066069662570953, + 0.9585279040038586, + 0.961249228566885, + 0.9966082870960236, + 0.9730779565870762, + 0.9378287941217422, + 0.9635081514716148, + 0.9737890213727951, + 0.9495289996266365, + 0.9354790672659874, + 0.939629040658474, + 0.9738882072269917, + 0.9372089989483356, + 0.9389389306306839, + 0.9370977059006691, + 0.9819869883358479, + 0.9609581902623177, + 0.9578391909599304, + 0.9879181161522865, + 0.9788391180336475, + 0.9374590590596199, + 0.9361580014228821, + 0.9874082170426846, + 0.9573581628501415, + 0.9348979219794273, + 0.9354390203952789, + 0.9703678078949451, + 0.9543891064822674, + 0.9553679265081882, + 0.937438104301691, + 0.9682793170213699, + 0.969327986240387, + 0.9484980255365372, + 0.9347689338028431, + 0.9354688227176666, + 0.9366492740809917, + 0.9392187930643559, + 0.9809969924390316, + 0.9653689339756966, + 0.9448486380279064, + 0.9352182969450951, + 0.9629190899431705, + 0.9762579575181007, + 0.9416183456778526, + 0.9376485832035542, + 0.9314478375017643, + 0.9761392138898373, + 0.9500184096395969, + 0.938737764954567, + 0.943819060921669, + 0.9822072461247444, + 0.9320797398686409, + 0.9385189041495323, + 0.9330781176686287, + 0.9710476733744144, + 0.9884778410196304, + 0.967878382652998, + 0.9788870811462402, + 0.9607193060219288, + 0.9595081210136414, + 0.9562177583575249, + 1.0037482716143131, + 0.952618196606636, + 0.9617991745471954, + 0.9403289295732975, + 0.9772470220923424, + 0.954959075897932, + 0.939937774091959, + 0.9349980391561985, + 0.9661279618740082, + 0.9471778757870197, + 0.9445492178201675, + 0.9469492360949516, + 0.9359382092952728, + 0.980778131633997, + 0.9792782366275787, + 1.0062777437269688, + 0.9683878161013126, + 0.955579336732626, + 0.96144899725914, + 0.9978171437978745, + 1.0000579059123993, + 0.9627779945731163, + 0.950138084590435, + 1.0145683772861958, + 0.9667580015957355, + 0.9586489759385586, + 0.9447387419641018, + 0.9880079887807369, + 0.9502987377345562, + 0.9363982826471329, + 0.9355279617011547, + 0.9840382263064384, + 0.9500379674136639, + 0.9320387616753578, + 0.9422488510608673, + 0.9363186545670033, + 0.9787478484213352, + 0.9519890882074833, + 1.2343861162662506, + 0.9837672114372253, + 0.9345198050141335, + 0.9373282082378864, + 0.9348876774311066, + 0.9716292843222618, + 0.9536780416965485, + 0.935819000005722, + 0.9363777935504913, + 0.9667281992733479, + 0.9683091193437576, + 0.943697988986969, + 0.9457087144255638, + 0.9423689916729927, + 0.9836982935667038, + 0.9515788406133652 + ], + "library": [ + 1.031758263707161, + 0.9409883059561253, + 0.9962893091142178, + 0.969897024333477, + 0.9390292689204216, + 0.9722490794956684, + 0.9685480035841465, + 0.9556678123772144, + 0.9441389702260494, + 1.001656986773014, + 0.9422381408512592, + 0.9439988061785698, + 1.0160766541957855, + 0.9505287744104862, + 0.9324289858341217, + 0.9808768518269062, + 0.9641880169510841, + 0.9478889405727386, + 0.9426679462194443, + 0.9792488999664783, + 0.9635994210839272, + 0.9634280577301979, + 0.9354776702821255, + 0.9802691638469696, + 0.9455378167331219, + 0.940428115427494, + 0.9386190213263035, + 0.9562182240188122, + 0.9445291943848133, + 0.9360187686979771, + 0.9744679555296898, + 0.9499290026724339, + 0.9399289265275002, + 0.9815781377255917, + 1.0067191906273365, + 0.942448154091835, + 0.9426879696547985, + 0.9890682995319366, + 0.9404183365404606, + 0.9391875937581062, + 0.9590387344360352, + 0.9788968600332737, + 0.9458092972636223, + 0.9439480490982533, + 0.941447913646698, + 0.9671887382864952, + 0.949678011238575, + 0.9457580745220184, + 1.0004793293774128, + 0.9882878512144089, + 0.9432579390704632, + 0.9915982373058796, + 0.9526577778160572, + 0.9406679309904575, + 0.9468887001276016, + 0.9742570109665394, + 0.9769387543201447, + 0.9480491280555725, + 0.9784367866814137, + 0.9361389093101025, + 0.9660390205681324, + 0.9266887791454792, + 0.9293579496443272, + 0.9914091788232327, + 0.9556380100548267, + 1.018797978758812, + 0.9680083021521568, + 0.9334883652627468, + 0.9469087235629559, + 0.9273989126086235, + 0.9791483171284199, + 0.9588990360498428, + 0.9665568359196186, + 0.9622778743505478, + 0.953218899667263, + 0.9387880563735962, + 0.9274883195757866, + 0.9616990573704243, + 0.951928086578846, + 0.930118840187788, + 0.9659682400524616, + 0.9360290132462978, + 0.9190286509692669, + 0.9199702180922031, + 0.9216293692588806, + 0.9695780463516712, + 0.91154919937253, + 0.9077591821551323, + 0.9105498902499676, + 0.9375098161399364, + 0.9276680648326874, + 0.9314389899373055, + 0.9049088694155216, + 0.9006289765238762, + 0.9545190259814262, + 0.9291982278227806, + 0.9140092879533768, + 0.9094481356441975, + 0.9089778177440166, + 0.9596990421414375, + 0.9542480111122131, + 0.9730476886034012, + 0.9491280652582645, + 0.9418190456926823, + 0.9348392486572266, + 0.9554782882332802, + 0.9191688150167465, + 0.91182766482234, + 0.916418619453907, + 0.9501590393483639, + 0.9269877336919308, + 0.9218193590641022, + 0.9126490913331509, + 0.9124288335442543, + 0.9503690525889397, + 0.9217993356287479, + 0.910698901861906, + 0.9155678562819958, + 0.9258291684091091, + 0.9381091222167015, + 0.9834379889070988, + 0.9144581854343414, + 0.9152200073003769, + 0.9156190790235996, + 0.8988301269710064, + 0.9612292051315308, + 0.933297909796238, + 0.9170598350465298, + 0.9114481508731842, + 0.9128078818321228, + 0.9533190168440342, + 0.9202277287840843, + 0.9156190790235996, + 0.9078281000256538, + 0.9612380526959896, + 0.9100101888179779, + 0.9088488295674324, + 0.910869799554348, + 0.9135990403592587, + 0.9631779976189137, + 0.899359118193388, + 0.9009200148284435, + 0.9519485756754875, + 0.9002489969134331, + 0.8980296552181244, + 0.9098192676901817, + 0.9004301391541958, + 0.9554191492497921, + 0.9094881825149059, + 0.897690188139677, + 0.8988892659544945, + 0.9345179423689842, + 0.909038819372654, + 0.9059491567313671, + 0.9123291820287704, + 0.9021381847560406, + 0.9532379917800426, + 0.9186589159071445, + 0.9111878462135792, + 0.9047896601259708, + 0.9403089061379433, + 0.9527178481221199, + 0.9124679490923882, + 0.9062397293746471, + 0.9125089272856712, + 0.912609975785017, + 0.9506288915872574, + 0.9171878919005394, + 0.9154099971055984, + 0.9102988988161087, + 0.9468193165957928, + 0.9222789667546749, + 0.9197681210935116, + 0.9110793471336365, + 0.9121587499976158, + 0.9558782912790775, + 0.9098798036575317, + 0.9092381224036217, + 0.9205387905240059, + 0.9320788085460663, + 0.9738965891301632, + 1.3334942050278187, + 0.960618257522583, + 0.9316992945969105, + 0.9105689823627472, + 0.9064478799700737, + 0.9402590803802013, + 0.9213900193572044, + 0.9112679399549961, + 0.9095701389014721, + 0.910269096493721, + 0.9542889893054962, + 0.9175697341561317, + 0.9187683463096619, + 0.9087692014873028, + 0.9170179255306721, + 0.96086785197258, + 0.9034490212798119, + 0.9126588702201843, + 0.907710287719965, + 0.9114290587604046, + 0.9340783581137657, + 0.9187683463096619, + 0.9165802039206028, + 1.1382861994206905, + 0.9562983177602291, + 0.9330702014267445, + 0.9119389578700066, + 0.9146700613200665, + 0.9526880457997322, + 0.917558092623949, + 0.9485888294875622, + 0.9189490228891373, + 0.9184502996504307, + 0.9689675644040108, + 0.9146188385784626, + 0.9122700430452824, + 0.9102178737521172, + 0.9083892218768597, + 0.9306683205068111, + 0.9451890364289284, + 0.9187590330839157, + 0.9144800715148449, + 0.9578578174114227, + 0.9558182209730148, + 0.9205392561852932, + 0.9038182906806469, + 0.9132889099419117, + 0.9626778773963451, + 0.9386977180838585, + 0.9222393855452538, + 0.9117289446294308, + 0.9142402559518814, + 0.97231799736619, + 0.9178081527352333, + 0.9151189588010311, + 0.9108176454901695, + 0.912258867174387, + 0.9699082002043724, + 0.91524887830019, + 0.9361989796161652, + 0.9533781558275223, + 0.9337477385997772, + 0.9386087767779827, + 0.9174677543342113, + 0.9143790230154991, + 0.9669782593846321, + 0.9199883788824081, + 0.9123589843511581, + 0.912827905267477, + 0.9441189467906952, + 0.9291879832744598, + 0.9216289035975933, + 0.9204200468957424, + 0.9211292490363121, + 0.9524193592369556, + 0.9044990874826908, + 0.918238889425993, + 0.9082797914743423, + 0.9026490151882172, + 0.919827725738287, + 0.9574191644787788, + 0.9169881232082844, + 0.9123790077865124, + 0.9161499328911304, + 0.9967782534658909, + 0.9274990297853947, + 0.9250701405107975, + 0.9164991788566113, + 0.9137596935033798, + 0.9526880457997322, + 0.9086201898753643, + 0.9181504137814045, + 0.9137792512774467, + 0.9154598228633404, + 0.9517977014183998, + 0.9155902080237865, + 0.9259390644729137, + 0.9112688712775707, + 0.9124488569796085, + 0.9302189573645592, + 0.9549381211400032, + 0.9154286235570908, + 0.9240391664206982, + 0.9134276770055294, + 0.9134090505540371, + 0.955378171056509, + 0.9185001254081726, + 0.9191199205815792, + 0.9135282598435879, + 0.9169592522084713, + 0.950878020375967, + 0.9315498173236847, + 0.9219101630151272, + 0.9125480428338051, + 0.9139892645180225, + 0.9582978673279285, + 0.9201192297041416, + 0.914539210498333, + 0.9210477583110332, + 0.9670890867710114, + 0.9260489605367184, + 0.912718940526247, + 0.9107198566198349, + 0.9547178633511066, + 0.9217900224030018, + 0.9259479120373726, + 0.9194677695631981, + 0.9106188081204891, + 0.965626910328865, + 0.9213890880346298, + 0.9123701602220535, + 0.9094793349504471, + 0.9108190424740314, + 0.9511681273579597, + 0.9242389351129532, + 0.9126500226557255, + 0.9184088557958603, + 0.9605591185390949, + 0.9436681866645813, + 0.9169778786599636, + 0.9253579191863537, + 0.911469105631113, + 0.9135380387306213, + 0.9673479944467545, + 0.9172381833195686, + 0.9188479743897915, + 0.9142193011939526, + 0.9142393246293068, + 0.9513692930340767, + 0.9165476076304913, + 0.9212889708578587, + 0.920380000025034, + 0.9499778971076012, + 0.9271991439163685, + 0.919627957046032, + 0.9104879572987556, + 0.9148586541414261, + 0.9407582692801952, + 0.9223492816090584, + 0.9302888065576553, + 0.9645689278841019, + 0.9170086123049259, + 0.9215180762112141, + 0.9295688942074776, + 0.9493078105151653, + 0.9525688365101814, + 0.9282892569899559, + 0.9166891686618328, + 0.9166891686618328, + 0.9542377665638924, + 0.9203590452671051, + 0.9298180229961872, + 0.9164777584373951, + 0.9835781529545784, + 0.9162579663097858, + 0.9338590316474438, + 0.9161797352135181, + 0.9432979859411716, + 0.9378399699926376, + 0.9360890835523605, + 0.9498782455921173, + 0.9323894046247005, + 0.9298492223024368, + 0.9139887988567352, + 0.9212000295519829, + 0.9687980636954308, + 0.9119091555476189, + 1.2714751064777374, + 0.9619481861591339, + 0.926559790968895, + 0.915199052542448, + 0.9224982932209969, + 0.9501487948000431, + 0.9328792802989483, + 0.9185187518596649, + 0.9193378500640392, + 0.9123189374804497, + 0.9492491371929646, + 0.9165280498564243, + 0.9175078012049198, + 0.9184679947793484, + 0.9701489470899105, + 0.914938747882843, + 0.9145801886916161, + 0.9125489741563797, + 0.9086690843105316, + 1.0142591781914234, + 0.9234589524567127, + 0.9141997434198856, + 0.913089606910944, + 0.9656879119575024, + 0.9122099727392197, + 0.9320080280303955, + 0.9201387874782085, + 0.9486991912126541, + 0.9440178982913494, + 0.9297989308834076, + 0.9130081161856651, + 0.9168577380478382 + ] + }, + "warm_ms": { + "control": [ + 9.490805212408304, + 2.225864212960005, + 2.0169448107481003 + ], + "nodedup": [ + 2.9914630576968193, + 1.1084573343396187, + 1.0617366060614586 + ], + "library": [ + 1.3225139118731022, + 1.1047064326703548, + 1.0427082888782024 + ] + }, + "stats": { + "control": { + "n": 400, + "median_ms": 1.8652472645044327, + "p10_ms": 1.8302639480680227, + "p90_ms": 1.951183145865798, + "min_ms": 1.8133078701794147, + "max_ms": 2.39767087623477, + "mean_ms": 1.880019810050726 + }, + "nodedup": { + "n": 400, + "median_ms": 0.9582778438925743, + "p10_ms": 0.9347965940833092, + "p90_ms": 1.0003221686929464, + "min_ms": 0.9256480261683464, + "max_ms": 1.734619028866291, + "mean_ms": 0.966738541610539 + }, + "library": { + "n": 400, + "median_ms": 0.9258841164410114, + "p10_ms": 0.9102959185838699, + "p90_ms": 0.9674140252172947, + "min_ms": 0.897690188139677, + "max_ms": 1.3334942050278187, + "mean_ms": 0.9358059172518551 + } + }, + "ratio_control_over_nodedup": { + "ratio": 1.9464576754980596, + "ci90_low": 1.9383629048961062, + "ci90_high": 1.9535108813273627, + "bootstrap_samples": 2000 + }, + "ratio_library_over_nodedup": { + "ratio": 0.966195892289466, + "ci90_low": 0.9600522323675742, + "ci90_high": 0.970872152854688, + "bootstrap_samples": 2000 + }, + "ratio_control_over_library": { + "ratio": 2.014558011508202, + "ci90_low": 2.0053092547052613, + "ci90_high": 2.0254384124108196, + "bootstrap_samples": 2000 + }, + "paired_round_ratio_control_over_nodedup": { + "median": 1.9509387994682013, + "p10": 1.9315792350633012, + "p90": 1.9697979345236176 + }, + "minimum_detectable_improvement": 0.06482743607180769, + "compile": { + "control": { + "lower_s": 4.173467952758074, + "compile_s": 10.786670500412583, + "first_call_s": 0.023160339798778296, + "trace_calls": 32, + "flops": 34354852.0, + "hlo_sort_count": 15, + "stablehlo_sort_count": 3, + "hlo_sort_shapes": [ + "(f64[69849]{0}, f64[69849]{0}, s64[69849]{0}, s32[69849]{0})", + "(f64[4,60]{1,0}, f64[4,60]{1,0}, s64[4,60]{1,0}, s32[4,60]{1,0})", + "(f64[4,720]{1,0}, f64[4,720]{1,0}, s64[4,720]{1,0}, s32[4,720]{1,0})", + "(f64[4,60]{1,0}, f64[4,60]{1,0}, s64[4,60]{1,0}, s32[4,60]{1,0})", + "(f64[4,720]{1,0}, f64[4,720]{1,0}, s64[4,720]{1,0}, s32[4,720]{1,0})", + "(f64[4,60]{1,0}, f64[4,60]{1,0}, s64[4,60]{1,0}, s32[4,60]{1,0})", + "(f64[4,720]{1,0}, f64[4,720]{1,0}, s64[4,720]{1,0}, s32[4,720]{1,0})", + "(f64[4,60]{1,0}, f64[4,60]{1,0}, s64[4,60]{1,0}, s32[4,60]{1,0})", + "(f64[4,720]{1,0}, f64[4,720]{1,0}, s64[4,720]{1,0}, s32[4,720]{1,0})", + "(f64[4,60]{1,0}, f64[4,60]{1,0}, s64[4,60]{1,0}, s32[4,60]{1,0})", + "(f64[4,720]{1,0}, f64[4,720]{1,0}, s64[4,720]{1,0}, s32[4,720]{1,0})", + "(f64[4,60]{1,0}, f64[4,60]{1,0}, s64[4,60]{1,0}, s32[4,60]{1,0})", + "(f64[4,720]{1,0}, f64[4,720]{1,0}, s64[4,720]{1,0}, s32[4,720]{1,0})", + "(f64[4,60]{1,0}, f64[4,60]{1,0}, s64[4,60]{1,0}, s32[4,60]{1,0})", + "(f64[4,720]{1,0}, f64[4,720]{1,0}, s64[4,720]{1,0}, s32[4,720]{1,0})" + ], + "hlo_sha256": "2f3645466f88e98f", + "hlo_lines": 13620 + }, + "nodedup": { + "lower_s": 3.6988732116296887, + "compile_s": 6.390985717996955, + "first_call_s": 0.0121862618252635, + "trace_calls": 32, + "flops": 21982160.0, + "hlo_sort_count": 7, + "stablehlo_sort_count": 1, + "hlo_sort_shapes": [ + "(f64[4,60]{1,0}, f64[4,60]{1,0}, s64[4,60]{1,0}, s32[4,60]{1,0})", + "(f64[4,60]{1,0}, f64[4,60]{1,0}, s64[4,60]{1,0}, s32[4,60]{1,0})", + "(f64[4,60]{1,0}, f64[4,60]{1,0}, s64[4,60]{1,0}, s32[4,60]{1,0})", + "(f64[4,60]{1,0}, f64[4,60]{1,0}, s64[4,60]{1,0}, s32[4,60]{1,0})", + "(f64[4,60]{1,0}, f64[4,60]{1,0}, s64[4,60]{1,0}, s32[4,60]{1,0})", + "(f64[4,60]{1,0}, f64[4,60]{1,0}, s64[4,60]{1,0}, s32[4,60]{1,0})", + "(f64[4,60]{1,0}, f64[4,60]{1,0}, s64[4,60]{1,0}, s32[4,60]{1,0})" + ], + "hlo_sha256": "ebcb9c92b2c67add", + "hlo_lines": 9722 + }, + "library": { + "lower_s": 3.6674820818006992, + "compile_s": 0.5060227210633457, + "first_call_s": 0.011738617904484272, + "trace_calls": 32, + "flops": 21982160.0, + "hlo_sort_count": 7, + "stablehlo_sort_count": 1, + "hlo_sort_shapes": [ + "(f64[4,60]{1,0}, f64[4,60]{1,0}, s64[4,60]{1,0}, s32[4,60]{1,0})", + "(f64[4,60]{1,0}, f64[4,60]{1,0}, s64[4,60]{1,0}, s32[4,60]{1,0})", + "(f64[4,60]{1,0}, f64[4,60]{1,0}, s64[4,60]{1,0}, s32[4,60]{1,0})", + "(f64[4,60]{1,0}, f64[4,60]{1,0}, s64[4,60]{1,0}, s32[4,60]{1,0})", + "(f64[4,60]{1,0}, f64[4,60]{1,0}, s64[4,60]{1,0}, s32[4,60]{1,0})", + "(f64[4,60]{1,0}, f64[4,60]{1,0}, s64[4,60]{1,0}, s32[4,60]{1,0})", + "(f64[4,60]{1,0}, f64[4,60]{1,0}, s64[4,60]{1,0}, s32[4,60]{1,0})" + ], + "hlo_sha256": "ebcb9c92b2c67add", + "hlo_lines": 9722 + } + }, + "instances_compared": [ + [ + 0, + 1, + 2, + 3 + ], + [ + 4, + 5, + 6, + 7 + ], + [ + 8, + 9, + 10, + 11 + ], + [ + 12, + 13, + 14, + 15 + ] + ], + "values": { + "control": [ + [ + 7.743201200876806, + 4.90119982600354, + 8.551453428732433, + 7.64017039895814 + ], + [ + 7.25809567478034, + 9.29357838657636, + 3.033879650515197, + 8.714615086385908 + ], + [ + 4.73517315947449, + 3.2233889243165876, + 9.296501815740568, + 6.74861581547119 + ], + [ + -1.402814315064127, + 0.5885274382499839, + 6.162997261446637, + -10.499150878933385 + ] + ], + "nodedup": [ + [ + 7.743201200876806, + 4.90119982600354, + 8.551453428732433, + 7.64017039895814 + ], + [ + 7.25809567478034, + 9.29357838657636, + 3.033879650515197, + 8.714615086385908 + ], + [ + 4.73517315947449, + 3.2233889243165876, + 9.296501815740568, + 6.74861581547119 + ], + [ + -1.402814315064127, + 0.5885274382499839, + 6.162997261446637, + -10.499150878933385 + ] + ], + "library": [ + [ + 7.743201200876806, + 4.90119982600354, + 8.551453428732433, + 7.64017039895814 + ], + [ + 7.25809567478034, + 9.29357838657636, + 3.033879650515197, + 8.714615086385908 + ], + [ + 4.73517315947449, + 3.2233889243165876, + 9.296501815740568, + 6.74861581547119 + ], + [ + -1.402814315064127, + 0.5885274382499839, + 6.162997261446637, + -10.499150878933385 + ] + ] + }, + "deterministic_within_route": { + "control": true, + "nodedup": true, + "library": true + }, + "likelihood_gate": { + "control_vs_nodedup": { + "bit_identical": true, + "max_abs_delta": 0.0, + "max_rel_delta": 0.0, + "nan_pattern_equal": true + }, + "control_vs_library": { + "bit_identical": true, + "max_abs_delta": 0.0, + "max_rel_delta": 0.0, + "nan_pattern_equal": true + }, + "nodedup_vs_library": { + "bit_identical": true, + "max_abs_delta": 0.0, + "max_rel_delta": 0.0, + "nan_pattern_equal": true + } + } + }, + "simple_plain": { + "label": "simple_plain", + "batch": null, + "n_rounds": 20, + "n_calls_per_round": 20, + "n_warm": 3, + "route_order": "round-robin, start rotated each round", + "per_call_ms": { + "control": [ + 1.8049878999590874, + 1.8001892603933811, + 1.7642690800130367, + 1.8190681003034115, + 1.7899279482662678, + 1.7727171070873737, + 1.7690188251435757, + 1.7940490506589413, + 1.7888383008539677, + 1.8193679861724377, + 1.7619188874959946, + 1.7613694071769714, + 1.766697969287634, + 1.8181283958256245, + 1.7819288186728954, + 1.8011480569839478, + 1.7818775959312916, + 1.7524589784443378, + 1.8203477375209332, + 1.7921580001711845, + 1.8002581782639027, + 1.7016399651765823, + 1.7327587120234966, + 1.6966704279184341, + 1.6946690157055855, + 1.7061899416148663, + 1.7037400975823402, + 1.7526978626847267, + 1.7130686901509762, + 1.6984599642455578, + 1.6912189312279224, + 1.6823001205921173, + 1.6938801854848862, + 1.693708822131157, + 1.683490350842476, + 1.6863401979207993, + 1.6833189874887466, + 1.6828887164592743, + 1.6771787777543068, + 1.6737389378249645, + 1.758689060807228, + 1.7126686871051788, + 1.7053899355232716, + 1.7486689612269402, + 1.683149952441454, + 1.6934601590037346, + 1.6812998801469803, + 1.677239779382944, + 1.6878200694918633, + 1.6923090443015099, + 1.6816197894513607, + 1.6821697354316711, + 1.6736299730837345, + 1.691579818725586, + 1.6667097806930542, + 1.6775899566709995, + 1.6717403195798397, + 1.675490289926529, + 1.687290146946907, + 1.7295987345278263, + 1.7182487063109875, + 1.7347298562526703, + 1.7043789848685265, + 1.7061303369700909, + 1.709728967398405, + 1.751558855175972, + 1.7209788784384727, + 1.706229057163, + 1.6899500042200089, + 1.6901800408959389, + 1.6849888488650322, + 1.6896901652216911, + 1.6788500361144543, + 1.691669225692749, + 1.6851900145411491, + 1.685400027781725, + 1.6838600859045982, + 1.687859185039997, + 1.6791201196610928, + 1.670530065894127, + 1.7503490671515465, + 1.6871602274477482, + 1.6833101399242878, + 1.6816388815641403, + 1.6722287982702255, + 1.6825702041387558, + 1.6563399694859982, + 1.658150926232338, + 1.6572489403188229, + 1.6655391082167625, + 1.694748643785715, + 1.6608787700533867, + 1.6613188199698925, + 1.6469089314341545, + 1.6821990720927715, + 1.6499687917530537, + 1.6846791841089725, + 1.6831792891025543, + 1.6944683156907558, + 1.7034588381648064, + 2.3582428693771362, + 1.8407679162919521, + 1.7608879134058952, + 1.7542988061904907, + 1.7801490612328053, + 1.7394092865288258, + 1.7403289675712585, + 1.7039687372744083, + 1.677710097283125, + 1.6911490820348263, + 1.6809799708425999, + 1.6807098872959614, + 1.7035803757607937, + 1.710160169750452, + 1.7096190713346004, + 1.7016492784023285, + 1.7028790898621082, + 1.6874196007847786, + 1.698219683021307, + 1.7367489635944366, + 1.6737398691475391, + 1.6726702451705933, + 1.6770688816905022, + 1.6744802705943584, + 1.661989837884903, + 1.6803699545562267, + 1.6858200542628765, + 1.6626911237835884, + 1.6761990264058113, + 1.6602999530732632, + 1.669399905949831, + 1.6516698524355888, + 1.6626901924610138, + 1.6597500070929527, + 1.6638096421957016, + 1.6835988499224186, + 1.7037000507116318, + 1.6884398646652699, + 1.6858987510204315, + 1.697629690170288, + 1.7166598699986935, + 1.696219202131033, + 1.689970027655363, + 1.7130686901509762, + 1.700730063021183, + 1.6830600798130035, + 1.6745198518037796, + 1.6720099374651909, + 1.6697999089956284, + 1.695679035037756, + 1.6677300445735455, + 1.6732900403439999, + 1.6648601740598679, + 1.6989498399198055, + 1.6757198609411716, + 1.678899396210909, + 1.6630003228783607, + 1.6737300902605057, + 1.6716700047254562, + 1.6566803678870201, + 1.7131892964243889, + 1.7099389806389809, + 1.7137890681624413, + 1.701780129224062, + 1.6993600875139236, + 1.6899886541068554, + 1.6865390352904797, + 1.6966690309345722, + 1.6970792785286903, + 1.6940287314355373, + 1.6737389378249645, + 1.6804789192974567, + 1.6790879890322685, + 1.6842177137732506, + 1.6701188869774342, + 1.6704690642654896, + 1.70919019728899, + 1.676690299063921, + 1.6722697764635086, + 2.22176406532526, + 1.6839299350976944, + 1.7014001496136189, + 1.6842000186443329, + 1.696889754384756, + 1.684039831161499, + 1.6822000034153461, + 1.679569948464632, + 1.6810200177133083, + 1.6696802340447903, + 1.7054001800715923, + 1.6812598332762718, + 1.6688602045178413, + 1.6920901834964752, + 1.6947700642049313, + 1.6775201074779034, + 1.6939397901296616, + 1.6659698449075222, + 1.690410077571869, + 1.674459781497717, + 1.6648899763822556, + 1.7172601073980331, + 1.6801701858639717, + 1.6713100485503674, + 1.6920799389481544, + 1.6678599640727043, + 1.6774199903011322, + 1.691180281341076, + 1.7443890683352947, + 1.6740686260163784, + 1.7358991317451, + 1.6880501061677933, + 1.6675200313329697, + 1.6617700457572937, + 1.6685603186488152, + 1.6659898683428764, + 1.688309945166111, + 1.7490489408373833, + 1.669399905949831, + 1.683408860117197, + 1.6835886053740978, + 1.6879001632332802, + 1.6862698830664158, + 1.6842298209667206, + 1.6898592002689838, + 1.7111282795667648, + 1.703939400613308, + 1.7005889676511288, + 1.7023389227688313, + 1.701198983937502, + 1.7233788967132568, + 1.7025391571223736, + 1.6900491900742054, + 1.7010890878736973, + 1.702908892184496, + 1.695958897471428, + 1.7053387127816677, + 1.7050690948963165, + 1.6981191001832485, + 2.009076066315174, + 1.6737398691475391, + 1.6784998588263988, + 1.6740700230002403, + 1.67091004550457, + 1.6647600568830967, + 1.6715098172426224, + 2.119074109941721, + 1.6756197437644005, + 1.6764001920819283, + 1.675439067184925, + 1.6683298163115978, + 1.6849301755428314, + 1.6722800210118294, + 1.6760998405516148, + 1.6702399589121342, + 1.6695298254489899, + 1.6621500253677368, + 1.6616196371614933, + 1.6693901270627975, + 1.6854899004101753, + 1.6783098690211773, + 1.686489675194025, + 1.6695898957550526, + 1.6624201089143753, + 1.657949760556221, + 1.6589900478720665, + 1.6548600979149342, + 1.658760942518711, + 1.6635991632938385, + 1.671168953180313, + 1.6726390458643436, + 1.685689203441143, + 1.6705486923456192, + 1.6695689409971237, + 1.6814786940813065, + 1.69738894328475, + 1.689339056611061, + 1.6885986551642418, + 1.6921977512538433, + 1.6942382790148258, + 1.6898782923817635, + 1.6805077902972698, + 1.6861888580024242, + 1.683569047600031, + 1.6921288333833218, + 1.6817986033856869, + 1.6908789984881878, + 1.6868487000465393, + 1.686398871243, + 1.6848291270434856, + 1.6620098613202572, + 1.672340091317892, + 1.6554798930883408, + 1.663239672780037, + 1.6645798459649086, + 1.667739823460579, + 1.6760602593421936, + 1.6474402509629726, + 1.6489499248564243, + 1.6506700776517391, + 1.6559399664402008, + 1.6760588623583317, + 1.6596904024481773, + 1.6534999012947083, + 1.6628806479275227, + 1.6755801625549793, + 1.669150311499834, + 1.6680597327649593, + 1.6574100591242313, + 1.659640111029148, + 1.6503902152180672, + 1.6750390641391277, + 1.670589204877615, + 1.6720602288842201, + 1.6997293569147587, + 1.6746297478675842, + 1.69351976364851, + 1.6881688497960567, + 1.6977186314761639, + 1.6936189495027065, + 1.6753701493144035, + 1.7193490639328957, + 1.6774889081716537, + 1.6743200831115246, + 1.6777398996055126, + 1.7074402421712875, + 1.677350141108036, + 1.6583800315856934, + 1.666800118982792, + 1.664420124143362, + 1.6843597404658794, + 1.664699986577034, + 1.6830600798130035, + 1.661510206758976, + 1.672650221735239, + 1.6652503982186317, + 1.6639898531138897, + 1.6677803359925747, + 1.6759298741817474, + 1.683180220425129, + 1.7069103196263313, + 1.6896789893507957, + 1.691558863967657, + 1.669829711318016, + 1.6728001646697521, + 1.6697002574801445, + 1.6827099025249481, + 1.6861003823578358, + 1.6825399361550808, + 1.6639302484691143, + 1.6782600432634354, + 1.6835997812449932, + 1.706159207969904, + 1.6939099878072739, + 1.683759968727827, + 1.6899481415748596, + 1.6802488826215267, + 1.6605891287326813, + 1.6615488566458225, + 1.6629290767014027, + 1.6626291908323765, + 1.6871597617864609, + 1.6666790470480919, + 1.6768090426921844, + 1.6875378787517548, + 1.6622887924313545, + 1.6705193556845188, + 1.6683288849890232, + 1.6651791520416737, + 1.6704490408301353, + 1.667108852416277, + 1.6823182813823223, + 1.8387269228696823, + 1.7222678288817406, + 1.7116502858698368, + 1.7021289095282555, + 1.6935593448579311, + 1.7068199813365936, + 1.7099399119615555, + 1.7096190713346004, + 1.7158500850200653, + 1.7355992458760738, + 1.6967994160950184, + 1.692608930170536, + 1.7011300660669804, + 1.694090198725462, + 1.6989600844681263, + 1.6965600661933422, + 1.6915900632739067, + 1.691949088126421, + 1.6860701143741608, + 1.6809199005365372, + 1.6859597526490688, + 1.6778698191046715, + 1.694769598543644, + 1.6978699713945389, + 1.7092390917241573, + 1.6902689822018147, + 1.689390279352665, + 1.6650799661874771, + 1.6635498031973839 + ], + "nodedup": [ + 0.8998890407383442, + 0.9082579053938389, + 0.8689002133905888, + 0.8482998237013817, + 0.8574496023356915, + 0.8583799935877323, + 0.8352687582373619, + 0.8577709086239338, + 0.8417293429374695, + 0.8439812809228897, + 0.8738590404391289, + 0.8925087749958038, + 0.8461601100862026, + 0.8458690717816353, + 0.8412706665694714, + 0.8392189629375935, + 0.8675600402057171, + 1.1970559135079384, + 0.8483803831040859, + 0.8630501106381416, + 0.8414587937295437, + 0.8501303382217884, + 0.8375290781259537, + 0.864159781485796, + 0.9131990373134613, + 0.8744192309677601, + 0.8369912393391132, + 0.8483501151204109, + 0.8603502064943314, + 0.8549201302230358, + 0.8404902182519436, + 0.8372906595468521, + 0.8440790697932243, + 0.8437801152467728, + 0.8725388906896114, + 0.8546588942408562, + 0.8392413146793842, + 0.8519599214196205, + 0.8446001447737217, + 0.8610389195382595, + 0.893929973244667, + 0.8516702800989151, + 0.8535911329090595, + 0.8274600841104984, + 0.818869099020958, + 0.8212309330701828, + 0.8220300078392029, + 0.8370210416615009, + 0.849609263241291, + 0.8335411548614502, + 0.818879809230566, + 0.815690029412508, + 0.8106911554932594, + 0.81596989184618, + 0.8347802795469761, + 0.8379798382520676, + 0.8225999772548676, + 0.8072499185800552, + 0.8183298632502556, + 0.8186111226677895, + 0.8565890602767467, + 0.8313199505209923, + 0.8185696788132191, + 0.8188402280211449, + 0.8446699939668179, + 0.8549001067876816, + 0.8608601056039333, + 0.8129999041557312, + 0.8099591359496117, + 0.8173510432243347, + 0.8185398764908314, + 0.8408296853303909, + 0.831719022244215, + 0.820050947368145, + 0.830099917948246, + 0.8231988176703453, + 0.8237911388278008, + 0.8232900872826576, + 0.8430099114775658, + 0.8209487423300743, + 0.8440888486802578, + 0.8522607386112213, + 0.8254391141235828, + 0.8126008324325085, + 0.8187801577150822, + 0.8145300671458244, + 0.8169109933078289, + 0.8184798061847687, + 0.8375602774322033, + 0.8396790362894535, + 0.8203010074794292, + 0.7982999086380005, + 0.8013900369405746, + 0.8026799187064171, + 0.7945499382913113, + 0.7960312068462372, + 0.801360234618187, + 0.817800872027874, + 0.8181799203157425, + 0.7963408716022968, + 1.1676149442791939, + 0.8132588118314743, + 0.810990110039711, + 0.810449942946434, + 0.8142311125993729, + 0.8362801745533943, + 0.822099857032299, + 0.825229100883007, + 0.8101197890937328, + 0.8219089359045029, + 0.8235792629420757, + 0.8483999408781528, + 0.8173789829015732, + 0.8132397197186947, + 0.8447887375950813, + 0.8230707608163357, + 0.8161901496350765, + 0.8102105930447578, + 0.8202898316085339, + 0.8150292560458183, + 0.8871280588209629, + 0.8525089360773563, + 0.834690872579813, + 0.8289101533591747, + 0.858270563185215, + 0.8687390945851803, + 0.8724601939320564, + 0.8378601633012295, + 0.8487589657306671, + 0.8393200114369392, + 0.8218986913561821, + 0.8313199505209923, + 0.8298889733850956, + 0.8246502839028835, + 0.8178688585758209, + 0.8218800649046898, + 0.834478996694088, + 0.8116597309708595, + 0.8122902363538742, + 0.8134800009429455, + 0.8078711107373238, + 0.8178791031241417, + 0.8396599441766739, + 0.832688994705677, + 0.8274111896753311, + 0.8275499567389488, + 0.8316501043736935, + 0.8255890570580959, + 0.8123498409986496, + 0.809790100902319, + 0.810328871011734, + 0.8094911463558674, + 0.8326303213834763, + 0.8318210020661354, + 0.8257003501057625, + 0.8235909044742584, + 0.8337004110217094, + 0.8207010105252266, + 0.8208099752664566, + 0.8319402113556862, + 0.8414690382778645, + 0.8139507845044136, + 0.8317199535667896, + 0.8233101107180119, + 0.8089803159236908, + 0.8169896900653839, + 1.0170582681894302, + 0.8292598649859428, + 0.8321208879351616, + 0.8168802596628666, + 0.8198008872568607, + 0.8254898712038994, + 0.809940043836832, + 0.8217091672122478, + 0.8445587009191513, + 0.8358298800885677, + 0.8298098109662533, + 0.8569499477744102, + 0.8429489098489285, + 0.8214209228754044, + 0.8216598071157932, + 0.8140113204717636, + 0.814720056951046, + 0.8205086924135685, + 0.8177002891898155, + 0.8431188762187958, + 0.8550798520445824, + 0.8301590569317341, + 0.8152909576892853, + 0.8181100711226463, + 0.8189007639884949, + 0.8151889778673649, + 0.8161603473126888, + 0.8314209990203381, + 0.8382289670407772, + 0.8194800466299057, + 0.8161598816514015, + 0.8497298695147038, + 0.8292589336633682, + 0.8143112063407898, + 0.8154790848493576, + 0.8111400529742241, + 0.8131098002195358, + 0.8120588026940823, + 0.835079699754715, + 0.8381996303796768, + 0.8257408626377583, + 0.8080401457846165, + 0.8238712325692177, + 0.8178399875760078, + 0.8168406784534454, + 0.8140997961163521, + 0.8148197084665298, + 0.8361111395061016, + 0.8312403224408627, + 0.8336897008121014, + 0.8247899822890759, + 0.808370765298605, + 0.8218903094530106, + 0.8168700151145458, + 0.8778190240263939, + 0.8270596154034138, + 0.8195987902581692, + 0.8159708231687546, + 0.8190702646970749, + 0.8162707090377808, + 0.8140788413584232, + 0.8345297537744045, + 0.8358098566532135, + 0.8197701536118984, + 0.8062608540058136, + 0.8107000030577183, + 0.8182907477021217, + 0.8008899167180061, + 0.8088210597634315, + 0.8160499855875969, + 0.8140993304550648, + 0.8383691310882568, + 0.8333488367497921, + 0.8217100985348225, + 0.8347700349986553, + 0.8345399983227253, + 0.8241687901318073, + 0.8107409812510014, + 0.8123898878693581, + 0.8163810707628727, + 0.8097700774669647, + 0.8340287022292614, + 0.8290698751807213, + 0.8215899579226971, + 0.8152010850608349, + 0.8123889565467834, + 0.8080806583166122, + 0.8148103952407837, + 0.8122310973703861, + 0.8132890798151493, + 0.8159507997334003, + 0.8414001204073429, + 0.845820177346468, + 0.8227797225117683, + 0.8066999725997448, + 0.8034608326852322, + 0.7950998842716217, + 0.8100210689008236, + 0.7959799841046333, + 0.798580702394247, + 0.8080797269940376, + 0.8108499459922314, + 0.8218688890337944, + 0.8513601496815681, + 0.8225799538195133, + 0.8022300899028778, + 0.8388906717300415, + 0.8167196065187454, + 0.8198712021112442, + 0.818219967186451, + 0.8311099372804165, + 0.8217012509703636, + 0.8160797879099846, + 0.8063800632953644, + 0.8203303441405296, + 0.8011097088456154, + 0.7960409857332706, + 0.7996698841452599, + 0.7982309907674789, + 0.8569988422095776, + 0.8121086284518242, + 0.7962808012962341, + 0.8336789906024933, + 0.8029397577047348, + 0.8048187009990215, + 0.8011911995708942, + 0.8181598968803883, + 0.8233287371695042, + 0.8065700531005859, + 0.8127298206090927, + 0.8007609285414219, + 0.8043888956308365, + 0.7997606880962849, + 0.8008298464119434, + 0.8445698767900467, + 0.8231098763644695, + 0.8107009343802929, + 0.7972000166773796, + 0.8272510021924973, + 0.8244100026786327, + 0.8109202608466148, + 0.8177305571734905, + 0.8095698431134224, + 0.8197999559342861, + 0.7972097955644131, + 0.7968107238411903, + 0.7986798882484436, + 0.8183801546692848, + 0.8156890980899334, + 0.812190119177103, + 0.8026706054806709, + 0.7980801165103912, + 0.8026310242712498, + 0.8086496964097023, + 0.819000881165266, + 0.8161100558936596, + 0.8200709708034992, + 0.8092001080513, + 0.8090212941169739, + 0.8279299363493919, + 0.8395509794354439, + 0.8251001127064228, + 0.8219890296459198, + 0.8072010241448879, + 0.8117500692605972, + 0.8085314184427261, + 0.8091502822935581, + 0.8163000456988811, + 0.8193189278244972, + 0.8313003927469254, + 0.8398890495300293, + 0.8209403604269028, + 0.8388310670852661, + 0.81642996519804, + 0.861569307744503, + 0.8124210871756077, + 0.8077300153672695, + 0.8125607855618, + 0.8186502382159233, + 0.8218912407755852, + 0.8306996896862984, + 0.8399607613682747, + 0.8301902562379837, + 0.808429904282093, + 0.8072010241448879, + 0.8132602088153362, + 0.8184299804270267, + 0.8130287751555443, + 0.8134907111525536, + 0.8105002343654633, + 0.8287611417472363, + 0.8484800346195698, + 0.8179191499948502, + 0.8087209425866604, + 0.9103287011384964, + 0.8397698402404785, + 0.8594491519033909, + 0.8535296656191349, + 0.850349199026823, + 0.8517089299857616, + 0.8384496904909611, + 0.8375402539968491, + 0.8643004111945629, + 0.8473386988043785, + 0.851338729262352, + 0.8435510098934174, + 0.833198893815279, + 0.842090230435133, + 0.8687088266015053, + 0.8567310869693756, + 0.8626198396086693, + 0.8536092936992645, + 0.8170297369360924, + 0.8043898269534111, + 0.8020801469683647, + 0.8290293626487255, + 0.8290200494229794, + 0.8084001019597054, + 0.8024401031434536, + 0.8149412460625172, + 0.8105500601232052, + 0.8043809793889523, + 0.8056499063968658, + 0.8019912056624889, + 0.824859831482172, + 0.8499701507389545, + 0.8018100634217262, + 0.8076396770775318, + 0.802190974354744, + 0.8007199503481388, + 0.7968908175826073, + 0.8050799369812012, + 0.8053509518504143, + 0.8141100406646729 + ], + "library": [ + 0.8725691586732864, + 0.8236691355705261, + 0.8268407545983791, + 0.826708972454071, + 0.8363798260688782, + 0.8595702238380909, + 0.8285199292004108, + 0.8211308158934116, + 0.8224588818848133, + 0.8242009207606316, + 0.8242097683250904, + 0.8311099372804165, + 0.8425288833677769, + 0.8330191485583782, + 0.8249087259173393, + 0.8278689347207546, + 0.8339909836649895, + 0.8238190785050392, + 0.8364510722458363, + 0.8428399451076984, + 0.8257501758635044, + 0.8152411319315434, + 0.8254703134298325, + 0.8230507373809814, + 0.8297986350953579, + 0.8632899262011051, + 0.8361786603927612, + 0.8332999423146248, + 0.8244509808719158, + 0.82765007391572, + 0.8461899124085903, + 0.8307192474603653, + 0.8319192565977573, + 0.8287997916340828, + 0.8075898513197899, + 0.8200402371585369, + 0.8354899473488331, + 0.8302503265440464, + 0.7932297885417938, + 0.7974002510309219, + 0.8368892595171928, + 0.7965210825204849, + 0.7927198894321918, + 0.8038408122956753, + 0.7964600808918476, + 0.8558998815715313, + 0.8308403193950653, + 0.8211997337639332, + 0.8046100847423077, + 0.8133500814437866, + 0.8091707713901997, + 0.7959199137985706, + 0.7981909438967705, + 0.8136192336678505, + 0.806350726634264, + 0.7957299239933491, + 0.7974901236593723, + 0.8005611598491669, + 0.7948800921440125, + 0.8079409599304199, + 0.8323690854012966, + 0.8085109293460846, + 0.7970598526299, + 0.8001308888196945, + 0.8089998736977577, + 0.8331700228154659, + 0.8162199519574642, + 0.7952810265123844, + 0.7978002540767193, + 0.8064000867307186, + 0.784990843385458, + 0.8017402142286301, + 0.7969108410179615, + 0.8157296106219292, + 0.806101132184267, + 0.8348198607563972, + 0.7930099964141846, + 0.8090599440038204, + 0.8011199533939362, + 0.8064997382462025, + 0.775699969381094, + 0.7783398032188416, + 0.7852800190448761, + 0.7814997807145119, + 0.7678610272705555, + 0.7769898511469364, + 0.7812408730387688, + 0.7802299223840237, + 0.777841079980135, + 0.7992102764546871, + 0.7989108562469482, + 0.7909098640084267, + 0.785761047154665, + 0.7809102535247803, + 0.774990301579237, + 0.7844609208405018, + 0.7882099598646164, + 0.7871109992265701, + 0.7799901068210602, + 0.7762107998132706, + 1.2746029533445835, + 0.8990592323243618, + 0.8611301891505718, + 0.8287699893116951, + 0.8519897237420082, + 0.8792090229690075, + 0.8679698221385479, + 0.8377390913665295, + 0.8330787532031536, + 0.8361400105059147, + 0.8354089222848415, + 0.8548498153686523, + 0.8643693290650845, + 0.846360344439745, + 0.8383900858461857, + 0.8376291953027248, + 0.8320203050971031, + 0.8345190435647964, + 0.832810066640377, + 0.8576191030442715, + 0.8338503539562225, + 0.8131591603159904, + 0.8060606196522713, + 0.8023097179830074, + 0.7964111864566803, + 0.8042487315833569, + 0.8031702600419521, + 0.7926700636744499, + 0.7986999116837978, + 0.8004810661077499, + 0.8012698963284492, + 0.7909610867500305, + 0.8134390227496624, + 0.8251909166574478, + 0.8078902028501034, + 0.8100611157715321, + 0.8122799918055534, + 0.8035800419747829, + 0.7992396131157875, + 0.7954803295433521, + 0.7938812486827374, + 0.7988903671503067, + 0.8179601281881332, + 0.8198698051273823, + 0.8180998265743256, + 0.8092899806797504, + 0.8031008765101433, + 0.8019297383725643, + 0.7910099811851978, + 0.7930700667202473, + 0.7942300289869308, + 0.7906812243163586, + 0.7916600443422794, + 0.7964707911014557, + 0.8137202821671963, + 0.818260945379734, + 0.8101989515125751, + 0.8185300976037979, + 0.8234800770878792, + 0.8011311292648315, + 0.7984600961208344, + 0.8026612922549248, + 0.8093188516795635, + 0.8014906197786331, + 0.7911501452326775, + 0.7935501635074615, + 0.7964908145368099, + 0.7896600291132927, + 0.8139605633914471, + 0.8130902424454689, + 0.8219210430979729, + 0.8094301447272301, + 0.8086711168289185, + 0.7930900901556015, + 0.7993811741471291, + 0.7832399569451809, + 0.797830056399107, + 0.8033802732825279, + 0.8004899136722088, + 0.8052713237702847, + 0.8014398626983166, + 0.795980915427208, + 0.9022899903357029, + 0.8343192748725414, + 0.8050901815295219, + 0.802729744464159, + 0.7980810478329659, + 0.8003199473023415, + 0.7968214340507984, + 0.8002500981092453, + 0.7946197874844074, + 0.7880297489464283, + 0.7990398444235325, + 0.818189699202776, + 0.8168700151145458, + 0.806350726634264, + 0.8298400789499283, + 0.8069206960499287, + 0.7901699282228947, + 0.8005811832845211, + 0.7968898862600327, + 0.7918900810182095, + 0.792820006608963, + 0.8171889930963516, + 0.8096112869679928, + 0.8403891697525978, + 0.8125812746584415, + 0.7908702827990055, + 0.8030110038816929, + 0.8068699389696121, + 0.7984498515725136, + 0.7906202226877213, + 0.7929098792374134, + 0.8043297566473484, + 0.7919198833405972, + 0.8268607780337334, + 0.8205301128327847, + 0.8066007867455482, + 0.8126702159643173, + 0.7969210855662823, + 0.7867999374866486, + 0.7957108318805695, + 0.7978100329637527, + 0.7899808697402477, + 0.8020796813070774, + 0.7949499413371086, + 0.7978598587214947, + 0.8139298297464848, + 0.8143801242113113, + 0.8098790422081947, + 0.8014501072466373, + 0.801479909569025, + 0.7928209379315376, + 0.8598989807069302, + 0.7898909971117973, + 0.79329963773489, + 0.7879398763179779, + 0.7963399402797222, + 0.8132299408316612, + 0.8120010606944561, + 0.8219899609684944, + 0.7963208481669426, + 0.799049623310566, + 0.9693489409983158, + 0.7937699556350708, + 0.7922602817416191, + 0.8094902150332928, + 0.7963399402797222, + 0.7992107421159744, + 0.8027302101254463, + 0.783280935138464, + 0.794840045273304, + 0.7946607656776905, + 0.7885396480560303, + 0.7839608006179333, + 0.7805698551237583, + 0.7852013222873211, + 0.7836297154426575, + 0.8212500251829624, + 0.817169900983572, + 0.7950002327561378, + 0.7906206883490086, + 0.7933899760246277, + 0.7927711121737957, + 0.7819202728569508, + 0.8269487880170345, + 0.8001001551747322, + 0.8034599013626575, + 0.7857312448322773, + 0.7913699373602867, + 0.7895613089203835, + 0.7885796949267387, + 0.7924707606434822, + 0.7857098244130611, + 0.7854420691728592, + 0.7865400984883308, + 0.7899296469986439, + 0.8129198104143143, + 0.8086101152002811, + 0.7927310653030872, + 0.8050701580941677, + 0.7952610030770302, + 0.7805600762367249, + 0.7808012887835503, + 0.8077602833509445, + 0.7906509563326836, + 0.7867002859711647, + 0.7843109779059887, + 0.7890299893915653, + 0.7911613211035728, + 0.8061202242970467, + 0.7889601401984692, + 0.7923007942736149, + 0.7820501923561096, + 0.7838909514248371, + 0.7885610684752464, + 0.784990843385458, + 0.791570171713829, + 0.7799109444022179, + 0.790569931268692, + 0.8043111301958561, + 0.7901201024651527, + 0.7924013771116734, + 0.7901503704488277, + 0.8152807131409645, + 0.8246595971286297, + 0.8033798076212406, + 0.793171115219593, + 0.7865512743592262, + 0.7955310866236687, + 0.7944703102111816, + 0.7911212742328644, + 0.7882099598646164, + 0.7845009677112103, + 0.7912302389740944, + 0.8004913106560707, + 0.8044401183724403, + 0.8195699192583561, + 0.8081798441708088, + 0.7998398505151272, + 0.796671025454998, + 0.7963399402797222, + 0.7968209683895111, + 0.7910202257335186, + 0.8076210506260395, + 0.8041500113904476, + 0.7981602102518082, + 0.8028098382055759, + 0.7917801849544048, + 0.7901908829808235, + 0.7992787286639214, + 0.7963310927152634, + 0.7917787879705429, + 0.789241399616003, + 0.7953299209475517, + 0.7905308157205582, + 1.2900149449706078, + 0.8098296821117401, + 0.7940013892948627, + 0.7899496704339981, + 0.8039698004722595, + 0.8089500479400158, + 0.7967408746480942, + 0.7879501208662987, + 0.7929210551083088, + 0.7907701656222343, + 0.7899012416601181, + 0.7955702021718025, + 0.7907510735094547, + 0.8188700303435326, + 0.8065612055361271, + 0.7989201694726944, + 0.7996289059519768, + 0.7941997610032558, + 0.7967296987771988, + 0.8040708489716053, + 0.7938495837152004, + 0.7893810980021954, + 0.7879096083343029, + 0.7867221720516682, + 0.8760201744735241, + 0.805750023573637, + 0.7989709265530109, + 0.7855398580431938, + 0.7815300486981869, + 0.8091907948255539, + 0.792820006608963, + 0.7851109839975834, + 0.7948498241603374, + 0.7903510704636574, + 0.8135703392326832, + 0.8172211237251759, + 0.7901000790297985, + 0.7911999709904194, + 0.775619875639677, + 0.775899738073349, + 0.7843612693250179, + 0.7795598357915878, + 0.7772920653223991, + 0.7842099294066429, + 0.7949909195303917, + 0.7859999313950539, + 0.7919799536466599, + 0.7881508208811283, + 0.7878104224801064, + 0.788490753620863, + 0.7892097346484661, + 0.7801512256264687, + 0.7885899394750595, + 0.8022910915315151, + 0.7932302542030811, + 0.7824697531759739, + 0.7874602451920509, + 0.7846797816455364, + 0.7851407863199711, + 0.7819300517439842, + 0.7850010879337788, + 0.783849973231554, + 0.7843710482120514, + 0.7804711349308491 + ] + }, + "warm_ms": { + "control": [ + 7.389538921415806, + 1.9615069031715393, + 1.830067951232195 + ], + "nodedup": [ + 2.2931620478630066, + 0.9373086504638195, + 1.0683969594538212 + ], + "library": [ + 1.0639172978699207, + 0.9133587591350079, + 0.874329824000597 + ] + }, + "stats": { + "control": { + "n": 400, + "median_ms": 1.6842237673699856, + "p10_ms": 1.6629242338240147, + "p90_ms": 1.7359841149300337, + "min_ms": 1.6469089314341545, + "max_ms": 2.3582428693771362, + "mean_ms": 1.6966876341030002 + }, + "nodedup": { + "n": 400, + "median_ms": 0.8215054403990507, + "p10_ms": 0.8047758135944605, + "p90_ms": 0.8537142537534237, + "min_ms": 0.7945499382913113, + "max_ms": 1.1970559135079384, + "mean_ms": 0.8285584242548794 + }, + "library": { + "n": 400, + "median_ms": 0.7990447338670492, + "p10_ms": 0.7849597372114658, + "p90_ms": 0.8330878801643848, + "min_ms": 0.7678610272705555, + "max_ms": 1.2900149449706078, + "mean_ms": 0.8073775272350758 + } + }, + "ratio_control_over_nodedup": { + "ratio": 2.050167515082876, + "ci90_low": 2.0471320866578218, + "ci90_high": 2.0558867898345463, + "bootstrap_samples": 2000 + }, + "ratio_library_over_nodedup": { + "ratio": 0.9726590897303236, + "ci90_low": 0.9702302074337824, + "ci90_high": 0.9759283371791734, + "bootstrap_samples": 2000 + }, + "ratio_control_over_library": { + "ratio": 2.1077965925875417, + "ci90_low": 2.1030719736619146, + "ci90_high": 2.1131581744035173, + "bootstrap_samples": 2000 + }, + "paired_round_ratio_control_over_nodedup": { + "median": 2.054917009011539, + "p10": 2.008485439214766, + "p90": 2.08462458825218 + }, + "minimum_detectable_improvement": 0.04337896336667088, + "compile": { + "control": { + "lower_s": 2.588778235949576, + "compile_s": 9.397396435961127, + "first_call_s": 0.021797175984829664, + "trace_calls": 32, + "flops": 17394000.0, + "hlo_sort_count": 15, + "stablehlo_sort_count": 3, + "hlo_sort_shapes": [ + "(f64[69849]{0}, f64[69849]{0}, s64[69849]{0}, s32[69849]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0}, s32[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0}, s32[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0}, s32[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0}, s32[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0}, s32[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0}, s32[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0}, s32[720]{0})" + ], + "hlo_sha256": "aeb97efdbe87f224", + "hlo_lines": 13875 + }, + "nodedup": { + "lower_s": 2.238904752768576, + "compile_s": 5.326162123121321, + "first_call_s": 0.010901087895035744, + "trace_calls": 32, + "flops": 6597781.0, + "hlo_sort_count": 7, + "stablehlo_sort_count": 1, + "hlo_sort_shapes": [ + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})" + ], + "hlo_sha256": "ce6a9dde7d3a3ea6", + "hlo_lines": 9781 + }, + "library": { + "lower_s": 2.2467586789280176, + "compile_s": 0.47257327614352107, + "first_call_s": 0.01037547504529357, + "trace_calls": 32, + "flops": 6597781.0, + "hlo_sort_count": 7, + "stablehlo_sort_count": 1, + "hlo_sort_shapes": [ + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})" + ], + "hlo_sha256": "ce6a9dde7d3a3ea6", + "hlo_lines": 9781 + } + }, + "instances_compared": [ + [ + 0 + ], + [ + 1 + ], + [ + 2 + ], + [ + 3 + ], + [ + 4 + ], + [ + 5 + ], + [ + 6 + ], + [ + 7 + ], + [ + 8 + ], + [ + 9 + ], + [ + 10 + ], + [ + 11 + ], + [ + 12 + ], + [ + 13 + ], + [ + 14 + ], + [ + 15 + ] + ], + "values": { + "control": [ + 7.196577317761012, + -45.873021274429995, + 2.9048714587398505, + -801.1656151465145, + -856.2176369539866, + -701.3832757596591, + -791.860330108457, + -641.0597186366746, + -856.8747665323849, + -965.6893581059343, + -601.8962692526685, + 1.491228024977203, + -664.123965739818, + -4.055811166945723, + -6.531970036750838, + -970.3067931813666 + ], + "nodedup": [ + 7.196577317761012, + -45.873021274429995, + 2.9048714587398505, + -801.1656151465145, + -856.2176369539866, + -701.3832757596591, + -791.860330108457, + -641.0597186366746, + -856.8747665323849, + -965.6893581059343, + -601.8962692526685, + 1.491228024977203, + -664.123965739818, + -4.055811166945723, + -6.531970036750838, + -970.3067931813666 + ], + "library": [ + 7.196577317761012, + -45.873021274429995, + 2.9048714587398505, + -801.1656151465145, + -856.2176369539866, + -701.3832757596591, + -791.860330108457, + -641.0597186366746, + -856.8747665323849, + -965.6893581059343, + -601.8962692526685, + 1.491228024977203, + -664.123965739818, + -4.055811166945723, + -6.531970036750838, + -970.3067931813666 + ] + }, + "deterministic_within_route": { + "control": true, + "nodedup": true, + "library": true + }, + "likelihood_gate": { + "control_vs_nodedup": { + "bit_identical": true, + "max_abs_delta": 0.0, + "max_rel_delta": 0.0, + "nan_pattern_equal": true + }, + "control_vs_library": { + "bit_identical": true, + "max_abs_delta": 0.0, + "max_rel_delta": 0.0, + "nan_pattern_equal": true + }, + "nodedup_vs_library": { + "bit_identical": true, + "max_abs_delta": 0.0, + "max_rel_delta": 0.0, + "nan_pattern_equal": true + } + }, + "fiducial_log_likelihood": { + "control": 7.196577317761012, + "nodedup": 7.196577317761012, + "library": 7.196577317761012 + } + }, + "cluster_solved": { + "label": "cluster_solved", + "batch": null, + "n_rounds": 20, + "n_calls_per_round": 20, + "n_warm": 3, + "route_order": "round-robin, start rotated each round", + "per_call_ms": { + "control": [ + 5.621121730655432, + 4.7854711301624775, + 4.665333312004805, + 4.675192758440971, + 4.57564415410161, + 4.507716279476881, + 4.371786955744028, + 4.36334777623415, + 4.370216745883226, + 4.36038663610816, + 4.372977185994387, + 4.348997958004475, + 4.347977228462696, + 4.593824967741966, + 4.420786630362272, + 4.402026999741793, + 4.3609971180558205, + 4.353058058768511, + 4.363267216831446, + 4.2929681949317455, + 5.141936708241701, + 4.426566418260336, + 4.349696915596724, + 4.3500675819814205, + 4.337016958743334, + 4.288148134946823, + 4.205428995192051, + 4.302267916500568, + 4.404846113175154, + 4.230148158967495, + 4.2183781042695045, + 4.190909210592508, + 4.2201378382742405, + 4.217649344354868, + 4.202838987112045, + 4.2207189835608006, + 4.199848975986242, + 4.195189103484154, + 4.185620229691267, + 4.160499665886164, + 4.839201923459768, + 4.374457057565451, + 4.286007955670357, + 4.285458009690046, + 4.330697935074568, + 4.265317693352699, + 4.195208661258221, + 4.184858873486519, + 4.169628955423832, + 4.149020183831453, + 4.245748743414879, + 4.279788117855787, + 4.200729075819254, + 4.206418991088867, + 4.194359295070171, + 4.197629168629646, + 4.20354912057519, + 4.200188908725977, + 4.216058645397425, + 4.275178071111441, + 4.85767237842083, + 4.339796956628561, + 4.372396040707827, + 4.308218136429787, + 4.304558038711548, + 4.238699097186327, + 4.204298835247755, + 4.2013488709926605, + 4.213988780975342, + 4.206608980894089, + 4.1996389627456665, + 4.198548849672079, + 4.171849228441715, + 4.225329030305147, + 4.191059153527021, + 4.196559078991413, + 4.269808065146208, + 4.18055010959506, + 4.168899264186621, + 4.181159194558859, + 5.0711678341031075, + 4.385007079690695, + 4.27054800093174, + 4.29109763354063, + 4.3283067643642426, + 4.387585911899805, + 4.554733633995056, + 4.218969028443098, + 4.23692911863327, + 4.199459217488766, + 4.188439343124628, + 4.1646393947303295, + 4.163888748735189, + 4.148499108850956, + 4.168839659541845, + 4.182358738034964, + 4.220948088914156, + 4.203279037028551, + 4.212860018014908, + 4.179148934781551, + 5.261235870420933, + 4.322628024965525, + 4.226937890052795, + 4.271380137652159, + 4.295617807656527, + 4.368997178971767, + 4.179839044809341, + 4.32658800855279, + 4.153389949351549, + 4.183720331639051, + 4.175771027803421, + 4.184090066701174, + 4.180340096354485, + 4.168929066509008, + 4.20544994994998, + 4.196439404040575, + 4.17501013725996, + 4.21907939016819, + 4.173899069428444, + 4.17364900931716, + 4.800531081855297, + 4.256250336766243, + 4.196318797767162, + 4.206269048154354, + 4.26609767600894, + 4.19680867344141, + 4.181679338216782, + 4.1976189240813255, + 4.206499084830284, + 4.201918840408325, + 4.193319007754326, + 4.177698865532875, + 4.198320209980011, + 4.202079027891159, + 4.188710357993841, + 4.1898200288414955, + 4.210738930851221, + 4.301687702536583, + 4.178580362349749, + 4.1677202098071575, + 5.1077790558338165, + 4.265208262950182, + 4.233289044350386, + 4.230778198689222, + 4.247297998517752, + 4.266458097845316, + 4.179719835519791, + 4.194758832454681, + 4.18435875326395, + 4.17841924354434, + 4.202479962259531, + 4.194758832454681, + 4.175649024546146, + 4.19095903635025, + 4.173619672656059, + 4.1961888782680035, + 4.19740891084075, + 4.1889287531375885, + 4.20024897903204, + 4.166769329458475, + 4.676554352045059, + 4.214298911392689, + 4.243997856974602, + 4.369896836578846, + 4.170178901404142, + 4.181738942861557, + 4.146010149270296, + 4.154459107667208, + 4.2266990058124065, + 4.200188908725977, + 4.166060127317905, + 4.1492898017168045, + 4.149118904024363, + 4.141480196267366, + 4.169550258666277, + 4.171208944171667, + 4.272477701306343, + 4.109039902687073, + 4.120820201933384, + 4.131239373236895, + 4.657234065234661, + 4.238589201122522, + 4.163769073784351, + 4.191368818283081, + 4.173779860138893, + 4.185678903013468, + 4.177279770374298, + 4.1693588718771935, + 4.177678842097521, + 4.19370923191309, + 4.186979029327631, + 4.211569670587778, + 4.20919805765152, + 4.340586718171835, + 4.164520185440779, + 4.178259987384081, + 4.160250071436167, + 4.130559973418713, + 4.126850049942732, + 4.141090903431177, + 5.163866560906172, + 4.2995489202439785, + 4.349897149950266, + 4.2294692248106, + 4.2524198070168495, + 4.205988720059395, + 4.157999996095896, + 4.235447850078344, + 4.278137814253569, + 4.224609117954969, + 4.186389967799187, + 4.194909706711769, + 4.1789100505411625, + 4.208098631352186, + 4.204119089990854, + 4.190720152109861, + 4.192778840661049, + 4.185169003903866, + 4.193048924207687, + 4.208297934383154, + 4.636944737285376, + 4.248848184943199, + 4.194688983261585, + 4.369277041405439, + 4.227038938552141, + 4.274957813322544, + 4.195088986307383, + 4.195620305836201, + 4.179469309747219, + 4.159308969974518, + 4.1592298075556755, + 4.153511021286249, + 4.520695190876722, + 4.1839792393147945, + 4.188269842416048, + 4.164939280599356, + 4.1758292354643345, + 4.254597704857588, + 4.234518855810165, + 4.258438944816589, + 4.848361015319824, + 4.302976652979851, + 4.248528275638819, + 4.287447314709425, + 4.2885378934443, + 4.2227390222251415, + 4.1858600452542305, + 4.174559842795134, + 4.189838655292988, + 4.200069233775139, + 4.227018915116787, + 4.180978983640671, + 4.182909149676561, + 4.149619955569506, + 4.145760089159012, + 4.15097875520587, + 4.134719725698233, + 4.2968979105353355, + 4.174419678747654, + 4.176309797912836, + 5.2638272754848, + 4.344666842371225, + 4.242878407239914, + 4.245478194206953, + 4.263248294591904, + 4.215689841657877, + 4.196719266474247, + 4.188018850982189, + 4.166550002992153, + 4.16966900229454, + 4.193258937448263, + 4.190378822386265, + 4.198509268462658, + 4.1709099896252155, + 4.170340020209551, + 4.159328993409872, + 4.178138915449381, + 4.182679113000631, + 4.161809105426073, + 4.227608907967806, + 4.8239510506391525, + 4.292557947337627, + 4.251939244568348, + 4.262248054146767, + 4.276197869330645, + 4.370246548205614, + 4.189669154584408, + 4.177649039775133, + 4.171309061348438, + 4.205270204693079, + 4.2158691212534904, + 4.146370105445385, + 4.169038962572813, + 4.130270332098007, + 4.162830300629139, + 4.127579741179943, + 4.12011006847024, + 4.104979801923037, + 4.078499972820282, + 4.084540996700525, + 4.797633271664381, + 4.312606994062662, + 4.259288311004639, + 4.252027720212936, + 4.264487884938717, + 4.2319088242948055, + 4.206968937069178, + 4.1906991973519325, + 4.201419185847044, + 4.180948715656996, + 4.194349050521851, + 4.1755796410143375, + 4.192200023680925, + 4.206389654427767, + 4.192639142274857, + 4.206678830087185, + 4.20446926727891, + 4.204029683023691, + 4.213599022477865, + 4.2036790400743484, + 5.202176049351692, + 4.356608260422945, + 4.254189319908619, + 4.298557061702013, + 4.302619025111198, + 4.24265768378973, + 4.214238841086626, + 4.1879890486598015, + 4.205529112368822, + 4.208927974104881, + 4.20395890250802, + 4.194218665361404, + 4.194889217615128, + 4.181439056992531, + 4.209469072520733, + 4.194591194391251, + 4.179499112069607, + 4.213838838040829, + 4.177319351583719, + 4.216500092297792, + 4.758173134177923, + 4.288308322429657, + 4.250478930771351, + 4.258507862687111, + 4.426425788551569, + 4.22188825905323, + 4.195569083094597, + 4.22727782279253, + 4.202919080853462, + 4.2093489319086075, + 4.202140029519796, + 4.210948012769222, + 4.221798852086067, + 4.223909229040146, + 4.184568766504526, + 4.204309079796076, + 4.2015789076685905, + 4.1985888965427876, + 4.219598602503538, + 4.2016590014100075, + 4.8133209347724915, + 4.302407149225473, + 4.22656862065196, + 4.2473976500332355, + 4.273638129234314, + 4.238437861204147, + 4.176518879830837, + 4.1855392046272755, + 4.211708903312683, + 4.200598690658808, + 4.239488858729601, + 4.18495899066329, + 4.2310599237680435, + 4.231478087604046, + 4.151680041104555, + 4.16920892894268, + 4.229768645018339, + 6.258043926209211, + 5.190936382859945, + 5.007370375096798, + 5.3870538249611855, + 4.357476718723774, + 4.268887918442488, + 4.3439967557787895, + 4.3267980217933655, + 4.286398179829121, + 4.238857887685299, + 4.23872796818614, + 4.197278991341591, + 4.221979063004255, + 4.586915951222181, + 4.214908927679062, + 4.216598346829414, + 4.221608862280846, + 4.20816894620657, + 4.210468381643295, + 4.187998827546835, + 4.239307716488838, + 4.193929024040699, + 4.2031994089484215 + ], + "nodedup": [ + 3.2149120233953, + 2.7465270832180977, + 2.659908030182123, + 2.616018056869507, + 2.59265024214983, + 2.576019149273634, + 2.5778692215681076, + 2.4746302515268326, + 2.4629607796669006, + 2.421170938760042, + 2.465389668941498, + 2.45363125577569, + 2.4439003318548203, + 2.434161026030779, + 2.375380601733923, + 2.3944308049976826, + 2.4263812229037285, + 2.445280086249113, + 2.4561807513237, + 2.4362001568078995, + 2.7647162787616253, + 2.6767076924443245, + 2.477169968187809, + 2.538659144192934, + 2.548349089920521, + 2.5031999684870243, + 2.470829989761114, + 2.458381000906229, + 2.458060160279274, + 2.456250134855509, + 2.4298098869621754, + 2.455510199069977, + 2.4529299698770046, + 2.4443999864161015, + 2.4509713985025883, + 2.4480498395860195, + 2.4324310943484306, + 2.3980410769581795, + 2.444460056722164, + 2.4548107758164406, + 3.199382219463587, + 2.6891566812992096, + 2.5941291823983192, + 2.5906478986144066, + 2.577028702944517, + 2.4778787046670914, + 2.4682600051164627, + 2.4746698327362537, + 2.451741136610508, + 2.4473508819937706, + 2.4181902408599854, + 2.4225208908319473, + 2.4370700120925903, + 2.465431112796068, + 2.4465899914503098, + 2.43888096883893, + 2.4377298541367054, + 2.418000716716051, + 2.4569910019636154, + 2.4396697990596294, + 2.9100547544658184, + 2.6030177250504494, + 2.575039863586426, + 2.5543589144945145, + 2.57631903514266, + 2.533499151468277, + 2.468099817633629, + 2.457519993185997, + 2.4419398978352547, + 2.4211122654378414, + 2.4671396240592003, + 2.452810760587454, + 2.4497201666235924, + 2.452460117638111, + 2.387651242315769, + 2.388171385973692, + 2.447651233524084, + 2.4226908572018147, + 2.4286299012601376, + 2.425180282443762, + 2.7284971438348293, + 2.4158312007784843, + 2.4877707473933697, + 2.503498923033476, + 2.4950001388788223, + 2.482319250702858, + 2.498059067875147, + 2.459330018609762, + 2.4592201225459576, + 2.434640657156706, + 2.4421196430921555, + 2.460121177136898, + 2.4177399463951588, + 2.427081111818552, + 2.4307500571012497, + 2.3803510703146458, + 2.4330122396349907, + 2.421270590275526, + 2.4187201634049416, + 2.435090020298958, + 3.2817008905112743, + 2.622507978230715, + 2.5546997785568237, + 2.5920490734279156, + 2.5455988943576813, + 2.5242390111088753, + 2.486960031092167, + 2.4675698950886726, + 2.469128929078579, + 2.4194419384002686, + 2.4572000838816166, + 2.465318888425827, + 2.4726497940719128, + 2.4519101716578007, + 2.572139259427786, + 2.3943400010466576, + 2.432451117783785, + 2.606709022074938, + 2.4055996909737587, + 2.4072621017694473, + 2.920063678175211, + 2.5685103610157967, + 2.5284490548074245, + 2.5104586966335773, + 2.549549099057913, + 2.51519912853837, + 2.447760198265314, + 2.421109937131405, + 2.4297903291881084, + 2.452850341796875, + 2.436170354485512, + 2.424791920930147, + 2.415910828858614, + 2.4416898377239704, + 2.465010154992342, + 2.461089752614498, + 2.445600926876068, + 2.429420128464699, + 2.446369733661413, + 2.4617197923362255, + 2.6989681646227837, + 2.4755289778113365, + 2.470341045409441, + 2.4387710727751255, + 2.4854191578924656, + 2.4373303167521954, + 2.4450598284602165, + 2.4428218603134155, + 2.412849571555853, + 2.4677403271198273, + 2.4959202855825424, + 2.429880201816559, + 2.3988508619368076, + 2.446940168738365, + 2.41165142506361, + 2.4107610806822777, + 2.362100873142481, + 2.4128411896526814, + 2.4119820445775986, + 2.381781116127968, + 3.095742780715227, + 2.5318986736238003, + 2.4807299487292767, + 2.4689901620149612, + 2.54100002348423, + 2.469959668815136, + 2.371501177549362, + 2.424160949885845, + 2.4203909561038017, + 2.4181408807635307, + 2.383541315793991, + 2.415730617940426, + 2.4223621003329754, + 2.3847511038184166, + 2.383770886808634, + 2.4337610229849815, + 2.4337107315659523, + 2.3930510506033897, + 2.387551125138998, + 2.4070399813354015, + 2.8574750758707523, + 2.6693781837821007, + 2.5021187029778957, + 2.5139199569821358, + 2.4990197271108627, + 2.4931300431489944, + 2.4062907323241234, + 2.45981989428401, + 2.454850822687149, + 2.433929592370987, + 2.4272799491882324, + 2.4365996941924095, + 2.427580300718546, + 2.413230948150158, + 2.407220657914877, + 2.376941032707691, + 2.4117217399179935, + 2.406409941613674, + 2.397360745817423, + 2.3904419504106045, + 2.6111979968845844, + 2.4354010820388794, + 2.434039954096079, + 2.391230780631304, + 2.4327910505235195, + 2.4423100985586643, + 2.434779889881611, + 2.5767283514142036, + 2.4055908434093, + 2.440440934151411, + 2.448759973049164, + 2.4482901208102703, + 2.4115699343383312, + 2.414329908788204, + 2.435920760035515, + 2.449030987918377, + 2.4309400469064713, + 2.411460969597101, + 2.4243509396910667, + 2.4301200173795223, + 3.150682896375656, + 2.6078480295836926, + 2.5856192223727703, + 2.593898680061102, + 2.5469791144132614, + 2.4822489358484745, + 2.4226009845733643, + 2.4581397883594036, + 2.562479116022587, + 2.4460898712277412, + 2.4085212498903275, + 2.4294108152389526, + 2.5643878616392612, + 2.4262708611786366, + 2.3970818147063255, + 2.4132695980370045, + 2.410629764199257, + 2.3846509866416454, + 2.382041420787573, + 2.4211802519857883, + 2.955433912575245, + 2.6183780282735825, + 2.562067937105894, + 2.5544287636876106, + 2.54030991345644, + 2.4951486848294735, + 2.4352609179913998, + 2.442929893732071, + 2.436591312289238, + 2.4190316908061504, + 2.4453396908938885, + 2.4251509457826614, + 2.455450128763914, + 2.4435902014374733, + 2.4494309909641743, + 2.415949944406748, + 2.4692402221262455, + 2.466329839080572, + 2.4405010044574738, + 2.43357103317976, + 11.197404004633427, + 3.0636130832135677, + 3.0786432325839996, + 2.80973594635725, + 2.7833771891891956, + 2.7228761464357376, + 2.7241981588304043, + 2.647886984050274, + 2.612947952002287, + 2.6028878055512905, + 2.6028999127447605, + 2.566718962043524, + 2.9600937850773335, + 2.627718262374401, + 2.5824690237641335, + 2.560459077358246, + 2.5780880823731422, + 2.767987083643675, + 2.5592087768018246, + 2.549809869378805, + 3.1548719853162766, + 2.5905389338731766, + 2.5156987830996513, + 2.540889196097851, + 2.5544888339936733, + 2.5138300843536854, + 2.4740900844335556, + 2.449159976094961, + 2.4514002725481987, + 2.4650301784276962, + 2.4730199947953224, + 2.6380782946944237, + 2.44757067412138, + 2.3987609893083572, + 2.419070340692997, + 2.438171301037073, + 2.4370402097702026, + 2.446472179144621, + 2.4110707454383373, + 2.4380898103117943, + 2.952274866402149, + 2.6089977473020554, + 2.743266988545656, + 2.5954577140510082, + 2.5653797201812267, + 2.512028906494379, + 2.450329717248678, + 2.440510783344507, + 2.4611903354525566, + 2.4613109417259693, + 2.459439914673567, + 2.414889633655548, + 2.420600038021803, + 2.4586101062595844, + 2.4697408080101013, + 2.457419876009226, + 2.430019900202751, + 2.460230141878128, + 2.447269856929779, + 2.460270654410124, + 2.74858670309186, + 2.487539779394865, + 2.4236110039055347, + 2.4733999744057655, + 2.485500182956457, + 2.452841028571129, + 2.413129899650812, + 2.4066311307251453, + 2.443131059408188, + 2.4308613501489162, + 2.3893509060144424, + 2.4186009541153908, + 2.4378811940550804, + 2.422790043056011, + 2.4033309891819954, + 2.448469866067171, + 2.4454211816191673, + 2.4242899380624294, + 2.4056206457316875, + 2.4226722307503223, + 3.233421128243208, + 2.6346370577812195, + 2.5947997346520424, + 2.5708191096782684, + 2.5821789167821407, + 2.52104876562953, + 2.4676299653947353, + 2.447680104523897, + 2.4639000184834003, + 2.604409120976925, + 2.463070210069418, + 2.452841028571129, + 2.516628708690405, + 2.448219805955887, + 2.418551128357649, + 2.431019674986601, + 2.433840185403824, + 2.4065696634352207, + 2.3589320480823517, + 2.4396111257374287, + 3.7171649746596813, + 3.0435537919402122, + 2.948054112493992, + 2.8619347140192986, + 2.8001461178064346, + 2.711595967411995, + 2.6252088136970997, + 2.630678005516529, + 2.583638299256563, + 2.5400491431355476, + 2.513608895242214, + 2.478000707924366, + 2.750616054981947, + 2.4433606304228306, + 2.4875099770724773, + 2.45981989428401, + 2.470879815518856, + 2.4599097669124603, + 2.491279970854521, + 2.4736300110816956, + 2.754055894911289, + 2.5064791552722454, + 2.4951091036200523, + 2.5125090032815933, + 2.513039391487837, + 2.515119034796953, + 2.4537909775972366, + 2.4957600980997086, + 2.8896359726786613, + 2.4668597616255283, + 2.490091137588024, + 2.892695367336273, + 2.564889844506979, + 2.428739797323942, + 2.4873800575733185, + 2.4878699332475662, + 2.47789965942502, + 2.4810307659208775, + 2.4546701461076736, + 2.3905611597001553 + ], + "library": [ + 2.829646226018667, + 2.475820016115904, + 2.4489001370966434, + 2.4172402918338776, + 2.4577099829912186, + 2.4175820872187614, + 2.374241128563881, + 2.33417097479105, + 2.3699114099144936, + 2.379270736128092, + 2.376351971179247, + 2.2929422557353973, + 2.383200917392969, + 2.3668217472732067, + 2.3453119210898876, + 2.310402225703001, + 2.3539126850664616, + 2.337261103093624, + 2.3149517364799976, + 2.3537809029221535, + 2.6750178076326847, + 2.4892198853194714, + 2.448909915983677, + 2.459361217916012, + 2.452739980071783, + 2.3973206989467144, + 2.394320908933878, + 2.377190627157688, + 2.3885220289230347, + 2.325851935893297, + 2.3539410904049873, + 2.375712152570486, + 2.3686913773417473, + 2.3240619339048862, + 2.3373919539153576, + 2.374510746449232, + 2.394170965999365, + 2.362252213060856, + 2.334391698241234, + 2.3817820474505424, + 2.8030360117554665, + 2.5382591411471367, + 2.4727596901357174, + 2.470680046826601, + 2.481719944626093, + 2.455570735037327, + 2.4060308933258057, + 2.3848707787692547, + 2.3529408499598503, + 2.368181012570858, + 2.3839217610657215, + 2.3860218934714794, + 2.352790907025337, + 2.328210975974798, + 2.3838309571146965, + 2.42178188636899, + 2.3758108727633953, + 2.3373113945126534, + 2.3910021409392357, + 2.37291119992733, + 2.8840559534728527, + 2.47292872518301, + 2.4218610487878323, + 2.556238789111376, + 2.4582799524068832, + 2.5755800306797028, + 2.3568510077893734, + 2.3879921063780785, + 2.3906813003122807, + 2.3681805469095707, + 2.3156022652983665, + 2.5331489741802216, + 2.351311966776848, + 2.353610936552286, + 2.3491811007261276, + 2.282812260091305, + 2.3659910075366497, + 2.3635621182620525, + 2.3647318594157696, + 2.295232843607664, + 2.58469907566905, + 2.4121208116412163, + 2.3356620222330093, + 2.414681948721409, + 2.408680971711874, + 2.4029510095715523, + 2.3544211871922016, + 2.327981870621443, + 2.3705209605395794, + 2.366060856729746, + 2.5400989688932896, + 2.312303055077791, + 2.358210738748312, + 2.3526917211711407, + 2.453859895467758, + 2.3199720308184624, + 2.3599318228662014, + 2.367180772125721, + 2.3619718849658966, + 2.2733337245881557, + 2.8177257627248764, + 2.5574080646038055, + 2.547069452702999, + 2.6520867832005024, + 3.9101033471524715, + 2.9948437586426735, + 2.9069650918245316, + 2.938173245638609, + 2.968074753880501, + 2.645778004080057, + 2.4033719673752785, + 2.350702416151762, + 2.3937509395182133, + 2.3810709826648235, + 2.3328308016061783, + 2.364601008594036, + 2.3639011196792126, + 2.280562184751034, + 2.3527718149125576, + 2.346911933273077, + 3.0069430358707905, + 2.4621100164949894, + 2.4323700927197933, + 2.4327109567821026, + 2.3793019354343414, + 2.422659657895565, + 2.379980869591236, + 2.3485911078751087, + 2.370710950344801, + 2.3228111676871777, + 2.3450320586562157, + 2.3232619278132915, + 2.341811079531908, + 2.347382251173258, + 2.335492055863142, + 2.3575210943818092, + 2.370220609009266, + 2.3393621668219566, + 2.3361211642622948, + 2.3229122161865234, + 2.6210490614175797, + 2.343961037695408, + 2.3561418056488037, + 2.377572003751993, + 2.3256810382008553, + 2.3402119986712933, + 2.347551751881838, + 2.2948822006583214, + 2.3358319886028767, + 2.3441030643880367, + 2.3114709183573723, + 2.33736215159297, + 2.345453016459942, + 2.3347707465291023, + 2.816285938024521, + 2.317790873348713, + 2.313982229679823, + 2.2539920173585415, + 2.3061917163431644, + 2.3029623553156853, + 2.922195941209793, + 2.497950103133917, + 2.443131059408188, + 2.4417201057076454, + 2.4474402889609337, + 2.385071013122797, + 2.3418418131768703, + 2.379070967435837, + 2.361161634325981, + 2.3163319565355778, + 2.346741035580635, + 2.343282103538513, + 2.311471849679947, + 2.326302230358124, + 2.4852100759744644, + 2.28393217548728, + 2.353641204535961, + 2.347772940993309, + 2.3133321665227413, + 2.3323409259319305, + 2.924974076449871, + 2.3559918627142906, + 2.3698010481894016, + 2.3642610758543015, + 2.333661075681448, + 2.3566018790006638, + 2.3338920436799526, + 2.2620828822255135, + 2.3113619536161423, + 2.34909076243639, + 2.29825172573328, + 2.3122518323361874, + 2.3140222765505314, + 2.330322749912739, + 2.317652106285095, + 2.2873119451105595, + 2.323612105101347, + 2.3361817002296448, + 2.3177117109298706, + 2.316052094101906, + 2.63177789747715, + 2.400890924036503, + 2.357961144298315, + 2.3641311563551426, + 2.364891115576029, + 2.349081914871931, + 2.344000618904829, + 2.3496909998357296, + 2.310222014784813, + 2.349880989640951, + 2.340491861104965, + 2.301562111824751, + 2.3610410280525684, + 2.3332019336521626, + 2.3211920633912086, + 2.3398911580443382, + 2.3457719944417477, + 2.3555210791528225, + 2.3912708275020123, + 2.3555411025881767, + 2.9124938882887363, + 2.474880777299404, + 2.473310101777315, + 2.4756398051977158, + 2.4781888350844383, + 2.4128900840878487, + 2.3403731174767017, + 2.3570219054818153, + 2.3455522023141384, + 2.3177131079137325, + 2.3535010404884815, + 2.336472272872925, + 2.3045428097248077, + 2.3377910256385803, + 2.3248419165611267, + 2.3168018087744713, + 2.3525008000433445, + 2.478220034390688, + 2.300091553479433, + 2.335191238671541, + 2.9930430464446545, + 2.441649790853262, + 2.3894812911748886, + 2.356241922825575, + 2.375131007283926, + 2.370630856603384, + 2.330732997506857, + 2.345981076359749, + 2.345382235944271, + 2.3045032285153866, + 2.3382012732326984, + 2.3202518932521343, + 2.2860420867800713, + 2.5101187638938427, + 2.2935420274734497, + 2.2655329667031765, + 2.3231906816363335, + 4.352706950157881, + 2.608909271657467, + 4.89818025380373, + 3.2179211266338825, + 2.5227488949894905, + 2.516218926757574, + 2.456940244883299, + 2.4514198303222656, + 2.347281202673912, + 2.358651254326105, + 2.3532616905868053, + 2.2993418388068676, + 2.345642074942589, + 2.373061142861843, + 2.3022331297397614, + 2.328262198716402, + 2.3392909206449986, + 2.3087612353265285, + 2.3607807233929634, + 2.381180878728628, + 2.3598121479153633, + 2.331680618226528, + 2.341780811548233, + 2.9028556309640408, + 2.477348782122135, + 2.4694609455764294, + 2.4832100607454777, + 2.3962510749697685, + 2.3736110888421535, + 2.3182821460068226, + 2.291511744260788, + 2.3419219069182873, + 2.361500635743141, + 2.3062522523105145, + 2.3575108498334885, + 2.3696809075772762, + 2.328661736100912, + 2.3603509180247784, + 2.360621001571417, + 2.3234509862959385, + 2.3495620116591454, + 2.36192112788558, + 2.33122194185853, + 2.9944228008389473, + 2.484310884028673, + 2.426651306450367, + 2.422990743070841, + 2.4127098731696606, + 2.3830211721360683, + 2.3652310483157635, + 2.344252075999975, + 2.366481814533472, + 2.3681730963289738, + 2.3367516696453094, + 2.3678806610405445, + 2.3720022290945053, + 2.369350753724575, + 2.340931911021471, + 2.3832223378121853, + 2.3461920209228992, + 2.3279208689928055, + 2.457571215927601, + 2.358290832489729, + 2.68299737945199, + 2.442890778183937, + 2.4215811863541603, + 2.4028108455240726, + 2.3957816883921623, + 2.364190760999918, + 2.323511987924576, + 2.339143306016922, + 2.345970831811428, + 2.330611925572157, + 2.359562087804079, + 2.304601948708296, + 2.345332410186529, + 2.351492177695036, + 2.2826320491731167, + 2.352822106331587, + 2.358310855925083, + 2.327952068299055, + 2.356370911002159, + 2.3671817034482956, + 2.901594154536724, + 2.5093010626733303, + 2.478419803082943, + 2.4751899763941765, + 2.4244608357548714, + 2.395449671894312, + 2.3787617683410645, + 2.376710996031761, + 2.3403321392834187, + 2.370252273976803, + 2.376020886003971, + 2.321592066437006, + 2.3923106491565704, + 2.3929509334266186, + 2.345011103898287, + 2.3509529419243336, + 2.3933001793920994, + 2.34706187620759, + 2.3226221092045307, + 2.3418408818542957, + 3.0241040512919426, + 2.6082880795001984, + 2.4479608982801437, + 2.632556948810816, + 2.4525607004761696, + 2.6270379312336445, + 2.3419419303536415, + 2.4232198484241962, + 2.42615956813097, + 2.4122698232531548, + 2.335520926862955, + 2.404020167887211, + 2.419350203126669, + 2.412040252238512, + 2.315012738108635, + 2.3879408836364746, + 2.4204207584261894, + 2.3827413097023964, + 2.327761147171259, + 2.4149813689291477, + 2.660878002643585, + 2.450439613312483, + 2.3851008154451847, + 2.463419921696186, + 2.4027712643146515, + 2.445430029183626, + 2.4554599076509476, + 2.375541254878044, + 2.4199909530580044, + 2.317063044756651, + 2.408299595117569, + 2.408099826425314, + 2.3983316496014595, + 2.3182821460068226, + 2.422481309622526, + 2.4385801516473293, + 2.4123797193169594, + 2.337052021175623, + 2.4257698096334934, + 2.4286704137921333 + ] + }, + "warm_ms": { + "control": [ + 44.2147059366107, + 5.742589011788368, + 4.9163708463311195 + ], + "nodedup": [ + 7.881003897637129, + 3.4463386982679367, + 3.0485419556498528 + ], + "library": [ + 3.1702518463134766, + 3.0483026057481766, + 2.9014763422310352 + ] + }, + "stats": { + "control": { + "n": 400, + "median_ms": 4.2063293512910604, + "p10_ms": 4.1659480426460505, + "p90_ms": 4.373125173151493, + "min_ms": 4.078499972820282, + "max_ms": 6.258043926209211, + "mean_ms": 4.277803796576336 + }, + "nodedup": { + "n": 400, + "median_ms": 2.457309979945421, + "p10_ms": 2.4107479490339756, + "p90_ms": 2.660855045542121, + "min_ms": 2.3589320480823517, + "max_ms": 11.197404004633427, + "mean_ms": 2.534071335103363 + }, + "library": { + "n": 400, + "median_ms": 2.3644310422241688, + "p10_ms": 2.316007111221552, + "p90_ms": 2.533659990876913, + "min_ms": 2.2539920173585415, + "max_ms": 4.89818025380373, + "mean_ms": 2.4221775331534445 + } + }, + "ratio_control_over_nodedup": { + "ratio": 1.7117617987228808, + "ci90_low": 1.7085859566929815, + "ci90_high": 1.7157860021056888, + "bootstrap_samples": 2000 + }, + "ratio_library_over_nodedup": { + "ratio": 0.9622030030890465, + "ci90_low": 0.9595262607021897, + "ci90_high": 0.9652497378603349, + "bootstrap_samples": 2000 + }, + "ratio_control_over_library": { + "ratio": 1.779002760568673, + "ci90_low": 1.7749388144895955, + "ci90_high": 1.783542719213802, + "bootstrap_samples": 2000 + }, + "paired_round_ratio_control_over_nodedup": { + "median": 1.7152413176519277, + "p10": 1.6914325470071137, + "p90": 1.7293311448708317 + }, + "minimum_detectable_improvement": 0.04925366351587594, + "compile": { + "control": { + "lower_s": 45.05459647113457, + "compile_s": 52.66892455238849, + "first_call_s": 0.04210003977641463, + "trace_calls": 168, + "flops": 160392304.0, + "hlo_sort_count": 25, + "stablehlo_sort_count": 3, + "hlo_sort_shapes": [ + "(f64[276507]{0}, f64[276507]{0}, s64[276507]{0}, s32[276507]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0}, s32[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0}, s32[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0}, s32[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0}, s32[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0}, s32[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0}, s32[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0}, s32[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0}, s32[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0}, s32[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0}, s32[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0}, s32[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0}, s32[720]{0})" + ], + "hlo_sha256": "16a5c136e2d300ca", + "hlo_lines": 39039 + }, + "nodedup": { + "lower_s": 45.49785578297451, + "compile_s": 46.475710848812014, + "first_call_s": 0.027439048048108816, + "trace_calls": 168, + "flops": 120379264.0, + "hlo_sort_count": 12, + "stablehlo_sort_count": 1, + "hlo_sort_shapes": [ + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})" + ], + "hlo_sha256": "eafc1ce79859bce8", + "hlo_lines": 33668 + }, + "library": { + "lower_s": 44.357860029209405, + "compile_s": 3.6368276430293918, + "first_call_s": 0.02637743018567562, + "trace_calls": 168, + "flops": 120379264.0, + "hlo_sort_count": 12, + "stablehlo_sort_count": 1, + "hlo_sort_shapes": [ + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})" + ], + "hlo_sha256": "eafc1ce79859bce8", + "hlo_lines": 33668 + } + }, + "instances_compared": [ + [ + 0 + ], + [ + 1 + ], + [ + 2 + ], + [ + 3 + ], + [ + 4 + ], + [ + 5 + ], + [ + 6 + ], + [ + 7 + ], + [ + 8 + ], + [ + 9 + ], + [ + 10 + ], + [ + 11 + ], + [ + 12 + ], + [ + 13 + ], + [ + 14 + ], + [ + 15 + ] + ], + "values": { + "control": [ + 25.56012716672745, + 21.572496958393117, + 21.458564666727824, + 13.597236541730304, + 15.306220916729094, + 10.29320008339773, + 19.977444875061742, + 21.800361541728023, + 10.748929250057948, + 9.609606333397046, + 5.166246958397972, + 14.052965708392575, + 4.710517791725226, + 6.647366750058172, + 17.926663625058694, + 16.331611541724392 + ], + "nodedup": [ + 25.56012716672745, + 21.572496958393117, + 21.458564666727824, + 13.597236541730304, + 15.306220916729094, + 10.29320008339773, + 19.977444875061742, + 21.800361541728023, + 10.748929250057948, + 9.609606333397046, + 5.166246958397972, + 14.052965708392575, + 4.710517791725226, + 6.647366750058172, + 17.926663625058694, + 16.331611541724392 + ], + "library": [ + 25.56012716672745, + 21.572496958393117, + 21.458564666727824, + 13.597236541730304, + 15.306220916729094, + 10.29320008339773, + 19.977444875061742, + 21.800361541728023, + 10.748929250057948, + 9.609606333397046, + 5.166246958397972, + 14.052965708392575, + 4.710517791725226, + 6.647366750058172, + 17.926663625058694, + 16.331611541724392 + ] + }, + "deterministic_within_route": { + "control": true, + "nodedup": true, + "library": true + }, + "likelihood_gate": { + "control_vs_nodedup": { + "bit_identical": true, + "max_abs_delta": 0.0, + "max_rel_delta": 0.0, + "nan_pattern_equal": true + }, + "control_vs_library": { + "bit_identical": true, + "max_abs_delta": 0.0, + "max_rel_delta": 0.0, + "nan_pattern_equal": true + }, + "nodedup_vs_library": { + "bit_identical": true, + "max_abs_delta": 0.0, + "max_rel_delta": 0.0, + "nan_pattern_equal": true + } + }, + "fiducial_log_likelihood": { + "control": 25.56012716672745, + "nodedup": 25.56012716672745, + "library": 25.56012716672745 + } + }, + "cluster_plain": { + "label": "cluster_plain", + "batch": null, + "n_rounds": 20, + "n_calls_per_round": 20, + "n_warm": 3, + "route_order": "round-robin, start rotated each round", + "per_call_ms": { + "control": [ + 4.793230909854174, + 4.2228479869663715, + 4.133820068091154, + 4.006002098321915, + 4.019690677523613, + 3.9464328438043594, + 3.9324117824435234, + 3.928262274712324, + 3.91303189098835, + 3.9219926111400127, + 3.87094309553504, + 3.929173108190298, + 3.892274107784033, + 3.9146929048001766, + 3.89585318043828, + 3.9054430089890957, + 3.918363247066736, + 3.8853315636515617, + 3.894082736223936, + 3.759424202144146, + 4.451615735888481, + 3.957112319767475, + 3.89278307557106, + 3.8852631114423275, + 3.8872621953487396, + 3.8167941384017467, + 3.8827727548778057, + 3.8809929974377155, + 3.85499419644475, + 3.8582528941333294, + 3.8365130312740803, + 3.848444204777479, + 3.8787731900811195, + 3.8416129536926746, + 3.7969639524817467, + 3.827874083071947, + 3.8890428841114044, + 3.84624395519495, + 3.781723789870739, + 3.833963070064783, + 4.300818312913179, + 3.9664520882070065, + 3.912723157554865, + 3.9632520638406277, + 3.92598332837224, + 3.8785929791629314, + 3.8992329500615597, + 3.8776728324592113, + 3.833673894405365, + 4.090889822691679, + 3.8528931327164173, + 3.86423384770751, + 3.855274058878422, + 3.8390038534998894, + 3.801763989031315, + 3.8649728521704674, + 3.8300128653645515, + 3.8009141571819782, + 3.8227741606533527, + 4.2524877935647964, + 4.159269854426384, + 3.8468842394649982, + 3.8637141697108746, + 3.927613142877817, + 3.8976119831204414, + 3.9012827910482883, + 3.806403838098049, + 3.850333858281374, + 3.8396241143345833, + 3.817584365606308, + 3.835884388536215, + 3.82670434191823, + 3.825632855296135, + 3.7830639630556107, + 3.8507836870849133, + 3.866693004965782, + 3.9590620435774326, + 3.8148644380271435, + 3.8256533443927765, + 3.7863138131797314, + 4.593234974890947, + 3.9664916694164276, + 3.8576829247176647, + 4.20024897903204, + 3.8875830359756947, + 3.864703234285116, + 3.860842902213335, + 3.851091954857111, + 3.818912897258997, + 3.858002834022045, + 3.8446132093667984, + 3.8155647926032543, + 4.320708103477955, + 4.389126785099506, + 3.7663839757442474, + 3.840194083750248, + 3.841593861579895, + 3.796712961047888, + 3.7720343098044395, + 3.850674256682396, + 4.060940816998482, + 3.855194430798292, + 3.86607414111495, + 3.850323148071766, + 3.8612037897109985, + 3.8691330701112747, + 3.8468241691589355, + 3.9416118524968624, + 3.836043644696474, + 3.819273319095373, + 3.896513022482395, + 4.221219103783369, + 3.870912827551365, + 3.8405638188123703, + 3.7995129823684692, + 4.3517169542610645, + 3.791684750467539, + 3.8732830435037613, + 3.8604228757321835, + 3.816933836787939, + 4.218138754367828, + 4.177199210971594, + 4.197369795292616, + 3.876532893627882, + 3.928971942514181, + 3.912851680070162, + 3.8494127802550793, + 3.806073684245348, + 3.857262898236513, + 3.8475231267511845, + 3.8603530265390873, + 3.810734022408724, + 3.853864036500454, + 3.8503939285874367, + 3.8492842577397823, + 3.7988130934536457, + 3.903243225067854, + 3.859052900224924, + 3.795083612203598, + 3.853132948279381, + 4.4070761650800705, + 3.9747320115566254, + 3.93303157761693, + 3.9411322213709354, + 3.9855316281318665, + 3.8673230446875095, + 3.879631869494915, + 3.879933152347803, + 3.8707531057298183, + 3.9871009066700935, + 4.21109888702631, + 3.865414299070835, + 3.8604331202805042, + 3.8207732141017914, + 3.8612429052591324, + 3.8356143049895763, + 3.8911122828722, + 3.8926228880882263, + 3.9492719806730747, + 3.7847538478672504, + 4.185670055449009, + 3.8749631494283676, + 3.873503301292658, + 3.913253080099821, + 3.8583637215197086, + 3.99005226790905, + 3.894062712788582, + 3.8616927340626717, + 3.8482127711176872, + 3.8596931844949722, + 3.8012536242604256, + 3.8553630001842976, + 3.8683931343257427, + 3.836692776530981, + 3.866033162921667, + 3.8480740040540695, + 3.851973917335272, + 3.8458933122456074, + 3.862383309751749, + 3.904541954398155, + 4.153700079768896, + 3.8758241571485996, + 3.814613912254572, + 3.8437130860984325, + 3.859393298625946, + 3.8366629742085934, + 3.7794839590787888, + 3.8490728475153446, + 3.828054293990135, + 3.8550528697669506, + 3.843284212052822, + 3.8217040710151196, + 3.8305330090224743, + 3.7652147002518177, + 3.845103085041046, + 3.8334238342940807, + 3.815833944827318, + 3.8272240199148655, + 3.8324729539453983, + 3.8214540109038353, + 4.52494528144598, + 3.964572213590145, + 3.8925427943468094, + 4.430525936186314, + 3.8973428308963776, + 3.828993998467922, + 3.906702157109976, + 3.876723349094391, + 3.8701831363141537, + 3.787983674556017, + 4.044850822538137, + 3.8349716924130917, + 3.772465046495199, + 3.770724404603243, + 3.87510284781456, + 4.113500006496906, + 3.816374111920595, + 3.806223627179861, + 3.8492530584335327, + 3.8526728749275208, + 4.110231995582581, + 3.9519518613815308, + 3.9265332743525505, + 3.905413206666708, + 3.91246285289526, + 3.903821110725403, + 3.856783267110586, + 3.844813909381628, + 3.848693799227476, + 3.8117137737572193, + 3.8555930368602276, + 3.8360939361155033, + 3.850341774523258, + 3.799453843384981, + 3.8052727468311787, + 3.958952147513628, + 3.857722971588373, + 3.8597136735916138, + 3.876992966979742, + 3.8528828881680965, + 4.113699775189161, + 3.865692764520645, + 3.8628829643130302, + 3.8325339555740356, + 3.848303109407425, + 3.851742949336767, + 3.893231973052025, + 3.8379039615392685, + 3.857433795928955, + 3.8484539836645126, + 3.869202919304371, + 3.8505126722157, + 3.8443920202553272, + 3.7861037999391556, + 3.8367239758372307, + 3.815124277025461, + 3.8135740906000137, + 3.783104009926319, + 3.8358629681169987, + 3.8212831132113934, + 4.434055648744106, + 3.9785318076610565, + 3.9323819801211357, + 3.9911018684506416, + 3.9644017815589905, + 3.8339728489518166, + 3.8871830329298973, + 3.87955317273736, + 3.8207536563277245, + 3.908822312951088, + 4.002180881798267, + 3.8626529276371, + 3.85146401822567, + 3.841032739728689, + 3.7884432822465897, + 3.87817295268178, + 3.9001619443297386, + 3.7834239192306995, + 3.837503958493471, + 3.8298838771879673, + 4.061480984091759, + 3.9003128185868263, + 3.8774129934608936, + 3.8121240213513374, + 3.8800733163952827, + 3.8599632680416107, + 3.864162601530552, + 3.870042972266674, + 3.8507641293108463, + 3.843922633677721, + 3.8121938705444336, + 3.8709230720996857, + 3.8500428199768066, + 3.810754045844078, + 4.394166171550751, + 3.9194030687212944, + 4.066181369125843, + 3.844903316348791, + 3.849813248962164, + 3.7823738530278206, + 4.19924920424819, + 3.909702878445387, + 4.425746854394674, + 3.8740625604987144, + 3.8903430104255676, + 3.899963106960058, + 3.906582947820425, + 3.856752999126911, + 3.8463929668068886, + 3.81241412833333, + 3.846233244985342, + 3.8426630198955536, + 3.805314190685749, + 3.85168194770813, + 3.9310622960329056, + 3.9966413751244545, + 4.030000884085894, + 3.8850228302180767, + 3.834413830190897, + 3.804624080657959, + 4.44910628721118, + 3.9535118266940117, + 3.9591221138834953, + 3.9214822463691235, + 3.9481623098254204, + 3.801044076681137, + 3.884261939674616, + 3.968121949583292, + 3.9474419318139553, + 4.199079237878323, + 3.828472923487425, + 3.809734247624874, + 4.297048319131136, + 3.8125733844935894, + 3.8460842333734035, + 3.8205827586352825, + 3.807944245636463, + 3.7708147428929806, + 3.8461326621472836, + 3.8046040572226048, + 4.108699969947338, + 3.864603117108345, + 3.860803321003914, + 3.9056832902133465, + 3.8767633959650993, + 3.8439338095486164, + 3.801683895289898, + 3.842004109174013, + 3.85677395388484, + 3.926263190805912, + 3.894592635333538, + 3.836974035948515, + 3.77843389287591, + 3.839443903416395, + 3.8687926717102528, + 3.7819738499820232, + 3.8294331170618534, + 3.821633756160736, + 3.8303928449749947, + 3.771834075450897, + 4.127210006117821, + 3.941821865737438, + 3.8703233003616333, + 3.8604228757321835, + 3.9108828641474247, + 3.9188219234347343, + 4.279987886548042, + 4.044240806251764, + 3.8360939361155033, + 3.890282940119505, + 3.8961321115493774, + 3.884783014655113, + 3.859512973576784, + 3.9097419939935207, + 3.8662729784846306, + 3.8254735991358757, + 3.8899430073797703, + 3.77459404990077, + 3.7393849343061447, + 3.7226248532533646, + 4.481385927647352, + 4.104339983314276, + 3.798403777182102, + 3.8859639316797256, + 3.876322880387306, + 3.798743709921837, + 3.807373810559511, + 4.145629703998566, + 3.9972015656530857, + 3.7723039276897907, + 3.7981937639415264, + 3.7653339095413685, + 3.8335826247930527, + 3.74366482719779, + 3.732144832611084, + 3.8246437907218933, + 3.900952637195587, + 3.7409942597150803, + 3.7234053015708923, + 3.738545347005129 + ], + "nodedup": [ + 2.4863588623702526, + 2.1423851139843464, + 2.197453286498785, + 2.160583157092333, + 2.147204242646694, + 2.1064840257167816, + 2.098855096846819, + 2.0880051888525486, + 2.0967749878764153, + 2.092184964567423, + 2.0607346668839455, + 2.072715200483799, + 2.0733759738504887, + 2.1019536070525646, + 2.110433764755726, + 2.0907646976411343, + 2.0804149098694324, + 2.128013875335455, + 2.0872452296316624, + 2.0818947814404964, + 2.233013045042753, + 2.076835371553898, + 2.1263044327497482, + 2.1043550223112106, + 2.1299640648066998, + 2.116214018315077, + 2.0784949883818626, + 2.105644904077053, + 2.103164792060852, + 2.091905102133751, + 2.2061439231038094, + 2.078925259411335, + 2.078594174236059, + 2.0780949853360653, + 2.071965020149946, + 2.0823748782277107, + 2.0542358979582787, + 2.0902338437736034, + 2.093534916639328, + 2.0980453118681908, + 2.6894467882812023, + 2.168983221054077, + 2.1675429306924343, + 2.1710041910409927, + 2.14557396247983, + 2.156462986022234, + 2.113654278218746, + 2.125105354934931, + 2.143443562090397, + 2.1086554042994976, + 2.1341838873922825, + 2.0936443470418453, + 2.101954072713852, + 2.1049738861620426, + 2.085345331579447, + 2.123383805155754, + 2.0753047429025173, + 2.1138438023626804, + 2.112775109708309, + 2.1407739259302616, + 2.3528621532022953, + 2.1149138920009136, + 2.1126940846443176, + 2.1094949916005135, + 2.122343983501196, + 2.098844852298498, + 2.183763775974512, + 2.087535336613655, + 2.151274122297764, + 2.1199737675487995, + 2.0698849111795425, + 2.13266396895051, + 2.0971051417291164, + 2.0968448370695114, + 2.1013347432017326, + 2.079205121845007, + 2.0757848396897316, + 2.0738858729600906, + 2.093814779073, + 2.1110237576067448, + 2.3810919374227524, + 2.085144631564617, + 2.1175239235162735, + 2.106903586536646, + 2.152073197066784, + 2.1316739730536938, + 2.119594719260931, + 2.087665256112814, + 2.099074888974428, + 2.122934442013502, + 2.1027051843702793, + 2.0945537835359573, + 2.0880447700619698, + 2.1090637892484665, + 2.1073748357594013, + 2.1094749681651592, + 2.0868838764727116, + 2.094455063343048, + 2.093235030770302, + 2.16394430026412, + 2.594267949461937, + 2.169752959161997, + 2.1337750367820263, + 2.178753726184368, + 2.1564238704741, + 2.113805152475834, + 2.111553680151701, + 2.114183735102415, + 2.108034212142229, + 2.0944043062627316, + 2.097484190016985, + 2.0982250571250916, + 2.109333872795105, + 2.092184964567423, + 2.117765136063099, + 2.1132342517375946, + 2.121885307133198, + 2.1010348573327065, + 2.1059750579297543, + 2.0901840180158615, + 2.435159869492054, + 2.1585440263152122, + 2.141733653843403, + 2.1481839939951897, + 2.174444030970335, + 2.1540638990700245, + 2.133993897587061, + 2.1124249324202538, + 2.0876540802419186, + 2.0844750106334686, + 2.1108747459948063, + 2.0992159843444824, + 2.0964741706848145, + 2.0602750591933727, + 2.0813345909118652, + 2.1094740368425846, + 2.103094942867756, + 2.0821946673095226, + 2.0976238884031773, + 2.0767636597156525, + 2.2727120667696, + 2.1014539524912834, + 2.188763115555048, + 2.1495241671800613, + 2.1134139969944954, + 2.1269340068101883, + 2.101894933730364, + 2.101615071296692, + 2.0899148657917976, + 2.0958147943019867, + 2.116813790053129, + 2.1349037997424603, + 2.1069436334073544, + 2.088175155222416, + 2.110424917191267, + 2.10052402690053, + 2.0896843634545803, + 2.113614697009325, + 2.0952443592250347, + 2.099495381116867, + 2.6932167820632458, + 2.19673290848732, + 2.1688430570065975, + 2.192163374274969, + 2.155883703380823, + 2.109353896230459, + 2.10867403075099, + 2.0928452722728252, + 2.116155344992876, + 2.0946539007127285, + 2.1375343203544617, + 2.105054911226034, + 2.107545267790556, + 2.096754964441061, + 2.0701750181615353, + 2.0641349256038666, + 2.087474800646305, + 2.0988546311855316, + 2.1114950068295, + 2.0917151123285294, + 2.3316307924687862, + 2.242542803287506, + 2.1581342443823814, + 2.136955037713051, + 2.1136850118637085, + 2.090014982968569, + 2.08426546305418, + 2.077304758131504, + 2.1229940466582775, + 2.110494766384363, + 2.106364816427231, + 2.125153783708811, + 2.1026148460805416, + 2.0814849995076656, + 2.0832354202866554, + 2.0749648101627827, + 2.080203965306282, + 2.0977440290153027, + 2.112484071403742, + 2.0755846053361893, + 2.2494420409202576, + 2.08727503195405, + 2.0874650217592716, + 2.085055224597454, + 2.0891749300062656, + 2.08738399669528, + 2.084975130856037, + 2.0965938456356525, + 2.085775136947632, + 2.0831148140132427, + 2.1014236845076084, + 2.0630252547562122, + 2.080765087157488, + 2.095253672450781, + 2.077484969049692, + 2.0762640051543713, + 2.0920848473906517, + 2.122053876519203, + 2.0781648345291615, + 2.0839241333305836, + 2.6382477954030037, + 2.1575242280960083, + 2.199993934482336, + 2.1579740568995476, + 2.1659736521542072, + 2.1292553283274174, + 2.128954976797104, + 2.11602495983243, + 2.132053952664137, + 2.1157641895115376, + 2.1195239387452602, + 2.1042642183601856, + 2.109045162796974, + 2.0914440974593163, + 2.119764219969511, + 2.0977850072085857, + 2.098985016345978, + 2.066994085907936, + 2.099345438182354, + 2.099574077874422, + 2.319422084838152, + 2.1210238337516785, + 2.0807250402867794, + 2.1233251318335533, + 2.1626739762723446, + 2.1490640938282013, + 2.1032337099313736, + 2.089603804051876, + 2.1003750152885914, + 2.085343934595585, + 2.0993640646338463, + 2.0753550343215466, + 2.058505080640316, + 2.0879250951111317, + 2.092285081744194, + 2.0857849158346653, + 2.092244103550911, + 2.0812549628317356, + 2.1279738284647465, + 2.081194892525673, + 2.2354628890752792, + 2.120634075254202, + 2.1231453865766525, + 2.109964843839407, + 2.2453628480434418, + 2.232532948255539, + 2.071675378829241, + 2.120625227689743, + 2.1069752983748913, + 2.112165093421936, + 2.1110540255904198, + 2.0589050836861134, + 2.122105099260807, + 2.059275284409523, + 2.1056653931736946, + 2.0429957658052444, + 2.0896648056805134, + 2.130845095962286, + 2.108014654368162, + 2.108645159751177, + 2.651296555995941, + 2.2156434133648872, + 2.132503781467676, + 2.147663850337267, + 2.117563970386982, + 2.1107839420437813, + 2.09630373865366, + 2.11682403460145, + 2.1027536131441593, + 2.1177339367568493, + 2.1356442011892796, + 2.1140840835869312, + 2.1148240193724632, + 2.289752010256052, + 2.1171951666474342, + 2.1428437903523445, + 2.1286937408149242, + 2.1115941926836967, + 2.1108053624629974, + 2.11636396124959, + 2.397230826318264, + 2.140225376933813, + 2.135113812983036, + 2.1203537471592426, + 2.1321242675185204, + 2.1395240910351276, + 2.1455329842865467, + 2.1066549234092236, + 2.1294038742780685, + 2.1143644116818905, + 2.100624144077301, + 2.1015838719904423, + 2.0910250023007393, + 2.1308441646397114, + 2.1493639796972275, + 2.1169441752135754, + 2.122185193002224, + 2.1286141127347946, + 2.0993039943277836, + 2.1048239432275295, + 2.267412841320038, + 2.118475269526243, + 2.085465006530285, + 2.1183639764785767, + 2.0944448187947273, + 2.093304879963398, + 2.0886356942355633, + 2.0881840027868748, + 2.095254138112068, + 2.0930850878357887, + 2.1015736274421215, + 2.155634108930826, + 2.10457481443882, + 2.098524011671543, + 2.078304998576641, + 2.0886543206870556, + 2.092254813760519, + 2.075803931802511, + 2.0920950919389725, + 2.1533039398491383, + 2.5787297636270523, + 2.2001140750944614, + 2.132943831384182, + 2.1548341028392315, + 2.1376539953052998, + 2.1518240682780743, + 2.129285130649805, + 2.115075010806322, + 2.1153646521270275, + 2.0909151062369347, + 2.1142452023923397, + 2.1878830157220364, + 2.1394039504230022, + 2.1161548793315887, + 2.109325025230646, + 2.0823152735829353, + 2.0886240527033806, + 2.096854615956545, + 2.0910347811877728, + 2.0972047932446003, + 2.3377519100904465, + 2.0741550251841545, + 2.105464693158865, + 2.0667347125709057, + 2.1008760668337345, + 2.078404650092125, + 2.0805737003684044, + 2.0477650687098503, + 2.0805448293685913, + 2.1070940420031548, + 2.0294059067964554, + 2.0844638347625732, + 2.0454651676118374, + 2.0916052162647247, + 2.0144148729741573, + 1.9930656999349594, + 2.0806249231100082, + 2.233153209090233, + 2.0961547270417213, + 2.0209546200931072, + 2.175773959606886, + 2.088394947350025, + 2.028255257755518, + 2.0735450088977814, + 2.051275223493576, + 2.0521250553429127, + 2.0859139040112495, + 2.0305649377405643, + 2.076535951346159, + 2.051765099167824, + 2.0810049027204514, + 2.04420555382967, + 2.053955104202032, + 2.0913551561534405, + 2.039124723523855, + 2.0630452781915665, + 2.0597251132130623, + 2.088475041091442, + 2.082115039229393, + 2.042145933955908 + ], + "library": [ + 2.3886319249868393, + 2.017335966229439, + 2.074555028229952, + 2.0621148869395256, + 2.0319451577961445, + 2.035296056419611, + 1.997204963117838, + 2.032076008617878, + 2.0195646211504936, + 2.0376350730657578, + 2.0270361565053463, + 2.004886046051979, + 2.0338851027190685, + 2.0127356983721256, + 2.0178849808871746, + 1.9686263985931873, + 1.997196115553379, + 2.0554354414343834, + 2.038915641605854, + 2.0745950751006603, + 2.1187439560890198, + 2.035146113485098, + 2.045365981757641, + 1.987234689295292, + 2.04684492200613, + 2.0170346833765507, + 2.020906191319227, + 2.0514861680567265, + 2.006326336413622, + 2.0354348234832287, + 2.0111161284148693, + 2.0274356938898563, + 2.0335959270596504, + 2.015485893934965, + 1.9964859820902348, + 1.9853860139846802, + 2.070224843919277, + 2.0369947887957096, + 1.9803359173238277, + 1.9984859973192215, + 2.2845319472253323, + 2.0911837927997112, + 2.034864854067564, + 2.108125016093254, + 2.1178750321269035, + 2.1002450957894325, + 2.0762747153639793, + 2.055375836789608, + 2.0937947556376457, + 2.0857746712863445, + 2.0571951754391193, + 2.0873858593404293, + 2.083985134959221, + 2.074094023555517, + 2.007346134632826, + 2.0531159825623035, + 2.0534349605441093, + 2.020115964114666, + 2.040944993495941, + 2.0213047973811626, + 2.4794810451567173, + 2.0660250447690487, + 2.066474873572588, + 2.060965169221163, + 2.0991042256355286, + 2.0401859655976295, + 2.036125399172306, + 2.0110555924475193, + 2.0398972555994987, + 2.0331554114818573, + 2.034174744039774, + 2.0283949561417103, + 2.0435950718820095, + 2.0247753709554672, + 2.0680748857557774, + 2.0819250494241714, + 2.043195068836212, + 2.042745240032673, + 1.9966461695730686, + 2.0578247494995594, + 2.2022631019353867, + 2.0258459262549877, + 2.04629497602582, + 2.0366949029266834, + 2.066114917397499, + 2.028854563832283, + 2.0477748475968838, + 2.0852950401604176, + 2.0715449936687946, + 2.076753880828619, + 2.0599649287760258, + 2.055615186691284, + 2.0619849674403667, + 2.0866948179900646, + 2.0651747472584248, + 2.0978241227567196, + 2.052625175565481, + 2.0408350974321365, + 2.0651454105973244, + 2.049714792519808, + 2.328692004084587, + 2.076844684779644, + 2.0694248378276825, + 2.075045369565487, + 2.0700450986623764, + 2.0331251434981823, + 2.0350851118564606, + 2.0598447881639004, + 2.0274948328733444, + 2.06951517611742, + 2.0288852974772453, + 2.0451750606298447, + 2.113373950123787, + 2.0705549977719784, + 2.0201546140015125, + 2.0151562057435513, + 2.043086104094982, + 2.0473748445510864, + 2.038045320659876, + 2.0120451226830482, + 2.4370108731091022, + 2.0804349333047867, + 2.051524817943573, + 2.1899640560150146, + 2.0461250096559525, + 2.0357859320938587, + 2.0246761851012707, + 2.036625985056162, + 2.058064565062523, + 2.071684692054987, + 2.0682751201093197, + 2.0301351323723793, + 2.052045427262783, + 2.0229858346283436, + 2.0418749190866947, + 2.0135859958827496, + 2.0463247783482075, + 2.0271860994398594, + 2.017025835812092, + 2.056844998151064, + 2.133054193109274, + 2.023695968091488, + 2.0502563565969467, + 1.9957260228693485, + 2.0530447363853455, + 2.0530051551759243, + 2.0448551513254642, + 2.005784772336483, + 2.0256349816918373, + 2.0077060908079147, + 2.0853537134826183, + 2.0651151426136494, + 2.24124314263463, + 2.2042840719223022, + 2.0327349193394184, + 2.04968499019742, + 2.0243050530552864, + 1.9899755716323853, + 2.0509050227701664, + 2.042326144874096, + 2.714978065341711, + 2.157934010028839, + 2.1276138722896576, + 2.1229349076747894, + 2.1178852766752243, + 2.041054889559746, + 2.0492649637162685, + 2.0292350091040134, + 2.061625011265278, + 2.0642150193452835, + 2.0395847968757153, + 2.0450050942599773, + 2.0652050152420998, + 2.1089338697493076, + 2.066494897007942, + 2.056554891169071, + 2.0588450133800507, + 2.0392751321196556, + 2.0503345876932144, + 2.0445152185857296, + 2.453531138598919, + 2.030956093221903, + 2.089674584567547, + 2.0365752279758453, + 2.050654962658882, + 2.0062653347849846, + 2.0462647080421448, + 2.059144899249077, + 2.003306057304144, + 2.0304452627897263, + 2.004185225814581, + 2.0316848531365395, + 1.9922764040529728, + 2.034675795584917, + 2.023765817284584, + 2.036845777183771, + 2.006296068429947, + 2.0538056269288063, + 1.9936449825763702, + 1.989276148378849, + 2.1870527416467667, + 2.0431848242878914, + 2.0311763510107994, + 2.0433459430933, + 2.0210850052535534, + 1.9899159669876099, + 2.0272349938750267, + 2.024646382778883, + 2.0198249258100986, + 2.0292559638619423, + 1.9978247582912445, + 2.0014862529933453, + 2.024976070970297, + 2.0163259468972683, + 1.9929362460970879, + 1.990096177905798, + 2.038086298853159, + 2.0268759690225124, + 2.182513941079378, + 2.0421859808266163, + 2.2413828410208225, + 2.078775316476822, + 2.028524875640869, + 2.016075886785984, + 2.0371852442622185, + 2.0232549868524075, + 2.0236149430274963, + 1.9991258159279823, + 2.0023458637297153, + 2.0208661444485188, + 2.014396246522665, + 2.0194360986351967, + 2.0108059979975224, + 2.016895916312933, + 2.01212614774704, + 2.034324686974287, + 1.9817161373794079, + 1.9483058713376522, + 2.0533250644803047, + 1.9959150813519955, + 2.4527302011847496, + 2.069314941763878, + 2.0494158379733562, + 2.0602946169674397, + 2.071075141429901, + 2.048974856734276, + 2.040125895291567, + 2.0403661765158176, + 2.043535001575947, + 2.0214146934449673, + 2.016655169427395, + 2.0182658918201923, + 2.0460058003664017, + 1.9816961139440536, + 2.07705469802022, + 2.0330646075308323, + 2.0488351583480835, + 2.0414162427186966, + 2.062315121293068, + 2.029754687100649, + 2.0912140607833862, + 2.017275895923376, + 2.018625847995281, + 2.0115659572184086, + 2.025466412305832, + 2.0734742283821106, + 2.0189061760902405, + 2.031744923442602, + 2.0329048857092857, + 2.037805039435625, + 2.024564892053604, + 2.0244959741830826, + 2.0006257109344006, + 2.023134846240282, + 2.0585651509463787, + 2.017875202000141, + 2.029605209827423, + 2.027625683695078, + 2.043725922703743, + 2.022405620664358, + 2.336392179131508, + 2.075043972581625, + 2.0575751550495625, + 2.056964673101902, + 2.050994895398617, + 2.0421850495040417, + 2.040205989032984, + 2.05344520509243, + 2.045075409114361, + 2.047924790531397, + 2.0450949668884277, + 2.0387559197843075, + 2.042934764176607, + 2.0409547723829746, + 2.0142560824751854, + 2.0340359769761562, + 2.0637447014451027, + 2.02523497864604, + 2.040495164692402, + 2.0370460115373135, + 2.4696304462850094, + 2.0738239400088787, + 2.069115173071623, + 2.069875132292509, + 2.080974169075489, + 2.052195370197296, + 2.025165129452944, + 2.040104940533638, + 2.0277947187423706, + 2.0493450574576855, + 2.1023047156631947, + 2.075345255434513, + 2.0465352572500706, + 2.050044946372509, + 2.050784882158041, + 2.054725307971239, + 2.0597148686647415, + 2.022585365921259, + 2.0370851270854473, + 2.03651562333107, + 2.1038250997662544, + 2.057044766843319, + 2.026475965976715, + 2.0270850509405136, + 2.039514947682619, + 2.013036049902439, + 2.0342152565717697, + 2.0019751973450184, + 2.0248759537935257, + 2.0555350929498672, + 2.0642252638936043, + 2.0479848608374596, + 2.0183860324323177, + 2.057535108178854, + 2.0336159504950047, + 2.0523550920188427, + 2.0345058292150497, + 2.052835188806057, + 2.0197262056171894, + 2.0841252990067005, + 2.2592730820178986, + 2.074125222861767, + 2.0472751930356026, + 2.060494851320982, + 2.0112558268010616, + 2.084155101329088, + 2.035456243902445, + 2.044804859906435, + 2.0249360240995884, + 2.0713252015411854, + 2.0378450863063335, + 2.0744851790368557, + 2.05045472830534, + 2.075184602290392, + 2.0529748871922493, + 2.034285105764866, + 2.018625847995281, + 2.0216749981045723, + 2.0757848396897316, + 2.0231357775628567, + 2.4397699162364006, + 2.055845223367214, + 2.0112148486077785, + 1.9906163215637207, + 2.0340457558631897, + 1.9572661258280277, + 1.9731363281607628, + 2.0058657974004745, + 1.9580060616135597, + 1.9737360998988152, + 2.036075107753277, + 1.9646561704576015, + 1.9703959114849567, + 2.0024357363581657, + 1.9574263133108616, + 1.9774059765040874, + 2.0241751335561275, + 1.967546995729208, + 1.9683758728206158, + 2.0144558511674404, + 2.1572140976786613, + 1.9960659556090832, + 2.0396760664880276, + 1.983035821467638, + 2.0167548209428787, + 2.0335549488663673, + 1.9796360284090042, + 2.0217951387166977, + 1.9756057299673557, + 1.9774362444877625, + 2.0319861359894276, + 1.974946353584528, + 1.9927863031625748, + 2.0358446054160595, + 1.99037604033947, + 2.035365905612707, + 2.168303821235895, + 2.0282859914004803, + 2.0053358748555183, + 1.9843559712171555 + ] + }, + "warm_ms": { + "control": [ + 34.228034783154726, + 4.988519940525293, + 4.437236115336418 + ], + "nodedup": [ + 6.428401917219162, + 2.7499073185026646, + 2.4969889782369137 + ], + "library": [ + 2.5402591563761234, + 2.48180003836751, + 2.270502969622612 + ] + }, + "stats": { + "control": { + "n": 400, + "median_ms": 3.860158147290349, + "p10_ms": 3.7995070684701204, + "p90_ms": 4.061951022595167, + "min_ms": 3.7226248532533646, + "max_ms": 4.793230909854174, + "mean_ms": 3.9028289914131165 + }, + "nodedup": { + "n": 400, + "median_ms": 2.104898914694786, + "p10_ms": 2.075561648234725, + "p90_ms": 2.1688570734113455, + "min_ms": 1.9930656999349594, + "max_ms": 2.6932167820632458, + "mean_ms": 2.123043133178726 + }, + "library": { + "n": 400, + "median_ms": 2.039095386862755, + "p10_ms": 1.9977627787739038, + "p90_ms": 2.087614731863141, + "min_ms": 1.9483058713376522, + "max_ms": 2.714978065341711, + "mean_ms": 2.052909145131707 + } + }, + "ratio_control_over_nodedup": { + "ratio": 1.8338924118121267, + "ci90_low": 1.8304936390602609, + "ci90_high": 1.837584787415146, + "bootstrap_samples": 2000 + }, + "ratio_library_over_nodedup": { + "ratio": 0.9687379154539719, + "ci90_low": 0.966686924974742, + "ci90_high": 0.9707693156200883, + "bootstrap_samples": 2000 + }, + "ratio_control_over_library": { + "ratio": 1.8930738464517767, + "ci90_low": 1.8897547298728516, + "ci90_high": 1.896670004399576, + "bootstrap_samples": 2000 + }, + "paired_round_ratio_control_over_nodedup": { + "median": 1.8312478325474242, + "p10": 1.8213659162459324, + "p90": 1.8572648322239318 + }, + "minimum_detectable_improvement": 0.06798787617270814, + "compile": { + "control": { + "lower_s": 34.03408801369369, + "compile_s": 43.73495469382033, + "first_call_s": 0.037162268999964, + "trace_calls": 168, + "flops": 160386096.0, + "hlo_sort_count": 25, + "stablehlo_sort_count": 3, + "hlo_sort_shapes": [ + "(f64[276507]{0}, f64[276507]{0}, s64[276507]{0}, s32[276507]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0}, s32[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0}, s32[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0}, s32[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0}, s32[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0}, s32[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0}, s32[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0}, s32[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0}, s32[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0}, s32[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0}, s32[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0}, s32[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0}, s32[720]{0})" + ], + "hlo_sha256": "84ece87bab9e2b35", + "hlo_lines": 33474 + }, + "nodedup": { + "lower_s": 33.50928048091009, + "compile_s": 37.647898075170815, + "first_call_s": 0.021917653735727072, + "trace_calls": 168, + "flops": 120366792.0, + "hlo_sort_count": 12, + "stablehlo_sort_count": 1, + "hlo_sort_shapes": [ + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})" + ], + "hlo_sha256": "58e085dcb65a3962", + "hlo_lines": 27923 + }, + "library": { + "lower_s": 33.510765661951154, + "compile_s": 2.9416015627793968, + "first_call_s": 0.020802798215299845, + "trace_calls": 168, + "flops": 120366792.0, + "hlo_sort_count": 12, + "stablehlo_sort_count": 1, + "hlo_sort_shapes": [ + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})" + ], + "hlo_sha256": "58e085dcb65a3962", + "hlo_lines": 27923 + } + }, + "instances_compared": [ + [ + 0 + ], + [ + 1 + ], + [ + 2 + ], + [ + 3 + ], + [ + 4 + ], + [ + 5 + ], + [ + 6 + ], + [ + 7 + ], + [ + 8 + ], + [ + 9 + ], + [ + 10 + ], + [ + 11 + ], + [ + 12 + ], + [ + 13 + ], + [ + 14 + ], + [ + 15 + ] + ], + "values": { + "control": [ + 23.965075083393216, + -743.7107061665998, + 3.34333029172722, + -489.755628041605, + -527.9229457499364, + -468.67815408327806, + -247.07984679160097, + -1110.0030238749466, + -779.0297165832758, + -20.35458637494291, + -110.36109679160913, + -691.0739874166075, + -1296.2823207499168, + -205.49456033327567, + -223.8376592915989, + -334.80771137493866 + ], + "nodedup": [ + 23.965075083393216, + -743.7107061665998, + 3.34333029172722, + -489.755628041605, + -527.9229457499364, + -468.67815408327806, + -247.07984679160097, + -1110.0030238749466, + -779.0297165832758, + -20.35458637494291, + -110.36109679160913, + -691.0739874166075, + -1296.2823207499168, + -205.49456033327567, + -223.8376592915989, + -334.80771137493866 + ], + "library": [ + 23.965075083393216, + -743.7107061665998, + 3.34333029172722, + -489.755628041605, + -527.9229457499364, + -468.67815408327806, + -247.07984679160097, + -1110.0030238749466, + -779.0297165832758, + -20.35458637494291, + -110.36109679160913, + -691.0739874166075, + -1296.2823207499168, + -205.49456033327567, + -223.8376592915989, + -334.80771137493866 + ] + }, + "deterministic_within_route": { + "control": true, + "nodedup": true, + "library": true + }, + "likelihood_gate": { + "control_vs_nodedup": { + "bit_identical": true, + "max_abs_delta": 0.0, + "max_rel_delta": 0.0, + "nan_pattern_equal": true + }, + "control_vs_library": { + "bit_identical": true, + "max_abs_delta": 0.0, + "max_rel_delta": 0.0, + "nan_pattern_equal": true + }, + "nodedup_vs_library": { + "bit_identical": true, + "max_abs_delta": 0.0, + "max_rel_delta": 0.0, + "nan_pattern_equal": true + } + }, + "fiducial_log_likelihood": { + "control": 23.965075083393216, + "nodedup": 23.965075083393216, + "library": 23.965075083393216 + } + } + }, + "gates": { + "simple_solved_positions": { + "n_instances": 3, + "compile": { + "control": { + "lower_s": 1.6672200681641698, + "compile_s": 7.995221917051822, + "first_call_s": 0.020574151072651148, + "trace_calls": 16, + "flops": 17393476.0, + "hlo_sort_count": 15, + "stablehlo_sort_count": 3, + "hlo_sort_shapes": [ + "(f64[69849]{0}, f64[69849]{0}, s64[69849]{0}, s32[69849]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0}, s32[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0}, s32[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0}, s32[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0}, s32[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0}, s32[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0}, s32[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0}, s32[720]{0})" + ], + "hlo_sha256": "3922f61537c1204b", + "hlo_lines": 12881 + }, + "nodedup": { + "lower_s": 1.4932629256509244, + "compile_s": 4.035344575997442, + "first_call_s": 0.010693980846554041, + "trace_calls": 16, + "flops": 6597258.0, + "hlo_sort_count": 7, + "stablehlo_sort_count": 1, + "hlo_sort_shapes": [ + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})" + ], + "hlo_sha256": "743452e49310a399", + "hlo_lines": 8787 + }, + "library": { + "lower_s": 1.5956968227401376, + "compile_s": 0.3734502266161144, + "first_call_s": 0.010169986635446548, + "trace_calls": 16, + "flops": 6597258.0, + "hlo_sort_count": 7, + "stablehlo_sort_count": 1, + "hlo_sort_shapes": [ + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})" + ], + "hlo_sha256": "743452e49310a399", + "hlo_lines": 8787 + } + }, + "positions": { + "control": [ + [ + [ + [ + -1.03515625, + -1.0450941982127835 + ], + [ + Infinity, + Infinity + ], + [ + 0.35546875, + 1.6296613457672795 + ], + [ + 1.24375, + 1.1086929388032032 + ], + [ + 1.6062500000000002, + 0.44293590964391594 + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ] + ] + ], + [ + [ + [ + -1.0289062500000001, + -1.0225414533225639 + ], + [ + Infinity, + Infinity + ], + [ + 0.35, + 1.6138744243441256 + ], + [ + 1.2578125, + 1.0644895588183723 + ], + [ + 1.5890625, + 0.4375232508702632 + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ] + ] + ], + [ + [ + [ + -1.0203125, + -1.0861401939129833 + ], + [ + Infinity, + Infinity + ], + [ + 0.3484375, + 1.6328187300519101 + ], + [ + 1.1398437499999998, + 1.2182992789696712 + ], + [ + 1.609375, + 0.4447401292351335 + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ] + ] + ] + ], + "nodedup": [ + [ + [ + [ + -1.03515625, + -1.0450941982127835 + ], + [ + Infinity, + Infinity + ], + [ + 0.35546875, + 1.6296613457672795 + ], + [ + 1.24375, + 1.1086929388032032 + ], + [ + 1.6062500000000002, + 0.44293590964391594 + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ] + ] + ], + [ + [ + [ + -1.0289062500000001, + -1.0225414533225639 + ], + [ + Infinity, + Infinity + ], + [ + 0.35, + 1.6138744243441256 + ], + [ + 1.2578125, + 1.0644895588183723 + ], + [ + 1.5890625, + 0.4375232508702632 + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ] + ] + ], + [ + [ + [ + -1.0203125, + -1.0861401939129833 + ], + [ + Infinity, + Infinity + ], + [ + 0.3484375, + 1.6328187300519101 + ], + [ + 1.1398437499999998, + 1.2182992789696712 + ], + [ + 1.609375, + 0.4447401292351335 + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ] + ] + ] + ], + "library": [ + [ + [ + [ + -1.03515625, + -1.0450941982127835 + ], + [ + Infinity, + Infinity + ], + [ + 0.35546875, + 1.6296613457672795 + ], + [ + 1.24375, + 1.1086929388032032 + ], + [ + 1.6062500000000002, + 0.44293590964391594 + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ] + ] + ], + [ + [ + [ + -1.0289062500000001, + -1.0225414533225639 + ], + [ + Infinity, + Infinity + ], + [ + 0.35, + 1.6138744243441256 + ], + [ + 1.2578125, + 1.0644895588183723 + ], + [ + 1.5890625, + 0.4375232508702632 + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ] + ] + ], + [ + [ + [ + -1.0203125, + -1.0861401939129833 + ], + [ + Infinity, + Infinity + ], + [ + 0.3484375, + 1.6328187300519101 + ], + [ + 1.1398437499999998, + 1.2182992789696712 + ], + [ + 1.609375, + 0.4447401292351335 + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ] + ] + ] + ] + }, + "finite_positions": { + "control": [ + [ + 4 + ], + [ + 4 + ], + [ + 4 + ] + ], + "nodedup": [ + [ + 4 + ], + [ + 4 + ], + [ + 4 + ] + ], + "library": [ + [ + 4 + ], + [ + 4 + ], + [ + 4 + ] + ] + }, + "pairs": { + "control_vs_nodedup": { + "max_abs_delta": 0.0, + "max_rel_delta": 0.0, + "nan_pattern_equal": true, + "array_equal_nan_aware": true + }, + "control_vs_library": { + "max_abs_delta": 0.0, + "max_rel_delta": 0.0, + "nan_pattern_equal": true, + "array_equal_nan_aware": true + } + } + }, + "simple_solved_grad": { + "n_instances": 3, + "rtol": 1e-10, + "atol": 1e-12, + "compile": { + "control": { + "lower_s": 4.827607200946659, + "compile_s": 21.608729199972004, + "first_call_s": 0.193777022883296, + "trace_calls": 32, + "flops": 20038160.0, + "hlo_sort_count": 30, + "stablehlo_sort_count": 4, + "hlo_sort_shapes": [ + "(f64[69849]{0}, f64[69849]{0}, s64[69849]{0}, s32[69849]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0}, s32[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0}, s32[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0}, s32[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0}, s32[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0}, s32[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0}, s32[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0}, s32[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0}, s32[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0}, s32[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0}, s32[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0}, s32[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0}, s32[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0}, s32[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0}, s32[720]{0})", + "(s32[15,2]{1,0}, s32[15,2]{1,0}, s32[15,2]{1,0})" + ], + "hlo_sha256": "91fe7ee738c1d7dd", + "hlo_lines": 30838 + }, + "nodedup": { + "lower_s": 4.517724533565342, + "compile_s": 17.27444326505065, + "first_call_s": 0.022676875349134207, + "trace_calls": 32, + "flops": 8513047.0, + "hlo_sort_count": 15, + "stablehlo_sort_count": 2, + "hlo_sort_shapes": [ + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(s32[15,2]{1,0}, s32[15,2]{1,0}, s32[15,2]{1,0})" + ], + "hlo_sha256": "7da5b782d4aaeca7", + "hlo_lines": 23422 + }, + "library": { + "lower_s": 4.724604859016836, + "compile_s": 1.3830061303451657, + "first_call_s": 0.0198817802593112, + "trace_calls": 32, + "flops": 8513047.0, + "hlo_sort_count": 15, + "stablehlo_sort_count": 2, + "hlo_sort_shapes": [ + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(s32[15,2]{1,0}, s32[15,2]{1,0}, s32[15,2]{1,0})" + ], + "hlo_sha256": "7da5b782d4aaeca7", + "hlo_lines": 23422 + } + }, + "all_finite": { + "control": true, + "nodedup": true, + "library": true + }, + "gradients": { + "control": [ + [ + -41.62226304409438, + 53.13429595961162, + 31.78649237786796, + 2.8041319222743963, + 1781.7386158499723 + ], + [ + -46.40807305536087, + 75.13738885139988, + 78.91835319795189, + 74.3249971953795, + 2531.5778928836007 + ], + [ + 62.95146940120323, + -41.40185295995114, + 18.162643132915864, + 109.0003235058206, + -1560.5490919238116 + ] + ], + "nodedup": [ + [ + -41.62226304409438, + 53.13429595961162, + 31.78649237786796, + 2.8041319222743963, + 1781.7386158499723 + ], + [ + -46.40807305536087, + 75.13738885139988, + 78.91835319795189, + 74.3249971953795, + 2531.5778928836007 + ], + [ + 62.95146940120323, + -41.40185295995114, + 18.162643132915864, + 109.0003235058206, + -1560.5490919238116 + ] + ], + "library": [ + [ + -41.62226304409438, + 53.13429595961162, + 31.78649237786796, + 2.8041319222743963, + 1781.7386158499723 + ], + [ + -46.40807305536087, + 75.13738885139988, + 78.91835319795189, + 74.3249971953795, + 2531.5778928836007 + ], + [ + 62.95146940120323, + -41.40185295995114, + 18.162643132915864, + 109.0003235058206, + -1560.5490919238116 + ] + ] + }, + "pairs": { + "control_vs_nodedup": { + "bit_identical": true, + "max_abs_delta": 0.0, + "max_rel_delta": 0.0, + "nan_pattern_equal": true, + "allclose": true + }, + "control_vs_library": { + "bit_identical": true, + "max_abs_delta": 0.0, + "max_rel_delta": 0.0, + "nan_pattern_equal": true, + "allclose": true + } + } + }, + "simple_solved_vmap4": { + "vmap_vs_scalar_within_route": { + "control": { + "bit_identical": true, + "max_abs_delta": 0.0, + "max_rel_delta": 0.0, + "nan_pattern_equal": true, + "allclose_rtol_1e-12": true, + "n_compared": 16 + }, + "nodedup": { + "bit_identical": true, + "max_abs_delta": 0.0, + "max_rel_delta": 0.0, + "nan_pattern_equal": true, + "allclose_rtol_1e-12": true, + "n_compared": 16 + }, + "library": { + "bit_identical": true, + "max_abs_delta": 0.0, + "max_rel_delta": 0.0, + "nan_pattern_equal": true, + "allclose_rtol_1e-12": true, + "n_compared": 16 + } + }, + "across_routes": { + "control_vs_nodedup": { + "bit_identical": true, + "max_abs_delta": 0.0, + "max_rel_delta": 0.0, + "nan_pattern_equal": true + }, + "control_vs_library": { + "bit_identical": true, + "max_abs_delta": 0.0, + "max_rel_delta": 0.0, + "nan_pattern_equal": true + }, + "nodedup_vs_library": { + "bit_identical": true, + "max_abs_delta": 0.0, + "max_rel_delta": 0.0, + "nan_pattern_equal": true + } + } + }, + "cluster_solved_positions": { + "n_instances": 3, + "compile": { + "control": { + "lower_s": 8.142000899184495, + "compile_s": 28.437952139880508, + "first_call_s": 0.04016241431236267, + "trace_calls": 28, + "flops": 160358592.0, + "hlo_sort_count": 25, + "stablehlo_sort_count": 3, + "hlo_sort_shapes": [ + "(f64[276507]{0}, f64[276507]{0}, s64[276507]{0}, s32[276507]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0}, s32[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0}, s32[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0}, s32[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0}, s32[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0}, s32[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0}, s32[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0}, s32[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0}, s32[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0}, s32[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0}, s32[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0}, s32[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0}, s32[720]{0})" + ], + "hlo_sha256": "78ecb5e59b4f224b", + "hlo_lines": 36174 + }, + "nodedup": { + "lower_s": 8.075029420666397, + "compile_s": 23.098694154061377, + "first_call_s": 0.023185089696198702, + "trace_calls": 28, + "flops": 120345624.0, + "hlo_sort_count": 12, + "stablehlo_sort_count": 1, + "hlo_sort_shapes": [ + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})" + ], + "hlo_sha256": "cac1bfda7fcd891b", + "hlo_lines": 30002 + }, + "library": { + "lower_s": 8.021001605782658, + "compile_s": 2.1920570018701255, + "first_call_s": 0.021151062566787004, + "trace_calls": 28, + "flops": 120345624.0, + "hlo_sort_count": 12, + "stablehlo_sort_count": 1, + "hlo_sort_shapes": [ + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0}, s32[60]{0})" + ], + "hlo_sha256": "cac1bfda7fcd891b", + "hlo_lines": 30002 + } + }, + "positions": { + "control": [ + [ + [ + [ + -3.0789062499999997, + -7.858729484445975 + ], + [ + -0.9296874999999998, + 10.716162262036818 + ], + [ + -0.021874999999999995, + -0.23996120563193818 + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ] + ], + [ + [ + -15.96875, + 19.007453393477206 + ], + [ + 0.68359375, + -0.5146536383948147 + ], + [ + 13.693749999999998, + -14.309265577946627 + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ] + ] + ], + [ + [ + [ + -3.0789062499999997, + -7.858729484445975 + ], + [ + -0.9296875, + 10.709847493467556 + ], + [ + -0.016406249999999997, + -0.24311858991656893 + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ] + ], + [ + [ + -15.963281249999998, + 18.997981240623318 + ], + [ + 0.6890624999999999, + -0.5178110226794455 + ], + [ + 13.68828125, + -14.306108193661998 + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ] + ] + ], + [ + [ + [ + -3.0843749999999996, + -7.855572100161344 + ], + [ + -0.9351562499999999, + 10.72563441489071 + ], + [ + -0.021874999999999995, + -0.23364643706267668 + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ] + ], + [ + [ + -15.96875, + 19.007453393477206 + ], + [ + 0.68359375, + -0.5083388698255532 + ], + [ + 13.693749999999998, + -14.309265577946627 + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ] + ] + ] + ], + "nodedup": [ + [ + [ + [ + -3.0789062499999997, + -7.858729484445975 + ], + [ + -0.9296874999999998, + 10.716162262036818 + ], + [ + -0.021874999999999995, + -0.23996120563193818 + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ] + ], + [ + [ + -15.96875, + 19.007453393477206 + ], + [ + 0.68359375, + -0.5146536383948147 + ], + [ + 13.693749999999998, + -14.309265577946627 + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ] + ] + ], + [ + [ + [ + -3.0789062499999997, + -7.858729484445975 + ], + [ + -0.9296875, + 10.709847493467556 + ], + [ + -0.016406249999999997, + -0.24311858991656893 + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ] + ], + [ + [ + -15.963281249999998, + 18.997981240623318 + ], + [ + 0.6890624999999999, + -0.5178110226794455 + ], + [ + 13.68828125, + -14.306108193661998 + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ] + ] + ], + [ + [ + [ + -3.0843749999999996, + -7.855572100161344 + ], + [ + -0.9351562499999999, + 10.72563441489071 + ], + [ + -0.021874999999999995, + -0.23364643706267668 + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ] + ], + [ + [ + -15.96875, + 19.007453393477206 + ], + [ + 0.68359375, + -0.5083388698255532 + ], + [ + 13.693749999999998, + -14.309265577946627 + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ] + ] + ] + ], + "library": [ + [ + [ + [ + -3.0789062499999997, + -7.858729484445975 + ], + [ + -0.9296874999999998, + 10.716162262036818 + ], + [ + -0.021874999999999995, + -0.23996120563193818 + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ] + ], + [ + [ + -15.96875, + 19.007453393477206 + ], + [ + 0.68359375, + -0.5146536383948147 + ], + [ + 13.693749999999998, + -14.309265577946627 + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ] + ] + ], + [ + [ + [ + -3.0789062499999997, + -7.858729484445975 + ], + [ + -0.9296875, + 10.709847493467556 + ], + [ + -0.016406249999999997, + -0.24311858991656893 + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ] + ], + [ + [ + -15.963281249999998, + 18.997981240623318 + ], + [ + 0.6890624999999999, + -0.5178110226794455 + ], + [ + 13.68828125, + -14.306108193661998 + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ] + ] + ], + [ + [ + [ + -3.0843749999999996, + -7.855572100161344 + ], + [ + -0.9351562499999999, + 10.72563441489071 + ], + [ + -0.021874999999999995, + -0.23364643706267668 + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ] + ], + [ + [ + -15.96875, + 19.007453393477206 + ], + [ + 0.68359375, + -0.5083388698255532 + ], + [ + 13.693749999999998, + -14.309265577946627 + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ] + ] + ] + ] + }, + "finite_positions": { + "control": [ + [ + 3, + 3 + ], + [ + 3, + 3 + ], + [ + 3, + 3 + ] + ], + "nodedup": [ + [ + 3, + 3 + ], + [ + 3, + 3 + ], + [ + 3, + 3 + ] + ], + "library": [ + [ + 3, + 3 + ], + [ + 3, + 3 + ], + [ + 3, + 3 + ] + ] + }, + "pairs": { + "control_vs_nodedup": { + "max_abs_delta": 0.0, + "max_rel_delta": 0.0, + "nan_pattern_equal": true, + "array_equal_nan_aware": true + }, + "control_vs_library": { + "max_abs_delta": 0.0, + "max_rel_delta": 0.0, + "nan_pattern_equal": true, + "array_equal_nan_aware": true + } + } + } + }, + "wall_s": 696.4826351790689 +} \ No newline at end of file diff --git a/results/breakdown/point_source/vertex_dedup_ab_hpc_ral_a100_fp64.png b/results/breakdown/point_source/vertex_dedup_ab_hpc_ral_a100_fp64.png new file mode 100644 index 000000000..62ded0bc8 Binary files /dev/null and b/results/breakdown/point_source/vertex_dedup_ab_hpc_ral_a100_fp64.png differ diff --git a/results/breakdown/point_source/vertex_dedup_ab_hpc_ral_cpu_fp64.json b/results/breakdown/point_source/vertex_dedup_ab_hpc_ral_cpu_fp64.json new file mode 100644 index 000000000..80f79fcf6 --- /dev/null +++ b/results/breakdown/point_source/vertex_dedup_ab_hpc_ral_cpu_fp64.json @@ -0,0 +1,5659 @@ +{ + "cell": "vertex_dedup_ab", + "issue": "PyAutoLabs/PyAutoArray#568", + "config_name": "hpc_ral_cpu_fp64", + "quick": false, + "models": [ + "simple", + "cluster" + ], + "library_versions": { + "autolens": "2026.8.17.1", + "autoarray": "2026.8.17.1", + "autofit": "2026.8.17.1" + }, + "package_versions": { + "jax": "0.10.2", + "jaxlib": "0.10.2" + }, + "source_revisions": { + "autolens_profiling": "d97556f8cdf62e63972964285615ca401aad37d0", + "PyAutoNerves": "1fa613aa8d89a79613009fb66f5b4e2d21deb57a", + "PyAutoFit": "a736840127be7a3c21e15a5c945e94d8f1082983", + "PyAutoArray": "22e6d6082e3365b10fb08d96e19ab02a5420e935", + "PyAutoGalaxy": "70a61e26cd715cefe7012a38285698091246a8a4", + "PyAutoLens": "2aaa1c1a8bb4a5923edf30a18451fcea330a6bd4" + }, + "autoarray_imported_from": "/mnt/ral/jnightin/PyAuto/PyAutoArray", + "target": "autoarray.structures.triangles.coordinate_array.CoordinateArrayTriangles._vertices_and_indices", + "control_source": { + "repo": "PyAutoArray", + "sha": "11b93476", + "path": "autoarray/structures/triangles/coordinate_array.py", + "body": "def _control_vertices_and_indices(self):\n \"\"\"PRE-fix ``_vertices_and_indices`` \u2014 verbatim from PyAutoArray ``11b93476``.\"\"\"\n import jax.numpy as jnp\n\n flat_triangles = self.triangles.reshape(-1, 2)\n vertices, inverse_indices = jnp.unique(\n flat_triangles,\n axis=0,\n return_inverse=True,\n size=3 * self.coordinates.shape[0],\n equal_nan=True,\n fill_value=jnp.nan,\n )\n\n nan_mask = jnp.isnan(vertices).any(axis=1)\n inverse_indices = jnp.where(nan_mask[inverse_indices], -1, inverse_indices)\n\n indices = inverse_indices.reshape(-1, 3)\n return vertices, indices\n" + }, + "nodedup_body": "def _nodedup_vertices_and_indices(self):\n \"\"\"POST-fix ``_vertices_and_indices``: the flat 3N table and an ``arange`` index map.\"\"\"\n import jax.numpy as jnp\n\n flat = self.triangles.reshape(-1, 2)\n indices = jnp.arange(flat.shape[0]).reshape(-1, 3)\n return flat, indices\n", + "device": { + "backend": "cpu", + "device": "cpu:0", + "hostname": "euclid-ral-compute-1", + "xla_flags": "--xla_disable_hlo_passes=constant_folding --xla_gpu_autotune_level=0 --xla_gpu_enable_triton_gemm=false", + "omp_num_threads": "1", + "cpu_count": 252, + "jax_compilation_cache_dir": "/vertex_dedup_ab_350582", + "autotune_cache_entries_at_start": 0, + "cache_fresh": true + }, + "jax_devices": [ + "cpu:0" + ], + "machine": { + "cpu_model": "AMD EPYC 7763 64-Core Processor", + "cpu_count_os": 252, + "nproc": 1, + "nproc_all": 252, + "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": "950545144 kB", + "kernel": "5.14.0-687.39.1.el9_8.x86_64", + "platform": "Linux-5.14.0-687.39.1.el9_8.x86_64-x86_64-with-glibc2.34", + "python": "3.12.4", + "jax_thread_env": { + "NPROC": "8" + }, + "blas_thread_env": { + "OMP_NUM_THREADS": "1", + "OPENBLAS_NUM_THREADS": "1", + "MKL_NUM_THREADS": "1", + "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": null + }, + "thread_environment": { + "NPROC": "8", + "OMP_NUM_THREADS": "1", + "OPENBLAS_NUM_THREADS": "1", + "MKL_NUM_THREADS": "1" + }, + "sched_affinity": 8, + "os_cpu_count": 252, + "xla_flags": "--xla_disable_hlo_passes=constant_folding --xla_gpu_autotune_level=0 --xla_gpu_enable_triton_gemm=false", + "jax_platforms": "cpu", + "jax_enable_x64": true, + "loadavg_start": [ + 0.49, + 0.13, + 0.04 + ], + "loadavg_end": [ + 1.54, + 1.43, + 0.84 + ], + "protocol": { + "routes": [ + "control", + "nodedup", + "library" + ], + "n_rounds": 20, + "n_calls_per_round": 5, + "n_warm": 3, + "n_stream": 16, + "n_gate_instances": 3, + "vmap_batch": 4, + "instance_seed": 568, + "instance_stream": "entry 0 = prior medians; rest = vector_from_unit_vector(U(0.25,0.75))", + "argument": "physical parameter vector; instance_from_vector(xp=jnp) inside the trace", + "cache_trap_guard": "fresh closure + fresh solver/analyses per route; jax.clear_caches()", + "bootstrap": { + "samples": 2000, + "seed": 12345, + "interval": "90%" + }, + "cluster_gates": "log-likelihood and positions only (no cluster grad/vmap)", + "pytrees": "autofit.jax.register_model(model) for every model before any trace" + }, + "free_parameters": { + "simple_solved": 5, + "simple_plain": 8, + "cluster_solved": 13, + "cluster_plain": 17 + }, + "model_configuration": { + "simple": { + "dataset": "dataset/point_source/simple/point_dataset_positions_only.json", + "solver_grid_shape": [ + 100, + 100 + ], + "solver_grid_pixel_scale": 0.2, + "solver_pixel_scale_precision": 0.001, + "magnification_threshold": 0.1, + "likelihoods": { + "solved": "FitPositionsImagePairAllSolved", + "plain": "FitPositionsImagePairAll" + } + }, + "cluster": { + "dataset": "dataset/cluster/simple/point_datasets.csv", + "n_systems": 2, + "n_mass_profiles": 13, + "solver_grid_shape": [ + 200, + 200 + ], + "solver_grid_pixel_scale": 0.7, + "solver_pixel_scale_precision": 0.01, + "source_centres_from": "back-traced observed-image centroids (cluster cell step 1)", + "likelihoods": { + "solved": "FitPositionsImagePairRepeatSolved (summed over systems)", + "plain": "FitPositionsImagePairRepeat (summed over systems)" + } + } + }, + "library_label": { + "per_row": { + "simple_solved": { + "hlo_sort_count": { + "control": 15, + "nodedup": 7, + "library": 15 + }, + "stablehlo_sort_count": { + "control": 3, + "nodedup": 1, + "library": 3 + }, + "library_matches": "control", + "library_hlo_identical_to": [] + }, + "simple_solved_vmap4": { + "hlo_sort_count": { + "control": 15, + "nodedup": 7, + "library": 15 + }, + "stablehlo_sort_count": { + "control": 3, + "nodedup": 1, + "library": 3 + }, + "library_matches": "control", + "library_hlo_identical_to": [] + }, + "simple_plain": { + "hlo_sort_count": { + "control": 15, + "nodedup": 7, + "library": 15 + }, + "stablehlo_sort_count": { + "control": 3, + "nodedup": 1, + "library": 3 + }, + "library_matches": "control", + "library_hlo_identical_to": [] + }, + "cluster_solved": { + "hlo_sort_count": { + "control": 25, + "nodedup": 12, + "library": 25 + }, + "stablehlo_sort_count": { + "control": 3, + "nodedup": 1, + "library": 3 + }, + "library_matches": "control", + "library_hlo_identical_to": [] + }, + "cluster_plain": { + "hlo_sort_count": { + "control": 25, + "nodedup": 12, + "library": 25 + }, + "stablehlo_sort_count": { + "control": 3, + "nodedup": 1, + "library": 3 + }, + "library_matches": "control", + "library_hlo_identical_to": [] + } + }, + "library_matches": "control" + }, + "library_matches": "control", + "bit_identical": true, + "gate_summary": { + "simple_solved.log_likelihood.control_vs_nodedup": { + "pass": true, + "max_abs_delta": 0.0, + "max_rel_delta": 0.0 + }, + "simple_solved.log_likelihood.control_vs_library": { + "pass": true, + "max_abs_delta": 0.0, + "max_rel_delta": 0.0 + }, + "simple_solved_vmap4.log_likelihood.control_vs_nodedup": { + "pass": true, + "max_abs_delta": 0.0, + "max_rel_delta": 0.0 + }, + "simple_solved_vmap4.log_likelihood.control_vs_library": { + "pass": true, + "max_abs_delta": 0.0, + "max_rel_delta": 0.0 + }, + "simple_plain.log_likelihood.control_vs_nodedup": { + "pass": true, + "max_abs_delta": 0.0, + "max_rel_delta": 0.0 + }, + "simple_plain.log_likelihood.control_vs_library": { + "pass": true, + "max_abs_delta": 0.0, + "max_rel_delta": 0.0 + }, + "cluster_solved.log_likelihood.control_vs_nodedup": { + "pass": true, + "max_abs_delta": 0.0, + "max_rel_delta": 0.0 + }, + "cluster_solved.log_likelihood.control_vs_library": { + "pass": true, + "max_abs_delta": 0.0, + "max_rel_delta": 0.0 + }, + "cluster_plain.log_likelihood.control_vs_nodedup": { + "pass": true, + "max_abs_delta": 0.0, + "max_rel_delta": 0.0 + }, + "cluster_plain.log_likelihood.control_vs_library": { + "pass": true, + "max_abs_delta": 0.0, + "max_rel_delta": 0.0 + }, + "simple_solved_positions.control_vs_nodedup": { + "pass": true, + "max_abs_delta": 0.0 + }, + "simple_solved_positions.control_vs_library": { + "pass": true, + "max_abs_delta": 0.0 + }, + "simple_solved_grad.control_vs_nodedup": { + "pass": true, + "bit_identical": true, + "max_abs_delta": 0.0, + "max_rel_delta": 0.0 + }, + "simple_solved_grad.control_vs_library": { + "pass": true, + "bit_identical": true, + "max_abs_delta": 0.0, + "max_rel_delta": 0.0 + }, + "simple_solved_vmap4.vmap_vs_scalar.control": { + "pass": true, + "bit_identical": true, + "max_abs_delta": 0.0 + }, + "simple_solved_vmap4.vmap_vs_scalar.nodedup": { + "pass": true, + "bit_identical": true, + "max_abs_delta": 0.0 + }, + "simple_solved_vmap4.vmap_vs_scalar.library": { + "pass": true, + "bit_identical": true, + "max_abs_delta": 0.0 + }, + "cluster_solved_positions.control_vs_nodedup": { + "pass": true, + "max_abs_delta": 0.0 + }, + "cluster_solved_positions.control_vs_library": { + "pass": true, + "max_abs_delta": 0.0 + } + }, + "rows": { + "simple_solved": { + "label": "simple_solved", + "batch": null, + "n_rounds": 20, + "n_calls_per_round": 5, + "n_warm": 3, + "route_order": "round-robin, start rotated each round", + "per_call_ms": { + "control": [ + 24.426332907751203, + 23.07515195570886, + 24.17942904867232, + 24.371761013753712, + 24.47534305974841, + 23.679131059907377, + 24.127539014443755, + 23.46588601358235, + 24.678796995431185, + 23.588400101289153, + 24.01921700220555, + 23.73446198180318, + 23.993626004084945, + 24.21410905662924, + 24.580345954746008, + 23.823584080673754, + 24.295761017128825, + 23.476348025724292, + 24.431062978692353, + 23.92005396541208, + 23.69134104810655, + 23.97604496218264, + 23.648391012102365, + 23.97781505715102, + 24.15565005503595, + 24.219439015723765, + 23.670440074056387, + 23.93539494369179, + 24.46072397287935, + 24.50736507307738, + 23.274403996765614, + 23.90364499296993, + 24.63856595568359, + 23.550629033707082, + 24.012056994251907, + 23.78830302041024, + 24.394353036768734, + 24.48074403218925, + 24.392772000283003, + 23.759832954965532, + 23.112311027944088, + 24.723769049160182, + 23.98593700490892, + 23.159501957707107, + 24.009966058656573, + 23.959615034982562, + 23.976644035428762, + 24.15577892679721, + 24.5324739953503, + 23.047500057145953, + 24.248561006970704, + 23.60259904526174, + 23.9003230817616, + 24.15101893711835, + 24.103007977828383, + 23.964324966073036, + 23.513759020715952, + 24.424153030849993, + 23.81219295784831, + 23.721841047517955, + 24.145978968590498, + 24.201638996601105, + 23.445837083272636, + 24.791679927147925, + 24.05950694810599, + 25.167115032672882, + 24.43735394626856, + 23.606159957125783, + 24.424212984740734, + 23.68955104611814, + 23.23711395729333, + 23.948165006004274, + 23.551249061711133, + 23.358205915428698, + 24.288410088047385, + 24.663207004778087, + 23.50158803164959, + 24.884470971301198, + 24.47771397419274, + 24.75960797164589, + 23.499566945247352, + 23.82617408875376, + 23.47471797838807, + 24.118127999827266, + 24.05229804571718, + 23.739131982438266, + 23.426607018336654, + 24.086808087304235, + 23.4180559637025, + 24.28584999870509, + 23.204982979223132, + 24.094138061627746, + 23.483567987568676, + 24.08368804026395, + 23.831174010410905, + 23.230862920172513, + 24.69070698134601, + 24.66580702457577, + 24.39681300893426, + 24.483993067406118 + ], + "nodedup": [ + 4.839170025661588, + 5.7851949241012335, + 6.16786302998662, + 5.2411569049581885, + 4.783218028023839, + 6.207501981407404, + 5.657834000885487, + 6.3074539648368955, + 6.6796200117096305, + 6.339745013974607, + 4.481564974412322, + 4.656017059460282, + 4.783498006872833, + 5.353718996047974, + 5.407849093899131, + 5.597641924396157, + 5.254546995274723, + 5.471538985148072, + 6.206651101820171, + 5.488610011525452, + 5.43470005504787, + 4.623886081390083, + 5.202186061069369, + 4.679237958043814, + 5.5594120640307665, + 6.522826966829598, + 6.055180914700031, + 4.445293918251991, + 5.053933011367917, + 5.354880006052554, + 4.595736041665077, + 6.170681095682085, + 5.533150979317725, + 6.514999084174633, + 5.723134963773191, + 4.597124992869794, + 5.116552929393947, + 4.4619940454140306, + 6.1612119898200035, + 5.330946994945407, + 5.3642080165445805, + 5.534872063435614, + 6.664810003712773, + 6.244092946872115, + 5.483770044520497, + 5.6276420364156365, + 5.8015360264107585, + 5.535131087526679, + 4.903570981696248, + 5.256676930002868, + 5.254317075014114, + 5.20620692986995, + 6.414616014808416, + 5.2445960463956, + 6.167832063511014, + 5.070933955721557, + 4.350861068814993, + 5.18201501108706, + 4.841229994781315, + 5.720845074392855, + 6.138732074759901, + 5.623184028081596, + 4.7037090407684445, + 5.331358057446778, + 5.361499032005668, + 5.450880038551986, + 5.839325021952391, + 5.738295032642782, + 5.110993981361389, + 5.157295032404363, + 4.9607009859755635, + 4.25263901706785, + 5.386278964579105, + 5.169145995751023, + 5.442659952677786, + 5.769043928012252, + 4.362351959571242, + 6.423756945878267, + 5.929218023084104, + 6.679770071059465, + 5.15591399744153, + 5.786495981737971, + 5.08833397179842, + 5.577392061240971, + 5.5805620504543185, + 6.25842297449708, + 6.036380073055625, + 5.6532720336690545, + 5.090285092592239, + 5.079024005681276, + 4.616405931301415, + 5.161734996363521, + 5.20434498321265, + 5.28343697078526, + 5.492580006830394, + 5.092365085147321, + 4.811769002117217, + 5.714154918678105, + 5.098313908092678, + 5.090751918032765 + ], + "library": [ + 23.194654029794037, + 23.793481988832355, + 24.805968976579607, + 25.500271003693342, + 23.900275002233684, + 24.11430806387216, + 24.883831036277115, + 23.545098956674337, + 24.63614591397345, + 23.531508981250226, + 23.763053002767265, + 23.95600499585271, + 23.630719049833715, + 24.21453094575554, + 23.84235302451998, + 24.288601940497756, + 23.428336950019002, + 24.45145498495549, + 24.536636075936258, + 23.821681970730424, + 23.770982050336897, + 23.93398410640657, + 23.493877961300313, + 23.59923906624317, + 24.168909061700106, + 23.639009916223586, + 24.319060961715877, + 24.948930949904025, + 24.048047023825347, + 23.79292296245694, + 23.24054401833564, + 24.394153035245836, + 23.91226403415203, + 23.82305299397558, + 23.874243954196572, + 23.902855115011334, + 24.34885292313993, + 24.13607807829976, + 24.242831044830382, + 23.791132029145956, + 23.20174197666347, + 24.340650998055935, + 23.628099937923253, + 23.37317494675517, + 24.271732079796493, + 24.17972800321877, + 24.841598933562636, + 24.5909959776327, + 23.685531923547387, + 23.648501024581492, + 23.466119077056646, + 24.726287927478552, + 23.618398932740092, + 25.365549023263156, + 24.579846067354083, + 24.093477055430412, + 24.398552952334285, + 24.908681050874293, + 23.912322940304875, + 23.73747294768691, + 23.85911298915744, + 23.459558025933802, + 23.892013006843626, + 23.19887198973447, + 24.15981807280332, + 23.690511006861925, + 23.566688993014395, + 24.400221998803318, + 23.28372502233833, + 23.704982013441622, + 24.698148015886545, + 23.979666060768068, + 24.77185893803835, + 23.905094945803285, + 24.318020907230675, + 23.907704977318645, + 24.675866938196123, + 24.113008053973317, + 23.928934009745717, + 24.461585097014904, + 23.55298795737326, + 23.471678025089204, + 23.34909501951188, + 23.46112800296396, + 23.708652006462216, + 23.176812916062772, + 23.41135498136282, + 23.824693053029478, + 24.516383069567382, + 23.59354996588081, + 24.207168957218528, + 24.060077033936977, + 24.60857597179711, + 24.649736005812883, + 24.027007049880922, + 24.524475098587573, + 24.1700200131163, + 24.396522087045014, + 23.77738105133176, + 24.21550895087421 + ] + }, + "warm_ms": { + "control": [ + 26.41581604257226, + 24.69790691975504, + 24.078318965621293 + ], + "nodedup": [ + 4.784210002981126, + 5.753724020905793, + 4.595027072355151 + ], + "library": [ + 23.24127301108092, + 24.686857010237873, + 24.475284037180245 + ] + }, + "stats": { + "control": { + "n": 100, + "median_ms": 24.00179603137076, + "p10_ms": 23.42575191287324, + "p90_ms": 24.586167954839766, + "min_ms": 23.047500057145953, + "max_ms": 25.167115032672882, + "mean_ms": 23.998313697520643 + }, + "nodedup": { + "n": 100, + "median_ms": 5.375243490561843, + "p10_ms": 4.652803961653262, + "p90_ms": 6.245525949634612, + "min_ms": 4.25263901706785, + "max_ms": 6.679770071059465, + "mean_ms": 5.434200057061389 + }, + "library": { + "n": 100, + "median_ms": 23.920628475025296, + "p10_ms": 23.456435918342322, + "p90_ms": 24.678095045965165, + "min_ms": 23.176812916062772, + "max_ms": 25.500271003693342, + "mean_ms": 24.02466550236568 + } + }, + "ratio_control_over_nodedup": { + "ratio": 4.465248146156443, + "ci90_low": 4.3699448792030715, + "ci90_high": 4.565633827804641, + "bootstrap_samples": 2000 + }, + "ratio_library_over_nodedup": { + "ratio": 4.450147889491237, + "ci90_low": 4.355080303359179, + "ci90_high": 4.550552588476369, + "bootstrap_samples": 2000 + }, + "ratio_control_over_library": { + "ratio": 1.0033932033362003, + "ci90_low": 0.9953866067273155, + "ci90_high": 1.0079632480500529, + "bootstrap_samples": 2000 + }, + "paired_round_ratio_control_over_nodedup": { + "median": 4.5132298546780465, + "p10": 4.174963359384248, + "p90": 4.771478749996658 + }, + "minimum_detectable_improvement": 0.048347050381139976, + "compile": { + "control": { + "lower_s": 2.8864294780651107, + "compile_s": 4.081425369950011, + "first_call_s": 0.028074682923033834, + "trace_calls": 32, + "flops": 15582802.0, + "hlo_sort_count": 15, + "stablehlo_sort_count": 3, + "hlo_sort_shapes": [ + "(f64[69849]{0}, f64[69849]{0}, s64[69849]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})" + ], + "hlo_sha256": "345c49245e378356", + "hlo_lines": 28583 + }, + "nodedup": { + "lower_s": 2.5637055030092597, + "compile_s": 3.244780293898657, + "first_call_s": 0.005398558918386698, + "trace_calls": 32, + "flops": 7053434.0, + "hlo_sort_count": 7, + "stablehlo_sort_count": 1, + "hlo_sort_shapes": [ + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})" + ], + "hlo_sha256": "bb9f3f880f1900ff", + "hlo_lines": 24404 + }, + "library": { + "lower_s": 2.710495363920927, + "compile_s": 0.529712472925894, + "first_call_s": 0.025791975087486207, + "trace_calls": 32, + "flops": 15582802.0, + "hlo_sort_count": 15, + "stablehlo_sort_count": 3, + "hlo_sort_shapes": [ + "(f64[69849]{0}, f64[69849]{0}, s64[69849]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})" + ], + "hlo_sha256": "3fa7362aeb50d861", + "hlo_lines": 24937 + } + }, + "instances_compared": [ + [ + 0 + ], + [ + 1 + ], + [ + 2 + ], + [ + 3 + ], + [ + 4 + ], + [ + 5 + ], + [ + 6 + ], + [ + 7 + ], + [ + 8 + ], + [ + 9 + ], + [ + 10 + ], + [ + 11 + ], + [ + 12 + ], + [ + 13 + ], + [ + 14 + ], + [ + 15 + ] + ], + "values": { + "control": [ + 7.743201200876812, + 4.901199826003542, + 8.551453428732437, + 7.640170398958149, + 7.2580956747803445, + 9.29357838657636, + 3.0338796505151917, + 8.714615086385912, + 4.735173159474494, + 3.2233889243165805, + 9.296501815740573, + 6.7486158154711955, + -1.4028143150641306, + 0.5885274382499945, + 6.162997261446639, + -10.49915087893337 + ], + "nodedup": [ + 7.743201200876812, + 4.901199826003542, + 8.551453428732437, + 7.640170398958149, + 7.2580956747803445, + 9.29357838657636, + 3.0338796505151917, + 8.714615086385912, + 4.735173159474494, + 3.2233889243165805, + 9.296501815740573, + 6.7486158154711955, + -1.4028143150641306, + 0.5885274382499945, + 6.162997261446639, + -10.49915087893337 + ], + "library": [ + 7.743201200876812, + 4.901199826003542, + 8.551453428732437, + 7.640170398958149, + 7.2580956747803445, + 9.29357838657636, + 3.0338796505151917, + 8.714615086385912, + 4.735173159474494, + 3.2233889243165805, + 9.296501815740573, + 6.7486158154711955, + -1.4028143150641306, + 0.5885274382499945, + 6.162997261446639, + -10.49915087893337 + ] + }, + "deterministic_within_route": { + "control": true, + "nodedup": true, + "library": true + }, + "likelihood_gate": { + "control_vs_nodedup": { + "bit_identical": true, + "max_abs_delta": 0.0, + "max_rel_delta": 0.0, + "nan_pattern_equal": true + }, + "control_vs_library": { + "bit_identical": true, + "max_abs_delta": 0.0, + "max_rel_delta": 0.0, + "nan_pattern_equal": true + }, + "nodedup_vs_library": { + "bit_identical": true, + "max_abs_delta": 0.0, + "max_rel_delta": 0.0, + "nan_pattern_equal": true + } + }, + "fiducial_log_likelihood": { + "control": 7.743201200876812, + "nodedup": 7.743201200876812, + "library": 7.743201200876812 + } + }, + "simple_solved_vmap4": { + "label": "simple_solved_vmap4", + "batch": 4, + "n_rounds": 20, + "n_calls_per_round": 5, + "n_warm": 3, + "route_order": "round-robin, start rotated each round", + "per_call_ms": { + "control": [ + 30.420181923545897, + 30.345121980644763, + 33.08422595728189, + 30.120588024146855, + 32.390914973802865, + 29.65981897432357, + 31.652701902203262, + 31.701472005806863, + 30.306509928777814, + 30.25801805779338, + 29.929412994533777, + 31.932558049447834, + 30.418431968428195, + 30.956101953051984, + 31.50444000493735, + 29.841594048775733, + 31.98470699135214, + 29.282714007422328, + 31.437387922778726, + 30.530713964253664, + 32.350733992643654, + 29.8155719647184, + 31.22037590947002, + 31.489429995417595, + 30.898820026777685, + 31.37740702368319, + 30.787718947976828, + 31.382948043756187, + 29.20638199429959, + 29.892943101003766, + 30.642565106973052, + 31.392427976243198, + 31.258904957212508, + 31.308336067013443, + 30.353610985912383, + 29.883084003813565, + 32.06242900341749, + 30.38908203598112, + 32.59683703072369, + 31.951177050359547, + 29.777270974591374, + 32.19839197117835, + 29.869233025237918, + 31.01377305574715, + 32.82417205628008, + 31.30887693259865, + 31.870953971520066, + 30.964161036536098, + 31.278535025194287, + 29.689130024053156, + 31.74577304162085, + 30.798148014582694, + 32.03847899567336, + 29.942704015411437, + 32.69575897138566, + 32.338154036551714, + 31.687602982856333, + 31.097172992303967, + 32.158970017917454, + 29.430645052343607, + 32.37704501952976, + 31.74895397387445, + 29.61297007277608, + 31.18925599846989, + 31.01564198732376, + 31.570642022415996, + 31.761383987031877, + 31.50073892902583, + 31.027391087263823, + 31.132803997024894, + 29.55558802932501, + 32.087339903227985, + 33.23167806956917, + 30.907950014807284, + 32.10305096581578, + 31.47152008023113, + 32.61124808341265, + 32.72746002767235, + 33.09306700248271, + 31.78983391262591, + 30.078566051088274, + 31.661171931773424, + 32.55029709544033, + 32.60527900420129, + 31.67839301750064, + 30.40143195539713, + 30.578534002415836, + 32.14370005298406, + 32.1111410157755, + 29.840981005690992, + 30.14964796602726, + 32.24365191999823, + 29.556426918134093, + 31.487479922361672, + 29.684270033612847, + 28.651764034293592, + 29.424904962070286, + 32.184042036533356, + 31.851896084845066, + 32.61229896452278 + ], + "nodedup": [ + 11.061502969823778, + 12.901604059152305, + 11.110443039797246, + 10.770266992039979, + 12.791190994903445, + 12.125579989515245, + 12.969793984666467, + 10.780417942442, + 12.933443067595363, + 12.210152111947536, + 10.963522014208138, + 11.28940808121115, + 11.063220910727978, + 11.624750914052129, + 11.904865968972445, + 13.992360909469426, + 12.779011041857302, + 12.049829005263746, + 11.046183062717319, + 10.784397018142045, + 11.201323941349983, + 11.81925495620817, + 12.840549927204847, + 12.77553103864193, + 11.042661964893341, + 12.967123067937791, + 10.668346076272428, + 9.853541036136448, + 12.848042999394238, + 12.531626969575882, + 11.302786995656788, + 13.384571997448802, + 11.066311970353127, + 11.970647959969938, + 11.793834972195327, + 13.452182058244944, + 10.752568021416664, + 12.12509092874825, + 10.909160017035902, + 10.954909957945347, + 13.16278800368309, + 12.243311037309468, + 11.031962931156158, + 12.612667982466519, + 13.249459094367921, + 13.097796007059515, + 11.103343917056918, + 11.773732956498861, + 11.53266103938222, + 11.413228930905461, + 11.55361090786755, + 12.840431998483837, + 12.722751009278, + 10.846769087947905, + 12.648599105887115, + 12.890512007288635, + 11.788513977080584, + 10.050265002064407, + 12.88593199569732, + 12.582927010953426, + 11.242175940424204, + 10.881560039706528, + 10.312170023098588, + 12.90851307567209, + 10.55705500766635, + 11.066552018746734, + 10.98772103432566, + 12.572458013892174, + 13.003144995309412, + 10.81417000386864, + 10.882401023991406, + 12.499915901571512, + 11.031272006221116, + 10.215429007075727, + 13.068554922938347, + 13.089196989312768, + 12.036178959533572, + 11.026702006347477, + 11.434608954004943, + 14.00213094893843, + 11.278356076218188, + 11.135943001136184, + 12.54462799988687, + 10.105716064572334, + 13.811458018608391, + 12.716179015114903, + 12.351555051282048, + 10.75205800589174, + 13.018196099437773, + 11.911896988749504, + 11.268456000834703, + 12.549747014418244, + 13.932130998000503, + 12.66502810176462, + 12.903902097605169, + 12.77926005423069, + 10.746977059170604, + 12.537945993244648, + 11.807136004790664, + 13.172846985980868 + ], + "library": [ + 30.546903959475458, + 31.839704955928028, + 31.692493008449674, + 29.99578497838229, + 31.731734052300453, + 29.508396983146667, + 30.47091292683035, + 30.726497992873192, + 29.382825014181435, + 32.09427907131612, + 31.626351992599666, + 30.040665064007044, + 31.3934579025954, + 32.53749699797481, + 31.56070993281901, + 30.939409974962473, + 30.292790033854544, + 30.821998952887952, + 29.469477012753487, + 29.536777990870178, + 31.86348604504019, + 31.21084498707205, + 32.51288703177124, + 32.42709499318153, + 30.658015981316566, + 32.453835010528564, + 30.37142101675272, + 30.12595698237419, + 32.49477595090866, + 33.05536601692438, + 31.171623966656625, + 32.53444703295827, + 33.17048796452582, + 30.162767972797155, + 30.628995969891548, + 31.14364400971681, + 31.53554000891745, + 30.234958976507187, + 30.482943053357303, + 30.52208200097084, + 30.510273994877934, + 29.478526092134416, + 30.179979046806693, + 31.230964930728078, + 29.892303980886936, + 30.315430951304734, + 29.284714022651315, + 31.56135999597609, + 29.99518602155149, + 30.804167967289686, + 29.433645075187087, + 29.894003993831575, + 29.796991031616926, + 29.993275995366275, + 32.34676399733871, + 31.38344909530133, + 32.361114979721606, + 32.266911934129894, + 31.70221298933029, + 30.354890041053295, + 32.32001303695142, + 30.355561058968306, + 32.43642603047192, + 32.379265059717, + 30.836038989946246, + 28.816125937737525, + 30.842328909784555, + 31.23572503682226, + 32.42040297482163, + 30.901500023901463, + 31.910456949844956, + 31.665752991102636, + 32.22597192507237, + 30.738036963157356, + 30.35647002980113, + 29.858313035219908, + 30.617185053415596, + 32.40936389192939, + 29.18622305151075, + 31.350128003396094, + 31.204903963953257, + 32.12721098680049, + 31.29375702701509, + 32.36319404095411, + 31.924335984513164, + 30.75139701832086, + 30.015234951861203, + 32.85098192282021, + 30.241479980759323, + 30.234059086069465, + 29.97127501294017, + 31.122804037295282, + 32.4753460008651, + 30.984731041826308, + 30.46483197249472, + 29.717131052166224, + 31.467628898099065, + 30.69042693823576, + 31.144893961027265, + 29.509607004001737 + ] + }, + "warm_ms": { + "control": [ + 32.529416028410196, + 30.59517394285649, + 30.275750905275345 + ], + "nodedup": [ + 14.65124194510281, + 12.032579048536718, + 12.773599941283464 + ], + "library": [ + 31.866665929555893, + 31.980196945369244, + 32.375863986089826 + ] + }, + "stats": { + "control": { + "n": 100, + "median_ms": 31.308606499806046, + "p10_ms": 29.688644025009125, + "p90_ms": 32.554951088968664, + "min_ms": 28.651764034293592, + "max_ms": 33.23167806956917, + "mean_ms": 31.16757748182863 + }, + "nodedup": { + "n": 100, + "median_ms": 11.908381478860974, + "p10_ms": 10.768497094977647, + "p90_ms": 13.090056891087443, + "min_ms": 9.853541036136448, + "max_ms": 14.00213094893843, + "mean_ms": 11.930646024411544 + }, + "library": { + "n": 100, + "median_ms": 30.87191446684301, + "p10_ms": 29.69909574603662, + "p90_ms": 32.428028096910566, + "min_ms": 28.816125937737525, + "max_ms": 33.17048796452582, + "mean_ms": 31.01172529743053 + } + }, + "ratio_control_over_nodedup": { + "ratio": 2.6291235761453526, + "ci90_low": 2.5337240399099024, + "ci90_high": 2.71755542528802, + "bootstrap_samples": 2000 + }, + "ratio_library_over_nodedup": { + "ratio": 2.592452594976482, + "ci90_low": 2.504027637872919, + "ci90_high": 2.6846120253360146, + "bootstrap_samples": 2000 + }, + "ratio_control_over_library": { + "ratio": 1.0141452851403838, + "ci90_low": 1.0000711654118855, + "ci90_high": 1.0236923996259364, + "bootstrap_samples": 2000 + }, + "paired_round_ratio_control_over_nodedup": { + "median": 2.6459643757188154, + "p10": 2.4587246612409133, + "p90": 2.870499876279801 + }, + "minimum_detectable_improvement": 0.09155013219695024, + "compile": { + "control": { + "lower_s": 3.707144483109005, + "compile_s": 4.712811150937341, + "first_call_s": 0.03430059505626559, + "trace_calls": 32, + "flops": 33662500.0, + "hlo_sort_count": 15, + "stablehlo_sort_count": 3, + "hlo_sort_shapes": [ + "(f64[69849]{0}, f64[69849]{0}, s64[69849]{0})", + "(f64[4,60]{1,0}, f64[4,60]{1,0}, s64[4,60]{1,0})", + "(f64[4,720]{1,0}, f64[4,720]{1,0}, s64[4,720]{1,0})", + "(f64[4,60]{1,0}, f64[4,60]{1,0}, s64[4,60]{1,0})", + "(f64[4,720]{1,0}, f64[4,720]{1,0}, s64[4,720]{1,0})", + "(f64[4,60]{1,0}, f64[4,60]{1,0}, s64[4,60]{1,0})", + "(f64[4,720]{1,0}, f64[4,720]{1,0}, s64[4,720]{1,0})", + "(f64[4,60]{1,0}, f64[4,60]{1,0}, s64[4,60]{1,0})", + "(f64[4,720]{1,0}, f64[4,720]{1,0}, s64[4,720]{1,0})", + "(f64[4,60]{1,0}, f64[4,60]{1,0}, s64[4,60]{1,0})", + "(f64[4,720]{1,0}, f64[4,720]{1,0}, s64[4,720]{1,0})", + "(f64[4,60]{1,0}, f64[4,60]{1,0}, s64[4,60]{1,0})", + "(f64[4,720]{1,0}, f64[4,720]{1,0}, s64[4,720]{1,0})", + "(f64[4,60]{1,0}, f64[4,60]{1,0}, s64[4,60]{1,0})", + "(f64[4,720]{1,0}, f64[4,720]{1,0}, s64[4,720]{1,0})" + ], + "hlo_sha256": "de9ffe59e4f55057", + "hlo_lines": 30652 + }, + "nodedup": { + "lower_s": 3.3510314059676602, + "compile_s": 3.8235950260423124, + "first_call_s": 0.012071997974999249, + "trace_calls": 32, + "flops": 23296236.0, + "hlo_sort_count": 7, + "stablehlo_sort_count": 1, + "hlo_sort_shapes": [ + "(f64[4,60]{1,0}, f64[4,60]{1,0}, s64[4,60]{1,0})", + "(f64[4,60]{1,0}, f64[4,60]{1,0}, s64[4,60]{1,0})", + "(f64[4,60]{1,0}, f64[4,60]{1,0}, s64[4,60]{1,0})", + "(f64[4,60]{1,0}, f64[4,60]{1,0}, s64[4,60]{1,0})", + "(f64[4,60]{1,0}, f64[4,60]{1,0}, s64[4,60]{1,0})", + "(f64[4,60]{1,0}, f64[4,60]{1,0}, s64[4,60]{1,0})", + "(f64[4,60]{1,0}, f64[4,60]{1,0}, s64[4,60]{1,0})" + ], + "hlo_sha256": "b12f04a4a322a9fc", + "hlo_lines": 26375 + }, + "library": { + "lower_s": 3.7669854409759864, + "compile_s": 0.5013687639730051, + "first_call_s": 0.03329487901646644, + "trace_calls": 32, + "flops": 33662500.0, + "hlo_sort_count": 15, + "stablehlo_sort_count": 3, + "hlo_sort_shapes": [ + "(f64[69849]{0}, f64[69849]{0}, s64[69849]{0})", + "(f64[4,60]{1,0}, f64[4,60]{1,0}, s64[4,60]{1,0})", + "(f64[4,720]{1,0}, f64[4,720]{1,0}, s64[4,720]{1,0})", + "(f64[4,60]{1,0}, f64[4,60]{1,0}, s64[4,60]{1,0})", + "(f64[4,720]{1,0}, f64[4,720]{1,0}, s64[4,720]{1,0})", + "(f64[4,60]{1,0}, f64[4,60]{1,0}, s64[4,60]{1,0})", + "(f64[4,720]{1,0}, f64[4,720]{1,0}, s64[4,720]{1,0})", + "(f64[4,60]{1,0}, f64[4,60]{1,0}, s64[4,60]{1,0})", + "(f64[4,720]{1,0}, f64[4,720]{1,0}, s64[4,720]{1,0})", + "(f64[4,60]{1,0}, f64[4,60]{1,0}, s64[4,60]{1,0})", + "(f64[4,720]{1,0}, f64[4,720]{1,0}, s64[4,720]{1,0})", + "(f64[4,60]{1,0}, f64[4,60]{1,0}, s64[4,60]{1,0})", + "(f64[4,720]{1,0}, f64[4,720]{1,0}, s64[4,720]{1,0})", + "(f64[4,60]{1,0}, f64[4,60]{1,0}, s64[4,60]{1,0})", + "(f64[4,720]{1,0}, f64[4,720]{1,0}, s64[4,720]{1,0})" + ], + "hlo_sha256": "b7fb2eb6e27f35f3", + "hlo_lines": 26996 + } + }, + "instances_compared": [ + [ + 0, + 1, + 2, + 3 + ], + [ + 4, + 5, + 6, + 7 + ], + [ + 8, + 9, + 10, + 11 + ], + [ + 12, + 13, + 14, + 15 + ] + ], + "values": { + "control": [ + [ + 7.743201200876812, + 4.901199826003542, + 8.551453428732437, + 7.640170398958149 + ], + [ + 7.2580956747803445, + 9.29357838657636, + 3.0338796505151917, + 8.714615086385912 + ], + [ + 4.735173159474494, + 3.2233889243165805, + 9.296501815740573, + 6.7486158154711955 + ], + [ + -1.4028143150641306, + 0.5885274382499945, + 6.162997261446639, + -10.49915087893337 + ] + ], + "nodedup": [ + [ + 7.743201200876812, + 4.901199826003542, + 8.551453428732437, + 7.640170398958149 + ], + [ + 7.2580956747803445, + 9.29357838657636, + 3.0338796505151917, + 8.714615086385912 + ], + [ + 4.735173159474494, + 3.2233889243165805, + 9.296501815740573, + 6.7486158154711955 + ], + [ + -1.4028143150641306, + 0.5885274382499945, + 6.162997261446639, + -10.49915087893337 + ] + ], + "library": [ + [ + 7.743201200876812, + 4.901199826003542, + 8.551453428732437, + 7.640170398958149 + ], + [ + 7.2580956747803445, + 9.29357838657636, + 3.0338796505151917, + 8.714615086385912 + ], + [ + 4.735173159474494, + 3.2233889243165805, + 9.296501815740573, + 6.7486158154711955 + ], + [ + -1.4028143150641306, + 0.5885274382499945, + 6.162997261446639, + -10.49915087893337 + ] + ] + }, + "deterministic_within_route": { + "control": true, + "nodedup": true, + "library": true + }, + "likelihood_gate": { + "control_vs_nodedup": { + "bit_identical": true, + "max_abs_delta": 0.0, + "max_rel_delta": 0.0, + "nan_pattern_equal": true + }, + "control_vs_library": { + "bit_identical": true, + "max_abs_delta": 0.0, + "max_rel_delta": 0.0, + "nan_pattern_equal": true + }, + "nodedup_vs_library": { + "bit_identical": true, + "max_abs_delta": 0.0, + "max_rel_delta": 0.0, + "nan_pattern_equal": true + } + } + }, + "simple_plain": { + "label": "simple_plain", + "batch": null, + "n_rounds": 20, + "n_calls_per_round": 5, + "n_warm": 3, + "route_order": "round-robin, start rotated each round", + "per_call_ms": { + "control": [ + 23.713991045951843, + 23.581678979098797, + 22.933808038942516, + 23.557719076052308, + 23.634618963114917, + 23.8114430103451, + 23.31034408416599, + 23.679282050579786, + 23.804851924069226, + 24.030817905440927, + 23.97769596427679, + 23.66933098528534, + 23.845942923799157, + 23.963685031048954, + 24.20513890683651, + 23.22091395035386, + 23.579969070851803, + 24.24373896792531, + 23.754733032546937, + 23.831344093196094, + 22.690413985401392, + 23.657490964978933, + 23.747162078507245, + 24.030975997447968, + 23.410515976138413, + 23.8391530001536, + 24.095937958918512, + 23.72860093601048, + 22.994207916781306, + 23.301393957808614, + 23.078070022165775, + 23.025640984997153, + 23.484047036617994, + 23.82246300112456, + 23.97007599938661, + 23.65525101777166, + 24.18142999522388, + 23.64838996436447, + 23.481406969949603, + 23.452396038919687, + 23.639800027012825, + 23.467647028155625, + 23.644311004318297, + 23.78142299130559, + 24.534575059078634, + 23.890924989245832, + 24.35762109234929, + 23.954625008627772, + 23.696210933849216, + 23.50953803397715, + 24.140468914993107, + 23.649870068766177, + 24.325092090293765, + 24.328252067789435, + 24.107348057441413, + 23.400535923428833, + 23.706272011622787, + 24.173887912184, + 23.496618028730154, + 24.016145966015756, + 23.347895010374486, + 23.881754954345524, + 23.980385973118246, + 23.29836494755, + 23.882264038547873, + 23.14744098111987, + 24.41836299840361, + 24.044367019087076, + 24.23192106653005, + 23.43546599149704, + 23.495448986068368, + 22.582702920772135, + 23.711142013780773, + 24.211689014919102, + 23.91249395441264, + 23.501247982494533, + 23.787882993929088, + 23.855342995375395, + 23.257813998498023, + 23.979595978744328, + 23.18600204307586, + 23.552249069325626, + 23.849664023146033, + 23.476017988286912, + 23.83336308412254, + 24.061657954007387, + 23.960154969245195, + 23.924755048938096, + 23.89629394747317, + 24.101499002426863, + 23.459638003259897, + 23.330235038883984, + 24.190608994103968, + 23.27716490253806, + 23.7618419341743, + 23.494198103435338, + 24.482654058374465, + 24.20134993735701, + 23.837854037992656, + 24.421924026682973 + ], + "nodedup": [ + 5.650362931191921, + 5.2637269254773855, + 4.99749300070107, + 6.4044559840112925, + 6.02319894824177, + 5.381238996051252, + 4.727527964860201, + 5.67751401104033, + 5.637482041493058, + 6.25743402633816, + 5.830507026985288, + 4.861669964157045, + 6.372345029376447, + 6.265482981689274, + 6.156002054922283, + 4.4940439984202385, + 5.136614898219705, + 5.968227982521057, + 5.53574098739773, + 5.426018964499235, + 4.72811795771122, + 5.130605073645711, + 5.243247025646269, + 6.249033031053841, + 5.636923015117645, + 4.910731106065214, + 6.250154925510287, + 4.7844190848991275, + 5.085314041934907, + 5.346879013814032, + 5.154485930688679, + 5.791735020466149, + 5.459080100990832, + 5.147734074853361, + 6.138821016065776, + 4.952771007083356, + 6.196312955580652, + 5.685903946869075, + 5.782076972536743, + 5.386439035646617, + 5.062244017608464, + 5.717133986763656, + 5.175506114028394, + 5.6068929843604565, + 5.600781994871795, + 5.13497507199645, + 4.632557043805718, + 5.336707923561335, + 5.170325981453061, + 5.404717987403274, + 4.953001975081861, + 5.196787067689002, + 5.302416044287384, + 5.186705035157502, + 6.031509023159742, + 5.094713997095823, + 5.511531024239957, + 5.148626049049199, + 4.849541001021862, + 4.922681022435427, + 6.319543928839266, + 4.799540038220584, + 5.257767043076456, + 6.234423024579883, + 6.194212008267641, + 5.3327190689742565, + 6.084720022045076, + 6.293594022281468, + 5.396860069595277, + 5.0876319874078035, + 5.002493038773537, + 5.557432072237134, + 5.356129026040435, + 6.251732935197651, + 5.347378901205957, + 5.145073984749615, + 5.213687079958618, + 6.584619055502117, + 5.429081036709249, + 5.5953520350158215, + 6.016519037075341, + 5.644863937050104, + 5.28257607948035, + 5.392039893195033, + 5.402939976193011, + 5.592423025518656, + 6.25609396956861, + 5.163704976439476, + 4.763048957102001, + 5.113633931614459, + 5.381298018619418, + 6.277184002101421, + 5.135983927175403, + 4.721957957372069, + 6.2122829258441925, + 5.371779086999595, + 6.054428988136351, + 5.8081470197066665, + 5.476210964843631, + 5.733844009228051 + ], + "library": [ + 22.912129061296582, + 24.50334292370826, + 23.859442910179496, + 23.740751086734235, + 23.922145017422736, + 23.67204998154193, + 23.670141003094614, + 23.86528509669006, + 24.238960002548993, + 23.005789960734546, + 24.006425985135138, + 23.00955995451659, + 23.162893019616604, + 24.085868033580482, + 23.938714992254972, + 23.817913024686277, + 23.86268402915448, + 24.652058025822043, + 24.084628093987703, + 22.930499049834907, + 22.963729104958475, + 23.756552021950483, + 23.930795025080442, + 23.543018964119256, + 23.59433996025473, + 23.73980195261538, + 23.69920106139034, + 24.243319989182055, + 23.646259913221, + 24.29260197095573, + 23.94114399794489, + 23.37789593730122, + 23.62740004900843, + 23.455927963368595, + 23.615519981831312, + 23.664460983127356, + 24.163828929886222, + 24.12971807643771, + 23.520868038758636, + 23.54366797953844, + 23.46309705171734, + 24.178429041057825, + 23.413397022522986, + 23.91467394772917, + 23.58355897013098, + 23.42917793430388, + 23.403216036967933, + 24.151407997123897, + 24.187209899537265, + 23.34375400096178, + 22.933009080588818, + 24.07039701938629, + 24.050015956163406, + 23.502938100136817, + 22.931838990189135, + 24.0365460049361, + 24.149429984390736, + 23.51347799412906, + 23.4083270188421, + 24.172818986698985, + 22.87755801808089, + 24.286129977554083, + 24.36174196191132, + 23.30357499886304, + 24.53182393219322, + 23.80180300679058, + 24.077258072793484, + 23.683240986429155, + 23.565949057228863, + 23.654200020246208, + 23.88217393308878, + 22.86984701640904, + 23.275665007531643, + 23.571768077090383, + 23.21524196304381, + 23.120532045140862, + 23.935195058584213, + 23.86642398778349, + 24.026905070059, + 23.821312002837658, + 22.8308659279719, + 23.532667895779014, + 23.936265031807125, + 24.05299700330943, + 24.201270076446235, + 23.62477104179561, + 23.971283924765885, + 24.439204018563032, + 23.46762700472027, + 23.557508015073836, + 23.380386061035097, + 23.417956079356372, + 24.179868982173502, + 24.338162038475275, + 23.887863964773715, + 23.477746988646686, + 23.96491600666195, + 24.063748074695468, + 23.66005105432123, + 23.805904085747898 + ] + }, + "warm_ms": { + "control": [ + 25.066172936931252, + 23.55203893966973, + 24.104858050122857 + ], + "nodedup": [ + 5.151672987267375, + 4.923720960505307, + 5.482819979079068 + ], + "library": [ + 23.289433913305402, + 24.070507963187993, + 23.10471097007394 + ] + }, + "stats": { + "control": { + "n": 100, + "median_ms": 23.75828748336062, + "p10_ms": 23.275229812134057, + "p90_ms": 24.20579391764477, + "min_ms": 22.582702920772135, + "max_ms": 24.534575059078634, + "mean_ms": 23.73729949002154 + }, + "nodedup": { + "n": 100, + "median_ms": 5.394449981395155, + "p10_ms": 4.905824991874397, + "p90_ms": 6.250312726479024, + "min_ms": 4.4940439984202385, + "max_ms": 6.584619055502117, + "mean_ms": 5.494521794607863 + }, + "library": { + "n": 100, + "median_ms": 23.740276519674808, + "p10_ms": 23.109434836078435, + "p90_ms": 24.20503906905651, + "min_ms": 22.8308659279719, + "max_ms": 24.652058025822043, + "mean_ms": 23.72747461660765 + } + }, + "ratio_control_over_nodedup": { + "ratio": 4.404209431044917, + "ci90_low": 4.300452633903725, + "ci90_high": 4.451552413159513, + "bootstrap_samples": 2000 + }, + "ratio_library_over_nodedup": { + "ratio": 4.400870635848386, + "ci90_low": 4.303613896516856, + "ci90_high": 4.451532238753158, + "bootstrap_samples": 2000 + }, + "ratio_control_over_library": { + "ratio": 1.000758666971334, + "ci90_low": 0.9944628975043939, + "ci90_high": 1.0063231550005387, + "bootstrap_samples": 2000 + }, + "paired_round_ratio_control_over_nodedup": { + "median": 4.368703023644603, + "p10": 4.13248675177974, + "p90": 4.646052387268373 + }, + "minimum_detectable_improvement": 0.03916797901205811, + "compile": { + "control": { + "lower_s": 2.2088697450235486, + "compile_s": 3.6078590539982542, + "first_call_s": 0.023993946029804647, + "trace_calls": 32, + "flops": 15581930.0, + "hlo_sort_count": 15, + "stablehlo_sort_count": 3, + "hlo_sort_shapes": [ + "(f64[69849]{0}, f64[69849]{0}, s64[69849]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})" + ], + "hlo_sha256": "4d9d5d3e4e0d6aae", + "hlo_lines": 25706 + }, + "nodedup": { + "lower_s": 1.9852205039933324, + "compile_s": 2.836882979958318, + "first_call_s": 0.0056221820414066315, + "trace_calls": 32, + "flops": 7052562.0, + "hlo_sort_count": 7, + "stablehlo_sort_count": 1, + "hlo_sort_shapes": [ + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})" + ], + "hlo_sha256": "cfe8b12c42597040", + "hlo_lines": 21527 + }, + "library": { + "lower_s": 2.1434380459832028, + "compile_s": 0.41885570297017694, + "first_call_s": 0.02418478997424245, + "trace_calls": 32, + "flops": 15581930.0, + "hlo_sort_count": 15, + "stablehlo_sort_count": 3, + "hlo_sort_shapes": [ + "(f64[69849]{0}, f64[69849]{0}, s64[69849]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})" + ], + "hlo_sha256": "d8260713c96ca09c", + "hlo_lines": 23982 + } + }, + "instances_compared": [ + [ + 0 + ], + [ + 1 + ], + [ + 2 + ], + [ + 3 + ], + [ + 4 + ], + [ + 5 + ], + [ + 6 + ], + [ + 7 + ], + [ + 8 + ], + [ + 9 + ], + [ + 10 + ], + [ + 11 + ], + [ + 12 + ], + [ + 13 + ], + [ + 14 + ], + [ + 15 + ] + ], + "values": { + "control": [ + 7.196577317761015, + -45.87302127443001, + 2.904871458739854, + -801.1656151465147, + -856.2176369539866, + -701.3832757596593, + -791.8603301084569, + -641.0597186366746, + -856.874766532385, + -965.6893581059344, + -601.8962692526686, + 1.491228024977211, + -664.1239657398182, + -4.055811166945713, + -6.531970036750838, + -970.3067931813664 + ], + "nodedup": [ + 7.196577317761015, + -45.87302127443001, + 2.904871458739854, + -801.1656151465147, + -856.2176369539866, + -701.3832757596593, + -791.8603301084569, + -641.0597186366746, + -856.874766532385, + -965.6893581059344, + -601.8962692526686, + 1.491228024977211, + -664.1239657398182, + -4.055811166945713, + -6.531970036750838, + -970.3067931813664 + ], + "library": [ + 7.196577317761015, + -45.87302127443001, + 2.904871458739854, + -801.1656151465147, + -856.2176369539866, + -701.3832757596593, + -791.8603301084569, + -641.0597186366746, + -856.874766532385, + -965.6893581059344, + -601.8962692526686, + 1.491228024977211, + -664.1239657398182, + -4.055811166945713, + -6.531970036750838, + -970.3067931813664 + ] + }, + "deterministic_within_route": { + "control": true, + "nodedup": true, + "library": true + }, + "likelihood_gate": { + "control_vs_nodedup": { + "bit_identical": true, + "max_abs_delta": 0.0, + "max_rel_delta": 0.0, + "nan_pattern_equal": true + }, + "control_vs_library": { + "bit_identical": true, + "max_abs_delta": 0.0, + "max_rel_delta": 0.0, + "nan_pattern_equal": true + }, + "nodedup_vs_library": { + "bit_identical": true, + "max_abs_delta": 0.0, + "max_rel_delta": 0.0, + "nan_pattern_equal": true + } + }, + "fiducial_log_likelihood": { + "control": 7.196577317761015, + "nodedup": 7.196577317761015, + "library": 7.196577317761015 + } + }, + "cluster_solved": { + "label": "cluster_solved", + "batch": null, + "n_rounds": 20, + "n_calls_per_round": 5, + "n_warm": 3, + "route_order": "round-robin, start rotated each round", + "per_call_ms": { + "control": [ + 152.63693896122277, + 152.97853399533778, + 152.52143796533346, + 135.6514790095389, + 155.10210895445198, + 162.6331739826128, + 142.19054696150124, + 153.04724697489291, + 153.33789098076522, + 162.67960495315492, + 143.08760198764503, + 159.36305897776037, + 161.8538120528683, + 155.29831300955266, + 149.9844460049644, + 155.90160305146128, + 151.81348600890487, + 159.74708704743534, + 166.67501104529947, + 158.7866609916091, + 156.04361495934427, + 156.26180998515338, + 161.00630606524646, + 162.31267899274826, + 155.14581103343517, + 142.10122602526098, + 144.1339870216325, + 159.8942489363253, + 149.52625799924135, + 145.73522505816072, + 141.04326791130006, + 153.11066701542586, + 157.88080694619566, + 153.84627901948988, + 144.1292780218646, + 156.58084501046687, + 156.0365150216967, + 164.30956101976335, + 151.81862493045628, + 160.42832704260945, + 155.1077989861369, + 141.30888297222555, + 157.64387208037078, + 154.59722105879337, + 159.71770696341991, + 162.64410503208637, + 155.3240839857608, + 144.6844070451334, + 156.07994608581066, + 151.58025093842298, + 156.61977499257773, + 156.22469899244606, + 151.75980399362743, + 168.45922102220356, + 152.1288399817422, + 159.23411899711937, + 143.3676560409367, + 157.2235650382936, + 151.43941005226225, + 152.54726796410978, + 140.86539507843554, + 161.1897200345993, + 158.94839307293296, + 150.85646009538323, + 142.67717394977808, + 159.1877369210124, + 131.39749795664102, + 142.3690700903535, + 153.6242550937459, + 157.63303101994097, + 159.35130999423563, + 159.3434310052544, + 160.69624305237085, + 155.5484370328486, + 163.27739402186126, + 158.16587093286216, + 148.6874440452084, + 142.92310096789151, + 160.4551769560203, + 159.36505002900958, + 156.96502092760056, + 153.2985189696774, + 139.48320201598108, + 166.94290493614972, + 161.30356292705983, + 161.05960810091347, + 144.39474407117814, + 140.23252401966602, + 151.73061401583254, + 143.45434692222625, + 132.16753106098622, + 159.3274399638176, + 163.1195719819516, + 158.53872697334737, + 138.75539996661246, + 151.67039295192808, + 162.8238969715312, + 148.5360509250313, + 156.9061999907717, + 145.2865870669484 + ], + "nodedup": [ + 86.42536692786962, + 82.37085898872465, + 82.52874203026295, + 79.1106759570539, + 74.88966605160385, + 63.81135305855423, + 61.863420996814966, + 86.40845597255975, + 79.49813106097281, + 90.05862602498382, + 68.11371399089694, + 74.95000690687448, + 78.22849100921303, + 77.77397299651057, + 82.56516291294247, + 90.71755805052817, + 76.4263819437474, + 86.07037900947034, + 82.35757797956467, + 67.26283894386142, + 71.94916694425046, + 84.09677899908274, + 67.87143007386476, + 76.81702799163759, + 94.85033596865833, + 82.90812803898007, + 78.29956302884966, + 86.4002660382539, + 78.33956298418343, + 91.7971960734576, + 82.97158894129097, + 81.05250797234476, + 92.21225196961313, + 74.45150893181562, + 69.26585303153843, + 88.24467600788921, + 76.4506219420582, + 82.53535197582096, + 82.341299043037, + 81.06406801380217, + 83.34904594812542, + 66.36334606446326, + 64.62278601247817, + 74.8613360337913, + 69.47906699497253, + 82.78822689317167, + 81.13417797721922, + 83.01770896650851, + 86.40336501412094, + 79.42036096937954, + 79.52230202499777, + 76.59390394110233, + 70.42528293095529, + 81.66630705818534, + 78.65423802286386, + 68.97081807255745, + 81.73927897587419, + 67.50176392961293, + 67.5908459816128, + 76.68992702383548, + 65.79990591853857, + 79.15093493647873, + 86.84021304361522, + 65.73383591603488, + 71.82882493361831, + 92.1198190189898, + 69.03514894656837, + 60.20038400311023, + 76.7405170481652, + 80.78470302280039, + 76.6303640557453, + 82.84460799768567, + 76.66126592084765, + 84.2112599639222, + 80.76119306497276, + 87.77809794992208, + 71.7825359897688, + 76.45250204950571, + 65.99024904426187, + 68.67383397184312, + 82.08305493462831, + 88.25629705097526, + 62.08001496270299, + 91.44321002531797, + 79.69344593584538, + 66.55489897821099, + 77.50013889744878, + 80.6658819783479, + 58.104768046177924, + 91.57992189284414, + 64.58984490018338, + 60.35927589982748, + 82.964519970119, + 66.33958499878645, + 77.17106398195028, + 84.22435901593417, + 69.60862805135548, + 64.18442993890494, + 70.32559090293944, + 69.46080701891333 + ], + "library": [ + 159.8457780200988, + 153.99269096087664, + 148.31811701878905, + 160.1679129526019, + 141.9486430240795, + 139.63528396561742, + 142.44394202250987, + 161.40587499830872, + 134.40725801046938, + 154.78771505877376, + 162.37152996473014, + 154.409208917059, + 143.5851800488308, + 148.58856203500181, + 154.7372629866004, + 149.60081805475056, + 160.68272199481726, + 136.7454460123554, + 154.82229506596923, + 154.2462259531021, + 143.1022509932518, + 152.08763105329126, + 154.5231599593535, + 162.08426596131176, + 149.12917197216302, + 151.04234300088137, + 139.5560329547152, + 142.80194707680494, + 154.988627997227, + 160.14220390934497, + 160.69801209960133, + 153.93827005755156, + 140.52890904713422, + 166.8712650425732, + 155.0575690343976, + 151.6351120080799, + 141.99135405942798, + 159.1382269980386, + 143.97174504119903, + 154.90583598148078, + 159.97883898671716, + 152.59477798826993, + 154.55927001312375, + 158.89555297326297, + 159.32454902213067, + 156.6120849456638, + 162.52617200370878, + 141.36860403232276, + 154.87875591497868, + 150.28275991789997, + 157.51107991673052, + 163.71327207889408, + 153.99265196174383, + 161.20751097332686, + 156.06863610446453, + 152.94022404123098, + 143.17928301170468, + 160.41666804812849, + 159.37120094895363, + 146.29364490974694, + 137.6961530186236, + 158.89534202869982, + 155.034358962439, + 164.80707901064306, + 151.74097393173724, + 164.03541702311486, + 161.1705799587071, + 161.96466295514256, + 160.58404091745615, + 142.32427801471204, + 139.82489693444222, + 143.05749093182385, + 160.13477393426, + 158.94770296290517, + 143.65712995640934, + 161.66494810022414, + 153.16832705866545, + 162.277337978594, + 154.8998369835317, + 159.58125400356948, + 151.64755296427757, + 154.48045008815825, + 142.8331780480221, + 159.4756820704788, + 138.4429739555344, + 153.59587501734495, + 142.9382589412853, + 142.67272502183914, + 144.0259061055258, + 169.22689299099147, + 156.34959004819393, + 152.79998094774783, + 160.7944630086422, + 158.20583107415587, + 152.763950987719, + 159.63755501434207, + 130.5520039750263, + 150.38377197925, + 154.2847149539739, + 162.84995793830603 + ] + }, + "warm_ms": { + "control": [ + 145.39671002421528, + 152.15986198745668, + 157.50575996935368 + ], + "nodedup": [ + 86.42376598436385, + 84.39529302995652, + 64.70870808698237 + ], + "library": [ + 152.31426409445703, + 158.69234898127615, + 156.0823949985206 + ] + }, + "stats": { + "control": { + "n": 100, + "median_ms": 155.2220620214939, + "p10_ms": 142.18161486787722, + "p90_ms": 162.3447284917347, + "min_ms": 131.39749795664102, + "max_ms": 168.45922102220356, + "mean_ms": 153.46887049265206 + }, + "nodedup": { + "n": 100, + "median_ms": 78.31956300651655, + "p10_ms": 65.7932989182882, + "p90_ms": 87.8247557557188, + "min_ms": 58.104768046177924, + "max_ms": 94.85033596865833, + "mean_ms": 77.23354587797076 + }, + "library": { + "n": 100, + "median_ms": 154.50180502375588, + "p10_ms": 141.89063912490383, + "p90_ms": 161.97662325575948, + "min_ms": 130.5520039750263, + "max_ms": 169.22689299099147, + "mean_ms": 152.9407983890269 + } + }, + "ratio_control_over_nodedup": { + "ratio": 1.9819066407275374, + "ci90_low": 1.928025198745462, + "ci90_high": 2.0291234546320416, + "bootstrap_samples": 2000 + }, + "ratio_library_over_nodedup": { + "ratio": 1.9727102538978751, + "ci90_low": 1.925502467564942, + "ci90_high": 2.016305233312894, + "bootstrap_samples": 2000 + }, + "ratio_control_over_library": { + "ratio": 1.0046618031266838, + "ci90_low": 0.9909057354950679, + "ci90_high": 1.0147285672455728, + "bootstrap_samples": 2000 + }, + "paired_round_ratio_control_over_nodedup": { + "median": 1.9796691653123935, + "p10": 1.8621437210486749, + "p90": 2.2138327751794513 + }, + "minimum_detectable_improvement": 0.12989850386773932, + "compile": { + "control": { + "lower_s": 43.08372342400253, + "compile_s": 31.446726183989085, + "first_call_s": 0.1433088940102607, + "trace_calls": 168, + "flops": 184158336.0, + "hlo_sort_count": 25, + "stablehlo_sort_count": 3, + "hlo_sort_shapes": [ + "(f64[276507]{0}, f64[276507]{0}, s64[276507]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})" + ], + "hlo_sha256": "713848ef79ffa9a5", + "hlo_lines": 70897 + }, + "nodedup": { + "lower_s": 41.99813494598493, + "compile_s": 27.893285555997863, + "first_call_s": 0.07715024310164154, + "trace_calls": 168, + "flops": 139442208.0, + "hlo_sort_count": 12, + "stablehlo_sort_count": 1, + "hlo_sort_shapes": [ + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})" + ], + "hlo_sha256": "487480f9cc0f6af1", + "hlo_lines": 62911 + }, + "library": { + "lower_s": 43.47017756092828, + "compile_s": 1.8934005189221352, + "first_call_s": 0.15951365302316844, + "trace_calls": 168, + "flops": 184158336.0, + "hlo_sort_count": 25, + "stablehlo_sort_count": 3, + "hlo_sort_shapes": [ + "(f64[276507]{0}, f64[276507]{0}, s64[276507]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})" + ], + "hlo_sha256": "7cb500385e28dd14", + "hlo_lines": 61894 + } + }, + "instances_compared": [ + [ + 0 + ], + [ + 1 + ], + [ + 2 + ], + [ + 3 + ], + [ + 4 + ], + [ + 5 + ], + [ + 6 + ], + [ + 7 + ], + [ + 8 + ], + [ + 9 + ], + [ + 10 + ], + [ + 11 + ], + [ + 12 + ], + [ + 13 + ], + [ + 14 + ], + [ + 15 + ] + ], + "values": { + "control": [ + 25.56012716672745, + 21.572496958393117, + 21.458564666727817, + 13.597236541730304, + 15.306220916729094, + 10.29320008339773, + 19.977444875061735, + 21.80036154172802, + 10.748929250057948, + 9.60960633339704, + 5.166246958396465, + 14.05296570839195, + 4.710517791725226, + 6.647366750058172, + 17.926663625058694, + 16.331611541724385 + ], + "nodedup": [ + 25.56012716672745, + 21.572496958393117, + 21.458564666727817, + 13.597236541730304, + 15.306220916729094, + 10.29320008339773, + 19.977444875061735, + 21.80036154172802, + 10.748929250057948, + 9.60960633339704, + 5.166246958396465, + 14.05296570839195, + 4.710517791725226, + 6.647366750058172, + 17.926663625058694, + 16.331611541724385 + ], + "library": [ + 25.56012716672745, + 21.572496958393117, + 21.458564666727817, + 13.597236541730304, + 15.306220916729094, + 10.29320008339773, + 19.977444875061735, + 21.80036154172802, + 10.748929250057948, + 9.60960633339704, + 5.166246958396465, + 14.05296570839195, + 4.710517791725226, + 6.647366750058172, + 17.926663625058694, + 16.331611541724385 + ] + }, + "deterministic_within_route": { + "control": true, + "nodedup": true, + "library": true + }, + "likelihood_gate": { + "control_vs_nodedup": { + "bit_identical": true, + "max_abs_delta": 0.0, + "max_rel_delta": 0.0, + "nan_pattern_equal": true + }, + "control_vs_library": { + "bit_identical": true, + "max_abs_delta": 0.0, + "max_rel_delta": 0.0, + "nan_pattern_equal": true + }, + "nodedup_vs_library": { + "bit_identical": true, + "max_abs_delta": 0.0, + "max_rel_delta": 0.0, + "nan_pattern_equal": true + } + }, + "fiducial_log_likelihood": { + "control": 25.56012716672745, + "nodedup": 25.56012716672745, + "library": 25.56012716672745 + } + }, + "cluster_plain": { + "label": "cluster_plain", + "batch": null, + "n_rounds": 20, + "n_calls_per_round": 5, + "n_warm": 3, + "route_order": "round-robin, start rotated each round", + "per_call_ms": { + "control": [ + 148.70946400333196, + 149.79611104354262, + 141.5129149099812, + 152.88197295740247, + 144.83792998362333, + 142.0958659145981, + 156.3809310318902, + 159.12808699067682, + 156.89756895881146, + 161.83472098782659, + 154.6212729299441, + 169.7419520933181, + 143.20531289558858, + 138.6393179418519, + 154.33577704243362, + 160.84934398531914, + 163.92052604351193, + 160.64434102736413, + 150.73228802066296, + 160.10179300792515, + 158.67871802765876, + 150.99675301462412, + 154.2905269889161, + 157.96382806729525, + 152.1002899389714, + 156.55530407093465, + 149.30747298058122, + 162.53523190971464, + 137.80889404006302, + 150.1813989598304, + 157.22449298482388, + 144.6756870718673, + 153.9811909897253, + 144.65718704741448, + 143.22653401177377, + 137.63807201758027, + 159.39384198281914, + 159.93083000648767, + 162.98902896232903, + 149.8392130015418, + 150.85828898008913, + 156.3127599656582, + 150.71177703794092, + 160.0851130206138, + 163.67324197199196, + 161.55653703026474, + 141.88247197307646, + 159.04681396204978, + 154.12198496051133, + 148.07936397846788, + 138.16658093128353, + 158.3609830122441, + 147.46994501911104, + 160.2334959898144, + 147.11030793841928, + 159.53924297355115, + 143.92870501615107, + 168.45664905849844, + 152.29411190375686, + 162.54777205176651, + 161.7180600296706, + 160.4632589733228, + 160.05699196830392, + 161.39509296044707, + 153.72257702983916, + 145.12270595878363, + 145.3224279684946, + 164.45471404585987, + 143.2730039814487, + 158.50103506818414, + 159.56779289990664, + 169.93465507403016, + 140.88620501570404, + 158.61763805150986, + 141.20595098938793, + 158.24292006436735, + 161.68733895756304, + 157.30204596184194, + 160.94919492024928, + 141.3517720066011, + 154.00896198116243, + 153.2982389908284, + 145.17070597503334, + 150.82260000053793, + 139.58842400461435, + 153.2341680722311, + 140.59607102535665, + 154.08184402622283, + 161.34941298514605, + 147.98715198412538, + 141.5523060131818, + 150.16552805900574, + 148.8306859973818, + 143.0973409442231, + 148.788935970515, + 151.45906002726406, + 161.41071391757578, + 146.88628492876887, + 153.1434979988262, + 161.88890195917338 + ], + "nodedup": [ + 86.14640298765153, + 80.75145201291889, + 88.90352700836957, + 71.62418204825372, + 80.91542508918792, + 79.94684891309589, + 81.0347570804879, + 87.40223303902894, + 71.70944300014526, + 76.15748792886734, + 73.63698608241975, + 65.21643698215485, + 78.16097990144044, + 86.68682107236236, + 79.28013894706964, + 75.29556297231466, + 70.98165201023221, + 74.0304400678724, + 77.9628159943968, + 66.62139890249819, + 69.96247405186296, + 61.96297297719866, + 86.67601097840816, + 80.36079606972635, + 77.84207502845675, + 93.58979493845254, + 87.05643599387258, + 62.19729606527835, + 65.87238796055317, + 69.44262597244233, + 84.01894604321569, + 75.57429699227214, + 67.00957508292049, + 60.44910801574588, + 77.16935395728797, + 81.10120799392462, + 89.40530603285879, + 69.86566295381635, + 70.61589497607201, + 75.79440099652857, + 70.3877710038796, + 64.29927097633481, + 77.640839968808, + 81.86020189896226, + 77.19898305367678, + 77.77390303090215, + 79.33711900841445, + 86.72863990068436, + 79.48165200650692, + 76.73948595765978, + 75.25887305382639, + 89.21541296876967, + 77.57277996279299, + 78.16653896588832, + 79.7180050285533, + 90.74938693083823, + 92.87463291548193, + 62.45861994102597, + 87.12033706251532, + 75.77635999768972, + 70.48076298087835, + 85.3712490061298, + 68.5524910222739, + 81.20245102327317, + 69.18838294222951, + 78.08934897184372, + 95.79135105013847, + 71.08879403676838, + 77.51271000597626, + 81.89701195806265, + 81.96704392321408, + 88.75439502298832, + 90.05283599253744, + 83.23816407937557, + 82.8987379791215, + 82.813706016168, + 75.86014096159488, + 84.7984200809151, + 68.12438392080367, + 63.81927395705134, + 66.14623207133263, + 71.1548050167039, + 77.20561500173062, + 77.96111702919006, + 84.69120808877051, + 68.14437499269843, + 76.7525970004499, + 88.10387400444597, + 62.74222594220191, + 93.39069097768515, + 82.07161503378302, + 85.20103606861085, + 73.22211901191622, + 79.16212605778128, + 79.9800610402599, + 76.01238403003663, + 75.7603500969708, + 67.22805893514305, + 66.95787608623505, + 62.09359492640942 + ], + "library": [ + 154.38408905174583, + 161.01150610484183, + 148.06567400228232, + 150.75317898299545, + 144.26708000246435, + 140.7278230180964, + 163.7792430119589, + 155.09738097898662, + 141.49863505735993, + 152.23749296274036, + 160.32643499784172, + 152.1399199264124, + 143.4420879231766, + 141.56307594384998, + 143.69320205878466, + 149.61581001989543, + 163.77579292748123, + 145.4774709418416, + 155.27295297943056, + 161.2109310226515, + 157.88573597092181, + 141.89512189477682, + 150.33917198888958, + 141.51844708248973, + 156.0851950198412, + 152.335764025338, + 141.23888197354972, + 148.44414009712636, + 151.77449502516538, + 137.50028901267797, + 157.7893029898405, + 159.81279697734863, + 142.82050810288638, + 155.46970604918897, + 144.6388369658962, + 160.1318729808554, + 156.5657650353387, + 158.79846003372222, + 151.65004204027355, + 155.41701496113092, + 161.96767194196582, + 136.21137791778892, + 150.66886704880744, + 152.06307009793818, + 157.9792370321229, + 149.91673303302377, + 152.94564398936927, + 158.67798798717558, + 149.60089907981455, + 150.8275599917397, + 154.35390698257834, + 162.0927850017324, + 156.45806200336665, + 153.80208904389292, + 152.73467102088034, + 158.59802800696343, + 171.7751360265538, + 158.65204797592014, + 144.39984399359673, + 142.3665899783373, + 155.96667304635048, + 144.68957798089832, + 153.93856004811823, + 139.77476803120226, + 164.24362000543624, + 158.7188889971003, + 144.0740879625082, + 160.35320598166436, + 143.9191160025075, + 142.03652495052665, + 149.94523499626666, + 155.2464630221948, + 163.40310603845865, + 159.64744507800788, + 155.26329295244068, + 159.39480205997825, + 149.72816000226885, + 142.45488995220512, + 140.99184598308057, + 155.6305979611352, + 153.0203060247004, + 157.8261140966788, + 144.36115301214159, + 147.0849079778418, + 148.7222439609468, + 140.6269109575078, + 145.9777490235865, + 158.2882219227031, + 159.78662704583257, + 150.98407305777073, + 152.45471603702754, + 146.8710529152304, + 143.01336091011763, + 159.9486309569329, + 157.03653101809323, + 151.03817195631564, + 155.23118199780583, + 156.5020140260458, + 159.35912006534636, + 142.0472749741748 + ] + }, + "warm_ms": { + "control": [ + 139.59900510963053, + 159.4405520008877, + 161.47257399279624 + ], + "nodedup": [ + 68.64852306898683, + 78.1301490496844, + 74.09175403881818 + ], + "library": [ + 158.94460398703814, + 169.37986493576318, + 141.46384503692389 + ] + }, + "stats": { + "control": { + "n": 100, + "median_ms": 153.85188400978222, + "p10_ms": 141.54836690286174, + "p90_ms": 161.84013908496127, + "min_ms": 137.63807201758027, + "max_ms": 169.93465507403016, + "mean_ms": 153.10414351406507 + }, + "nodedup": { + "n": 100, + "median_ms": 77.70737149985507, + "p10_ms": 66.11884766025469, + "p90_ms": 88.1689261063002, + "min_ms": 60.44910801574588, + "max_ms": 95.79135105013847, + "mean_ms": 77.34274045098573 + }, + "library": { + "n": 100, + "median_ms": 152.39524003118277, + "p10_ms": 141.86191729968414, + "p90_ms": 160.32911209622398, + "min_ms": 136.21137791778892, + "max_ms": 171.7751360265538, + "mean_ms": 151.96144761284813 + } + }, + "ratio_control_over_nodedup": { + "ratio": 1.9798878927473331, + "ci90_low": 1.9372324583874687, + "ci90_high": 2.0243719107770755, + "bootstrap_samples": 2000 + }, + "ratio_library_over_nodedup": { + "ratio": 1.9611426443817752, + "ci90_low": 1.924271789113546, + "ci90_high": 2.0035352847284127, + "bootstrap_samples": 2000 + }, + "ratio_control_over_library": { + "ratio": 1.0095583298946962, + "ci90_low": 0.9884910995136756, + "ci90_high": 1.02633235748283, + "bootstrap_samples": 2000 + }, + "paired_round_ratio_control_over_nodedup": { + "median": 1.9685560269555515, + "p10": 1.8580766513223013, + "p90": 2.1806487463146937 + }, + "minimum_detectable_improvement": 0.13189160674047598, + "compile": { + "control": { + "lower_s": 30.668339118012227, + "compile_s": 23.536340896971524, + "first_call_s": 0.15716142393648624, + "trace_calls": 168, + "flops": 184147008.0, + "hlo_sort_count": 25, + "stablehlo_sort_count": 3, + "hlo_sort_shapes": [ + "(f64[276507]{0}, f64[276507]{0}, s64[276507]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})" + ], + "hlo_sha256": "eaa27d986c7aceb6", + "hlo_lines": 56232 + }, + "nodedup": { + "lower_s": 29.461517288000323, + "compile_s": 20.40689183003269, + "first_call_s": 0.07693507999647409, + "trace_calls": 168, + "flops": 139430656.0, + "hlo_sort_count": 12, + "stablehlo_sort_count": 1, + "hlo_sort_shapes": [ + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})" + ], + "hlo_sha256": "d0e5e2eb90451640", + "hlo_lines": 48246 + }, + "library": { + "lower_s": 30.128890754072927, + "compile_s": 1.442384855938144, + "first_call_s": 0.14289904898032546, + "trace_calls": 168, + "flops": 184147008.0, + "hlo_sort_count": 25, + "stablehlo_sort_count": 3, + "hlo_sort_shapes": [ + "(f64[276507]{0}, f64[276507]{0}, s64[276507]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})" + ], + "hlo_sha256": "93e29f000d9c5c12", + "hlo_lines": 51751 + } + }, + "instances_compared": [ + [ + 0 + ], + [ + 1 + ], + [ + 2 + ], + [ + 3 + ], + [ + 4 + ], + [ + 5 + ], + [ + 6 + ], + [ + 7 + ], + [ + 8 + ], + [ + 9 + ], + [ + 10 + ], + [ + 11 + ], + [ + 12 + ], + [ + 13 + ], + [ + 14 + ], + [ + 15 + ] + ], + "values": { + "control": [ + 23.965075083393216, + -743.7107061665998, + 3.3433302917272147, + -489.755628041605, + -527.9229457499364, + -468.67815408327806, + -247.07984679160097, + -1110.0030238749466, + -779.0297165832758, + -20.354586374939657, + -110.36109679160913, + -691.0739874166073, + -1296.2823207499168, + -205.49456033327564, + -223.83765929159887, + -334.8077113749422 + ], + "nodedup": [ + 23.965075083393216, + -743.7107061665998, + 3.3433302917272147, + -489.755628041605, + -527.9229457499364, + -468.67815408327806, + -247.07984679160097, + -1110.0030238749466, + -779.0297165832758, + -20.354586374939657, + -110.36109679160913, + -691.0739874166073, + -1296.2823207499168, + -205.49456033327564, + -223.83765929159887, + -334.8077113749422 + ], + "library": [ + 23.965075083393216, + -743.7107061665998, + 3.3433302917272147, + -489.755628041605, + -527.9229457499364, + -468.67815408327806, + -247.07984679160097, + -1110.0030238749466, + -779.0297165832758, + -20.354586374939657, + -110.36109679160913, + -691.0739874166073, + -1296.2823207499168, + -205.49456033327564, + -223.83765929159887, + -334.8077113749422 + ] + }, + "deterministic_within_route": { + "control": true, + "nodedup": true, + "library": true + }, + "likelihood_gate": { + "control_vs_nodedup": { + "bit_identical": true, + "max_abs_delta": 0.0, + "max_rel_delta": 0.0, + "nan_pattern_equal": true + }, + "control_vs_library": { + "bit_identical": true, + "max_abs_delta": 0.0, + "max_rel_delta": 0.0, + "nan_pattern_equal": true + }, + "nodedup_vs_library": { + "bit_identical": true, + "max_abs_delta": 0.0, + "max_rel_delta": 0.0, + "nan_pattern_equal": true + } + }, + "fiducial_log_likelihood": { + "control": 23.965075083393216, + "nodedup": 23.965075083393216, + "library": 23.965075083393216 + } + } + }, + "gates": { + "simple_solved_positions": { + "n_instances": 3, + "compile": { + "control": { + "lower_s": 1.5916791890049353, + "compile_s": 2.149253551964648, + "first_call_s": 0.025027383002452552, + "trace_calls": 16, + "flops": 15529212.0, + "hlo_sort_count": 15, + "stablehlo_sort_count": 3, + "hlo_sort_shapes": [ + "(f64[69849]{0}, f64[69849]{0}, s64[69849]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})" + ], + "hlo_sha256": "ab121c90e30d1095", + "hlo_lines": 17480 + }, + "nodedup": { + "lower_s": 1.3651595619739965, + "compile_s": 1.6500326730310917, + "first_call_s": 0.0051490250043570995, + "trace_calls": 16, + "flops": 6999844.0, + "hlo_sort_count": 7, + "stablehlo_sort_count": 1, + "hlo_sort_shapes": [ + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})" + ], + "hlo_sha256": "69e01a146364458e", + "hlo_lines": 13337 + }, + "library": { + "lower_s": 1.5219897700008005, + "compile_s": 0.2506943369517103, + "first_call_s": 0.023677150020375848, + "trace_calls": 16, + "flops": 15529212.0, + "hlo_sort_count": 15, + "stablehlo_sort_count": 3, + "hlo_sort_shapes": [ + "(f64[69849]{0}, f64[69849]{0}, s64[69849]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})" + ], + "hlo_sha256": "8797ee203a35de11", + "hlo_lines": 16053 + } + }, + "positions": { + "control": [ + [ + [ + [ + -1.03515625, + -1.0450941982127835 + ], + [ + Infinity, + Infinity + ], + [ + 0.35546875, + 1.6296613457672795 + ], + [ + 1.24375, + 1.1086929388032032 + ], + [ + 1.6062500000000002, + 0.44293590964391594 + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ] + ] + ], + [ + [ + [ + -1.0289062500000001, + -1.0225414533225639 + ], + [ + Infinity, + Infinity + ], + [ + 0.35, + 1.6138744243441256 + ], + [ + 1.2578125, + 1.0644895588183723 + ], + [ + 1.5890625, + 0.4375232508702632 + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ] + ] + ], + [ + [ + [ + -1.0203125, + -1.0861401939129833 + ], + [ + Infinity, + Infinity + ], + [ + 0.3484375, + 1.6328187300519101 + ], + [ + 1.1398437499999998, + 1.2182992789696712 + ], + [ + 1.609375, + 0.4447401292351336 + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ] + ] + ] + ], + "nodedup": [ + [ + [ + [ + -1.03515625, + -1.0450941982127835 + ], + [ + Infinity, + Infinity + ], + [ + 0.35546875, + 1.6296613457672795 + ], + [ + 1.24375, + 1.1086929388032032 + ], + [ + 1.6062500000000002, + 0.44293590964391594 + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ] + ] + ], + [ + [ + [ + -1.0289062500000001, + -1.0225414533225639 + ], + [ + Infinity, + Infinity + ], + [ + 0.35, + 1.6138744243441256 + ], + [ + 1.2578125, + 1.0644895588183723 + ], + [ + 1.5890625, + 0.4375232508702632 + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ] + ] + ], + [ + [ + [ + -1.0203125, + -1.0861401939129833 + ], + [ + Infinity, + Infinity + ], + [ + 0.3484375, + 1.6328187300519101 + ], + [ + 1.1398437499999998, + 1.2182992789696712 + ], + [ + 1.609375, + 0.4447401292351336 + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ] + ] + ] + ], + "library": [ + [ + [ + [ + -1.03515625, + -1.0450941982127835 + ], + [ + Infinity, + Infinity + ], + [ + 0.35546875, + 1.6296613457672795 + ], + [ + 1.24375, + 1.1086929388032032 + ], + [ + 1.6062500000000002, + 0.44293590964391594 + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ] + ] + ], + [ + [ + [ + -1.0289062500000001, + -1.0225414533225639 + ], + [ + Infinity, + Infinity + ], + [ + 0.35, + 1.6138744243441256 + ], + [ + 1.2578125, + 1.0644895588183723 + ], + [ + 1.5890625, + 0.4375232508702632 + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ] + ] + ], + [ + [ + [ + -1.0203125, + -1.0861401939129833 + ], + [ + Infinity, + Infinity + ], + [ + 0.3484375, + 1.6328187300519101 + ], + [ + 1.1398437499999998, + 1.2182992789696712 + ], + [ + 1.609375, + 0.4447401292351336 + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ] + ] + ] + ] + }, + "finite_positions": { + "control": [ + [ + 4 + ], + [ + 4 + ], + [ + 4 + ] + ], + "nodedup": [ + [ + 4 + ], + [ + 4 + ], + [ + 4 + ] + ], + "library": [ + [ + 4 + ], + [ + 4 + ], + [ + 4 + ] + ] + }, + "pairs": { + "control_vs_nodedup": { + "max_abs_delta": 0.0, + "max_rel_delta": 0.0, + "nan_pattern_equal": true, + "array_equal_nan_aware": true + }, + "control_vs_library": { + "max_abs_delta": 0.0, + "max_rel_delta": 0.0, + "nan_pattern_equal": true, + "array_equal_nan_aware": true + } + } + }, + "simple_solved_grad": { + "n_instances": 3, + "rtol": 1e-10, + "atol": 1e-12, + "compile": { + "control": { + "lower_s": 4.647567723994143, + "compile_s": 6.267317686928436, + "first_call_s": 0.027351350989192724, + "trace_calls": 32, + "flops": 18753240.0, + "hlo_sort_count": 30, + "stablehlo_sort_count": 4, + "hlo_sort_shapes": [ + "(f64[69849]{0}, f64[69849]{0}, s64[69849]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(s32[15,2]{1,0}, s32[15,2]{1,0})" + ], + "hlo_sha256": "e74a546ad6023347", + "hlo_lines": 53768 + }, + "nodedup": { + "lower_s": 4.20944652298931, + "compile_s": 5.331032715039328, + "first_call_s": 0.006281703012064099, + "trace_calls": 32, + "flops": 9665219.0, + "hlo_sort_count": 15, + "stablehlo_sort_count": 2, + "hlo_sort_shapes": [ + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(s32[15,2]{1,0}, s32[15,2]{1,0})" + ], + "hlo_sha256": "14c8ecf10ee2ba21", + "hlo_lines": 46130 + }, + "library": { + "lower_s": 4.7248282299842685, + "compile_s": 1.0609165189089254, + "first_call_s": 0.027359851985238492, + "trace_calls": 32, + "flops": 18753240.0, + "hlo_sort_count": 30, + "stablehlo_sort_count": 4, + "hlo_sort_shapes": [ + "(f64[69849]{0}, f64[69849]{0}, s64[69849]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(s32[15,2]{1,0}, s32[15,2]{1,0})" + ], + "hlo_sha256": "1b7a3c492b6da9fe", + "hlo_lines": 49480 + } + }, + "all_finite": { + "control": true, + "nodedup": true, + "library": true + }, + "gradients": { + "control": [ + [ + -41.62226304412241, + 53.13429595959836, + 31.786492377833373, + 2.8041319222503027, + 1781.7386158499905 + ], + [ + -46.408073055275, + 75.13738885142469, + 78.91835319805018, + 74.32499719544126, + 2531.5778928834748 + ], + [ + 62.951469401248765, + -41.40185295994061, + 18.162643132964934, + 109.0003235058508, + -1560.549091923857 + ] + ], + "nodedup": [ + [ + -41.62226304412241, + 53.13429595959836, + 31.786492377833373, + 2.8041319222503027, + 1781.7386158499905 + ], + [ + -46.408073055275, + 75.13738885142469, + 78.91835319805018, + 74.32499719544126, + 2531.5778928834748 + ], + [ + 62.951469401248765, + -41.40185295994061, + 18.162643132964934, + 109.0003235058508, + -1560.549091923857 + ] + ], + "library": [ + [ + -41.62226304412241, + 53.13429595959836, + 31.786492377833373, + 2.8041319222503027, + 1781.7386158499905 + ], + [ + -46.408073055275, + 75.13738885142469, + 78.91835319805018, + 74.32499719544126, + 2531.5778928834748 + ], + [ + 62.951469401248765, + -41.40185295994061, + 18.162643132964934, + 109.0003235058508, + -1560.549091923857 + ] + ] + }, + "pairs": { + "control_vs_nodedup": { + "bit_identical": true, + "max_abs_delta": 0.0, + "max_rel_delta": 0.0, + "nan_pattern_equal": true, + "allclose": true + }, + "control_vs_library": { + "bit_identical": true, + "max_abs_delta": 0.0, + "max_rel_delta": 0.0, + "nan_pattern_equal": true, + "allclose": true + } + } + }, + "simple_solved_vmap4": { + "vmap_vs_scalar_within_route": { + "control": { + "bit_identical": true, + "max_abs_delta": 0.0, + "max_rel_delta": 0.0, + "nan_pattern_equal": true, + "allclose_rtol_1e-12": true, + "n_compared": 16 + }, + "nodedup": { + "bit_identical": true, + "max_abs_delta": 0.0, + "max_rel_delta": 0.0, + "nan_pattern_equal": true, + "allclose_rtol_1e-12": true, + "n_compared": 16 + }, + "library": { + "bit_identical": true, + "max_abs_delta": 0.0, + "max_rel_delta": 0.0, + "nan_pattern_equal": true, + "allclose_rtol_1e-12": true, + "n_compared": 16 + } + }, + "across_routes": { + "control_vs_nodedup": { + "bit_identical": true, + "max_abs_delta": 0.0, + "max_rel_delta": 0.0, + "nan_pattern_equal": true + }, + "control_vs_library": { + "bit_identical": true, + "max_abs_delta": 0.0, + "max_rel_delta": 0.0, + "nan_pattern_equal": true + }, + "nodedup_vs_library": { + "bit_identical": true, + "max_abs_delta": 0.0, + "max_rel_delta": 0.0, + "nan_pattern_equal": true + } + } + }, + "cluster_solved_positions": { + "n_instances": 3, + "compile": { + "control": { + "lower_s": 7.347597416024655, + "compile_s": 8.80831039394252, + "first_call_s": 0.14376434206496924, + "trace_calls": 28, + "flops": 184111088.0, + "hlo_sort_count": 25, + "stablehlo_sort_count": 3, + "hlo_sort_shapes": [ + "(f64[276507]{0}, f64[276507]{0}, s64[276507]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})" + ], + "hlo_sha256": "f815d47a1fcccd0c", + "hlo_lines": 55191 + }, + "nodedup": { + "lower_s": 7.250732008018531, + "compile_s": 7.771443829988129, + "first_call_s": 0.06437232298776507, + "trace_calls": 28, + "flops": 139395248.0, + "hlo_sort_count": 12, + "stablehlo_sort_count": 1, + "hlo_sort_shapes": [ + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})" + ], + "hlo_sha256": "ffa35cad4525b1ef", + "hlo_lines": 47313 + }, + "library": { + "lower_s": 7.362595141981728, + "compile_s": 1.0940108558861539, + "first_call_s": 0.16459617496002465, + "trace_calls": 28, + "flops": 184111088.0, + "hlo_sort_count": 25, + "stablehlo_sort_count": 3, + "hlo_sort_shapes": [ + "(f64[276507]{0}, f64[276507]{0}, s64[276507]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})" + ], + "hlo_sha256": "464a020f3b9036fb", + "hlo_lines": 54118 + } + }, + "positions": { + "control": [ + [ + [ + [ + -3.0789062499999997, + -7.858729484445975 + ], + [ + -0.9296874999999998, + 10.716162262036818 + ], + [ + -0.021874999999999995, + -0.23996120563193818 + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ] + ], + [ + [ + -15.96875, + 19.007453393477206 + ], + [ + 0.68359375, + -0.5146536383948147 + ], + [ + 13.693749999999998, + -14.309265577946627 + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ] + ] + ], + [ + [ + [ + -3.0789062499999997, + -7.858729484445975 + ], + [ + -0.9296875, + 10.709847493467556 + ], + [ + -0.016406249999999997, + -0.24311858991656893 + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ] + ], + [ + [ + -15.963281249999998, + 18.997981240623318 + ], + [ + 0.6890624999999999, + -0.5178110226794455 + ], + [ + 13.68828125, + -14.306108193661998 + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ] + ] + ], + [ + [ + [ + -3.0843749999999996, + -7.855572100161344 + ], + [ + -0.9351562499999999, + 10.72563441489071 + ], + [ + -0.021874999999999995, + -0.23364643706267665 + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ] + ], + [ + [ + -15.96875, + 19.007453393477206 + ], + [ + 0.68359375, + -0.5083388698255532 + ], + [ + 13.693749999999998, + -14.309265577946627 + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ] + ] + ] + ], + "nodedup": [ + [ + [ + [ + -3.0789062499999997, + -7.858729484445975 + ], + [ + -0.9296874999999998, + 10.716162262036818 + ], + [ + -0.021874999999999995, + -0.23996120563193818 + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ] + ], + [ + [ + -15.96875, + 19.007453393477206 + ], + [ + 0.68359375, + -0.5146536383948147 + ], + [ + 13.693749999999998, + -14.309265577946627 + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ] + ] + ], + [ + [ + [ + -3.0789062499999997, + -7.858729484445975 + ], + [ + -0.9296875, + 10.709847493467556 + ], + [ + -0.016406249999999997, + -0.24311858991656893 + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ] + ], + [ + [ + -15.963281249999998, + 18.997981240623318 + ], + [ + 0.6890624999999999, + -0.5178110226794455 + ], + [ + 13.68828125, + -14.306108193661998 + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ] + ] + ], + [ + [ + [ + -3.0843749999999996, + -7.855572100161344 + ], + [ + -0.9351562499999999, + 10.72563441489071 + ], + [ + -0.021874999999999995, + -0.23364643706267665 + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ] + ], + [ + [ + -15.96875, + 19.007453393477206 + ], + [ + 0.68359375, + -0.5083388698255532 + ], + [ + 13.693749999999998, + -14.309265577946627 + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ] + ] + ] + ], + "library": [ + [ + [ + [ + -3.0789062499999997, + -7.858729484445975 + ], + [ + -0.9296874999999998, + 10.716162262036818 + ], + [ + -0.021874999999999995, + -0.23996120563193818 + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ] + ], + [ + [ + -15.96875, + 19.007453393477206 + ], + [ + 0.68359375, + -0.5146536383948147 + ], + [ + 13.693749999999998, + -14.309265577946627 + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ] + ] + ], + [ + [ + [ + -3.0789062499999997, + -7.858729484445975 + ], + [ + -0.9296875, + 10.709847493467556 + ], + [ + -0.016406249999999997, + -0.24311858991656893 + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ] + ], + [ + [ + -15.963281249999998, + 18.997981240623318 + ], + [ + 0.6890624999999999, + -0.5178110226794455 + ], + [ + 13.68828125, + -14.306108193661998 + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ] + ] + ], + [ + [ + [ + -3.0843749999999996, + -7.855572100161344 + ], + [ + -0.9351562499999999, + 10.72563441489071 + ], + [ + -0.021874999999999995, + -0.23364643706267665 + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ] + ], + [ + [ + -15.96875, + 19.007453393477206 + ], + [ + 0.68359375, + -0.5083388698255532 + ], + [ + 13.693749999999998, + -14.309265577946627 + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ] + ] + ] + ] + }, + "finite_positions": { + "control": [ + [ + 3, + 3 + ], + [ + 3, + 3 + ], + [ + 3, + 3 + ] + ], + "nodedup": [ + [ + 3, + 3 + ], + [ + 3, + 3 + ], + [ + 3, + 3 + ] + ], + "library": [ + [ + 3, + 3 + ], + [ + 3, + 3 + ], + [ + 3, + 3 + ] + ] + }, + "pairs": { + "control_vs_nodedup": { + "max_abs_delta": 0.0, + "max_rel_delta": 0.0, + "nan_pattern_equal": true, + "array_equal_nan_aware": true + }, + "control_vs_library": { + "max_abs_delta": 0.0, + "max_rel_delta": 0.0, + "nan_pattern_equal": true, + "array_equal_nan_aware": true + } + } + } + }, + "wall_s": 627.8825693880208 +} \ No newline at end of file diff --git a/results/breakdown/point_source/vertex_dedup_ab_hpc_ral_cpu_fp64.png b/results/breakdown/point_source/vertex_dedup_ab_hpc_ral_cpu_fp64.png new file mode 100644 index 000000000..db32d732c Binary files /dev/null and b/results/breakdown/point_source/vertex_dedup_ab_hpc_ral_cpu_fp64.png differ diff --git a/results/breakdown/point_source/vertex_dedup_ab_local_cpu_fp64.json b/results/breakdown/point_source/vertex_dedup_ab_local_cpu_fp64.json new file mode 100644 index 000000000..31828ec65 --- /dev/null +++ b/results/breakdown/point_source/vertex_dedup_ab_local_cpu_fp64.json @@ -0,0 +1,5659 @@ +{ + "cell": "vertex_dedup_ab", + "issue": "PyAutoLabs/PyAutoArray#568", + "config_name": "local_cpu_fp64", + "quick": false, + "models": [ + "simple", + "cluster" + ], + "library_versions": { + "autolens": "2026.8.17.1", + "autoarray": "2026.8.17.1", + "autofit": "2026.8.17.1" + }, + "package_versions": { + "jax": "0.10.2", + "jaxlib": "0.10.2" + }, + "source_revisions": { + "autolens_profiling": "043518479e686c84aef3a7a526c6a12739b99412", + "PyAutoNerves": "1fa613aa8d89a79613009fb66f5b4e2d21deb57a", + "PyAutoFit": "a736840127be7a3c21e15a5c945e94d8f1082983", + "PyAutoArray": "11b93476b2c7d9d32e5467deedfe9594c637d736", + "PyAutoGalaxy": "70a61e26cd715cefe7012a38285698091246a8a4", + "PyAutoLens": "2aaa1c1a8bb4a5923edf30a18451fcea330a6bd4" + }, + "autoarray_imported_from": "~/Code/PyAutoLabs/array/PyAutoArray", + "target": "autoarray.structures.triangles.coordinate_array.CoordinateArrayTriangles._vertices_and_indices", + "control_source": { + "repo": "PyAutoArray", + "sha": "11b93476", + "path": "autoarray/structures/triangles/coordinate_array.py", + "body": "def _profiling_root() -> Path:\n for parent in Path(__file__).resolve().parents:\n if (parent / \"ruff.toml\").exists():\n return parent\n raise RuntimeError(\"autolens_profiling root (ruff.toml) not found\")\n" + }, + "nodedup_body": "def _control_vertices_and_indices(self):\n \"\"\"PRE-fix ``_vertices_and_indices`` \u2014 verbatim from PyAutoArray ``11b93476``.\"\"\"\n import jax.numpy as jnp\n\n flat_triangles = self.triangles.reshape(-1, 2)\n vertices, inverse_indices = jnp.unique(\n flat_triangles,\n axis=0,\n return_inverse=True,\n size=3 * self.coordinates.shape[0],\n equal_nan=True,\n fill_value=jnp.nan,\n )\n\n nan_mask = jnp.isnan(vertices).any(axis=1)\n inverse_indices = jnp.where(nan_mask[inverse_indices], -1, inverse_indices)\n\n indices = inverse_indices.reshape(-1, 3)\n return vertices, indices\n", + "device": { + "backend": "cpu", + "device": "cpu:0", + "hostname": "DESKTOP-H143S82", + "xla_flags": "--xla_disable_hlo_passes=constant_folding --xla_gpu_autotune_level=0 --xla_gpu_enable_triton_gemm=false", + "omp_num_threads": "1", + "cpu_count": 8, + "jax_compilation_cache_dir": null, + "autotune_cache_entries_at_start": 0, + "cache_fresh": false + }, + "jax_devices": [ + "cpu:0" + ], + "machine": { + "cpu_model": "Intel(R) Core(TM) i9-10885H CPU @ 2.40GHz", + "cpu_count_os": 8, + "nproc": 1, + "nproc_all": 8, + "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": "16392692 kB", + "kernel": "5.10.16.3-microsoft-standard-WSL2", + "platform": "Linux-5.10.16.3-microsoft-standard-WSL2-x86_64-with-glibc2.35", + "python": "3.12.10", + "jax_thread_env": { + "NPROC": "8" + }, + "blas_thread_env": { + "OMP_NUM_THREADS": "1", + "OPENBLAS_NUM_THREADS": "1", + "MKL_NUM_THREADS": "1", + "VECLIB_MAXIMUM_THREADS": "1", + "NUMEXPR_NUM_THREADS": "1" + }, + "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 GeForce RTX 2060 with Max-Q Design, 6144 MiB, 580.97" + }, + "thread_environment": { + "NPROC": "8", + "OMP_NUM_THREADS": "1", + "OPENBLAS_NUM_THREADS": "1", + "MKL_NUM_THREADS": "1" + }, + "sched_affinity": 8, + "os_cpu_count": 8, + "xla_flags": "--xla_disable_hlo_passes=constant_folding --xla_gpu_autotune_level=0 --xla_gpu_enable_triton_gemm=false", + "jax_platforms": "cpu", + "jax_enable_x64": true, + "loadavg_start": [ + 3.82421875, + 3.14990234375, + 2.8603515625 + ], + "loadavg_end": [ + 1.5302734375, + 1.88623046875, + 2.61181640625 + ], + "protocol": { + "routes": [ + "control", + "nodedup", + "library" + ], + "n_rounds": 20, + "n_calls_per_round": 5, + "n_warm": 3, + "n_stream": 16, + "n_gate_instances": 3, + "vmap_batch": 4, + "instance_seed": 568, + "instance_stream": "entry 0 = prior medians; rest = vector_from_unit_vector(U(0.25,0.75))", + "argument": "physical parameter vector; instance_from_vector(xp=jnp) inside the trace", + "cache_trap_guard": "fresh closure + fresh solver/analyses per route; jax.clear_caches()", + "bootstrap": { + "samples": 2000, + "seed": 12345, + "interval": "90%" + }, + "cluster_gates": "log-likelihood and positions only (no cluster grad/vmap)", + "pytrees": "autofit.jax.register_model(model) for every model before any trace" + }, + "free_parameters": { + "simple_solved": 5, + "simple_plain": 8, + "cluster_solved": 13, + "cluster_plain": 17 + }, + "model_configuration": { + "simple": { + "dataset": "dataset/point_source/simple/point_dataset_positions_only.json", + "solver_grid_shape": [ + 100, + 100 + ], + "solver_grid_pixel_scale": 0.2, + "solver_pixel_scale_precision": 0.001, + "magnification_threshold": 0.1, + "likelihoods": { + "solved": "FitPositionsImagePairAllSolved", + "plain": "FitPositionsImagePairAll" + } + }, + "cluster": { + "dataset": "dataset/cluster/simple/point_datasets.csv", + "n_systems": 2, + "n_mass_profiles": 13, + "solver_grid_shape": [ + 200, + 200 + ], + "solver_grid_pixel_scale": 0.7, + "solver_pixel_scale_precision": 0.01, + "source_centres_from": "back-traced observed-image centroids (cluster cell step 1)", + "likelihoods": { + "solved": "FitPositionsImagePairRepeatSolved (summed over systems)", + "plain": "FitPositionsImagePairRepeat (summed over systems)" + } + } + }, + "library_label": { + "per_row": { + "simple_solved": { + "hlo_sort_count": { + "control": 15, + "nodedup": 7, + "library": 15 + }, + "stablehlo_sort_count": { + "control": 3, + "nodedup": 1, + "library": 3 + }, + "library_matches": "control", + "library_hlo_identical_to": [] + }, + "simple_solved_vmap4": { + "hlo_sort_count": { + "control": 15, + "nodedup": 7, + "library": 15 + }, + "stablehlo_sort_count": { + "control": 3, + "nodedup": 1, + "library": 3 + }, + "library_matches": "control", + "library_hlo_identical_to": [] + }, + "simple_plain": { + "hlo_sort_count": { + "control": 15, + "nodedup": 7, + "library": 15 + }, + "stablehlo_sort_count": { + "control": 3, + "nodedup": 1, + "library": 3 + }, + "library_matches": "control", + "library_hlo_identical_to": [] + }, + "cluster_solved": { + "hlo_sort_count": { + "control": 25, + "nodedup": 12, + "library": 25 + }, + "stablehlo_sort_count": { + "control": 3, + "nodedup": 1, + "library": 3 + }, + "library_matches": "control", + "library_hlo_identical_to": [] + }, + "cluster_plain": { + "hlo_sort_count": { + "control": 25, + "nodedup": 12, + "library": 25 + }, + "stablehlo_sort_count": { + "control": 3, + "nodedup": 1, + "library": 3 + }, + "library_matches": "control", + "library_hlo_identical_to": [] + } + }, + "library_matches": "control" + }, + "library_matches": "control", + "bit_identical": true, + "gate_summary": { + "simple_solved.log_likelihood.control_vs_nodedup": { + "pass": true, + "max_abs_delta": 0.0, + "max_rel_delta": 0.0 + }, + "simple_solved.log_likelihood.control_vs_library": { + "pass": true, + "max_abs_delta": 0.0, + "max_rel_delta": 0.0 + }, + "simple_solved_vmap4.log_likelihood.control_vs_nodedup": { + "pass": true, + "max_abs_delta": 0.0, + "max_rel_delta": 0.0 + }, + "simple_solved_vmap4.log_likelihood.control_vs_library": { + "pass": true, + "max_abs_delta": 0.0, + "max_rel_delta": 0.0 + }, + "simple_plain.log_likelihood.control_vs_nodedup": { + "pass": true, + "max_abs_delta": 0.0, + "max_rel_delta": 0.0 + }, + "simple_plain.log_likelihood.control_vs_library": { + "pass": true, + "max_abs_delta": 0.0, + "max_rel_delta": 0.0 + }, + "cluster_solved.log_likelihood.control_vs_nodedup": { + "pass": true, + "max_abs_delta": 0.0, + "max_rel_delta": 0.0 + }, + "cluster_solved.log_likelihood.control_vs_library": { + "pass": true, + "max_abs_delta": 0.0, + "max_rel_delta": 0.0 + }, + "cluster_plain.log_likelihood.control_vs_nodedup": { + "pass": true, + "max_abs_delta": 0.0, + "max_rel_delta": 0.0 + }, + "cluster_plain.log_likelihood.control_vs_library": { + "pass": true, + "max_abs_delta": 0.0, + "max_rel_delta": 0.0 + }, + "simple_solved_positions.control_vs_nodedup": { + "pass": true, + "max_abs_delta": 0.0 + }, + "simple_solved_positions.control_vs_library": { + "pass": true, + "max_abs_delta": 0.0 + }, + "simple_solved_grad.control_vs_nodedup": { + "pass": true, + "bit_identical": true, + "max_abs_delta": 0.0, + "max_rel_delta": 0.0 + }, + "simple_solved_grad.control_vs_library": { + "pass": true, + "bit_identical": true, + "max_abs_delta": 0.0, + "max_rel_delta": 0.0 + }, + "simple_solved_vmap4.vmap_vs_scalar.control": { + "pass": true, + "bit_identical": true, + "max_abs_delta": 0.0 + }, + "simple_solved_vmap4.vmap_vs_scalar.nodedup": { + "pass": true, + "bit_identical": true, + "max_abs_delta": 0.0 + }, + "simple_solved_vmap4.vmap_vs_scalar.library": { + "pass": true, + "bit_identical": true, + "max_abs_delta": 0.0 + }, + "cluster_solved_positions.control_vs_nodedup": { + "pass": true, + "max_abs_delta": 0.0 + }, + "cluster_solved_positions.control_vs_library": { + "pass": true, + "max_abs_delta": 0.0 + } + }, + "rows": { + "simple_solved": { + "label": "simple_solved", + "batch": null, + "n_rounds": 20, + "n_calls_per_round": 5, + "n_warm": 3, + "route_order": "round-robin, start rotated each round", + "per_call_ms": { + "control": [ + 29.961800002638483, + 29.83459999813931, + 31.12390000023879, + 31.108099999983096, + 31.30809999856865, + 30.980799998360453, + 30.88980000029551, + 30.832899999950314, + 34.10229999644798, + 31.23319999940577, + 33.5123000004387, + 33.486899999843445, + 34.41060000113794, + 33.68570000020554, + 34.86750000229222, + 36.72060000099009, + 35.529000000678934, + 33.9471000006597, + 34.27630000078352, + 35.444000001007225, + 31.527499999356223, + 31.2551999995776, + 30.69550000145682, + 31.374700000014855, + 35.05369999766117, + 30.82889999859617, + 31.381899996631546, + 31.391799999255454, + 31.941000001097564, + 31.56230000240612, + 31.328500001109205, + 31.696799997007474, + 33.63269999681506, + 33.32050000244635, + 31.828700000914978, + 38.2251000010001, + 30.83619999961229, + 35.15770000012708, + 31.499799999437528, + 31.154699998296564, + 29.700300001422875, + 29.695600002014544, + 29.874200001358986, + 30.189799999789102, + 30.844799999613315, + 32.12310000162688, + 31.889600002614316, + 33.66679999817279, + 33.1268000009004, + 33.35080000033486, + 31.408599999849685, + 30.558799997379538, + 30.844000000797678, + 31.67579999717418, + 31.935200000589248, + 30.120600000373088, + 30.015000000275904, + 30.50240000084159, + 30.907700001989724, + 30.915299998014234, + 30.864299998938804, + 31.83540000100038, + 31.069700002262834, + 31.446899996808497, + 31.184299998130882, + 30.799599997408222, + 33.632199996645795, + 34.98630000103731, + 44.086500001867535, + 33.897900000738446, + 31.29790000093635, + 32.15039999849978, + 32.70920000068145, + 31.061600002431078, + 30.71310000086669, + 32.840300002135336, + 32.09699999933946, + 32.45419999802834, + 32.36930000275606, + 31.95840000262251, + 33.03560000131256, + 34.096700001100544, + 38.71710000021267, + 34.42419999919366, + 34.297300000616815, + 33.84309999819379, + 33.830500000476604, + 34.02099999948405, + 35.64380000170786, + 33.397300001524854, + 34.19460000077379, + 34.24219999942579, + 34.74889999779407, + 34.156800000346266, + 33.859300001495285, + 50.217399999382906, + 46.82680000041728, + 53.3447999987402, + 46.06629999761935, + 48.816599999554455 + ], + "nodedup": [ + 5.272399997920729, + 6.436800002120435, + 5.891799999517389, + 5.082599996967474, + 4.995199997210875, + 5.5008999988785945, + 6.82559999768273, + 5.352899999707006, + 5.344900000636699, + 5.485599998792168, + 6.769199997506803, + 5.798099999083206, + 7.927700000436744, + 5.8209999988321215, + 6.385700002283556, + 5.768899998656707, + 5.643899999995483, + 5.803100000775885, + 5.969300000288058, + 5.632800002786098, + 5.593199999566423, + 5.392600000050152, + 5.352200001652818, + 5.2341000009619165, + 5.467400002089562, + 5.045300000347197, + 4.961900001944741, + 5.170000000362052, + 4.970900001353584, + 4.910900002869312, + 5.328499999450287, + 5.319500000041444, + 5.0025000018649735, + 5.170299999008421, + 5.283300000883173, + 5.28180000037537, + 5.1937999996880535, + 5.346499998267973, + 5.198200000450015, + 5.383600000641309, + 5.299399999785237, + 5.232799998339033, + 5.306099999870639, + 5.313699999533128, + 5.369400001654867, + 5.337599999620579, + 5.450499997095903, + 5.620899999485118, + 5.676800003129756, + 5.480899999383837, + 5.161000000953209, + 5.970300000626594, + 5.084000000351807, + 5.224100001214538, + 5.243699997663498, + 4.99850000051083, + 5.131199999595992, + 4.94520000211196, + 4.981599999155151, + 5.132999998750165, + 5.092799998237751, + 5.266100000881124, + 5.770600000687409, + 5.016399998567067, + 4.946100001689047, + 5.189399998926092, + 5.0315999978920445, + 5.165300000953721, + 5.056599999079481, + 5.063100001279963, + 5.108899997139815, + 5.188099999941187, + 4.998399999749381, + 5.858700002136175, + 5.210399998759385, + 5.246200002147816, + 5.4286000013235025, + 5.727799998567207, + 5.237299999862444, + 5.397199998697033, + 4.946900000504684, + 5.203299999266164, + 5.256700002064463, + 5.37639999674866, + 5.220700000791112, + 5.432399997516768, + 5.338499999197666, + 6.519500002468703, + 5.904699999518925, + 5.498900001839502, + 5.362799998692935, + 8.649199997307733, + 5.5623000007472, + 5.424999999377178, + 5.47050000022864, + 5.478699997183867, + 7.303400001546834, + 5.698199998732889, + 10.291200000210665, + 6.1300000015762635 + ], + "library": [ + 31.268599999748403, + 33.752600000298116, + 32.71699999822886, + 32.13749999849824, + 34.55570000005537, + 32.47209999972256, + 32.36000000106287, + 31.69479999996838, + 31.928299998980947, + 31.911499998386716, + 30.842899999697693, + 31.17480000219075, + 32.078700001875404, + 32.76489999916521, + 32.70460000203457, + 32.75390000271727, + 33.95989999989979, + 33.341700000164565, + 32.739300000685034, + 33.208799999556504, + 32.640199999150354, + 31.773899998370325, + 31.785899998794775, + 31.621699999959674, + 31.39319999900181, + 32.09250000145403, + 31.73129999777302, + 31.168600002274616, + 31.161900002189213, + 30.34710000065388, + 31.71220000149333, + 32.0653000017046, + 31.664199999795528, + 32.141899999260204, + 31.812500001251465, + 31.33430000161752, + 30.844000000797678, + 32.21040000062203, + 30.707499998243293, + 31.135999997786712, + 30.493399997794768, + 31.302100000175415, + 29.986499997903593, + 29.879900001105852, + 29.52989999903366, + 35.26650000276277, + 32.85849999883794, + 33.085200000641635, + 32.204600000113714, + 31.659599997510668, + 31.82800000286079, + 31.88889999728417, + 31.931600002280902, + 31.94880000228295, + 31.73140000217245, + 30.62349999891012, + 30.93040000021574, + 30.77599999960512, + 30.677499999001157, + 30.576599998312304, + 30.844600001728395, + 31.00090000225464, + 30.778899999859277, + 30.43959999922663, + 30.857399997330504, + 31.236200000421377, + 30.82919999724254, + 31.040300000313437, + 31.012199997348944, + 30.56270000161021, + 32.89320000112639, + 32.93929999927059, + 32.381299999542534, + 31.93209999881219, + 31.7125000001397, + 31.906799998978386, + 32.39830000165966, + 30.983199998445343, + 30.612999998993473, + 31.372299999929965, + 31.590799997502472, + 31.718800000817282, + 32.005900000513066, + 32.07810000094469, + 32.15289999934612, + 35.57100000034552, + 34.70589999778895, + 36.99680000136141, + 36.3495999990846, + 34.28709999934654, + 33.21779999896535, + 32.940299999609124, + 33.9748000005784, + 36.22440000253846, + 33.09910000098171, + 70.71159999759402, + 93.56440000192379, + 72.40079999974114, + 87.1898000004876, + 63.61499999911757 + ] + }, + "warm_ms": { + "control": [ + 31.718700000055833, + 32.483199996931944, + 30.934499998693354 + ], + "nodedup": [ + 5.117700002301717, + 5.006400002457667, + 4.883300000074087 + ], + "library": [ + 29.798999999911757, + 29.808499999489868, + 29.927400002634386 + ] + }, + "stats": { + "control": { + "n": 100, + "median_ms": 32.027700000980985, + "p10_ms": 30.681830001049093, + "p90_ms": 35.54048000078183, + "min_ms": 29.695600002014544, + "max_ms": 53.3447999987402, + "mean_ms": 33.41528700002527 + }, + "nodedup": { + "n": 100, + "median_ms": 5.338049999409122, + "p10_ms": 5.002100001729559, + "p90_ms": 5.986270000721563, + "min_ms": 4.910900002869312, + "max_ms": 10.291200000210665, + "mean_ms": 5.533444999928179 + }, + "library": { + "n": 100, + "median_ms": 31.90914999868255, + "p10_ms": 30.672099998992053, + "p90_ms": 34.761959998286336, + "min_ms": 29.52989999903366, + "max_ms": 93.56440000192379, + "mean_ms": 34.33019999996759 + } + }, + "ratio_control_over_nodedup": { + "ratio": 5.999887600252187, + "ci90_low": 5.907554157498403, + "ci90_high": 6.207073054647426, + "bootstrap_samples": 2000 + }, + "ratio_library_over_nodedup": { + "ratio": 5.977679115447518, + "ci90_low": 5.918376196403529, + "ci90_high": 6.048629984591445, + "bootstrap_samples": 2000 + }, + "ratio_control_over_library": { + "ratio": 1.0037152353573608, + "ci90_low": 0.9909035161619201, + "ci90_high": 1.0385422489119152, + "bootstrap_samples": 2000 + }, + "paired_round_ratio_control_over_nodedup": { + "median": 6.0383381163670595, + "p10": 5.645909545724053, + "p90": 6.582043515579487 + }, + "minimum_detectable_improvement": 0.15170149587962659, + "compile": { + "control": { + "lower_s": 4.691511199998786, + "compile_s": 9.526533799999015, + "first_call_s": 0.044606800001929514, + "trace_calls": 32, + "flops": 15582802.0, + "hlo_sort_count": 15, + "stablehlo_sort_count": 3, + "hlo_sort_shapes": [ + "(f64[69849]{0}, f64[69849]{0}, s64[69849]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})" + ], + "hlo_sha256": "e53d1ecfe40cfe9c", + "hlo_lines": 28583 + }, + "nodedup": { + "lower_s": 5.53715259999808, + "compile_s": 6.606064499999775, + "first_call_s": 0.006674500000372063, + "trace_calls": 32, + "flops": 7053434.0, + "hlo_sort_count": 7, + "stablehlo_sort_count": 1, + "hlo_sort_shapes": [ + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})" + ], + "hlo_sha256": "e13e90248735ae47", + "hlo_lines": 24404 + }, + "library": { + "lower_s": 3.955831600000238, + "compile_s": 7.196297700000287, + "first_call_s": 0.031233900001097936, + "trace_calls": 32, + "flops": 15582802.0, + "hlo_sort_count": 15, + "stablehlo_sort_count": 3, + "hlo_sort_shapes": [ + "(f64[69849]{0}, f64[69849]{0}, s64[69849]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})" + ], + "hlo_sha256": "5c1d720142a1331d", + "hlo_lines": 28583 + } + }, + "instances_compared": [ + [ + 0 + ], + [ + 1 + ], + [ + 2 + ], + [ + 3 + ], + [ + 4 + ], + [ + 5 + ], + [ + 6 + ], + [ + 7 + ], + [ + 8 + ], + [ + 9 + ], + [ + 10 + ], + [ + 11 + ], + [ + 12 + ], + [ + 13 + ], + [ + 14 + ], + [ + 15 + ] + ], + "values": { + "control": [ + 7.743201200876812, + 4.901199826003542, + 8.551453428732437, + 7.640170398958149, + 7.2580956747803445, + 9.29357838657636, + 3.0338796505151917, + 8.714615086385912, + 4.735173159474494, + 3.2233889243165805, + 9.296501815740573, + 6.7486158154711955, + -1.4028143150641306, + 0.5885274382499945, + 6.162997261446639, + -10.49915087893337 + ], + "nodedup": [ + 7.743201200876812, + 4.901199826003542, + 8.551453428732437, + 7.640170398958149, + 7.2580956747803445, + 9.29357838657636, + 3.0338796505151917, + 8.714615086385912, + 4.735173159474494, + 3.2233889243165805, + 9.296501815740573, + 6.7486158154711955, + -1.4028143150641306, + 0.5885274382499945, + 6.162997261446639, + -10.49915087893337 + ], + "library": [ + 7.743201200876812, + 4.901199826003542, + 8.551453428732437, + 7.640170398958149, + 7.2580956747803445, + 9.29357838657636, + 3.0338796505151917, + 8.714615086385912, + 4.735173159474494, + 3.2233889243165805, + 9.296501815740573, + 6.7486158154711955, + -1.4028143150641306, + 0.5885274382499945, + 6.162997261446639, + -10.49915087893337 + ] + }, + "deterministic_within_route": { + "control": true, + "nodedup": true, + "library": true + }, + "likelihood_gate": { + "control_vs_nodedup": { + "bit_identical": true, + "max_abs_delta": 0.0, + "max_rel_delta": 0.0, + "nan_pattern_equal": true + }, + "control_vs_library": { + "bit_identical": true, + "max_abs_delta": 0.0, + "max_rel_delta": 0.0, + "nan_pattern_equal": true + }, + "nodedup_vs_library": { + "bit_identical": true, + "max_abs_delta": 0.0, + "max_rel_delta": 0.0, + "nan_pattern_equal": true + } + }, + "fiducial_log_likelihood": { + "control": 7.743201200876812, + "nodedup": 7.743201200876812, + "library": 7.743201200876812 + } + }, + "simple_solved_vmap4": { + "label": "simple_solved_vmap4", + "batch": 4, + "n_rounds": 20, + "n_calls_per_round": 5, + "n_warm": 3, + "route_order": "round-robin, start rotated each round", + "per_call_ms": { + "control": [ + 50.51800000001094, + 52.09060000197496, + 49.66499999864027, + 49.47539999920991, + 49.828899998829, + 48.90729999897303, + 49.1489999985788, + 49.784599999838974, + 48.7743000012415, + 47.19209999893792, + 47.54969999703462, + 48.46689999976661, + 49.31610000130604, + 49.30719999902067, + 49.61130000083358, + 51.34879999968689, + 48.272399999405025, + 64.2980999982683, + 47.42970000006608, + 48.2449999981327, + 49.03879999983474, + 63.069800002267584, + 52.57629999687197, + 51.92639999950188, + 51.947500000096625, + 55.86850000327104, + 50.85479999979725, + 49.09179999958724, + 56.83379999754834, + 62.03610000011395, + 80.98679999966407, + 67.1053000005486, + 75.98890000008396, + 82.64380000036908, + 141.6973000013968, + 136.02219999665977, + 57.4720000004163, + 58.830699999816716, + 58.42570000095293, + 55.56530000103521, + 62.31539999862434, + 56.69269999998505, + 60.362500000337604, + 70.28429999991204, + 61.44439999843598, + 111.09620000206633, + 67.94140000056359, + 55.961699999897974, + 59.636599999066675, + 51.913899998908164, + 61.306399999011774, + 48.84429999947315, + 54.44799999895622, + 51.76969999956782, + 52.45149999973364, + 55.44430000009015, + 50.9185000009893, + 52.42770000040764, + 48.03410000022268, + 48.441400002047885, + 47.26459999801591, + 49.43450000064331, + 48.97479999999632, + 48.1644999999844, + 47.80899999968824, + 66.9677000005322, + 58.56990000029327, + 52.90379999860306, + 51.94670000128099, + 48.59209999995073, + 43.44979999950738, + 43.982499999401625, + 43.96479999923031, + 45.37300000083633, + 54.06179999772576, + 57.91260000114562, + 45.843100000638515, + 45.511200001783436, + 50.645300001633586, + 47.20670000097016, + 49.7523000012734, + 60.86929999946733, + 61.7086999991443, + 73.26000000102795, + 89.71949999977369, + 55.19579999963753, + 53.67800000021816, + 62.789299998257775, + 53.5846999991918, + 51.39950000011595, + 50.08979999911389, + 53.157499998633284, + 47.30769999878248, + 59.24750000122003, + 45.3111999995599, + 45.65849999926286, + 46.24540000077104, + 59.34049999996205, + 44.53799999828334, + 43.62870000113617 + ], + "nodedup": [ + 14.970300002460135, + 21.041100000729784, + 15.194900002825307, + 14.776500000152737, + 14.935700000933139, + 14.48040000104811, + 14.624399998865556, + 16.81280000047991, + 14.961699998821132, + 15.35870000225259, + 19.46479999969597, + 15.009499998996034, + 17.857300001196563, + 14.682599998195656, + 14.827599999989616, + 18.558599997049896, + 14.9230000024545, + 14.667399998870678, + 21.539900000789203, + 16.80100000157836, + 15.116200000193203, + 14.79029999973136, + 17.169300001114607, + 15.171200000622775, + 15.05419999739388, + 24.926399997639237, + 33.513000002130866, + 24.060199997620657, + 31.754999999975553, + 20.54100000168546, + 32.954500002233544, + 35.069199999270495, + 25.54940000118222, + 51.76959999880637, + 19.710399999894435, + 21.83349999904749, + 40.56209999907878, + 37.54109999863431, + 35.284699999465374, + 29.279200000019046, + 41.17780000160565, + 24.293499998748302, + 56.019799998466624, + 35.545999999158084, + 32.24899999986519, + 22.224699998332653, + 21.270599998388207, + 15.907600001810351, + 15.72650000161957, + 15.30579999962356, + 23.07220000147936, + 20.746499998494983, + 24.04969999770401, + 16.385400002036477, + 17.21719999841298, + 14.890700000250945, + 13.963199999125209, + 15.551600001344923, + 16.562400000111666, + 14.092800000071293, + 14.826800001173979, + 14.31349999984377, + 13.995199999044416, + 15.46030000099563, + 15.320599999540718, + 13.53690000178176, + 16.226999996433733, + 14.445299999351846, + 16.29559999855701, + 14.725400000315858, + 13.212000001658453, + 16.006099998776335, + 13.756500000454253, + 14.188699999067467, + 14.646399999037385, + 14.062500002182787, + 18.78690000012284, + 14.133000000583706, + 14.09829999829526, + 13.838999999279622, + 14.05960000192863, + 13.72800000171992, + 17.059399997378932, + 15.856699999858392, + 14.553500001056818, + 15.19429999825661, + 15.690000000176951, + 17.03320000160602, + 14.448499998252373, + 15.191599999525351, + 14.185099997121142, + 13.866799999959767, + 13.61709999764571, + 13.623200000438374, + 13.288800000736956, + 13.819400002830662, + 13.753699997323565, + 13.800299999275012, + 13.528800001950003, + 14.973599998484133 + ], + "library": [ + 49.92800000036368, + 49.470099998870865, + 47.95569999987492, + 47.82150000028196, + 49.563900000066496, + 53.99269999907119, + 51.76559999745223, + 51.98989999917103, + 49.71049999949173, + 57.09070000011707, + 54.89269999816315, + 47.87470000155736, + 52.595999997720355, + 47.69500000111293, + 47.512599998299265, + 54.689099997631274, + 55.03160000080243, + 54.712600001948886, + 50.37630000151694, + 51.373700000112876, + 49.3943000001309, + 49.820500000350876, + 55.112499998358544, + 49.30909999893629, + 49.046799998905044, + 50.81810000046971, + 53.58150000029127, + 49.21250000188593, + 49.09340000085649, + 54.56259999846225, + 70.5571999969834, + 64.44109999938519, + 150.22749999843654, + 95.64010000030976, + 89.64849999756552, + 109.47139999916544, + 141.81319999988773, + 93.45430000030319, + 77.17960000081803, + 135.06799999959185, + 56.234499999845866, + 61.75419999999576, + 56.59139999988838, + 57.23790000047302, + 53.292399999918416, + 51.39410000265343, + 49.93259999901056, + 51.7044000007445, + 69.70010000077309, + 52.25410000275588, + 55.04460000156541, + 54.41430000064429, + 53.44200000035926, + 53.95340000177384, + 54.959999997663544, + 50.01360000096611, + 48.71350000030361, + 47.81409999850439, + 47.304300001997035, + 48.799899999721674, + 47.97319999852334, + 48.99450000084471, + 45.03189999741153, + 47.840899998846, + 46.93589999806136, + 47.98749999827123, + 48.226200000499375, + 49.08350000187056, + 49.23899999994319, + 54.811800000607036, + 46.91929999899003, + 46.28709999815328, + 45.0767000002088, + 47.645999999076594, + 46.20060000161175, + 47.362100001919316, + 56.4345000020694, + 49.12820000026841, + 46.60349999903701, + 47.11630000019795, + 47.580000002199085, + 47.14330000206246, + 47.26959999970859, + 51.744199998211116, + 46.94430000017746, + 85.11500000167871, + 109.400999997888, + 94.49620000305003, + 67.10759999987204, + 58.702999998786254, + 46.23870000068564, + 48.43029999756254, + 53.127999999560416, + 47.500299999228446, + 51.42629999681958, + 49.571700001251884, + 46.69780000040191, + 47.42210000040359, + 57.45730000126059, + 45.91380000056233 + ] + }, + "warm_ms": { + "control": [ + 68.60389999928884, + 50.01310000079684, + 59.162000001379056 + ], + "nodedup": [ + 15.192599999863887, + 20.61669999966398, + 15.211099998850841 + ], + "library": [ + 50.35459999999148, + 51.96029999933671, + 50.486399999499554 + ] + }, + "stats": { + "control": { + "n": 100, + "median_ms": 51.92014999920502, + "p10_ms": 46.20517000075779, + "p90_ms": 67.18891000055011, + "min_ms": 43.44979999950738, + "max_ms": 141.6973000013968, + "mean_ms": 56.44007499984582 + }, + "nodedup": { + "n": 100, + "median_ms": 15.313199999582139, + "p10_ms": 13.817490002475097, + "p90_ms": 32.31955000010203, + "min_ms": 13.212000001658453, + "max_ms": 56.019799998466624, + "mean_ms": 19.105392999917967 + }, + "library": { + "n": 100, + "median_ms": 50.19495000124152, + "p10_ms": 46.94345999996585, + "p90_ms": 77.97314000090417, + "min_ms": 45.03189999741153, + "max_ms": 150.22749999843654, + "mean_ms": 57.5223969999206 + } + }, + "ratio_control_over_nodedup": { + "ratio": 3.3905486769990465, + "ci90_low": 3.2012564396917647, + "ci90_high": 3.4846240811845246, + "bootstrap_samples": 2000 + }, + "ratio_library_over_nodedup": { + "ratio": 3.277887704895856, + "ci90_low": 3.131820156929286, + "ci90_high": 3.425001184509755, + "bootstrap_samples": 2000 + }, + "ratio_control_over_library": { + "ratio": 1.0343699913620958, + "ci90_low": 0.982691790127568, + "ci90_high": 1.0606153678617296, + "bootstrap_samples": 2000 + }, + "paired_round_ratio_control_over_nodedup": { + "median": 3.2967905786722116, + "p10": 2.190063481610674, + "p90": 3.68401496626218 + }, + "minimum_detectable_improvement": 0.4041540712057576, + "compile": { + "control": { + "lower_s": 8.299443600000814, + "compile_s": 11.056213799998659, + "first_call_s": 0.07492379999894183, + "trace_calls": 32, + "flops": 33662500.0, + "hlo_sort_count": 15, + "stablehlo_sort_count": 3, + "hlo_sort_shapes": [ + "(f64[69849]{0}, f64[69849]{0}, s64[69849]{0})", + "(f64[4,60]{1,0}, f64[4,60]{1,0}, s64[4,60]{1,0})", + "(f64[4,720]{1,0}, f64[4,720]{1,0}, s64[4,720]{1,0})", + "(f64[4,60]{1,0}, f64[4,60]{1,0}, s64[4,60]{1,0})", + "(f64[4,720]{1,0}, f64[4,720]{1,0}, s64[4,720]{1,0})", + "(f64[4,60]{1,0}, f64[4,60]{1,0}, s64[4,60]{1,0})", + "(f64[4,720]{1,0}, f64[4,720]{1,0}, s64[4,720]{1,0})", + "(f64[4,60]{1,0}, f64[4,60]{1,0}, s64[4,60]{1,0})", + "(f64[4,720]{1,0}, f64[4,720]{1,0}, s64[4,720]{1,0})", + "(f64[4,60]{1,0}, f64[4,60]{1,0}, s64[4,60]{1,0})", + "(f64[4,720]{1,0}, f64[4,720]{1,0}, s64[4,720]{1,0})", + "(f64[4,60]{1,0}, f64[4,60]{1,0}, s64[4,60]{1,0})", + "(f64[4,720]{1,0}, f64[4,720]{1,0}, s64[4,720]{1,0})", + "(f64[4,60]{1,0}, f64[4,60]{1,0}, s64[4,60]{1,0})", + "(f64[4,720]{1,0}, f64[4,720]{1,0}, s64[4,720]{1,0})" + ], + "hlo_sha256": "255713dfed037efd", + "hlo_lines": 30652 + }, + "nodedup": { + "lower_s": 8.255358200000046, + "compile_s": 9.602517499999522, + "first_call_s": 0.01838819999829866, + "trace_calls": 32, + "flops": 23296236.0, + "hlo_sort_count": 7, + "stablehlo_sort_count": 1, + "hlo_sort_shapes": [ + "(f64[4,60]{1,0}, f64[4,60]{1,0}, s64[4,60]{1,0})", + "(f64[4,60]{1,0}, f64[4,60]{1,0}, s64[4,60]{1,0})", + "(f64[4,60]{1,0}, f64[4,60]{1,0}, s64[4,60]{1,0})", + "(f64[4,60]{1,0}, f64[4,60]{1,0}, s64[4,60]{1,0})", + "(f64[4,60]{1,0}, f64[4,60]{1,0}, s64[4,60]{1,0})", + "(f64[4,60]{1,0}, f64[4,60]{1,0}, s64[4,60]{1,0})", + "(f64[4,60]{1,0}, f64[4,60]{1,0}, s64[4,60]{1,0})" + ], + "hlo_sha256": "26e00b3bbb6e0062", + "hlo_lines": 26375 + }, + "library": { + "lower_s": 6.989750299999287, + "compile_s": 12.217282599998725, + "first_call_s": 0.06275349999850732, + "trace_calls": 32, + "flops": 33662500.0, + "hlo_sort_count": 15, + "stablehlo_sort_count": 3, + "hlo_sort_shapes": [ + "(f64[69849]{0}, f64[69849]{0}, s64[69849]{0})", + "(f64[4,60]{1,0}, f64[4,60]{1,0}, s64[4,60]{1,0})", + "(f64[4,720]{1,0}, f64[4,720]{1,0}, s64[4,720]{1,0})", + "(f64[4,60]{1,0}, f64[4,60]{1,0}, s64[4,60]{1,0})", + "(f64[4,720]{1,0}, f64[4,720]{1,0}, s64[4,720]{1,0})", + "(f64[4,60]{1,0}, f64[4,60]{1,0}, s64[4,60]{1,0})", + "(f64[4,720]{1,0}, f64[4,720]{1,0}, s64[4,720]{1,0})", + "(f64[4,60]{1,0}, f64[4,60]{1,0}, s64[4,60]{1,0})", + "(f64[4,720]{1,0}, f64[4,720]{1,0}, s64[4,720]{1,0})", + "(f64[4,60]{1,0}, f64[4,60]{1,0}, s64[4,60]{1,0})", + "(f64[4,720]{1,0}, f64[4,720]{1,0}, s64[4,720]{1,0})", + "(f64[4,60]{1,0}, f64[4,60]{1,0}, s64[4,60]{1,0})", + "(f64[4,720]{1,0}, f64[4,720]{1,0}, s64[4,720]{1,0})", + "(f64[4,60]{1,0}, f64[4,60]{1,0}, s64[4,60]{1,0})", + "(f64[4,720]{1,0}, f64[4,720]{1,0}, s64[4,720]{1,0})" + ], + "hlo_sha256": "3b1311e848b7636b", + "hlo_lines": 30652 + } + }, + "instances_compared": [ + [ + 0, + 1, + 2, + 3 + ], + [ + 4, + 5, + 6, + 7 + ], + [ + 8, + 9, + 10, + 11 + ], + [ + 12, + 13, + 14, + 15 + ] + ], + "values": { + "control": [ + [ + 7.743201200876812, + 4.901199826003542, + 8.551453428732437, + 7.640170398958149 + ], + [ + 7.2580956747803445, + 9.29357838657636, + 3.0338796505151917, + 8.714615086385912 + ], + [ + 4.735173159474494, + 3.2233889243165805, + 9.296501815740573, + 6.7486158154711955 + ], + [ + -1.4028143150641306, + 0.5885274382499945, + 6.162997261446639, + -10.49915087893337 + ] + ], + "nodedup": [ + [ + 7.743201200876812, + 4.901199826003542, + 8.551453428732437, + 7.640170398958149 + ], + [ + 7.2580956747803445, + 9.29357838657636, + 3.0338796505151917, + 8.714615086385912 + ], + [ + 4.735173159474494, + 3.2233889243165805, + 9.296501815740573, + 6.7486158154711955 + ], + [ + -1.4028143150641306, + 0.5885274382499945, + 6.162997261446639, + -10.49915087893337 + ] + ], + "library": [ + [ + 7.743201200876812, + 4.901199826003542, + 8.551453428732437, + 7.640170398958149 + ], + [ + 7.2580956747803445, + 9.29357838657636, + 3.0338796505151917, + 8.714615086385912 + ], + [ + 4.735173159474494, + 3.2233889243165805, + 9.296501815740573, + 6.7486158154711955 + ], + [ + -1.4028143150641306, + 0.5885274382499945, + 6.162997261446639, + -10.49915087893337 + ] + ] + }, + "deterministic_within_route": { + "control": true, + "nodedup": true, + "library": true + }, + "likelihood_gate": { + "control_vs_nodedup": { + "bit_identical": true, + "max_abs_delta": 0.0, + "max_rel_delta": 0.0, + "nan_pattern_equal": true + }, + "control_vs_library": { + "bit_identical": true, + "max_abs_delta": 0.0, + "max_rel_delta": 0.0, + "nan_pattern_equal": true + }, + "nodedup_vs_library": { + "bit_identical": true, + "max_abs_delta": 0.0, + "max_rel_delta": 0.0, + "nan_pattern_equal": true + } + } + }, + "simple_plain": { + "label": "simple_plain", + "batch": null, + "n_rounds": 20, + "n_calls_per_round": 5, + "n_warm": 3, + "route_order": "round-robin, start rotated each round", + "per_call_ms": { + "control": [ + 34.498499997425824, + 34.37080000003334, + 34.15270000186865, + 36.52280000096653, + 42.903699999442324, + 40.350899998884415, + 37.17310000138241, + 36.32859999925131, + 36.74669999963953, + 38.47619999942253, + 36.66250000242144, + 35.67190000103437, + 35.879699997167336, + 38.63249999994878, + 34.97189999688999, + 52.79979999977513, + 37.04890000153682, + 42.00730000229669, + 34.36650000003283, + 37.329000002500834, + 35.80160000274191, + 34.943200000270735, + 34.66169999956037, + 35.865499998180894, + 38.61170000163838, + 42.00409999975818, + 43.629200001305435, + 41.29240000111167, + 40.31530000065686, + 40.42259999914677, + 42.37270000157878, + 45.11060000004363, + 36.726000002090586, + 37.39520000090124, + 36.933899998985, + 34.62539999964065, + 34.39799999978277, + 34.72150000015972, + 38.50369999781833, + 42.80270000163, + 34.57739999794285, + 34.40179999961401, + 34.54369999963092, + 36.20129999762867, + 42.10850000163191, + 37.95410000020638, + 38.37360000034096, + 39.058599999407306, + 39.4839000000502, + 38.219499998376705, + 40.28230000039912, + 40.1021000034234, + 39.722000001347624, + 39.80849999788916, + 37.05909999916912, + 35.291799998958595, + 35.43079999872134, + 35.4064000021026, + 35.6357000018761, + 37.66430000177934, + 34.45320000173524, + 34.08639999906882, + 34.094000002369285, + 34.34139999808394, + 35.08080000028713, + 51.09779999838793, + 79.29720000174711, + 70.40589999814983, + 48.35749999983818, + 43.2306000002427, + 55.75549999775831, + 39.988000000448665, + 37.8497999990941, + 38.63469999851077, + 37.35429999869666, + 36.82900000057998, + 37.13429999697837, + 35.727200000110315, + 35.632400002214126, + 36.503799998172326, + 41.28140000102576, + 36.636700002418365, + 36.29749999890919, + 35.60560000187252, + 39.499099999375176, + 54.42670000047656, + 53.05640000005951, + 34.546200000477256, + 34.23040000052424, + 34.04360000058659, + 34.48290000233101, + 35.02519999892684, + 34.89869999975781, + 36.16829999737092, + 34.10060000169324, + 35.89070000089123, + 35.521400001016445, + 37.147899998672074, + 35.52700000000186, + 34.807899999577785 + ], + "nodedup": [ + 7.638499999302439, + 5.589500000496628, + 5.5412000001524575, + 7.2709999985818285, + 6.981700000324054, + 5.840099998749793, + 5.875099999684608, + 5.90839999858872, + 5.991400001221336, + 6.0558000004675705, + 5.832699996972224, + 6.011999998008832, + 5.671099999744911, + 8.473699999740347, + 8.690200000273762, + 9.072100001503713, + 5.705699997633928, + 5.660800001351163, + 5.803900003229501, + 5.614600002445513, + 5.552399998123292, + 5.637199999910081, + 5.874399997992441, + 5.436899999040179, + 8.485900001687696, + 6.52289999925415, + 6.328099996608216, + 6.770300002244767, + 6.603700003324775, + 6.670399998256471, + 7.25619999866467, + 6.118099998275284, + 6.282300000748364, + 6.120900001405971, + 6.281499998294748, + 5.8922999996866565, + 5.942799998592818, + 5.886099999770522, + 5.798499998491025, + 6.052799999451963, + 7.552500002930174, + 6.79409999793279, + 6.296600000496255, + 9.893900001770817, + 6.244299998797942, + 7.682100000238279, + 6.243100000574486, + 6.423099999665283, + 11.840399998618523, + 7.678999998461222, + 6.19850000293809, + 6.31499999872176, + 6.236099998204736, + 6.199300001753727, + 6.258499997784384, + 5.6757999991532415, + 5.748499999754131, + 5.444599999464117, + 5.5281999993894715, + 5.7120999990729615, + 6.776599999284372, + 5.821999999170657, + 5.707099997380283, + 6.271800000831718, + 5.897500002902234, + 5.832400001963833, + 5.873300000530435, + 6.3033000005816575, + 7.365000001300359, + 6.174499998451211, + 5.905499998334562, + 6.659999999101274, + 6.048299997928552, + 6.437399999413174, + 6.15269999980228, + 5.84089999756543, + 5.905499998334562, + 5.849699999089353, + 5.8017000010295305, + 5.96159999986412, + 6.199200000992278, + 6.263199997192714, + 6.6842999985965434, + 6.261300000915071, + 6.142499998532003, + 5.656000001181383, + 8.552200000849552, + 5.49469999896246, + 5.505900000571273, + 6.603099998756079, + 5.734499998652609, + 5.642000000079861, + 5.5412000001524575, + 5.511700001079589, + 5.610200001683552, + 5.7324999979755376, + 6.282700000156183, + 6.170399999973597, + 6.6752999991877005, + 5.9302000008756295 + ], + "library": [ + 35.91319999759435, + 38.074000000051456, + 37.10800000044401, + 43.73020000275574, + 36.94040000118548, + 36.000600000988925, + 38.76930000114953, + 36.49520000180928, + 38.54630000205361, + 35.855199999787146, + 36.14689999812981, + 36.874199999147095, + 37.83589999875403, + 37.33469999860972, + 37.25029999986873, + 34.43669999978738, + 34.88180000204011, + 34.62980000040261, + 34.152299998822855, + 34.85699999873759, + 34.57949999938137, + 35.76009999960661, + 47.855999997409526, + 34.84480000042822, + 36.607800000638235, + 36.714000001666136, + 42.032499997731065, + 38.33389999999781, + 38.89619999972638, + 44.763999998394866, + 39.22759999841219, + 36.28740000203834, + 36.934700001438614, + 36.28670000034617, + 42.63350000110222, + 36.04560000167112, + 36.11500000261003, + 35.91679999954067, + 35.35420000116574, + 36.03359999760869, + 35.05389999918407, + 34.2041000003519, + 34.30540000044857, + 36.79109999939101, + 34.33210000002873, + 40.36370000176248, + 40.81399999995483, + 40.73989999960759, + 40.210700000898214, + 52.610000002459856, + 38.32920000058948, + 38.09980000005453, + 39.670699999987846, + 52.32640000031097, + 41.033100002096035, + 37.478800000826595, + 36.888400001771515, + 35.555399997974746, + 37.467099999048514, + 36.55520000029355, + 36.873700002615806, + 35.70229999968433, + 39.6413999987999, + 42.194999998173444, + 37.18089999892982, + 48.30749999746331, + 41.12400000303751, + 45.182800000475254, + 56.720799999311566, + 45.102599997335346, + 42.46340000099735, + 42.23529999944731, + 40.21600000123726, + 39.2372999995132, + 39.96910000205389, + 35.207199998694705, + 35.13110000130837, + 36.106800002016826, + 38.6447999990196, + 35.72340000027907, + 37.50510000099894, + 36.8653000004997, + 36.143500001344364, + 36.32289999950444, + 35.74569999909727, + 41.274999999586726, + 34.06219999669702, + 34.428099999786355, + 39.30870000112918, + 37.10549999959767, + 34.01309999753721, + 34.70989999914309, + 38.42860000077053, + 34.391699999105185, + 34.90760000204318, + 36.43310000188649, + 35.95070000301348, + 36.898399997880915, + 36.95089999746415, + 35.4525000002468 + ] + }, + "warm_ms": { + "control": [ + 49.126000001706416, + 32.30429999894113, + 32.06779999891296 + ], + "nodedup": [ + 5.724700000428129, + 5.184299996471964, + 5.1994000023114495 + ], + "library": [ + 32.532799999899, + 33.68600000248989, + 34.691599998041056 + ] + }, + "stats": { + "control": { + "n": 100, + "median_ms": 36.787850000109756, + "p10_ms": 34.40141999963089, + "p90_ms": 43.270460000348976, + "min_ms": 34.04360000058659, + "max_ms": 79.29720000174711, + "mean_ms": 38.884044000078575 + }, + "nodedup": { + "n": 100, + "median_ms": 6.086949999371427, + "p10_ms": 5.608130001564859, + "p90_ms": 7.561100002567401, + "min_ms": 5.436899999040179, + "max_ms": 11.840399998618523, + "mean_ms": 6.354887999732455 + }, + "library": { + "n": 100, + "median_ms": 36.893399999826215, + "p10_ms": 34.62477000030049, + "p90_ms": 42.48041000100784, + "min_ms": 34.01309999753721, + "max_ms": 56.720799999311566, + "mean_ms": 38.19748800007801 + } + }, + "ratio_control_over_nodedup": { + "ratio": 6.043724690347165, + "ci90_low": 5.897963899871554, + "ci90_high": 6.230510722445364, + "bootstrap_samples": 2000 + }, + "ratio_library_over_nodedup": { + "ratio": 6.061065066024205, + "ci90_low": 5.93393151882492, + "ci90_high": 6.244944103540219, + "bootstrap_samples": 2000 + }, + "ratio_control_over_library": { + "ratio": 0.9971390546895391, + "ci90_low": 0.9778342596645191, + "ci90_high": 1.0168629020118551, + "bootstrap_samples": 2000 + }, + "paired_round_ratio_control_over_nodedup": { + "median": 6.164232899882632, + "p10": 5.080116073377749, + "p90": 6.399441825763121 + }, + "minimum_detectable_improvement": 0.24108611948487413, + "compile": { + "control": { + "lower_s": 3.917546000000584, + "compile_s": 9.076826300002722, + "first_call_s": 0.040960700000141514, + "trace_calls": 32, + "flops": 15581930.0, + "hlo_sort_count": 15, + "stablehlo_sort_count": 3, + "hlo_sort_shapes": [ + "(f64[69849]{0}, f64[69849]{0}, s64[69849]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})" + ], + "hlo_sha256": "3adc2dbb57209d92", + "hlo_lines": 25706 + }, + "nodedup": { + "lower_s": 4.000730600000679, + "compile_s": 6.373363800001243, + "first_call_s": 0.012295399999857182, + "trace_calls": 32, + "flops": 7052562.0, + "hlo_sort_count": 7, + "stablehlo_sort_count": 1, + "hlo_sort_shapes": [ + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})" + ], + "hlo_sha256": "58f5a82c02a38490", + "hlo_lines": 21527 + }, + "library": { + "lower_s": 4.09295910000219, + "compile_s": 9.452654999997321, + "first_call_s": 0.04655540000021574, + "trace_calls": 32, + "flops": 15581930.0, + "hlo_sort_count": 15, + "stablehlo_sort_count": 3, + "hlo_sort_shapes": [ + "(f64[69849]{0}, f64[69849]{0}, s64[69849]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})" + ], + "hlo_sha256": "f8b5403168045133", + "hlo_lines": 25706 + } + }, + "instances_compared": [ + [ + 0 + ], + [ + 1 + ], + [ + 2 + ], + [ + 3 + ], + [ + 4 + ], + [ + 5 + ], + [ + 6 + ], + [ + 7 + ], + [ + 8 + ], + [ + 9 + ], + [ + 10 + ], + [ + 11 + ], + [ + 12 + ], + [ + 13 + ], + [ + 14 + ], + [ + 15 + ] + ], + "values": { + "control": [ + 7.196577317761015, + -45.87302127443001, + 2.904871458739854, + -801.1656151465147, + -856.2176369539866, + -701.3832757596593, + -791.8603301084569, + -641.0597186366746, + -856.874766532385, + -965.6893581059344, + -601.8962692526686, + 1.491228024977211, + -664.1239657398182, + -4.055811166945713, + -6.531970036750838, + -970.3067931813664 + ], + "nodedup": [ + 7.196577317761015, + -45.87302127443001, + 2.904871458739854, + -801.1656151465147, + -856.2176369539866, + -701.3832757596593, + -791.8603301084569, + -641.0597186366746, + -856.874766532385, + -965.6893581059344, + -601.8962692526686, + 1.491228024977211, + -664.1239657398182, + -4.055811166945713, + -6.531970036750838, + -970.3067931813664 + ], + "library": [ + 7.196577317761015, + -45.87302127443001, + 2.904871458739854, + -801.1656151465147, + -856.2176369539866, + -701.3832757596593, + -791.8603301084569, + -641.0597186366746, + -856.874766532385, + -965.6893581059344, + -601.8962692526686, + 1.491228024977211, + -664.1239657398182, + -4.055811166945713, + -6.531970036750838, + -970.3067931813664 + ] + }, + "deterministic_within_route": { + "control": true, + "nodedup": true, + "library": true + }, + "likelihood_gate": { + "control_vs_nodedup": { + "bit_identical": true, + "max_abs_delta": 0.0, + "max_rel_delta": 0.0, + "nan_pattern_equal": true + }, + "control_vs_library": { + "bit_identical": true, + "max_abs_delta": 0.0, + "max_rel_delta": 0.0, + "nan_pattern_equal": true + }, + "nodedup_vs_library": { + "bit_identical": true, + "max_abs_delta": 0.0, + "max_rel_delta": 0.0, + "nan_pattern_equal": true + } + }, + "fiducial_log_likelihood": { + "control": 7.196577317761015, + "nodedup": 7.196577317761015, + "library": 7.196577317761015 + } + }, + "cluster_solved": { + "label": "cluster_solved", + "batch": null, + "n_rounds": 20, + "n_calls_per_round": 5, + "n_warm": 3, + "route_order": "round-robin, start rotated each round", + "per_call_ms": { + "control": [ + 142.00440000058734, + 148.69820000239997, + 140.9137999980885, + 155.12560000206577, + 150.45129999998608, + 151.74499999920954, + 146.92090000244207, + 144.15659999940544, + 142.16599999781465, + 144.92569999856642, + 155.6614000000991, + 146.0196999978507, + 142.88930000111577, + 164.6316999976989, + 156.69079999861424, + 169.8395999992499, + 153.01159999944502, + 149.18549999856623, + 147.9773999999452, + 146.81439999912982, + 153.54730000035488, + 159.77710000152, + 202.83200000267243, + 227.23760000008042, + 174.18439999892144, + 136.7790000003879, + 134.61649999953806, + 132.44420000046375, + 138.4835999997449, + 145.62440000008792, + 160.7825999999477, + 160.56039999966742, + 156.87800000159768, + 143.87039999928675, + 144.86219999889727, + 127.55590000233497, + 129.25470000118366, + 136.44969999950263, + 128.95189999835566, + 130.84840000010445, + 135.56129999778932, + 133.26170000073034, + 131.30919999821344, + 132.4886999973387, + 138.40820000041276, + 140.8538999967277, + 133.66619999942486, + 135.39099999979953, + 133.06390000070678, + 139.8220000010042, + 131.53170000077807, + 133.64680000086082, + 135.46080000014626, + 132.06699999864213, + 135.80979999824194, + 163.4965999983251, + 148.28990000023623, + 141.31340000312775, + 152.58729999914067, + 141.80259999920963, + 146.50389999951585, + 154.18090000093798, + 137.45980000021518, + 138.8595999997051, + 135.08039999942412, + 136.83579999997164, + 144.35000000230502, + 136.80879999810713, + 136.33429999754298, + 138.0037999988417, + 209.20920000207843, + 227.11919999710517, + 169.4320999995398, + 158.39260000211652, + 157.2548000003735, + 178.6934999981895, + 164.61809999964316, + 150.90169999893988, + 161.107500000071, + 144.5170999977563, + 146.75050000005285, + 157.66339999754564, + 140.22339999792166, + 174.9361999973189, + 164.08960000262596, + 150.34670000022743, + 142.9945999989286, + 135.66770000034012, + 141.52570000078413, + 137.77100000152132, + 141.8983000003209, + 148.70610000070883, + 136.51720000052592, + 140.1590000023134, + 133.8316000001214, + 133.65169999815407, + 133.57060000271304, + 134.4091999999364, + 142.1769000007771, + 145.09349999934784 + ], + "nodedup": [ + 64.13249999968684, + 65.29519999821787, + 67.44320000143489, + 68.54410000232747, + 71.95839999985765, + 60.483000001113396, + 62.7158999996027, + 64.65600000228733, + 65.93729999804054, + 64.0873999982432, + 65.13210000048275, + 62.13449999995646, + 64.44230000124662, + 65.0924000001396, + 65.83189999946626, + 72.83739999911631, + 64.96969999716384, + 74.31039999937639, + 68.72720000319532, + 71.3848000013968, + 68.30930000069202, + 62.68579999959911, + 64.53209999745013, + 67.5312000021222, + 68.68490000124439, + 62.23419999878388, + 63.214800000423566, + 63.09230000260868, + 67.83850000283564, + 69.40070000200649, + 59.569900000497, + 60.41980000009062, + 62.81379999927594, + 58.649099999456666, + 59.00919999839971, + 54.417600000306265, + 55.45899999924586, + 56.16080000254442, + 61.402999999700114, + 65.28229999821633, + 54.87150000044494, + 56.69590000252356, + 58.01199999768869, + 59.00880000262987, + 60.82130000140751, + 59.225299999525305, + 56.568399999378016, + 62.44220000007772, + 57.461399999738205, + 58.84670000159531, + 60.55750000086846, + 59.953399999358226, + 58.18809999982477, + 67.12139999945066, + 56.8604999971285, + 62.077900001895614, + 62.47140000050422, + 62.784400000964524, + 61.55370000124094, + 64.91270000333316, + 58.3796999999322, + 58.10390000260668, + 68.49280000096769, + 70.88289999956032, + 71.98360000256798, + 71.13249999747495, + 63.125500000751344, + 62.63530000069295, + 59.4000999990385, + 65.06050000098185, + 60.24569999863161, + 67.65260000247508, + 79.22320000216132, + 66.6200999985449, + 79.39170000099693, + 56.38630000248668, + 57.01020000196877, + 71.00399999762885, + 86.3086999997904, + 84.5350999989023, + 63.955000001442386, + 65.19200000184355, + 64.50279999990016, + 65.50810000044294, + 58.02939999921364, + 60.30749999990803, + 62.430800000583986, + 59.491200001502875, + 59.78079999840702, + 58.91759999940405, + 59.03340000077151, + 58.2687000023725, + 59.97139999817591, + 60.3850000006787, + 64.24440000046161, + 60.79739999768208, + 57.21379999886267, + 59.007300002122065, + 65.6170000002021, + 64.91280000045663 + ], + "library": [ + 164.61849999905098, + 159.77859999838984, + 150.16969999851426, + 145.8426999997755, + 145.10540000264882, + 155.07630000138306, + 161.93159999966156, + 148.74580000105198, + 156.62610000072164, + 150.53919999991194, + 147.61450000150944, + 143.58390000052168, + 144.8668999983056, + 142.32760000231792, + 142.46889999776613, + 159.7265000018524, + 152.67539999695146, + 150.4970999994839, + 145.15340000070864, + 142.03470000211382, + 154.23530000043684, + 149.44109999851207, + 152.8464000002714, + 141.89909999913652, + 142.7053999977943, + 164.91270000187797, + 157.77869999874383, + 143.2215000022552, + 134.22890000219923, + 140.35190000140574, + 138.93719999759924, + 135.74799999696552, + 134.4850999994378, + 133.5481999994954, + 131.177100000059, + 138.70479999968666, + 134.35759999993024, + 133.6050999998406, + 130.43390000166255, + 127.23410000035074, + 128.93869999970775, + 134.54490000003716, + 130.4736000020057, + 139.45299999977578, + 139.2269000025408, + 139.0739999988, + 136.1034000001382, + 132.59019999895827, + 128.2457000015711, + 135.7596999987436, + 139.50659999682102, + 132.61409999904572, + 133.22330000301008, + 133.8331000006292, + 134.09360000150627, + 139.47149999876274, + 159.97969999807538, + 169.6272000008321, + 163.58349999791244, + 179.78660000153468, + 189.24360000164597, + 184.64350000067498, + 170.31199999837554, + 142.07239999814192, + 136.81020000149147, + 179.31189999944763, + 152.98129999791854, + 145.85129999977653, + 138.24100000056205, + 159.01059999669087, + 136.87039999786066, + 163.37779999958002, + 240.02399999881163, + 201.2931999997818, + 171.3452000003599, + 161.12680000151158, + 141.08000000123866, + 155.16159999970114, + 185.1243000019167, + 184.7129000016139, + 143.1577000003017, + 136.80579999709153, + 137.36960000096587, + 136.8899999979476, + 134.96780000059516, + 152.1221000002697, + 135.22710000324878, + 136.24610000260873, + 144.10489999863785, + 161.42670000044745, + 141.21479999812436, + 136.88819999879343, + 138.59729999967385, + 132.81519999873126, + 134.48170000265236, + 146.37609999772394, + 134.90590000219527, + 135.40029999785475, + 134.83020000057877, + 138.5573999978078 + ] + }, + "warm_ms": { + "control": [ + 121.27970000074129, + 128.03250000069966, + 131.69200000265846 + ], + "nodedup": [ + 59.49270000201068, + 59.32409999877564, + 63.197999999829335 + ], + "library": [ + 156.7058000000543, + 142.14600000195787, + 154.95949999967706 + ] + }, + "stats": { + "control": { + "n": 100, + "median_ms": 143.43249999910768, + "p10_ms": 133.241920000728, + "p90_ms": 164.61945999944874, + "min_ms": 127.55590000233497, + "max_ms": 227.23760000008042, + "mean_ms": 148.02847199982352 + }, + "nodedup": { + "n": 100, + "median_ms": 62.75015000028361, + "p10_ms": 57.43663999965065, + "p90_ms": 71.01684999761346, + "min_ms": 54.417600000306265, + "max_ms": 86.3086999997904, + "mean_ms": 63.66399300030025 + }, + "library": { + "n": 100, + "median_ms": 142.20000000022992, + "p10_ms": 133.51570999984688, + "p90_ms": 169.69568000058644, + "min_ms": 127.23410000035074, + "max_ms": 240.02399999881163, + "mean_ms": 147.9034309999406 + } + }, + "ratio_control_over_nodedup": { + "ratio": 2.285771428410281, + "ci90_low": 2.219426963270871, + "ci90_high": 2.3335555883499683, + "bootstrap_samples": 2000 + }, + "ratio_library_over_nodedup": { + "ratio": 2.2661300411168295, + "ci90_low": 2.2039062330638313, + "ci90_high": 2.3173872153437913, + "bootstrap_samples": 2000 + }, + "ratio_control_over_library": { + "ratio": 1.008667369893641, + "ci90_low": 0.9848121737584689, + "ci90_high": 1.0355775194309371, + "bootstrap_samples": 2000 + }, + "paired_round_ratio_control_over_nodedup": { + "median": 2.2989404925535135, + "p10": 2.1563339587722608, + "p90": 2.511930700471672 + }, + "minimum_detectable_improvement": 0.2187617171764834, + "compile": { + "control": { + "lower_s": 54.211287599999196, + "compile_s": 41.30231940000158, + "first_call_s": 0.12729100000069593, + "trace_calls": 168, + "flops": 184158336.0, + "hlo_sort_count": 25, + "stablehlo_sort_count": 3, + "hlo_sort_shapes": [ + "(f64[276507]{0}, f64[276507]{0}, s64[276507]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})" + ], + "hlo_sha256": "f59a8270996c6242", + "hlo_lines": 70897 + }, + "nodedup": { + "lower_s": 45.46868949999771, + "compile_s": 36.385934600002656, + "first_call_s": 0.07705910000004224, + "trace_calls": 168, + "flops": 139442208.0, + "hlo_sort_count": 12, + "stablehlo_sort_count": 1, + "hlo_sort_shapes": [ + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})" + ], + "hlo_sha256": "97c5816a6041af5f", + "hlo_lines": 62911 + }, + "library": { + "lower_s": 51.991277699999046, + "compile_s": 45.008616499999334, + "first_call_s": 0.11665110000103596, + "trace_calls": 168, + "flops": 184158336.0, + "hlo_sort_count": 25, + "stablehlo_sort_count": 3, + "hlo_sort_shapes": [ + "(f64[276507]{0}, f64[276507]{0}, s64[276507]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})" + ], + "hlo_sha256": "ffa2418bd4629ece", + "hlo_lines": 70897 + } + }, + "instances_compared": [ + [ + 0 + ], + [ + 1 + ], + [ + 2 + ], + [ + 3 + ], + [ + 4 + ], + [ + 5 + ], + [ + 6 + ], + [ + 7 + ], + [ + 8 + ], + [ + 9 + ], + [ + 10 + ], + [ + 11 + ], + [ + 12 + ], + [ + 13 + ], + [ + 14 + ], + [ + 15 + ] + ], + "values": { + "control": [ + 25.56012716672745, + 21.572496958393117, + 21.458564666727817, + 13.597236541730302, + 15.306220916729094, + 10.29320008339773, + 19.977444875061735, + 21.80036154172802, + 10.748929250057948, + 9.60960633339704, + 5.166246958396467, + 14.05296570839195, + 4.710517791725226, + 6.64736675005817, + 17.926663625058694, + 16.331611541724385 + ], + "nodedup": [ + 25.56012716672745, + 21.572496958393117, + 21.458564666727817, + 13.597236541730302, + 15.306220916729094, + 10.29320008339773, + 19.977444875061735, + 21.80036154172802, + 10.748929250057948, + 9.60960633339704, + 5.166246958396467, + 14.05296570839195, + 4.710517791725226, + 6.64736675005817, + 17.926663625058694, + 16.331611541724385 + ], + "library": [ + 25.56012716672745, + 21.572496958393117, + 21.458564666727817, + 13.597236541730302, + 15.306220916729094, + 10.29320008339773, + 19.977444875061735, + 21.80036154172802, + 10.748929250057948, + 9.60960633339704, + 5.166246958396467, + 14.05296570839195, + 4.710517791725226, + 6.64736675005817, + 17.926663625058694, + 16.331611541724385 + ] + }, + "deterministic_within_route": { + "control": true, + "nodedup": true, + "library": true + }, + "likelihood_gate": { + "control_vs_nodedup": { + "bit_identical": true, + "max_abs_delta": 0.0, + "max_rel_delta": 0.0, + "nan_pattern_equal": true + }, + "control_vs_library": { + "bit_identical": true, + "max_abs_delta": 0.0, + "max_rel_delta": 0.0, + "nan_pattern_equal": true + }, + "nodedup_vs_library": { + "bit_identical": true, + "max_abs_delta": 0.0, + "max_rel_delta": 0.0, + "nan_pattern_equal": true + } + }, + "fiducial_log_likelihood": { + "control": 25.56012716672745, + "nodedup": 25.56012716672745, + "library": 25.56012716672745 + } + }, + "cluster_plain": { + "label": "cluster_plain", + "batch": null, + "n_rounds": 20, + "n_calls_per_round": 5, + "n_warm": 3, + "route_order": "round-robin, start rotated each round", + "per_call_ms": { + "control": [ + 154.1536000004271, + 147.22310000070138, + 143.49859999856562, + 143.9606999992975, + 139.81959999728133, + 143.00500000172178, + 147.53420000124606, + 159.95230000044103, + 160.93460000047344, + 155.96559999903548, + 141.21739999973215, + 141.86919999701786, + 138.36439999795402, + 142.23969999875408, + 148.54230000128155, + 158.5032000002684, + 154.81499999805237, + 149.5826999998826, + 147.6820999996562, + 148.5885000001872, + 139.94180000008782, + 139.5029000013892, + 143.3738000014273, + 144.17790000152308, + 144.29380000001402, + 138.60390000263578, + 142.74330000262125, + 144.60479999979725, + 144.66999999785912, + 150.34920000107377, + 151.94049999990966, + 150.3907000005711, + 143.55190000060247, + 144.11670000117738, + 142.10689999890747, + 134.85249999939697, + 155.46220000032918, + 156.16989999762154, + 149.945299999672, + 153.32629999829805, + 140.77030000044033, + 138.8342999998713, + 136.422900002799, + 149.2550000002666, + 147.55439999862574, + 154.79839999898104, + 144.25580000170157, + 157.63739999965765, + 163.07439999945927, + 151.16669999770238, + 138.3745999992243, + 139.98949999950128, + 138.04479999816976, + 140.18099999884726, + 139.38219999909052, + 150.8990999973321, + 148.14509999996517, + 151.44520000103512, + 157.8881999994337, + 142.10929999899236, + 152.06190000026254, + 145.78590000019176, + 145.6794000005175, + 143.2064000000537, + 138.73279999825172, + 145.33619999929215, + 141.70219999869005, + 139.74550000057206, + 140.80420000027516, + 142.66309999948135, + 149.155699997209, + 142.7086000003328, + 141.50859999790555, + 140.3451000005589, + 141.39200000136043, + 158.64430000146967, + 147.511699997267, + 144.43870000104653, + 151.52780000062194, + 152.29639999961364, + 138.92520000081277, + 141.6239999998652, + 139.1747999987274, + 139.4338999998581, + 140.46940000116592, + 147.30259999851114, + 143.51000000169734, + 141.09419999658712, + 141.27390000066953, + 141.24230000015814, + 147.84839999992982, + 145.44979999845964, + 135.63730000169016, + 143.95729999887408, + 130.2642000009655, + 126.97149999803514, + 136.00840000071912, + 130.85380000120495, + 126.67990000045393, + 130.3939999997965 + ], + "nodedup": [ + 60.756899998523295, + 63.055300000996795, + 60.60799999977462, + 62.024800001381664, + 61.842700000852346, + 66.53039999946486, + 60.0918999989517, + 61.594099999638274, + 63.34659999993164, + 63.89660000058939, + 61.076100002537714, + 62.34939999922062, + 69.82590000188793, + 68.4000000001106, + 65.04940000013448, + 61.01869999838527, + 59.781899999507004, + 64.03950000094483, + 62.64939999891794, + 64.54419999863603, + 57.93379999886383, + 60.618800001975615, + 61.28499999977066, + 61.7495999977109, + 62.353999997867504, + 61.046900002111215, + 62.2224999970058, + 66.62619999769959, + 63.246699999581324, + 68.83060000109253, + 57.2325000030105, + 61.281800000870135, + 60.60820000129752, + 65.84289999955217, + 61.008499997114995, + 57.855600000038976, + 58.60200000097393, + 52.24200000156998, + 63.06659999972908, + 63.444899999012705, + 49.83599999832222, + 61.74549999923329, + 61.213799999677576, + 64.11979999757023, + 64.85800000154995, + 69.37209999887273, + 72.62869999976829, + 75.05500000115717, + 77.82480000241776, + 88.04980000059004, + 68.20349999907194, + 66.71690000075614, + 69.0509000014572, + 79.79380000324454, + 76.43770000140648, + 57.69199999849661, + 62.542799998482224, + 61.56620000183466, + 62.60370000018156, + 67.13090000266675, + 67.96919999760576, + 63.02239999786252, + 65.44560000111233, + 61.168100000941195, + 64.9784000015643, + 59.834799998498056, + 61.27089999790769, + 63.32560000009835, + 65.15349999972386, + 63.391200001206016, + 59.31599999894388, + 59.40629999895464, + 63.875300002109725, + 64.66340000042692, + 64.34079999962705, + 60.118199999124045, + 61.647200000152225, + 63.16589999914868, + 84.55569999932777, + 69.57129999864264, + 58.61250000089058, + 65.32109999898239, + 60.31339999753982, + 62.42049999855226, + 64.66889999865089, + 56.096699998306576, + 61.01910000143107, + 61.18330000026617, + 61.2516000001051, + 83.70099999956437, + 53.977599996869685, + 56.65709999811952, + 62.06959999690298, + 56.851400000596186, + 63.093799999478506, + 55.0982999993721, + 56.15190000025905, + 75.2399000011792, + 59.71470000076806, + 58.637300000555115 + ], + "library": [ + 178.2428999977128, + 146.7360999995435, + 145.27579999776208, + 150.8192000001145, + 143.12109999809763, + 152.73529999831226, + 146.14409999921918, + 144.85749999948894, + 145.2802999992855, + 144.4584999990184, + 148.6838999990141, + 154.67449999778182, + 146.40529999815044, + 142.38450000266312, + 141.28859999982524, + 152.82590000060736, + 151.40990000145393, + 150.39579999938724, + 144.5084000006318, + 142.17229999849224, + 153.5585000019637, + 146.9457000021066, + 147.51760000217473, + 143.352800001594, + 142.84099999713362, + 141.53230000010808, + 146.463599998242, + 141.2092999999004, + 140.31169999725535, + 144.3381999997655, + 151.92540000134613, + 150.99850000115111, + 149.1316999999981, + 147.072499999922, + 140.14509999833535, + 155.3686999977799, + 147.64579999973648, + 145.4940000003262, + 145.6964999997581, + 150.55430000211345, + 145.39999999760767, + 143.08299999902374, + 140.47799999752897, + 138.5889999983192, + 140.45869999972638, + 196.12079999933485, + 192.3724999978731, + 197.79450000351062, + 185.52590000035707, + 182.27800000022398, + 162.34329999861075, + 147.73849999983213, + 143.85350000156905, + 143.55350000187173, + 141.55650000247988, + 142.7220000005036, + 141.79370000056224, + 139.04990000082762, + 140.5040999998164, + 144.86000000033528, + 153.09759999945527, + 145.58380000016768, + 145.48479999939445, + 150.04929999849992, + 150.76269999917713, + 153.40219999779947, + 148.96320000116248, + 145.79030000095372, + 142.2091000022192, + 139.34109999900102, + 142.90599999731057, + 140.96969999809517, + 141.5024000016274, + 140.47470000150497, + 144.47260000088136, + 166.32519999984652, + 151.76470000005793, + 148.6877999996068, + 143.1280000033439, + 149.20060000076774, + 151.91559999948367, + 146.17530000032275, + 142.99530000062077, + 141.7684999978519, + 139.89649999712128, + 139.59450000038487, + 141.0020999974222, + 142.7122999994026, + 150.7571000001917, + 149.86639999915496, + 137.09210000160965, + 136.84529999954975, + 131.12370000089868, + 126.67140000121435, + 128.54180000067572, + 138.05130000037025, + 133.95799999852898, + 131.56489999892074, + 128.64080000144895, + 127.49350000012782 + ] + }, + "warm_ms": { + "control": [ + 142.14949999950477, + 142.81309999933, + 140.50900000074762 + ], + "nodedup": [ + 58.56589999893913, + 61.702499999228166, + 61.04570000024978 + ], + "library": [ + 156.24060000118334, + 150.78689999791095, + 152.19010000146227 + ] + }, + "stats": { + "control": { + "n": 100, + "median_ms": 143.75459999973828, + "p10_ms": 138.3324399979756, + "p90_ms": 154.87971999828005, + "min_ms": 126.67990000045393, + "max_ms": 163.07439999945927, + "mean_ms": 144.85166099981143 + }, + "nodedup": { + "n": 100, + "median_ms": 62.38724999820988, + "p10_ms": 57.83923999988474, + "p90_ms": 69.59675999896717, + "min_ms": 49.83599999832222, + "max_ms": 88.04980000059004, + "mean_ms": 63.643222999853606 + }, + "library": { + "n": 100, + "median_ms": 145.06789999904868, + "p10_ms": 138.5352299985243, + "p90_ms": 153.6701000015455, + "min_ms": 126.67140000121435, + "max_ms": 197.79450000351062, + "mean_ms": 147.2538069998336 + } + }, + "ratio_control_over_nodedup": { + "ratio": 2.3042304317607063, + "ci90_low": 2.2697667872477343, + "ci90_high": 2.337045262260593, + "bootstrap_samples": 2000 + }, + "ratio_library_over_nodedup": { + "ratio": 2.3252812073494376, + "ci90_low": 2.287788598119731, + "ci90_high": 2.3562053777550123, + "bootstrap_samples": 2000 + }, + "ratio_control_over_library": { + "ratio": 0.9909469979277358, + "ci90_low": 0.9810986055864395, + "ci90_high": 1.004791210553061, + "bootstrap_samples": 2000 + }, + "paired_round_ratio_control_over_nodedup": { + "median": 2.297694161072787, + "p10": 2.169097621564997, + "p90": 2.469105900015661 + }, + "minimum_detectable_improvement": 0.11510782959525873, + "compile": { + "control": { + "lower_s": 37.223917999999685, + "compile_s": 28.08511930000168, + "first_call_s": 0.12141689999771188, + "trace_calls": 168, + "flops": 184147008.0, + "hlo_sort_count": 25, + "stablehlo_sort_count": 3, + "hlo_sort_shapes": [ + "(f64[276507]{0}, f64[276507]{0}, s64[276507]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})" + ], + "hlo_sha256": "5da24b3817f28f13", + "hlo_lines": 56232 + }, + "nodedup": { + "lower_s": 33.45930039999803, + "compile_s": 26.18469940000068, + "first_call_s": 0.058876999999483814, + "trace_calls": 168, + "flops": 139430656.0, + "hlo_sort_count": 12, + "stablehlo_sort_count": 1, + "hlo_sort_shapes": [ + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})" + ], + "hlo_sha256": "fc1ba1aafb780b00", + "hlo_lines": 48246 + }, + "library": { + "lower_s": 33.350611999998364, + "compile_s": 31.118756900003063, + "first_call_s": 0.12974780000149622, + "trace_calls": 168, + "flops": 184147008.0, + "hlo_sort_count": 25, + "stablehlo_sort_count": 3, + "hlo_sort_shapes": [ + "(f64[276507]{0}, f64[276507]{0}, s64[276507]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})" + ], + "hlo_sha256": "8e7827d43a701981", + "hlo_lines": 56232 + } + }, + "instances_compared": [ + [ + 0 + ], + [ + 1 + ], + [ + 2 + ], + [ + 3 + ], + [ + 4 + ], + [ + 5 + ], + [ + 6 + ], + [ + 7 + ], + [ + 8 + ], + [ + 9 + ], + [ + 10 + ], + [ + 11 + ], + [ + 12 + ], + [ + 13 + ], + [ + 14 + ], + [ + 15 + ] + ], + "values": { + "control": [ + 23.965075083393216, + -743.7107061666, + 3.3433302917272147, + -489.75562804160495, + -527.9229457499364, + -468.67815408327806, + -247.07984679160097, + -1110.0030238749466, + -779.0297165832758, + -20.354586374939657, + -110.36109679160916, + -691.0739874166073, + -1296.2823207499168, + -205.49456033327564, + -223.83765929159887, + -334.8077113749422 + ], + "nodedup": [ + 23.965075083393216, + -743.7107061666, + 3.3433302917272147, + -489.75562804160495, + -527.9229457499364, + -468.67815408327806, + -247.07984679160097, + -1110.0030238749466, + -779.0297165832758, + -20.354586374939657, + -110.36109679160916, + -691.0739874166073, + -1296.2823207499168, + -205.49456033327564, + -223.83765929159887, + -334.8077113749422 + ], + "library": [ + 23.965075083393216, + -743.7107061666, + 3.3433302917272147, + -489.75562804160495, + -527.9229457499364, + -468.67815408327806, + -247.07984679160097, + -1110.0030238749466, + -779.0297165832758, + -20.354586374939657, + -110.36109679160916, + -691.0739874166073, + -1296.2823207499168, + -205.49456033327564, + -223.83765929159887, + -334.8077113749422 + ] + }, + "deterministic_within_route": { + "control": true, + "nodedup": true, + "library": true + }, + "likelihood_gate": { + "control_vs_nodedup": { + "bit_identical": true, + "max_abs_delta": 0.0, + "max_rel_delta": 0.0, + "nan_pattern_equal": true + }, + "control_vs_library": { + "bit_identical": true, + "max_abs_delta": 0.0, + "max_rel_delta": 0.0, + "nan_pattern_equal": true + }, + "nodedup_vs_library": { + "bit_identical": true, + "max_abs_delta": 0.0, + "max_rel_delta": 0.0, + "nan_pattern_equal": true + } + }, + "fiducial_log_likelihood": { + "control": 23.965075083393216, + "nodedup": 23.965075083393216, + "library": 23.965075083393216 + } + } + }, + "gates": { + "simple_solved_positions": { + "n_instances": 3, + "compile": { + "control": { + "lower_s": 2.5165535000014643, + "compile_s": 4.146437000003061, + "first_call_s": 0.03993070000069565, + "trace_calls": 16, + "flops": 15529212.0, + "hlo_sort_count": 15, + "stablehlo_sort_count": 3, + "hlo_sort_shapes": [ + "(f64[69849]{0}, f64[69849]{0}, s64[69849]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})" + ], + "hlo_sha256": "ae163262e91a9a6b", + "hlo_lines": 17480 + }, + "nodedup": { + "lower_s": 2.668455200000608, + "compile_s": 3.0546549999999115, + "first_call_s": 0.006822600000305101, + "trace_calls": 16, + "flops": 6999844.0, + "hlo_sort_count": 7, + "stablehlo_sort_count": 1, + "hlo_sort_shapes": [ + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})" + ], + "hlo_sha256": "2fb71d1b0a608adc", + "hlo_lines": 13337 + }, + "library": { + "lower_s": 2.7132539999984147, + "compile_s": 5.1084988999973575, + "first_call_s": 0.046907500000088476, + "trace_calls": 16, + "flops": 15529212.0, + "hlo_sort_count": 15, + "stablehlo_sort_count": 3, + "hlo_sort_shapes": [ + "(f64[69849]{0}, f64[69849]{0}, s64[69849]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})" + ], + "hlo_sha256": "793d3438b44fd7b4", + "hlo_lines": 17480 + } + }, + "positions": { + "control": [ + [ + [ + [ + -1.03515625, + -1.0450941982127835 + ], + [ + Infinity, + Infinity + ], + [ + 0.35546875, + 1.6296613457672795 + ], + [ + 1.24375, + 1.1086929388032032 + ], + [ + 1.6062500000000002, + 0.44293590964391594 + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ] + ] + ], + [ + [ + [ + -1.0289062500000001, + -1.0225414533225639 + ], + [ + Infinity, + Infinity + ], + [ + 0.35, + 1.6138744243441256 + ], + [ + 1.2578125, + 1.0644895588183723 + ], + [ + 1.5890625, + 0.4375232508702632 + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ] + ] + ], + [ + [ + [ + -1.0203125, + -1.0861401939129833 + ], + [ + Infinity, + Infinity + ], + [ + 0.3484375, + 1.6328187300519101 + ], + [ + 1.1398437499999998, + 1.2182992789696712 + ], + [ + 1.609375, + 0.4447401292351336 + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ] + ] + ] + ], + "nodedup": [ + [ + [ + [ + -1.03515625, + -1.0450941982127835 + ], + [ + Infinity, + Infinity + ], + [ + 0.35546875, + 1.6296613457672795 + ], + [ + 1.24375, + 1.1086929388032032 + ], + [ + 1.6062500000000002, + 0.44293590964391594 + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ] + ] + ], + [ + [ + [ + -1.0289062500000001, + -1.0225414533225639 + ], + [ + Infinity, + Infinity + ], + [ + 0.35, + 1.6138744243441256 + ], + [ + 1.2578125, + 1.0644895588183723 + ], + [ + 1.5890625, + 0.4375232508702632 + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ] + ] + ], + [ + [ + [ + -1.0203125, + -1.0861401939129833 + ], + [ + Infinity, + Infinity + ], + [ + 0.3484375, + 1.6328187300519101 + ], + [ + 1.1398437499999998, + 1.2182992789696712 + ], + [ + 1.609375, + 0.4447401292351336 + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ] + ] + ] + ], + "library": [ + [ + [ + [ + -1.03515625, + -1.0450941982127835 + ], + [ + Infinity, + Infinity + ], + [ + 0.35546875, + 1.6296613457672795 + ], + [ + 1.24375, + 1.1086929388032032 + ], + [ + 1.6062500000000002, + 0.44293590964391594 + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ] + ] + ], + [ + [ + [ + -1.0289062500000001, + -1.0225414533225639 + ], + [ + Infinity, + Infinity + ], + [ + 0.35, + 1.6138744243441256 + ], + [ + 1.2578125, + 1.0644895588183723 + ], + [ + 1.5890625, + 0.4375232508702632 + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ] + ] + ], + [ + [ + [ + -1.0203125, + -1.0861401939129833 + ], + [ + Infinity, + Infinity + ], + [ + 0.3484375, + 1.6328187300519101 + ], + [ + 1.1398437499999998, + 1.2182992789696712 + ], + [ + 1.609375, + 0.4447401292351336 + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ] + ] + ] + ] + }, + "finite_positions": { + "control": [ + [ + 4 + ], + [ + 4 + ], + [ + 4 + ] + ], + "nodedup": [ + [ + 4 + ], + [ + 4 + ], + [ + 4 + ] + ], + "library": [ + [ + 4 + ], + [ + 4 + ], + [ + 4 + ] + ] + }, + "pairs": { + "control_vs_nodedup": { + "max_abs_delta": 0.0, + "max_rel_delta": 0.0, + "nan_pattern_equal": true, + "array_equal_nan_aware": true + }, + "control_vs_library": { + "max_abs_delta": 0.0, + "max_rel_delta": 0.0, + "nan_pattern_equal": true, + "array_equal_nan_aware": true + } + } + }, + "simple_solved_grad": { + "n_instances": 3, + "rtol": 1e-10, + "atol": 1e-12, + "compile": { + "control": { + "lower_s": 8.423856299999898, + "compile_s": 13.20408049999969, + "first_call_s": 0.03714219999892521, + "trace_calls": 32, + "flops": 18753240.0, + "hlo_sort_count": 30, + "stablehlo_sort_count": 4, + "hlo_sort_shapes": [ + "(f64[69849]{0}, f64[69849]{0}, s64[69849]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(s32[15,2]{1,0}, s32[15,2]{1,0})" + ], + "hlo_sha256": "015e2fa45d06c070", + "hlo_lines": 53768 + }, + "nodedup": { + "lower_s": 8.012028400000418, + "compile_s": 11.226727799999935, + "first_call_s": 0.007982600000104867, + "trace_calls": 32, + "flops": 9665219.0, + "hlo_sort_count": 15, + "stablehlo_sort_count": 2, + "hlo_sort_shapes": [ + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(s32[15,2]{1,0}, s32[15,2]{1,0})" + ], + "hlo_sha256": "e5cf41be39df2897", + "hlo_lines": 46130 + }, + "library": { + "lower_s": 7.800086900002498, + "compile_s": 10.83586429999923, + "first_call_s": 0.03251330000057351, + "trace_calls": 32, + "flops": 18753240.0, + "hlo_sort_count": 30, + "stablehlo_sort_count": 4, + "hlo_sort_shapes": [ + "(f64[69849]{0}, f64[69849]{0}, s64[69849]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(s32[15,2]{1,0}, s32[15,2]{1,0})" + ], + "hlo_sha256": "dfab9670f408aa2e", + "hlo_lines": 53768 + } + }, + "all_finite": { + "control": true, + "nodedup": true, + "library": true + }, + "gradients": { + "control": [ + [ + -41.62226304412241, + 53.13429595959836, + 31.78649237783334, + 2.804131922250644, + 1781.7386158499905 + ], + [ + -46.408073055275, + 75.13738885142423, + 78.91835319805021, + 74.32499719544035, + 2531.5778928834748 + ], + [ + 62.951469401248765, + -41.40185295994061, + 18.162643132964934, + 109.0003235058508, + -1560.549091923857 + ] + ], + "nodedup": [ + [ + -41.62226304412241, + 53.13429595959836, + 31.78649237783334, + 2.804131922250644, + 1781.7386158499905 + ], + [ + -46.408073055275, + 75.13738885142423, + 78.91835319805021, + 74.32499719544035, + 2531.5778928834748 + ], + [ + 62.951469401248765, + -41.40185295994061, + 18.162643132964934, + 109.0003235058508, + -1560.549091923857 + ] + ], + "library": [ + [ + -41.62226304412241, + 53.13429595959836, + 31.78649237783334, + 2.804131922250644, + 1781.7386158499905 + ], + [ + -46.408073055275, + 75.13738885142423, + 78.91835319805021, + 74.32499719544035, + 2531.5778928834748 + ], + [ + 62.951469401248765, + -41.40185295994061, + 18.162643132964934, + 109.0003235058508, + -1560.549091923857 + ] + ] + }, + "pairs": { + "control_vs_nodedup": { + "bit_identical": true, + "max_abs_delta": 0.0, + "max_rel_delta": 0.0, + "nan_pattern_equal": true, + "allclose": true + }, + "control_vs_library": { + "bit_identical": true, + "max_abs_delta": 0.0, + "max_rel_delta": 0.0, + "nan_pattern_equal": true, + "allclose": true + } + } + }, + "simple_solved_vmap4": { + "vmap_vs_scalar_within_route": { + "control": { + "bit_identical": true, + "max_abs_delta": 0.0, + "max_rel_delta": 0.0, + "nan_pattern_equal": true, + "allclose_rtol_1e-12": true, + "n_compared": 16 + }, + "nodedup": { + "bit_identical": true, + "max_abs_delta": 0.0, + "max_rel_delta": 0.0, + "nan_pattern_equal": true, + "allclose_rtol_1e-12": true, + "n_compared": 16 + }, + "library": { + "bit_identical": true, + "max_abs_delta": 0.0, + "max_rel_delta": 0.0, + "nan_pattern_equal": true, + "allclose_rtol_1e-12": true, + "n_compared": 16 + } + }, + "across_routes": { + "control_vs_nodedup": { + "bit_identical": true, + "max_abs_delta": 0.0, + "max_rel_delta": 0.0, + "nan_pattern_equal": true + }, + "control_vs_library": { + "bit_identical": true, + "max_abs_delta": 0.0, + "max_rel_delta": 0.0, + "nan_pattern_equal": true + }, + "nodedup_vs_library": { + "bit_identical": true, + "max_abs_delta": 0.0, + "max_rel_delta": 0.0, + "nan_pattern_equal": true + } + } + }, + "cluster_solved_positions": { + "n_instances": 3, + "compile": { + "control": { + "lower_s": 8.133093100001133, + "compile_s": 11.532819600000948, + "first_call_s": 0.1377494000007573, + "trace_calls": 28, + "flops": 184111088.0, + "hlo_sort_count": 25, + "stablehlo_sort_count": 3, + "hlo_sort_shapes": [ + "(f64[276507]{0}, f64[276507]{0}, s64[276507]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})" + ], + "hlo_sha256": "b33293cbc6e7bdae", + "hlo_lines": 55191 + }, + "nodedup": { + "lower_s": 8.068783800001256, + "compile_s": 9.885376999998698, + "first_call_s": 0.06715180000173859, + "trace_calls": 28, + "flops": 139395248.0, + "hlo_sort_count": 12, + "stablehlo_sort_count": 1, + "hlo_sort_shapes": [ + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})" + ], + "hlo_sha256": "55550ae050d4ebe7", + "hlo_lines": 47313 + }, + "library": { + "lower_s": 9.26448370000071, + "compile_s": 12.73936970000068, + "first_call_s": 0.14164830000299844, + "trace_calls": 28, + "flops": 184111088.0, + "hlo_sort_count": 25, + "stablehlo_sort_count": 3, + "hlo_sort_shapes": [ + "(f64[276507]{0}, f64[276507]{0}, s64[276507]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[60]{0}, f64[60]{0}, s64[60]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})", + "(f64[720]{0}, f64[720]{0}, s64[720]{0})" + ], + "hlo_sha256": "777a6619fe8b0c25", + "hlo_lines": 55191 + } + }, + "positions": { + "control": [ + [ + [ + [ + -3.0789062499999997, + -7.858729484445975 + ], + [ + -0.9296874999999998, + 10.716162262036818 + ], + [ + -0.021874999999999995, + -0.23996120563193818 + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ] + ], + [ + [ + -15.96875, + 19.007453393477206 + ], + [ + 0.68359375, + -0.5146536383948147 + ], + [ + 13.693749999999998, + -14.309265577946627 + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ] + ] + ], + [ + [ + [ + -3.0789062499999997, + -7.858729484445975 + ], + [ + -0.9296875, + 10.709847493467556 + ], + [ + -0.016406249999999997, + -0.24311858991656893 + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ] + ], + [ + [ + -15.963281249999998, + 18.997981240623318 + ], + [ + 0.6890624999999999, + -0.5178110226794455 + ], + [ + 13.68828125, + -14.306108193661998 + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ] + ] + ], + [ + [ + [ + -3.0843749999999996, + -7.855572100161344 + ], + [ + -0.9351562499999999, + 10.72563441489071 + ], + [ + -0.021874999999999995, + -0.23364643706267665 + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ] + ], + [ + [ + -15.96875, + 19.007453393477206 + ], + [ + 0.68359375, + -0.5083388698255532 + ], + [ + 13.693749999999998, + -14.309265577946627 + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ] + ] + ] + ], + "nodedup": [ + [ + [ + [ + -3.0789062499999997, + -7.858729484445975 + ], + [ + -0.9296874999999998, + 10.716162262036818 + ], + [ + -0.021874999999999995, + -0.23996120563193818 + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ] + ], + [ + [ + -15.96875, + 19.007453393477206 + ], + [ + 0.68359375, + -0.5146536383948147 + ], + [ + 13.693749999999998, + -14.309265577946627 + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ] + ] + ], + [ + [ + [ + -3.0789062499999997, + -7.858729484445975 + ], + [ + -0.9296875, + 10.709847493467556 + ], + [ + -0.016406249999999997, + -0.24311858991656893 + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ] + ], + [ + [ + -15.963281249999998, + 18.997981240623318 + ], + [ + 0.6890624999999999, + -0.5178110226794455 + ], + [ + 13.68828125, + -14.306108193661998 + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ] + ] + ], + [ + [ + [ + -3.0843749999999996, + -7.855572100161344 + ], + [ + -0.9351562499999999, + 10.72563441489071 + ], + [ + -0.021874999999999995, + -0.23364643706267665 + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ] + ], + [ + [ + -15.96875, + 19.007453393477206 + ], + [ + 0.68359375, + -0.5083388698255532 + ], + [ + 13.693749999999998, + -14.309265577946627 + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ] + ] + ] + ], + "library": [ + [ + [ + [ + -3.0789062499999997, + -7.858729484445975 + ], + [ + -0.9296874999999998, + 10.716162262036818 + ], + [ + -0.021874999999999995, + -0.23996120563193818 + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ] + ], + [ + [ + -15.96875, + 19.007453393477206 + ], + [ + 0.68359375, + -0.5146536383948147 + ], + [ + 13.693749999999998, + -14.309265577946627 + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ] + ] + ], + [ + [ + [ + -3.0789062499999997, + -7.858729484445975 + ], + [ + -0.9296875, + 10.709847493467556 + ], + [ + -0.016406249999999997, + -0.24311858991656893 + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ] + ], + [ + [ + -15.963281249999998, + 18.997981240623318 + ], + [ + 0.6890624999999999, + -0.5178110226794455 + ], + [ + 13.68828125, + -14.306108193661998 + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ] + ] + ], + [ + [ + [ + -3.0843749999999996, + -7.855572100161344 + ], + [ + -0.9351562499999999, + 10.72563441489071 + ], + [ + -0.021874999999999995, + -0.23364643706267665 + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ] + ], + [ + [ + -15.96875, + 19.007453393477206 + ], + [ + 0.68359375, + -0.5083388698255532 + ], + [ + 13.693749999999998, + -14.309265577946627 + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ], + [ + Infinity, + Infinity + ] + ] + ] + ] + }, + "finite_positions": { + "control": [ + [ + 3, + 3 + ], + [ + 3, + 3 + ], + [ + 3, + 3 + ] + ], + "nodedup": [ + [ + 3, + 3 + ], + [ + 3, + 3 + ], + [ + 3, + 3 + ] + ], + "library": [ + [ + 3, + 3 + ], + [ + 3, + 3 + ], + [ + 3, + 3 + ] + ] + }, + "pairs": { + "control_vs_nodedup": { + "max_abs_delta": 0.0, + "max_rel_delta": 0.0, + "nan_pattern_equal": true, + "array_equal_nan_aware": true + }, + "control_vs_library": { + "max_abs_delta": 0.0, + "max_rel_delta": 0.0, + "nan_pattern_equal": true, + "array_equal_nan_aware": true + } + } + } + }, + "wall_s": 938.6465837999967 +} \ No newline at end of file diff --git a/results/breakdown/point_source/vertex_dedup_ab_local_cpu_fp64.png b/results/breakdown/point_source/vertex_dedup_ab_local_cpu_fp64.png new file mode 100644 index 000000000..c8fa04faa Binary files /dev/null and b/results/breakdown/point_source/vertex_dedup_ab_local_cpu_fp64.png differ diff --git a/results/notes/point_source_cpu_2026_09_23_ral_job_350582_vertex_dedup_ab.out b/results/notes/point_source_cpu_2026_09_23_ral_job_350582_vertex_dedup_ab.out new file mode 100644 index 000000000..b28e7fea8 --- /dev/null +++ b/results/notes/point_source_cpu_2026_09_23_ral_job_350582_vertex_dedup_ab.out @@ -0,0 +1,192 @@ +AP_ROOT=/mnt/ral/jnightin/autolens_profiling_wt/point-source-cpu-p2 +JAX_COMPILATION_CACHE_DIR=/mnt/ral/jnightin/autolens_profiling_wt/point-source-cpu-p2/output/jax_cache/vertex_dedup_ab_350582 (fresh) +========================================== +Wed 23 Sep 16:20:02 BST 2026 +euclid-ral-compute-1 +Model name: AMD EPYC 7763 64-Core Processor +partition: ral +cpus-per-task: 8 +sched_affinity: 8 +loadavg: 0.00 0.00 0.00 1/2216 526558 +Cell: point_source/likelihood_breakdown/vertex_dedup_ab +Precision: fp64 (JAX_ENABLE_X64=1) +Backend: JAX_PLATFORMS=cpu +Thread env: OMP=1 MKL=1 OPENBLAS=1 NPROC=8 +XLA_FLAGS: --xla_disable_hlo_passes=constant_folding --xla_gpu_autotune_level=0 --xla_gpu_enable_triton_gemm=false +=== source revisions (shared install, untouched) === +PyAutoNerves 1fa613aa8d89a79613009fb66f5b4e2d21deb57a +PyAutoFit a736840127be7a3c21e15a5c945e94d8f1082983 +PyAutoArray 22e6d6082e3365b10fb08d96e19ab02a5420e935 +PyAutoGalaxy 70a61e26cd715cefe7012a38285698091246a8a4 +PyAutoLens 2aaa1c1a8bb4a5923edf30a18451fcea330a6bd4 +AP_ROOT rev: d97556f8cdf62e63972964285615ca401aad37d0 +AP_ROOT branch: feature/point-source-cpu-p2 +=== import provenance === +autoarray.__file__ = /mnt/ral/jnightin/PyAuto/PyAutoArray/autoarray/__init__.py +autoarray.__version__ = 2026.8.17.1 +autolens.__file__ = /mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/__init__.py +autolens.__version__ = 2026.8.17.1 +autogalaxy.__file__ = /mnt/ral/jnightin/PyAuto/PyAutoGalaxy/autogalaxy/__init__.py +autofit.__file__ = /mnt/ral/jnightin/PyAuto/PyAutoFit/autofit/__init__.py +jax.__version__ = 0.10.2 +jax devices = [CpuDevice(id=0)] +========================================== +vertex-dedup A/B: control vs nodedup vs library (simple + cluster, full protocol) +Wed 23 Sep 16:20:43 BST 2026 +loadavg: 0.49 0.13 0.04 1/2220 526608 +2026-09-23 16:20:46,265 - matplotlib.font_manager - INFO - generated new fontManager + +--- row simple_solved --- + [simple_solved/control] lower 2.9 s compile 4.1 s first 28.07 ms trace_calls 32 sorts 15 (stablehlo 3) + [simple_solved/nodedup] lower 2.6 s compile 3.2 s first 5.40 ms trace_calls 32 sorts 7 (stablehlo 1) + [simple_solved/library] lower 2.7 s compile 0.5 s first 25.79 ms trace_calls 32 sorts 15 (stablehlo 3) + median ms control 24.002 nodedup 5.375 library 23.921 control/nodedup 4.465 [4.370, 4.566] + +--- positions gate simple_solved --- + [simple_solved_positions/control] lower 1.6 s compile 2.1 s first 25.03 ms trace_calls 16 sorts 15 (stablehlo 3) + [simple_solved_positions/nodedup] lower 1.4 s compile 1.7 s first 5.15 ms trace_calls 16 sorts 7 (stablehlo 1) + [simple_solved_positions/library] lower 1.5 s compile 0.3 s first 23.68 ms trace_calls 16 sorts 15 (stablehlo 3) + +--- gradient gate simple_solved --- + [simple_solved_grad/control] lower 4.6 s compile 6.3 s first 27.35 ms trace_calls 32 sorts 30 (stablehlo 4) + [simple_solved_grad/nodedup] lower 4.2 s compile 5.3 s first 6.28 ms trace_calls 32 sorts 15 (stablehlo 2) + [simple_solved_grad/library] lower 4.7 s compile 1.1 s first 27.36 ms trace_calls 32 sorts 30 (stablehlo 4) + +--- row simple_solved_vmap4 --- + [simple_solved_vmap4/control] lower 3.7 s compile 4.7 s first 34.30 ms trace_calls 32 sorts 15 (stablehlo 3) + [simple_solved_vmap4/nodedup] lower 3.4 s compile 3.8 s first 12.07 ms trace_calls 32 sorts 7 (stablehlo 1) + [simple_solved_vmap4/library] lower 3.8 s compile 0.5 s first 33.29 ms trace_calls 32 sorts 15 (stablehlo 3) + median ms control 31.309 nodedup 11.908 library 30.872 control/nodedup 2.629 [2.534, 2.718] + +--- row simple_plain --- + [simple_plain/control] lower 2.2 s compile 3.6 s first 23.99 ms trace_calls 32 sorts 15 (stablehlo 3) + [simple_plain/nodedup] lower 2.0 s compile 2.8 s first 5.62 ms trace_calls 32 sorts 7 (stablehlo 1) + [simple_plain/library] lower 2.1 s compile 0.4 s first 24.18 ms trace_calls 32 sorts 15 (stablehlo 3) + median ms control 23.758 nodedup 5.394 library 23.740 control/nodedup 4.404 [4.300, 4.452] + [auto-simulate] /mnt/ral/jnightin/autolens_profiling_wt/point-source-cpu-p2/dataset/cluster/simple missing; invoking scripts/misc/simulators/cluster.py --instrument simple + +--- PART 1: Setup --- + [setup_imaging_grid] 0.1386 s + [setup_galaxies] 0.0142 s + [setup_tracer] 0.0001 s + +--- PART 2: Pytree registration --- + [register_pytrees] 0.3971 s + +--- PART 3: PointSolver build --- + [solver_build] 0.0263 s + +--- PART 4: jitted_solve per source --- + [jitted_solve_src0_lower] 8.6131 s + [jitted_solve_src0_compile] 4.3306 s + [jitted_solve_src0_first_call] 2.0135 s + [jitted_solve_src0_steady_x3] 5.7778 s + -> per-call avg: 1.925917 s + src0: 3 image positions found + [jitted_solve_src1_lower] 8.5025 s + [jitted_solve_src1_compile] 4.6456 s + [jitted_solve_src1_first_call] 1.9659 s + [jitted_solve_src1_steady_x3] 5.6618 s + -> per-call avg: 1.887259 s + src1: 3 image positions found + +--- PART 5: simulator.via_tracer_from (1000×1000 over-sampled) --- + [setup_psf_simulator] 0.0005 s + [via_tracer_from] 9.8419 s + +--- PART 6: outputs --- + [output_fits] 0.2713 s + [output_scaling_galaxies_csv] 0.0011 s + [output_point_datasets] 0.0037 s + [output_json] 0.0125 s + +====================================================================== +CLUSTER DIAGNOSTIC: compile vs via_tracer_from +====================================================================== + solver_lower_total (both sources): 17.1157 s + solver_compile_total (both sources): 8.9762 s + solver_steady_total (both sources): 11.4395 s + via_tracer_from: 9.8419 s + compile / via_tracer ratio: 0.91x +====================================================================== + + Results saved to: /mnt/ral/jnightin/autolens_profiling_wt/point-source-cpu-p2/results/simulators/cluster_summary_v2026.8.17.1.json + Bar chart saved to: /mnt/ral/jnightin/autolens_profiling_wt/point-source-cpu-p2/results/simulators/cluster_summary_v2026.8.17.1.png + +====================================================================== +PROFILING SUMMARY +====================================================================== + setup_imaging_grid 0.1386 s + setup_galaxies 0.0142 s + setup_tracer 0.0001 s + register_pytrees 0.3971 s + solver_build 0.0263 s + jitted_solve_src0_lower 8.6131 s + jitted_solve_src0_compile 4.3306 s + jitted_solve_src0_first_call 2.0135 s + jitted_solve_src0_steady_x3 5.7778 s + jitted_solve_src1_lower 8.5025 s + jitted_solve_src1_compile 4.6456 s + jitted_solve_src1_first_call 1.9659 s + jitted_solve_src1_steady_x3 5.6618 s + setup_psf_simulator 0.0005 s + via_tracer_from 9.8419 s + output_fits 0.2713 s + output_scaling_galaxies_csv 0.0011 s + output_point_datasets 0.0037 s + output_json 0.0125 s +---------------------------------------------------------------------- + TOTAL 52.2183 s +====================================================================== + +--- row cluster_solved --- + [cluster_solved/control] lower 43.1 s compile 31.4 s first 143.31 ms trace_calls 168 sorts 25 (stablehlo 3) + [cluster_solved/nodedup] lower 42.0 s compile 27.9 s first 77.15 ms trace_calls 168 sorts 12 (stablehlo 1) + [cluster_solved/library] lower 43.5 s compile 1.9 s first 159.51 ms trace_calls 168 sorts 25 (stablehlo 3) + median ms control 155.222 nodedup 78.320 library 154.502 control/nodedup 1.982 [1.928, 2.029] + +--- positions gate cluster_solved --- + [cluster_solved_positions/control] lower 7.3 s compile 8.8 s first 143.76 ms trace_calls 28 sorts 25 (stablehlo 3) + [cluster_solved_positions/nodedup] lower 7.3 s compile 7.8 s first 64.37 ms trace_calls 28 sorts 12 (stablehlo 1) + [cluster_solved_positions/library] lower 7.4 s compile 1.1 s first 164.60 ms trace_calls 28 sorts 25 (stablehlo 3) + +--- row cluster_plain --- + [cluster_plain/control] lower 30.7 s compile 23.5 s first 157.16 ms trace_calls 168 sorts 25 (stablehlo 3) + [cluster_plain/nodedup] lower 29.5 s compile 20.4 s first 76.94 ms trace_calls 168 sorts 12 (stablehlo 1) + [cluster_plain/library] lower 30.1 s compile 1.4 s first 142.90 ms trace_calls 168 sorts 25 (stablehlo 3) + median ms control 153.852 nodedup 77.707 library 152.395 control/nodedup 1.980 [1.937, 2.024] + +==================================================================================================== +VERTEX-DEDUP A/B (hpc_ral_cpu_fp64, rounds=20, calls/round=5) +==================================================================================================== + row route median p10 p90 min max sorts compile_s + simple_solved control 24.002 23.426 24.586 23.048 25.167 15 4.1 + simple_solved nodedup 5.375 4.653 6.246 4.253 6.680 7 3.2 + simple_solved library 23.921 23.456 24.678 23.177 25.500 15 0.5 + control/nodedup 4.465 [90% 4.370, 4.566] MDI 0.048 + simple_solved_vmap4 control 31.309 29.689 32.555 28.652 33.232 15 4.7 + simple_solved_vmap4 nodedup 11.908 10.768 13.090 9.854 14.002 7 3.8 + simple_solved_vmap4 library 30.872 29.699 32.428 28.816 33.170 15 0.5 + control/nodedup 2.629 [90% 2.534, 2.718] MDI 0.092 + simple_plain control 23.758 23.275 24.206 22.583 24.535 15 3.6 + simple_plain nodedup 5.394 4.906 6.250 4.494 6.585 7 2.8 + simple_plain library 23.740 23.109 24.205 22.831 24.652 15 0.4 + control/nodedup 4.404 [90% 4.300, 4.452] MDI 0.039 + cluster_solved control 155.222 142.182 162.345 131.397 168.459 25 31.4 + cluster_solved nodedup 78.320 65.793 87.825 58.105 94.850 12 27.9 + cluster_solved library 154.502 141.891 161.977 130.552 169.227 25 1.9 + control/nodedup 1.982 [90% 1.928, 2.029] MDI 0.130 + cluster_plain control 153.852 141.548 161.840 137.638 169.935 25 23.5 + cluster_plain nodedup 77.707 66.119 88.169 60.449 95.791 12 20.4 + cluster_plain library 152.395 141.862 160.329 136.211 171.775 25 1.4 + control/nodedup 1.980 [90% 1.937, 2.024] MDI 0.132 +---------------------------------------------------------------------------------------------------- + library_matches: control + bit_identical (log L, all rows, control vs nodedup/library): True + wall: 628 s + Results JSON: /mnt/ral/jnightin/autolens_profiling_wt/point-source-cpu-p2/results/breakdown/point_source/vertex_dedup_ab_hpc_ral_cpu_fp64.json + Results PNG: /mnt/ral/jnightin/autolens_profiling_wt/point-source-cpu-p2/results/breakdown/point_source/vertex_dedup_ab_hpc_ral_cpu_fp64.png +========================================== +loadavg: 1.54 1.43 0.84 1/2220 527162 +Finished. +Wed 23 Sep 16:31:12 BST 2026 diff --git a/results/notes/point_source_cpu_2026_09_24_ral_job_350587_vertex_dedup_ab_a100.out b/results/notes/point_source_cpu_2026_09_24_ral_job_350587_vertex_dedup_ab_a100.out new file mode 100644 index 000000000..3c5dbe97b --- /dev/null +++ b/results/notes/point_source_cpu_2026_09_24_ral_job_350587_vertex_dedup_ab_a100.out @@ -0,0 +1,119 @@ +AP_ROOT=/mnt/ral/jnightin/autolens_profiling_wt/point-source-cpu-p2 +JAX_COMPILATION_CACHE_DIR=/mnt/ral/jnightin/autolens_profiling_wt/point-source-cpu-p2/output/jax_cache/vertex_dedup_ab_gpu_350587 (fresh) +========================================== +Thu 24 Sep 08:50:40 BST 2026 +euclid-ral-gpu-1 +Model name: AMD EPYC 7702 64-Core Processor +name, driver_version, memory.total [MiB], utilization.gpu [%] +NVIDIA A100 80GB PCIe, 610.57.04, 81920 MiB, 0 % +partition: gpu +gpus: 0 +cpus-per-task: 8 +loadavg: 0.08 0.02 0.01 1/1243 2078513 +Cell: point_source/likelihood_breakdown/vertex_dedup_ab +Precision: fp64 (JAX_ENABLE_X64=1) +Backend: JAX_PLATFORMS=cuda JAX_PLATFORM_NAME=cuda +XLA_FLAGS: --xla_disable_hlo_passes=constant_folding --xla_gpu_autotune_level=0 --xla_gpu_enable_triton_gemm=false +=== source revisions === +PyAutoNerves (shared) 1fa613aa8d89a79613009fb66f5b4e2d21deb57a +PyAutoFit (shared) a736840127be7a3c21e15a5c945e94d8f1082983 +PyAutoArray (shared) 22e6d6082e3365b10fb08d96e19ab02a5420e935 +PyAutoGalaxy (shared) 70a61e26cd715cefe7012a38285698091246a8a4 +PyAutoLens (shared) 2aaa1c1a8bb4a5923edf30a18451fcea330a6bd4 +PyAutoArray (branch clone, IMPORTED): 25894d10a7497d1efa6bc140032dba2f49d1795f +AP_ROOT rev: f8836b345bd66889e3113758eefe56b4baabe8ec +AP_ROOT branch: feature/point-source-cpu-p2 +=== import provenance + backend assertion === +autoarray.__file__ = /mnt/ral/jnightin/autolens_profiling_wt/PyAutoArray_point-source-cpu-p2/autoarray/__init__.py +autolens.__file__ = /mnt/ral/jnightin/PyAuto/PyAutoLens/autolens/__init__.py +autofit.__file__ = /mnt/ral/jnightin/PyAuto/PyAutoFit/autofit/__init__.py +jax.__version__ = 0.10.2 +jax devices = [CudaDevice(id=0)] +jax default backend = gpu +ASSERT OK: GPU backend, autoarray from the branch clone +========================================== +vertex-dedup A/B on A100: control vs nodedup vs library (simple + cluster, 20 x 20) +Thu 24 Sep 08:51:14 BST 2026 +2026-09-24 08:51:16,173 - matplotlib.font_manager - INFO - Failed to extract font properties from /usr/share/fonts/cantarell/Cantarell-VF.otf: In FT2Font: Can not load face (SFNT font table missing; error code 0x8e) +2026-09-24 08:51:16,190 - matplotlib.font_manager - INFO - generated new fontManager + +--- row simple_solved --- + [simple_solved/control] lower 3.1 s compile 9.7 s first 23.17 ms trace_calls 32 sorts 15 (stablehlo 3) + [simple_solved/nodedup] lower 2.8 s compile 5.6 s first 11.04 ms trace_calls 32 sorts 7 (stablehlo 1) + [simple_solved/library] lower 2.7 s compile 0.5 s first 13.59 ms trace_calls 32 sorts 7 (stablehlo 1) + median ms control 1.695 nodedup 0.843 library 0.810 control/nodedup 2.010 [2.000, 2.017] + +--- positions gate simple_solved --- + [simple_solved_positions/control] lower 1.7 s compile 8.0 s first 20.57 ms trace_calls 16 sorts 15 (stablehlo 3) + [simple_solved_positions/nodedup] lower 1.5 s compile 4.0 s first 10.69 ms trace_calls 16 sorts 7 (stablehlo 1) + [simple_solved_positions/library] lower 1.6 s compile 0.4 s first 10.17 ms trace_calls 16 sorts 7 (stablehlo 1) + +--- gradient gate simple_solved --- + [simple_solved_grad/control] lower 4.8 s compile 21.6 s first 193.78 ms trace_calls 32 sorts 30 (stablehlo 4) + [simple_solved_grad/nodedup] lower 4.5 s compile 17.3 s first 22.68 ms trace_calls 32 sorts 15 (stablehlo 2) + [simple_solved_grad/library] lower 4.7 s compile 1.4 s first 19.88 ms trace_calls 32 sorts 15 (stablehlo 2) + +--- row simple_solved_vmap4 --- + [simple_solved_vmap4/control] lower 4.2 s compile 10.8 s first 23.16 ms trace_calls 32 sorts 15 (stablehlo 3) + [simple_solved_vmap4/nodedup] lower 3.7 s compile 6.4 s first 12.19 ms trace_calls 32 sorts 7 (stablehlo 1) + [simple_solved_vmap4/library] lower 3.7 s compile 0.5 s first 11.74 ms trace_calls 32 sorts 7 (stablehlo 1) + median ms control 1.865 nodedup 0.958 library 0.926 control/nodedup 1.946 [1.938, 1.954] + +--- row simple_plain --- + [simple_plain/control] lower 2.6 s compile 9.4 s first 21.80 ms trace_calls 32 sorts 15 (stablehlo 3) + [simple_plain/nodedup] lower 2.2 s compile 5.3 s first 10.90 ms trace_calls 32 sorts 7 (stablehlo 1) + [simple_plain/library] lower 2.2 s compile 0.5 s first 10.38 ms trace_calls 32 sorts 7 (stablehlo 1) + median ms control 1.684 nodedup 0.822 library 0.799 control/nodedup 2.050 [2.047, 2.056] + +--- row cluster_solved --- + [cluster_solved/control] lower 45.1 s compile 52.7 s first 42.10 ms trace_calls 168 sorts 25 (stablehlo 3) + [cluster_solved/nodedup] lower 45.5 s compile 46.5 s first 27.44 ms trace_calls 168 sorts 12 (stablehlo 1) + [cluster_solved/library] lower 44.4 s compile 3.6 s first 26.38 ms trace_calls 168 sorts 12 (stablehlo 1) + median ms control 4.206 nodedup 2.457 library 2.364 control/nodedup 1.712 [1.709, 1.716] + +--- positions gate cluster_solved --- + [cluster_solved_positions/control] lower 8.1 s compile 28.4 s first 40.16 ms trace_calls 28 sorts 25 (stablehlo 3) + [cluster_solved_positions/nodedup] lower 8.1 s compile 23.1 s first 23.19 ms trace_calls 28 sorts 12 (stablehlo 1) + [cluster_solved_positions/library] lower 8.0 s compile 2.2 s first 21.15 ms trace_calls 28 sorts 12 (stablehlo 1) + +--- row cluster_plain --- + [cluster_plain/control] lower 34.0 s compile 43.7 s first 37.16 ms trace_calls 168 sorts 25 (stablehlo 3) + [cluster_plain/nodedup] lower 33.5 s compile 37.6 s first 21.92 ms trace_calls 168 sorts 12 (stablehlo 1) + [cluster_plain/library] lower 33.5 s compile 2.9 s first 20.80 ms trace_calls 168 sorts 12 (stablehlo 1) + median ms control 3.860 nodedup 2.105 library 2.039 control/nodedup 1.834 [1.830, 1.838] + +==================================================================================================== +VERTEX-DEDUP A/B (hpc_ral_a100_fp64, rounds=20, calls/round=20) +==================================================================================================== + row route median p10 p90 min max sorts compile_s + simple_solved control 1.695 1.672 1.733 1.661 3.494 15 9.7 + simple_solved nodedup 0.843 0.825 0.882 0.816 1.345 7 5.6 + simple_solved library 0.810 0.797 0.839 0.789 1.139 7 0.5 + control/nodedup 2.010 [90% 2.000, 2.017] MDI 0.036 + simple_solved_vmap4 control 1.865 1.830 1.951 1.813 2.398 15 10.8 + simple_solved_vmap4 nodedup 0.958 0.935 1.000 0.926 1.735 7 6.4 + simple_solved_vmap4 library 0.926 0.910 0.967 0.898 1.333 7 0.5 + control/nodedup 1.946 [90% 1.938, 1.954] MDI 0.065 + simple_plain control 1.684 1.663 1.736 1.647 2.358 15 9.4 + simple_plain nodedup 0.822 0.805 0.854 0.795 1.197 7 5.3 + simple_plain library 0.799 0.785 0.833 0.768 1.290 7 0.5 + control/nodedup 2.050 [90% 2.047, 2.056] MDI 0.043 + cluster_solved control 4.206 4.166 4.373 4.078 6.258 25 52.7 + cluster_solved nodedup 2.457 2.411 2.661 2.359 11.197 12 46.5 + cluster_solved library 2.364 2.316 2.534 2.254 4.898 12 3.6 + control/nodedup 1.712 [90% 1.709, 1.716] MDI 0.049 + cluster_plain control 3.860 3.800 4.062 3.723 4.793 25 43.7 + cluster_plain nodedup 2.105 2.076 2.169 1.993 2.693 12 37.6 + cluster_plain library 2.039 1.998 2.088 1.948 2.715 12 2.9 + control/nodedup 1.834 [90% 1.830, 1.838] MDI 0.068 +---------------------------------------------------------------------------------------------------- + library_matches: nodedup + bit_identical (log L, all rows, control vs nodedup/library): True + wall: 696 s + Results JSON: /mnt/ral/jnightin/autolens_profiling_wt/point-source-cpu-p2/results/breakdown/point_source/vertex_dedup_ab_hpc_ral_a100_fp64.json + Results PNG: /mnt/ral/jnightin/autolens_profiling_wt/point-source-cpu-p2/results/breakdown/point_source/vertex_dedup_ab_hpc_ral_a100_fp64.png +========================================== +name, memory.used [MiB] +NVIDIA A100 80GB PCIe, 0 MiB +Finished. +Thu 24 Sep 09:02:52 BST 2026 diff --git a/results/notes/point_source_cpu_campaign.md b/results/notes/point_source_cpu_campaign.md index b8e85bdc8..581071772 100644 --- a/results/notes/point_source_cpu_campaign.md +++ b/results/notes/point_source_cpu_campaign.md @@ -1,7 +1,8 @@ # Point-source CPU speed-up campaign — ledger -Issue: [autolens_profiling #297](https://github.com/PyAutoLabs/autolens_profiling/issues/297) -Branch (phase 1): `feature/point-source-cpu-p1` +Issue: [autolens_profiling #297](https://github.com/PyAutoLabs/autolens_profiling/issues/297) (phase 1); [PyAutoArray #568](https://github.com/PyAutoLabs/PyAutoArray/issues/568) (phase 2) +Branch: `feature/point-source-cpu-p1` (phase 1); `feature/point-source-cpu-p2` (phase 2, PyAutoArray + autolens_profiling) +Status: phase 1 **DONE** (RAL baseline, job 350580); phase 2 **DONE, ACCEPTED** (vertex-dedup A/B, RAL job 350582: 4.47× simple, 1.98× cluster, bit-identical; library change awaiting merge and release); phases 3–4 not started Instrument: [`scripts/point_source/likelihood_breakdown/image_plane.py`](../../scripts/point_source/likelihood_breakdown/image_plane.py) (shipped in #293, see [point_source_shared_likelihood_breakdown.md](point_source_shared_likelihood_breakdown.md)) and [`scripts/cluster/likelihood_breakdown/image_plane.py`](../../scripts/cluster/likelihood_breakdown/image_plane.py) @@ -9,7 +10,7 @@ and [`scripts/cluster/likelihood_breakdown/image_plane.py`](../../scripts/cluste This campaign aims to make the JAX-CPU PointSolver image-plane likelihood cheaper for both the galaxy-scale `simple` case and the 13-component, two-source cluster case that cluster modelling depends on. It runs as one bounded phase at a time. -Phase 1 (this note, first section) produces a quotable CPU baseline on a quiet +Phase 1 (first section) produces a quotable CPU baseline on a quiet RAL node and records the unoptimized library revisions. Phase 2 tests the single reported lever, the JAX-only throwaway `jnp.unique` vertex deduplication. Phases 3–4 are chosen only by what the measurements show. A September 17 study reported @@ -239,7 +240,7 @@ are the fused solved value. - **GPU ordering:** take the A100 baseline on the frozen revisions above **before** the phase-2 library change merges. If that is no longer possible, check the listed SHAs out explicitly. Phase 2 also owes a GPU regression check - for the shared library change. + for the shared library change (done: RAL A100 job 350587, see phase 2, Decision). ### Reproduce @@ -300,15 +301,462 @@ on RAL; it was not harvested. The laptop counterparts are --- -## Phase 2 — remove the throwaway vertex dedup — NOT STARTED +## Phase 2 — remove the throwaway vertex dedup (2026-09-23) — DONE, ACCEPTED + +Library issue: [PyAutoArray #568](https://github.com/PyAutoLabs/PyAutoArray/issues/568). +Library branch: PyAutoArray `feature/point-source-cpu-p2` (on main `11b93476`), with +commits `273e152e` (the fix) and `25894d10` (the tests). Profiling branch: +`feature/point-source-cpu-p2`. Instrument: +[`scripts/point_source/likelihood_breakdown/vertex_dedup_ab.py`](../../scripts/point_source/likelihood_breakdown/vertex_dedup_ab.py). + +### Mechanism (research note §3, now confirmed on current code) + +On the JAX path, `PointSolver._plane_triangles` ray-traces `triangles.vertices` +and rebuilds the triangles with `with_vertices`. Both `vertices` and `indices` +came from `CoordinateArrayTriangles._vertices_and_indices`, which on main called +`jnp.unique(flat_triangles, axis=0, return_inverse=True, size=3N, equal_nan=True, fill_value=nan)`. + +- Under `jit`, `jnp.unique` needs a static output shape, so it was given `size=3N`. + That is exactly the input's own row count. The "deduplicated" table therefore + had 3N rows: the real unique vertices plus NaN fill. On the `simple` step-0 + lattice that is 69 849 rows, of which 28 665 are unique (research note §3). + The ray trace evaluated all 3N rows, so the dedup saved **zero** deflection + evaluations. +- What it did cost was a lexicographic sort of 3N fp64 rows at every refinement + step. The Python code reads the property twice per step (`vertices` and + `indices`), but XLA CSEs the pair. The optimised HLO holds **one sort per step**: + one `f64[69849]` sort at step 0 and seven `f64[720]` sorts for steps 1–7 + (240 kept triangles × 3). Read the optimised-HLO count, not the StableHLO + count (3 → 1), which counts sort definitions inside reused private functions. +- **The fix** (`273e152e`) returns `(triangles.reshape(-1, 2), arange(3N).reshape(-1, 3))`: + the flat vertex table and an identity index map, with no `jnp.unique`. It is + **API-neutral**. `vertices`, `indices` and `with_vertices` keep their signatures + and shapes, since the old table already had 3N rows. `with_vertices(vertices)` + rebuilds the same triangles, and `_plane_triangles` in PyAutoLens is the only + solve-path consumer and needs no change. +- **NaN padding.** Padding triangles are NaN in the flat table exactly as before. + They trace to NaN, and every `Shape.mask` comparison against NaN is false, so + they are never kept. The kept-triangle set, and hence the likelihood, cannot + change. +- **The NumPy sibling is unchanged.** `coordinate_array_np.py` calls `np.unique` + with no `size=`, so it genuinely shrinks the table (69 849 → 28 665 rows) and + saves deflections. `ShapeSolver`, plotting and every `remove_duplicates` / + `neighborhood` sort are untouched. -Test the JAX-only throwaway conversion at `_plane_triangles` against the phase-1 -RAL baseline, with the red control and protocol in the handoff above. Ship the -bounded library change, then refresh the workspace rows. +### Environment + +| | Laptop witness (`local_cpu_fp64`) | RAL (`hpc_ral_cpu_fp64`) | +|---|---|---| +| Host | `DESKTOP-H143S82`, WSL2 | `euclid-ral-compute-1`, partition **`ral`**, SLURM job **350582**, `COMPLETED`, elapsed 00:11:12 (cell `wall_s` 628 s) | +| CPU | Intel i9-10885H | **AMD EPYC 7763 64-Core** (`lscpu` in the job log). Phase 1 ran on `euclid-ral-compute-10-2`, a Xeon Platinum 8490H: **a different CPU** | +| CPUs | 8 logical; `sched_getaffinity` = 8 | `--cpus-per-task=8`; `sched_getaffinity` = **8**; `os.cpu_count()` = 252 is the node | +| Load (1/5/15-min) | start 3.82 / 3.15 / 2.86 → end 1.53 / 1.89 / 2.61; **not quiet** | job entry 0.00; cell start 0.49 / 0.13 / 0.04 → end 1.54 / 1.43 / 0.84 | +| Threads | `NPROC=8`, `OMP/MKL/OPENBLAS_NUM_THREADS=1` | same | +| `XLA_FLAGS` | `--xla_disable_hlo_passes=constant_folding --xla_gpu_autotune_level=0 --xla_gpu_enable_triton_gemm=false` | byte-identical | +| Precision / backend | fp64, `JAX_PLATFORMS=cpu`, jax / jaxlib 0.10.2 | same | +| JAX compile cache | none (`jax_compilation_cache_dir: null`): every route compiles cold | per-job directory `vertex_dedup_ab_350582`, wiped by the submit. `control` compiles cold; `library` lowers to the control program and **hits the cache** (compile 0.4–1.9 s), so its compile seconds are not comparable | +| PyAutoArray | canonical main `11b93476` (pre-fix; see the PYTHONPATH note) | shared install `22e6d608` (the frozen phase-1 revision, pre-fix) | +| PyAutoLens / Galaxy / Fit / Nerves | `2aaa1c1a` / `70a61e26` / `a7368401` / `1fa613aa` | same | +| autolens_profiling | `04351847` (main; the cell was uncommitted, see the provenance defect) | `d97556f8` | +| Protocol | 3 routes (`control`, `nodedup`, `library`), **20 rounds × 5 calls** round-robin with the start rotated each round (100 per-call samples per route), 3 warm calls, 16-instance stream (seed 568; entry 0 = prior medians, the rest `U(0.25, 0.75)` unit vectors), bootstrap 2000 resamples (seed 12345, 90 %) | same | +| Peak RSS | 2.37 GB for the whole process (`/usr/bin/time -v`, all routes and both models), not per route | not recorded | + +- **Cache-trap guard.** Each route gets a fresh closure and fresh solver and + analysis objects, plus `jax.clear_caches()`. The argument is the physical + parameter vector, with `instance_from_vector(xp=jnp)` inside the trace, so + constant folding cannot fake work. +- **`library` self-labels.** It is the installed method, not an injected one. + On both hosts it lowers to the control's sort count, so it reads + `library_matches: control`. +- **XLA intra-op thread count.** The phase-1 handoff asked for it; it is still + not recorded. `NPROC=8` and the 8-CPU affinity mask bound it, but the pool size + itself was not read out. +- **Protocol deviation.** The #568 plan asked for ≥ 20 warmed calls per round; + the cell ran 5. The 100 samples per route still give bootstrap CIs of ±2 % on + the ratio, so this does not change the decision. +- **Provenance defect in the laptop JSON (not edited).** In the committed + [`vertex_dedup_ab_local_cpu_fp64.json`](../breakdown/point_source/vertex_dedup_ab_local_cpu_fp64.json), + the provenance strings `control_source.body` and `nodedup_body` hold the + **wrong function texts**: `_profiling_root` and the control body respectively. + The script was edited during the run, and `inspect.getsource` then read stale + line offsets. The RAL JSON's bodies are correct and are the authoritative record + of what each route ran. The laptop timings, HLO counts and gates are unaffected: + the routes execute the function objects, not the recorded text. + +### A/B — steady per-call cost + +All numbers below come from the two JSONs via a script. The ratio is +control / nodedup of the per-route medians, with the JSON's bootstrap 90 % CI. +**MDI** (minimum detectable improvement) is the control's (p90 − p10) / median. +FLOPs are XLA `cost_analysis()` values. + +**RAL `hpc_ral_cpu_fp64` (quotable)** + +| Row | control median [p10, p90] ms | nodedup median [p10, p90] ms | library median ms | control / nodedup [90 % CI] | MDI | HLO sorts ctrl → nodedup | FLOPs ctrl → nodedup | +|---|---:|---:|---:|---:|---:|---:|---:| +| `simple_solved` | 24.00 [23.43, 24.59] | 5.38 [4.65, 6.25] | 23.92 | **4.47×** [4.37, 4.57] | 4.8 % | 15 → 7 | 15.58M → 7.05M | +| `simple_plain` | 23.76 [23.28, 24.21] | 5.39 [4.91, 6.25] | 23.74 | **4.40×** [4.30, 4.45] | 3.9 % | 15 → 7 | 15.58M → 7.05M | +| `simple_solved_vmap4` (per batch of 4) | 31.31 [29.69, 32.55] | 11.91 [10.77, 13.09] | 30.87 | **2.63×** [2.53, 2.72] | 9.2 % | 15 → 7 | 33.66M → 23.30M | +| `cluster_solved` | 155.22 [142.18, 162.34] | 78.32 [65.79, 87.82] | 154.50 | **1.98×** [1.93, 2.03] | 13.0 % | 25 → 12 | 184.16M → 139.44M | +| `cluster_plain` | 153.85 [141.55, 161.84] | 77.71 [66.12, 88.17] | 152.40 | **1.98×** [1.94, 2.02] | 13.2 % | 25 → 12 | 184.15M → 139.43M | + +**Laptop `local_cpu_fp64` (witness, loaded host)** + +| Row | control median [p10, p90] ms | nodedup median [p10, p90] ms | library median ms | control / nodedup [90 % CI] | MDI | HLO sorts ctrl → nodedup | FLOPs ctrl → nodedup | +|---|---:|---:|---:|---:|---:|---:|---:| +| `simple_solved` | 32.03 [30.68, 35.54] | 5.34 [5.00, 5.99] | 31.91 | **6.00×** [5.91, 6.21] | 15.2 % | 15 → 7 | 15.58M → 7.05M | +| `simple_plain` | 36.79 [34.40, 43.27] | 6.09 [5.61, 7.56] | 36.89 | **6.04×** [5.90, 6.23] | 24.1 % | 15 → 7 | 15.58M → 7.05M | +| `simple_solved_vmap4` (per batch of 4) | 51.92 [46.21, 67.19] | 15.31 [13.82, 32.32] | 50.19 | **3.39×** [3.20, 3.48] | 40.4 % | 15 → 7 | 33.66M → 23.30M | +| `cluster_solved` | 143.43 [133.24, 164.62] | 62.75 [57.44, 71.02] | 142.20 | **2.29×** [2.22, 2.33] | 21.9 % | 25 → 12 | 184.16M → 139.44M | +| `cluster_plain` | 143.75 [138.33, 154.88] | 62.39 [57.84, 69.60] | 145.07 | **2.30×** [2.27, 2.34] | 11.5 % | 25 → 12 | 184.15M → 139.43M | + +**Side by side** + +| Row | laptop ratio | RAL ratio | RAL paired per-round ratio median [p10, p90] | +|---|---:|---:|---:| +| `simple_solved` | 6.00× | 4.47× | 4.51 [4.17, 4.77] | +| `simple_plain` | 6.04× | 4.40× | 4.37 [4.13, 4.65] | +| `simple_solved_vmap4` | 3.39× | 2.63× | 2.65 [2.46, 2.87] | +| `cluster_solved` | 2.29× | 1.98× | 1.98 [1.86, 2.21] | +| `cluster_plain` | 2.30× | 1.98× | 1.97 [1.86, 2.18] | + +The `control / library` ratio is 0.99–1.04 on every row of both hosts, with CIs +straddling 1 except RAL vmap4 at 1.014 [1.000, 1.024]. That confirms the +injected control reproduces the installed pre-fix method. + +**Reading the rows.** + +- **Sort shapes (RAL, identical on the laptop).** + - `simple` control: 1 × `f64[69849]`, 7 × `f64[720]` and 7 × `f64[60]`. + Nodedup keeps only the 7 × `f64[60]` (`neighborhood`). + - `cluster` control: 1 × `f64[276507]`, 12 × `f64[720]` and 12 × `f64[60]`; + nodedup keeps the 12 × `f64[60]`. The step-0 image-plane lattice is shared by + both source systems, so XLA traces its sort once, not once per system. + - The fix therefore removes the step-0 sort **and** the seven (twelve) `f64[720]` + per-step sorts, all of them `_vertices_and_indices`. The research note §4 + credited the `f64[720]` sorts to `remove_duplicates`; that attribution does + not survive this A/B, because only `_vertices_and_indices` differs between routes. +- **The gradient program halves its sorts too:** 30 → 15, and FLOPs 18.75M → 9.67M. +- **Throughput under `vmap`.** At batch 4 the control costs 7.83 ms per + likelihood on RAL and nodedup 2.98 ms. Against the scalar calls (24.00 / 5.38 ms), + the control already amortises most of its step-0 sort across the batch. This + is consistent with the static step-0 lattice being batch-invariant, so the + sort runs once per batch; that is an interpretation, not traced. The fix + therefore gains less under `vmap` (2.63×) than per scalar call (4.47×), while + still leaving the best throughput. +- **Ratios are comparable only within one host.** The RAL simple rows are + faster than the laptop's, but the RAL cluster rows are **slower** (155 / 78 ms + against 143 / 62 ms). The cluster program's larger deflection share evidently + runs worse on 8 EPYC 7763 cores than on the i9; that is a host property, not a + code one. The loaded laptop inflates the simple control more than nodedup, so + its 6.0× overstates the gain, and **RAL's 4.47× / 1.98× are the quotable figures.** +- **Against the September hypotheses.** + - Simple: reported 4.9× (40.0 → 8.1 ms); RAL measures **4.47×** (24.00 → 5.38 ms). + - Cluster: reported 2.4× per standalone solve (117 → 48 ms); RAL measures + **1.98×** on the fused two-source likelihood (155 → 78 ms). These are + different quantities: fused likelihood here, standalone per-source solve then. + - Direction and order of magnitude reproduce. The exact reported ratios were + loaded-laptop, monkeypatched numbers and are superseded. + +### Cross-check against the phase-1 RAL baseline + +| Row | phase-1 fused (mean of `n_repeats`, one instance) | phase-2 control median | gap | +|---|---:|---:|---:| +| simple solved | 24.69 ms | 24.00 ms | **−2.8 %** | +| simple plain | 24.72 ms | 23.76 ms | **−3.9 %** | +| cluster solved | 134.52 ms | 155.22 ms | **+15.4 %** | +| cluster plain | 128.05 ms | 153.85 ms | **+20.1 %** | + +- **Simple.** The simple control agrees with phase 1 within 4 %, on the same + code (`22e6d608`) and the same fused likelihood. That holds even though phase 2 + medians over a 16-instance parameter stream and phase 1 averaged 5 calls at one + instance. The simple call is dominated by the parameter-independent step-0 sort. +- **Cluster.** The cluster control is 15–20 % above phase 1. Comparing means + gives +14 % / +20 %, so this is not a median-versus-mean artefact. The code is + the same (the RAL control and library routes are the `22e6d608` install and + agree within 1 %). The host is not: phase 1 ran on a Xeon Platinum 8490H node + and phase 2 on an EPYC 7763 node. The cluster program is dominated by 13-component + deflections, so the gap is read as a **host difference, not drift**. That fits + the laptop running the cluster rows faster than this EPYC node. A second + contributor is that the instance stream varies the lens parameters, while phase 1 + used one instance (the p10–p90 spread is 142–162 ms). +- **Consequence.** Phase-1 and phase-2 rows are one baseline only for the simple + cell. The cluster before/after claim rests on the in-process A/B (1.98×), not + on phase-1 128 ms → phase-2 78 ms. The phase-3 refresh must record its node's + CPU model and compare against a control taken on the same node. + +### Correctness gates + +All 19 gates in `gate_summary` pass on both hosts. + +- **Log-likelihood.** For every row and route pair (control / nodedup / library), + the value is **bit-identical** (Δ = 0.0 absolute and relative, NaN pattern equal) + on all 16 stream instances, and deterministic within each route. The fiducial + simple solved value is `7.743201200876812` on all three routes. The stream + values agree across hosts. +- **Positions.** Simple solved and cluster solved model positions are `array_equal` + (max |Δ| = 0.0) on 3 gate instances. +- **Gradient (simple solved).** `jax.grad` is finite and **bit-identical** between + routes on 3 instances (rtol 1e-10, atol 1e-12, achieved Δ = 0). +- **`vmap`.** vmap-4 equals the scalar calls bit for bit within every route, and + all routes agree with each other. +- **Library tests and pins** (worker A, against the worktree PyAutoArray): + - The new `test_autoarray/structures/triangles/test_coordinate_jax.py` has + 10 tests. Its HLO guard **fails on main** ("traced containment carries 39 sort + op(s)") and passes on the branch. The full PyAutoArray suite passes (1626). + - The autolens_workspace_test point-source `jax_likelihood` scripts ×4 print + likelihoods **identical to main**, for example `-83.38049777774609` (JIT), + `-82.33883111107943` and `-89.71129441664627`. `jax_grad/gradient.py` passes + all checks. + - The profiling `image_plane_solved` pin reads eager `7.743201200876817` / JIT + `7.743201200876812`, identical to main; laptop JIT 41.2 → 7.0 ms. +- **The ulp-coincident-vertex caveat did not materialise** on any control. The + plan flagged the risk that removing the dedup could change containment for + vertices shared between triangles. It cannot here, for three reasons: + 1. `jnp.unique` merged only bit-equal rows, and the flat table's duplicates of a + vertex are bit-equal. The deflection is a deterministic elementwise function, + so each copy traces to the same bits the merged row did. + 2. Rows that were only ulp-close were never merged in the first place. + 3. `Point.mask` is inclusive (`0 <= α, β, γ <= 1`), so a source exactly on a + shared edge or vertex is kept by every triangle touching it, with or without + dedup. + + The bit-identical positions and likelihoods on every instance are the direct + evidence. + +### Decision — ACCEPT + +The change is **repeatable and material, with no correctness or compile/memory +regression**. + +- **Repeatable and material.** On the quiet RAL node, the simple likelihood + falls 24.00 → 5.38 ms (**4.47×**, 90 % CI 4.37–4.57) and the two-source cluster + likelihood falls 155 → 78 ms (**1.98×**, CI 1.93–2.03). The laptop witness + reproduces the direction on a different CPU (6.0× / 2.3×). The observed + reductions are 78 % (simple) and 50 % (cluster) of the call, against a minimum + detectable improvement of 4.8 % and 13 % respectively. That is 16× and 4× the + noise floor, and every paired per-round ratio's p10 is ≥ 1.86. +- **Compile.** Compile time falls on every row because the programs are smaller + (HLO 28 583 → 24 404 lines on simple, 70 897 → 62 911 on cluster). On RAL, + simple solved goes 4.08 → 3.24 s (−20 %) and cluster solved 31.45 → 27.89 s + (−11 %). Lowering is 2.89 → 2.56 s and 43.1 → 42.0 s; first call is + 28.1 → 5.4 ms and 143 → 77 ms. +- **Memory.** Per-route peak memory is not recorded by this cell. The September + note measured XLA temp memory 5.20 → 4.58 MB (−12 %). Removing a 3N-row sort + and its gather cannot add live buffers, so no regression is expected; this is + not measured here. +- **GPU — no regression; nodedup is 1.7–2.05× faster on an A100 (RAL job + 350587, 2026-09-24).** Same cell and routes, fp64, **20 rounds × 20 calls** + (400 per-call samples per route, the #568 plan's protocol), one + NVIDIA A100 80GB PCIe on `euclid-ral-gpu-1`, `JAX_PLATFORMS=cuda`, with the + backend asserted `gpu` in the log. The imported PyAutoArray was a clone of + **`feature/point-source-cpu-p2` at `25894d10`** that the submit prepends to + `PYTHONPATH`. So `library` is the shipped fix: it self-labels + `library_matches: nodedup`, and its optimised HLO is hash-identical to + nodedup's on every row. There is no mixed-precision leg, because the + PointSolver has no mixed-precision switch. + + | Row | control median [p10, p90] ms | nodedup median [p10, p90] ms | library median ms | control / nodedup [90 % CI] | paired per-round ratio median [p10, p90] | compile s ctrl → nodedup | + |---|---:|---:|---:|---:|---:|---:| + | `simple_solved` | 1.695 [1.672, 1.733] | 0.843 [0.825, 0.882] | 0.810 | **2.01×** [2.00, 2.02] | 2.01 [1.97, 2.04] | 9.7 → 5.6 | + | `simple_plain` | 1.684 [1.663, 1.736] | 0.822 [0.805, 0.854] | 0.799 | **2.05×** [2.05, 2.06] | 2.06 [2.01, 2.09] | 9.4 → 5.3 | + | `simple_solved_vmap4` (per batch of 4) | 1.865 [1.830, 1.951] | 0.958 [0.935, 1.000] | 0.926 | **1.95×** [1.94, 1.95] | 1.95 [1.93, 1.97] | 10.8 → 6.4 | + | `cluster_solved` | 4.206 [4.166, 4.373] | 2.457 [2.411, 2.661] | 2.364 | **1.71×** [1.71, 1.72] | 1.72 [1.69, 1.73] | 52.7 → 46.5 | + | `cluster_plain` | 3.860 [3.800, 4.062] | 2.105 [2.076, 2.169] | 2.039 | **1.83×** [1.83, 1.84] | 1.83 [1.82, 1.86] | 43.7 → 37.6 | + + The **correctness gates are all bit-identical on GPU**, with max |Δ| = 0 for every pair: + log L on all five rows (control vs nodedup and control vs library), solved + positions (simple 4/4 finite, cluster 3+3, three instances each), the + simple-solved `jax.grad` (bit-identical, all finite, every component non-zero, + |g| from 2.80 to 2532) and vmap-4 against scalar within each route. Every route + is deterministic across repeated instances. Lowering is unchanged (for example + cluster solved 45.1 → 45.5 s). First call is 23 → 11 ms (simple solved) and + 42 → 27 ms (cluster solved). `library`'s compile (0.5–3.6 s) is a cache hit on + nodedup's program and is not comparable. Wall time was 696 s. + + One oddity: `library` runs **3–4 % faster than nodedup** on every row (the + library/nodedup CI is [0.956, 0.976]), even though the two optimised HLOs are + hash-identical. That is an effect of the second executable instance (its compile + was a cache hit and its buffers were placed differently), not a code difference. + It sets a ~4 % floor on what this protocol can resolve on GPU. The + control/nodedup effect is 20–25× that floor. + + JSON [`vertex_dedup_ab_hpc_ral_a100_fp64.json`](../breakdown/point_source/vertex_dedup_ab_hpc_ral_a100_fp64.json) + and [`.png`](../breakdown/point_source/vertex_dedup_ab_hpc_ral_a100_fp64.png). + Log [`point_source_cpu_2026_09_24_ral_job_350587_vertex_dedup_ab_a100.out`](point_source_cpu_2026_09_24_ral_job_350587_vertex_dedup_ab_a100.out), + with an empty stderr. Submit + [`hpc/batch_gpu/submit_breakdown_point_source_vertex_dedup_ab_a100_fp64`](../../hpc/batch_gpu/submit_breakdown_point_source_vertex_dedup_ab_a100_fp64). + This JSON's `control_source.body` and `nodedup_body` are correct. The cell now + captures them at import, with a bytecode hash; see the follow-up below. + +### Post-fix budget and phase-3 handoff + +With the sort gone, the simple likelihood is **deflection-dominated**. + +- **FLOP shares (hardware-independent, same code as the research note §4).** + The bare deflections of one solve cost 2 916 501 (69 849 points) + 7 × 289 599 + (720 points) = 4.94M FLOP. That is **70 %** of nodedup's 7.05M. The remaining + ~2.1M FLOP is containment and tiling, the seven `f64[60]` `neighborhood` sorts, + β\*, the magnification filter and χ². +- **Time.** The research note's wall-clock deflection bound (≈ 6 ms, laptop, + loaded) exceeds the laptop nodedup call itself (5.34 ms). It is an inflated + upper value and is **not re-measured on RAL**. So the only budget claim made + here is the FLOP share. +- **Cluster.** The nodedup program still carries 139.4M FLOP. Its direct + deflections on the 276 507-point step-0 input remain an unmeasured control. +- **Duplicate `model_data` solve: XLA CSE confirmed on current code.** The + positions-only program (one `model_data` solve) is 15 529 212 FLOP, and the + full likelihood is 15 582 802. They differ by 53 590 FLOP (0.34 %), and the + gap is the same 53 590 on nodedup (6 999 844 vs 7 053 434). No second solve is + compiled, so Python caching would buy nothing at runtime. + +**Ranked phase-3/4 levers (proposed, none measured):** + +1. **Phase 3 — precompute the static initial lattice.** Build the step-0 unique + vertices and index map in NumPy at construction and pass them as immutable JAX + inputs. The step-0 trace would drop from 69 849 to 28 665 points on `simple`, + a deflection saving of about 1.56M FLOP (≈ 22 % of the nodedup call). It + scales with the cluster's 276 507-point input, where deflections dominate even + more. This is the natural successor now that the dynamic sort is gone. + - Report setup cost, memory and cache invalidation on geometry change. + - Never cache model-dependent deflections. + - The `constant_folding` flag A/B belongs here, because the step-0 lattice is + a compile-time constant. +2. **Phase 4(a) — grid-extent guidance.** The reported 100×100 → 30×30 extent cut + was 6.2× on the pre-fix code. After the fix it can act only on the 70 % + deflection share plus containment. It needs image-completeness evidence + across a prior. +3. **Phase 4(b) — initial scale versus steps.** Step 0 dominates the deflection + FLOPs (2.92M of 4.94M), and each extra step costs about 0.29M. +4. **Phase 4(c) — `MAX_CONTAINING_SIZE` / neighbourhood fan-out.** This acts only + on the 720-point steps and the `f64[60]` sorts, the smallest remaining share. + It is a correctness knob. +5. **Phase 4(d) — cluster dPIE/NFW deflections.** This is the likely residue at + cluster scale. It is a separately scoped PyAutoGalaxy phase. + +**The first phase-3 step:** once PyAutoArray `feature/point-source-cpu-p2` is +merged **and released**, and RAL's shared install is synced (`HPCPullPyAuto`): + +1. Re-run the phase-1 breakdown cells (`point_source` and `cluster` + `likelihood_breakdown/image_plane.py`) on RAL under a new label, so the README + dashboard rows move. Record the node's CPU model; see the cross-check. +2. Re-run this A/B cell. Its `library` route must then read + `library_matches: nodedup` (sort count 7 / 12). + +Only then measure the lattice precompute against that refreshed control. + +### Disposition changes (phase 2) + +The phase-1 checklist above is kept as written. These items change: + +- [x] **Remove the throwaway `jnp.unique` vertex dedup.** **Shipped (PyAutoArray + #568 branch) and measured.** RAL 4.47× simple / 1.98× cluster, bit-identical. + Awaiting merge and release, then the dashboard refresh (phase-3 first step). +- [x] **Duplicate `model_data` solve (XLA CSE).** **Verified in the fused program.** + Full-likelihood minus positions-only FLOPs is 53 590 (0.34 %) on both routes, + so no second solve is compiled. Python caching is not a performance fix; closed. +- [ ] **Fit / chi-squared, β\*, magnification filter share.** Re-ranked by FLOPs: + together with containment and the `neighborhood` sorts, they are the ≈ 30 % + non-deflection share of the post-fix call. They are not separated further, and + no lever is proposed. +- [ ] **Precompute static initial geometry.** Now **phase 3's lever**, because + deflections dominate (70 % of FLOPs). Proposed, not measured. +- [ ] **Step count, solver grid extent, `MAX_CONTAINING_SIZE`, cluster + deflections.** Unchanged: phase 4(b), 4(a), 4(c) and 4(d). +- [ ] **Unmeasured controls.** The fixed controls are now measured: vmap batch 4 + (2.63×) and scalar. Still open: vmap batches 1/16, the post-fix + grid/`n_steps`/capacity sweeps, the `constant_folding` flag A/B (moved to phase 3) + and direct deflections on the 276 507-point cluster input. +- [ ] **Numba / sparse rewrite.** Unchanged: not pursued. No substantial + unexplained bottleneck remains; the residue is deflections. +- [x] **Warm starts.** Unchanged: rejected. + +### Reproduce + +**Laptop witness.** Run from the profiling worktree. The bundle's `activate.sh` +puts the worktree PyAutoArray (the fix) on `PYTHONPATH`, so for a `library = control` +run, swap that entry for the canonical-main checkout: + +```bash +source ../activate.sh +export PYTHONPATH=${PYTHONPATH/\/PyAutoArray/\/array\/PyAutoArray} # pre-fix library +export OMP_NUM_THREADS=1 MKL_NUM_THREADS=1 OPENBLAS_NUM_THREADS=1 NPROC=8 +export JAX_PLATFORMS=cpu JAX_ENABLE_X64=1 +export XLA_FLAGS="--xla_disable_hlo_passes=constant_folding --xla_gpu_autotune_level=0 --xla_gpu_enable_triton_gemm=false" +export NUMBA_CACHE_DIR=/tmp/numba_cache MPLCONFIGDIR=/tmp/matplotlib +python3 -u scripts/point_source/likelihood_breakdown/vertex_dedup_ab.py --config-name local_cpu_fp64 +``` + +The cell injects both `control` and `nodedup`. Which library is installed only +changes what the `library` route labels itself as. + +**RAL.** The shared install stays on main; the cell injects both variants. + +```bash +ssh euclid_jump +cd /mnt/ral/jnightin/autolens_profiling && git fetch origin +git worktree add /mnt/ral/jnightin/autolens_profiling_wt/point-source-cpu-p2 feature/point-source-cpu-p2 +cd /mnt/ral/jnightin/autolens_profiling_wt/point-source-cpu-p2/hpc/batch_cpu +sinfo -p ral -N -o "%N %t %C %O" # ral must be idle; fallback: --partition=gpu, no --gres +sbatch submit_breakdown_point_source_vertex_dedup_ab_ral_cpu_fp64 +``` + +The submit is +[`hpc/batch_cpu/submit_breakdown_point_source_vertex_dedup_ab_ral_cpu_fp64`](../../hpc/batch_cpu/submit_breakdown_point_source_vertex_dedup_ab_ral_cpu_fp64). +It uses `ral`, 8 CPUs, a fresh per-job JAX cache, and prints provenance and +affinity. The absent `dataset/cluster/simple` is auto-simulated, as in phase 1. +Job 350582 produced: + +- [`results/breakdown/point_source/vertex_dedup_ab_hpc_ral_cpu_fp64.json`](../breakdown/point_source/vertex_dedup_ab_hpc_ral_cpu_fp64.json) and [`.png`](../breakdown/point_source/vertex_dedup_ab_hpc_ral_cpu_fp64.png) +- the job log [`point_source_cpu_2026_09_23_ral_job_350582_vertex_dedup_ab.out`](point_source_cpu_2026_09_23_ral_job_350582_vertex_dedup_ab.out) + (stderr held only the benign `No blurring_image provided` warning) + +The laptop witness is +[`vertex_dedup_ab_local_cpu_fp64.json`](../breakdown/point_source/vertex_dedup_ab_local_cpu_fp64.json) +and [`.png`](../breakdown/point_source/vertex_dedup_ab_local_cpu_fp64.png). +Library: PyAutoArray `feature/point-source-cpu-p2`, commits `273e152e` (fix) +and `25894d10` (tests), on `11b93476`. + +### Follow-ups found in phase 2 (not fixed) + +- **`jax.grad` of `AnalysisPoint` silently returns all zeros without + `autofit.jax.register_model(model)`.** The forward values are correct, and + this reproduces on PyAutoFit / PyAutoLens main. The A/B cell registers every + model before tracing, so its gradient gate is valid. A user calling `jax.grad` + directly gets zeros with no error. **This is a library issue candidate** + (PyAutoFit / PyAutoLens): raise or warn on an unregistered model. +- **The `library` route self-labels, so the cell is safe to re-run after + release.** Once the fix is installed it must read `library_matches: nodedup`. + A `control` reading on a released install means the install is stale. +- **The laptop JSON's provenance bodies are wrong** (see Environment). The cell + should capture `inspect.getsource` at import time, or hash the function's + bytecode, so that a mid-run edit cannot misrecord them. The JSON is left as + committed. +- **The cell does not record the XLA intra-op thread count or per-route + memory**; add both before the phase-3 run. It ran 5 calls per round, not the + planned ≥ 20. +- **Host pinning.** `ral` jobs land on different CPU models (Xeon 8490H in + phase 1, EPYC 7763 here). Future cross-phase comparisons need the same node or + an in-job control; consider `--nodelist` or a `--constraint` on the submits. +- **Still open from phase 1:** the `check_submits.py` `python3 -u` regex gap, + which also applies to this submit; the `activate.sh` worktree-leak guard + (this run swapped `PYTHONPATH` by hand again); and CI smoke coverage for the + breakdown cells, which now includes `vertex_dedup_ab.py`. +- **The GPU regression check is DONE.** RAL A100 job 350587 found no + regression: nodedup is 1.71–2.05× faster than control, and every gate is + bit-identical (see Decision, "GPU"). The branch's PyAutoArray `25894d10` was + imported. +- **Provenance-capture fix (done 2026-09-24).** `vertex_dedup_ab.py` now reads + `inspect.getsource` of the two bodies **at import**, together with a + `co_code`/`co_consts` SHA-256 (`bytecode_sha256`). It refuses text that does + not define the named function, so a mid-run edit can no longer misrecord the + bodies. The laptop JSON is still left as committed. + +--- ## Phase 3 — precompute static initial geometry — NOT STARTED -This phase runs only if deflections dominate after phase 2. It would build the +This phase runs only if deflections dominate after phase 2; they do (70 % of the post-fix FLOPs, see the phase-2 handoff). It would build the initial lattice's unique vertices and index map in NumPy at construction and reuse them as immutable JAX inputs, never caching model-dependent deflections. diff --git a/scripts/point_source/likelihood_breakdown/vertex_dedup_ab.py b/scripts/point_source/likelihood_breakdown/vertex_dedup_ab.py new file mode 100644 index 000000000..9ee00c408 --- /dev/null +++ b/scripts/point_source/likelihood_breakdown/vertex_dedup_ab.py @@ -0,0 +1,1212 @@ +""" +JAX Profiling: PointSolver Vertex-Dedup A/B (point-source CPU campaign, phase 2) +================================================================================ + +An interleaved, in-process A/B of one library method — +``autoarray.structures.triangles.coordinate_array.CoordinateArrayTriangles +._vertices_and_indices`` — inside the production point-source likelihoods +(PyAutoArray #568). + +The mechanism +------------- + +``PointSolver._plane_triangles`` ray-traces ``triangles.vertices`` and rebuilds +the triangles with ``with_vertices``. On the JAX path ``vertices`` / +``indices`` come from ``_vertices_and_indices``, which (PyAutoArray main +``11b93476``) calls:: + + jnp.unique(flat_triangles, axis=0, return_inverse=True, + size=3 * N, equal_nan=True, fill_value=jnp.nan) + +``jnp.unique`` needs a static output shape under ``jit``, so it is handed +``size=3N`` — exactly the row count of the input it deduplicates. The +"deduplicated" table therefore has 3N rows (the real unique vertices plus NaN +fill), the ray trace evaluates all 3N of them, and the dedup saves **zero** +deflection evaluations while costing a lexicographic sort of 3N fp64 rows. The +property is read twice per refinement step (``vertices`` and ``indices`` each +evaluate it), so the sort is traced twice per step; XLA may CSE the pair, and +the HLO ``sort`` count recorded below says what survived. (Each row also records +the StableHLO count, which counts sort *definitions* inside private functions the +lowering reuses, not call sites — the optimised-HLO count is the one to read.) The NumPy sibling +(``coordinate_array_np.py``) calls ``np.unique`` with no ``size=`` and genuinely +shrinks the table; it is not touched here. See +``results/notes/point_source_cpu_2026_09_17_reported/pointsolver_cpu_research_note.md`` +§3 and §6 for the reported scratch evidence this cell re-measures properly. + +The fix drops the unique: the vertex table is the flat ``(3N, 2)`` triangle +array and the index map is ``arange(3N).reshape(-1, 3)``. NaN padding rows stay +NaN through the ray trace and every ``Shape.mask`` rejects them, so the kept +triangle set — and hence the likelihood — should be unchanged. Whether it is +*bit*-identical is measured, not assumed. + +The three routes +---------------- + +Each route swaps the class attribute for the duration of **tracing** only, via +:func:`route_injected` (pattern: ``scripts/misc/likelihood_breakdown/ +library_solver_injection.py`` — signature check, call counters, restore by +identity): + +- ``control`` — the PRE-fix body, carried verbatim in this file + (:func:`_control_vertices_and_indices`, copied from PyAutoArray main + ``11b93476``). Reproducible whatever library is installed. +- ``nodedup`` — the POST-fix body (:func:`_nodedup_vertices_and_indices`). +- ``library`` — no substitution: whatever the installed PyAutoArray does. The + route is wrapped only to count calls. It **self-labels**: the ``sort`` op count + of its lowered / compiled program is compared with the other two routes and + recorded as ``library_matches = control | nodedup | neither``. + +A route whose substitute is never called while tracing is a FAIL, not a number. +If ``control`` and ``nodedup`` lower to the same number of sorts the injection +did not take and the cell stops before timing anything. + +The measurement trap +-------------------- + +``jax`` caches traced jaxprs on function *identity*. The 2026-09-17 scratch run +first reported a speed-up with byte-identical HLO because ``jax.jit(same_fn)`` +re-served the pre-patch trace. Here every route lowers a **fresh** closure built +by a factory (fresh ``PointSolver`` and ``AnalysisPoint`` too) and calls +``jax.clear_caches()`` before lowering. Once lowered and compiled, an executable +no longer depends on the patch, so all three routes' executables coexist and the +timed calls run with nothing patched. + +The A/B protocol +---------------- + +Rows (``--models``): ``simple`` = the phase-1 harness model, dataset and solver +(``scripts/point_source/likelihood_breakdown/image_plane.py``: SIE lens, +``PointSolver.for_grid`` 100x100 @ 0.2", precision 0.001") with the fused +``FitPositionsImagePairAllSolved`` (``solved``) and ``FitPositionsImagePairAll`` +(``plain``) likelihoods, plus a ``vmap`` batch row of the solved likelihood +(``--vmap-batch``); ``cluster`` = the cluster cell's two-source 13-component +model (``scripts/cluster/likelihood_breakdown/image_plane.py`` step 5; solver +200x200 @ 0.7", precision 0.01") with fused ``FitPositionsImagePairRepeat`` +(``plain``) and ``FitPositionsImagePairRepeatSolved`` (``solved``) summed over +both systems. + +Each compiled likelihood takes the model's **physical parameter vector** and +builds the instance inside the trace (``instance_from_vector(xp=jnp)``, as +``autofit``'s JAX ``Fitness`` does), so every parameter is a runtime argument. +The vectors are a fixed-seed stream drawn from the priors around the fiducial +(unit cube ``U(0.25, 0.75)``; entry 0 is the prior-median fiducial itself), and +the same stream feeds every route. Every timed call is ``block_until_ready``'d. + +Per row: compile each route once, warm each ≥ 3 calls, then ``--rounds`` +round-robin rounds, the route order rotating each round, ``--calls`` calls per +route per round, walking the same instance stream. Per route: median, p10, p90, +min, max of the per-call ms; the median ratio ``control / nodedup`` with a +bootstrap 90 % interval; the minimum detectable improvement is the control +row's ``(p90 - p10) / median``. + +Correctness gates (recorded, never asserted — the architect decides): log +likelihood ``==`` across routes on every streamed instance (else max |Δ| and +relative Δ); solved image positions ``np.array_equal`` (NaN-aware) from a +separately compiled positions function per route; for the simple solved +likelihood, ``jax.grad`` w.r.t. the parameter vector ``allclose(rtol=1e-10, +atol=1e-12)`` and finite, and ``vmap`` results equal to the per-instance +results. The cluster rows carry the likelihood and position gates only: a +cluster gradient compile is minutes per route and phase 2 does not need it. + +Output +------ + +``results/breakdown/point_source/vertex_dedup_ab_.{json,png}``. The +JSON deliberately carries no top-level ``autolens_version`` (versions live under +``library_versions``): this is a note-backed A/B, and +``scripts/misc/tooling/build_readme.py`` only auto-tables config-tagged +breakdown JSONs whose ``autolens_version`` parses — which would render a +step-sum row this cell has no meaning for. +""" + +import os +import sys +import time +from pathlib import Path + + +def _profiling_root() -> Path: + for parent in Path(__file__).resolve().parents: + if (parent / "ruff.toml").exists(): + return parent + raise RuntimeError("autolens_profiling root (ruff.toml) not found") + + +_ROOT = _profiling_root() +_MISC = str(_ROOT / "scripts" / "misc") +if _MISC not in sys.path: + sys.path.insert(0, _MISC) +if str(_ROOT) not in sys.path: + sys.path.insert(0, str(_ROOT)) + +import argparse +import contextlib +import hashlib +import inspect +import json +import re + +import jax +import jax.numpy as jnp +import jaxlib +import matplotlib +import numpy as np + +if os.environ.get("AUTOLENS_PROFILING_SMOKE") == "1": + print(f"[smoke] {__file__}: imports + module setup OK; exiting.") + sys.exit(0) + +from likelihood_breakdown.provenance import source_revisions, thread_environment # noqa: E402 +from likelihood_breakdown.timing import block # noqa: E402 + +from _profile_cli import ( # noqa: E402 + auto_simulate_if_missing, + device_info_dict, + machine_info_dict, + parse_profile_cli, + resolve_output_paths, +) + +_WALL_START = time.perf_counter() +_LOADAVG_START = os.getloadavg() + +_cli = parse_profile_cli() +_cell_parser = argparse.ArgumentParser(add_help=False, allow_abbrev=False) +_cell_parser.add_argument("--rounds", type=int, default=None) +_cell_parser.add_argument("--calls", type=int, default=None) +_cell_parser.add_argument("--vmap-batch", type=int, default=4) +_cell_parser.add_argument("--n-stream", type=int, default=16) +_cell_parser.add_argument("--warm", type=int, default=3) +_cell_parser.add_argument("--gate-instances", type=int, default=3) +_cell_parser.add_argument("--seed", type=int, default=568) +_cell_parser.add_argument("--models", default=None, help="comma list of simple,cluster") +_cell_parser.add_argument( + "--quick", action="store_true", help="rounds=5, calls=3, simple model only" +) +_args = _cli.parse_cell_args(_cell_parser) + +QUICK = bool(_args.quick) +N_ROUNDS = _args.rounds if _args.rounds is not None else (5 if QUICK else 20) +N_CALLS = _args.calls if _args.calls is not None else (3 if QUICK else 5) +N_STREAM = _args.n_stream +N_WARM = max(3, _args.warm) +N_GATE = max(3, _args.gate_instances) +VMAP_BATCH = _args.vmap_batch +SEED = _args.seed +MODELS = tuple( + m.strip() + for m in (_args.models or ("simple" if QUICK else "simple,cluster")).split(",") + if m.strip() +) +for _m in MODELS: + if _m not in ("simple", "cluster"): + raise SystemExit(f"--models: unknown model {_m!r} (expected simple / cluster)") +if N_ROUNDS < 1 or N_CALLS < 1 or VMAP_BATCH < 1: + raise SystemExit("--rounds, --calls and --vmap-batch must be positive") + +matplotlib.use("Agg") +import autoarray as aa # noqa: E402 +import autofit as af # noqa: E402 +import autolens as al # noqa: E402 +import matplotlib.pyplot as plt # noqa: E402 +from autoarray.structures.triangles import coordinate_array as _coordinate_array # noqa: E402 +from autofit.jax import register_model as register_model_pytrees # noqa: E402 + +ROUTES = ("control", "nodedup", "library") +TARGET_DOTTED = ( + "autoarray.structures.triangles.coordinate_array.CoordinateArrayTriangles._vertices_and_indices" +) +#: PyAutoArray main commit the ``control`` body below was copied from, verbatim. +CONTROL_SOURCE_SHA = "11b93476" +BOOTSTRAP_SAMPLES = 2000 +BOOTSTRAP_SEED = 12345 +GRAD_RTOL = 1.0e-10 +GRAD_ATOL = 1.0e-12 + + +# --------------------------------------------------------------------------- +# The two substituted bodies +# --------------------------------------------------------------------------- + + +def _control_vertices_and_indices(self): + """PRE-fix ``_vertices_and_indices`` — verbatim from PyAutoArray ``11b93476``.""" + import jax.numpy as jnp + + flat_triangles = self.triangles.reshape(-1, 2) + vertices, inverse_indices = jnp.unique( + flat_triangles, + axis=0, + return_inverse=True, + size=3 * self.coordinates.shape[0], + equal_nan=True, + fill_value=jnp.nan, + ) + + nan_mask = jnp.isnan(vertices).any(axis=1) + inverse_indices = jnp.where(nan_mask[inverse_indices], -1, inverse_indices) + + indices = inverse_indices.reshape(-1, 3) + return vertices, indices + + +def _nodedup_vertices_and_indices(self): + """POST-fix ``_vertices_and_indices``: the flat 3N table and an ``arange`` index map.""" + import jax.numpy as jnp + + flat = self.triangles.reshape(-1, 2) + indices = jnp.arange(flat.shape[0]).reshape(-1, 3) + return flat, indices + + +_ROUTE_BODIES = { + "control": _control_vertices_and_indices, + "nodedup": _nodedup_vertices_and_indices, + "library": None, +} + + +def _body_provenance(fn) -> dict: + """Source text + bytecode hash of *fn*, captured NOW (at import). + + ``inspect.getsource`` reads the file through ``linecache`` using the code + object's line offsets. Called at the end of a long run, it reads whatever the + file holds *then*: the 2026-09-23 laptop witness, edited mid-run, recorded + ``_profiling_root`` and the control body under the wrong names. Capturing at + import pins the text to the file the interpreter compiled, and the + ``co_code`` / ``co_consts`` hash identifies the executed body independently + of any text. + """ + code = fn.__code__ + digest = hashlib.sha256(code.co_code + repr(code.co_consts).encode()).hexdigest()[:16] + source = inspect.getsource(fn) + if f"def {fn.__name__}(" not in source: + raise RuntimeError(f"getsource({fn.__name__}) returned another function's text") + return { + "name": fn.__name__, + "body": source, + "bytecode_sha256": digest, + "firstlineno": code.co_firstlineno, + } + + +_BODY_PROVENANCE = { + "control": _body_provenance(_control_vertices_and_indices), + "nodedup": _body_provenance(_nodedup_vertices_and_indices), +} + + +@contextlib.contextmanager +def route_injected(route: str): + """Swap ``CoordinateArrayTriangles._vertices_and_indices`` for *route*. + + Scoped and restored by identity (checked on exit). Yields ``{"calls": n}``, + the number of times the route's property body ran — i.e. while tracing — so + the caller can refuse a route whose substitute never fired. ``library`` wraps + the installed property only to count; it computes exactly what it did. + """ + cls = _coordinate_array.CoordinateArrayTriangles + original = cls.__dict__["_vertices_and_indices"] + if not isinstance(original, property): + raise TypeError(f"{TARGET_DOTTED} is no longer a property: {type(original).__name__}") + params = list(inspect.signature(original.fget).parameters) + if params != ["self"]: + raise TypeError( + f"{TARGET_DOTTED} now takes {params}; the substituted bodies take (self) only. " + "The library changed under the injection — update this harness, not the library." + ) + body = _ROUTE_BODIES[route] or original.fget + counts = {"calls": 0} + + def counted(self): + counts["calls"] += 1 + return body(self) + + cls._vertices_and_indices = property(counted) + try: + yield counts + finally: + cls._vertices_and_indices = original + if cls.__dict__["_vertices_and_indices"] is not original: + raise RuntimeError(f"{TARGET_DOTTED} was not restored by identity") + + +# --------------------------------------------------------------------------- +# Structural readouts +# --------------------------------------------------------------------------- + +_STABLEHLO_SORT = re.compile(r"stablehlo\.sort\b") +_HLO_SORT_LINE = re.compile(r"^\s*(?:ROOT\s+)?%?[\w.\-]+\s*=\s*(.+?)\s+sort\(", re.M) + + +def _sort_readout(lowered, compiled) -> dict: + stablehlo = lowered.as_text() + hlo = compiled.as_text() + shapes = [m.group(1) for m in _HLO_SORT_LINE.finditer(hlo)] + return { + "hlo_sort_count": len(shapes), + "stablehlo_sort_count": len(_STABLEHLO_SORT.findall(stablehlo)), + "hlo_sort_shapes": shapes, + "hlo_sha256": hashlib.sha256(hlo.encode()).hexdigest()[:16], + "hlo_lines": hlo.count("\n"), + } + + +def _flops(compiled): + try: + cost = compiled.cost_analysis() + if isinstance(cost, list | tuple): + cost = cost[0] if cost else {} + value = (cost or {}).get("flops") + return float(value) if value is not None else None + except Exception as exc: # noqa: BLE001 — cost analysis is optional on some backends + return f"unavailable: {type(exc).__name__}" + + +def _compile_route(route: str, factory, example, *, label: str) -> dict: + """Lower a FRESH closure under *route* after ``jax.clear_caches()``; compile it.""" + jax.clear_caches() + fn = factory() + with route_injected(route) as counts: + t0 = time.perf_counter() + lowered = jax.jit(fn).lower(example) + lower_s = time.perf_counter() - t0 + if route != "library" and counts["calls"] == 0: + raise RuntimeError( + f"FAIL [{label}/{route}]: the substituted {TARGET_DOTTED} never ran while tracing, " + "so this route would time the library's own code under the wrong name." + ) + t0 = time.perf_counter() + compiled = lowered.compile() + compile_s = time.perf_counter() - t0 + t0 = time.perf_counter() + first = block(compiled(example)) + first_call_s = time.perf_counter() - t0 + readout = _sort_readout(lowered, compiled) + print( + f" [{label}/{route}] lower {lower_s:6.1f} s compile {compile_s:6.1f} s " + f"first {first_call_s * 1e3:8.2f} ms trace_calls {counts['calls']:3d} " + f"sorts {readout['hlo_sort_count']} (stablehlo {readout['stablehlo_sort_count']})" + ) + return { + "executable": compiled, + "first": first, + "record": { + "lower_s": float(lower_s), + "compile_s": float(compile_s), + "first_call_s": float(first_call_s), + "trace_calls": int(counts["calls"]), + "flops": _flops(compiled), + **readout, + }, + } + + +# --------------------------------------------------------------------------- +# Statistics +# --------------------------------------------------------------------------- + + +def _stats_ms(seconds) -> dict: + ms = np.asarray(seconds, dtype=float) * 1.0e3 + return { + "n": int(ms.size), + "median_ms": float(np.median(ms)), + "p10_ms": float(np.percentile(ms, 10)), + "p90_ms": float(np.percentile(ms, 90)), + "min_ms": float(ms.min()), + "max_ms": float(ms.max()), + "mean_ms": float(ms.mean()), + } + + +def _median_ratio(numerator, denominator, seed: int) -> dict: + num = np.asarray(numerator, dtype=float) + den = np.asarray(denominator, dtype=float) + rng = np.random.default_rng(seed) + boots = np.empty(BOOTSTRAP_SAMPLES) + for i in range(BOOTSTRAP_SAMPLES): + boots[i] = np.median(rng.choice(num, num.size)) / np.median(rng.choice(den, den.size)) + return { + "ratio": float(np.median(num) / np.median(den)), + "ci90_low": float(np.percentile(boots, 5)), + "ci90_high": float(np.percentile(boots, 95)), + "bootstrap_samples": BOOTSTRAP_SAMPLES, + } + + +def _array_delta(a, b) -> dict: + a = np.asarray(a, dtype=float) + b = np.asarray(b, dtype=float) + # Equal entries (including matching NaN / inf padding) contribute zero; an + # inf-vs-finite mismatch reports inf, never a NaN that nanmax would hide. + same = (a == b) | (np.isnan(a) & np.isnan(b)) + with np.errstate(invalid="ignore", over="ignore"): + diff = np.where(same, 0.0, np.abs(a - b)) + diff = np.where(np.isnan(diff), np.inf, diff) + scale = np.where(same, 1.0, np.maximum(np.abs(a), np.abs(b))) + rel = np.where(scale > 0, diff / np.where(scale > 0, scale, 1.0), diff) + return { + "bit_identical": bool(np.array_equal(a, b, equal_nan=True)), + "max_abs_delta": float(np.nanmax(diff)) if diff.size else 0.0, + "max_rel_delta": float(np.nanmax(rel)) if rel.size else 0.0, + "nan_pattern_equal": bool(np.array_equal(np.isnan(a), np.isnan(b))), + } + + +def _pairs(values_by_route: dict) -> dict: + return { + f"{a}_vs_{b}": _array_delta(values_by_route[a], values_by_route[b]) + for a, b in (("control", "nodedup"), ("control", "library"), ("nodedup", "library")) + } + + +# --------------------------------------------------------------------------- +# Instance streams +# --------------------------------------------------------------------------- + + +def _vector_stream(model, n: int, seed: int) -> np.ndarray: + """Fixed-seed physical vectors: entry 0 the prior medians, the rest U(0.25,0.75) draws.""" + rng = np.random.default_rng(seed) + vectors = [np.asarray(model.physical_values_from_prior_medians, dtype=float)] + for _ in range(n - 1): + unit = rng.uniform(0.25, 0.75, size=model.prior_count) + vectors.append(np.asarray(model.vector_from_unit_vector(unit), dtype=float)) + return np.stack(vectors) + + +# --------------------------------------------------------------------------- +# The two models +# --------------------------------------------------------------------------- + + +def _simple_setup() -> dict: + """Phase-1 harness model, dataset and solver (image_plane.py).""" + instrument = "simple" + dataset_path = _ROOT / "dataset" / "point_source" / instrument + auto_simulate_if_missing( + dataset_path, dataset_type="point_source", instrument=instrument, workspace_root=_ROOT + ) + dataset = al.from_json(file_path=dataset_path / "point_dataset_positions_only.json") + + def mass_model(): + 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) + mass.ell_comps.ell_comps_0 = af.GaussianPrior(mean=0.05263158, sigma=0.01) + mass.ell_comps.ell_comps_1 = af.GaussianPrior(mean=0.0, sigma=0.01) + return mass + + def model(solved: bool): + lens = af.Model(al.Galaxy, redshift=0.5, mass=mass_model()) + if solved: + point = af.Model(al.ps.PointSolved) + else: + point = af.Model(al.ps.PointFlux) + point.centre.centre_0 = af.GaussianPrior(mean=0.07, sigma=0.005) + point.centre.centre_1 = af.GaussianPrior(mean=0.07, sigma=0.005) + source = af.Model(al.Galaxy, redshift=1.0, point_0=point) + return af.Collection(galaxies=af.Collection(lens=lens, source=source)) + + def solver(): + return al.PointSolver.for_grid( + grid=al.Grid2D.uniform(shape_native=(100, 100), pixel_scales=0.2), + pixel_scale_precision=0.001, + magnification_threshold=0.1, + ) + + fit_cls = { + "solved": al.FitPositionsImagePairAllSolved, + "plain": al.FitPositionsImagePairAll, + } + return { + "datasets": [dataset], + "models": {"solved": model(True), "plain": model(False)}, + "fit_cls": fit_cls, + "solver": solver, + "configuration": { + "dataset": "dataset/point_source/simple/point_dataset_positions_only.json", + "solver_grid_shape": [100, 100], + "solver_grid_pixel_scale": 0.2, + "solver_pixel_scale_precision": 0.001, + "magnification_threshold": 0.1, + "likelihoods": { + "solved": "FitPositionsImagePairAllSolved", + "plain": "FitPositionsImagePairAll", + }, + }, + } + + +def _cluster_setup() -> dict: + """The cluster cell's two-source 13-component model (image_plane.py step 5).""" + dataset_path = _ROOT / "dataset" / "cluster" / "simple" + auto_simulate_if_missing( + dataset_path, dataset_type="cluster", instrument="simple", workspace_root=_ROOT + ) + dataset_list = al.list_from_csv(file_path=dataset_path / "point_datasets.csv") + redshift_lens = 0.5 + main_lens_params = [((0.0, 0.0), 8.0, 20.0, 3.0), ((10.0, 8.0), 5.0, 12.0, 1.2)] + scaling_table = al.galaxy_table_from_csv(file_path=dataset_path / "scaling_galaxies.csv") + b0_ref, rs_ref, ra_scaling, exponent = 0.12, 10.0, 0.1, 0.5 + lum_ref = max(scaling_table.luminosities) + z_source_max = max(float(d.redshift) for d in dataset_list) + + # Step 1 of the cluster cell: back-trace the observed images through the + # fiducial tracer and take each system's centroid as its model source centre. + tracer = al.Tracer( + galaxies=[ + al.Galaxy( + redshift=redshift_lens, + mass=al.mp.dPIEMassB0Sph(centre=centre, ra=ra, rs=rs, b0=b0), + ) + for centre, ra, rs, b0 in main_lens_params + ] + + [ + al.Galaxy( + redshift=redshift_lens, + mass=al.mp.dPIEMassB0Sph( + centre=tuple(centre), + ra=ra_scaling, + rs=rs_ref * (lum / lum_ref) ** exponent, + b0=b0_ref * (lum / lum_ref) ** exponent, + ), + ) + for centre, lum in zip(scaling_table.centres, scaling_table.luminosities) + ] + + [ + al.Galaxy( + redshift=redshift_lens, + dark=al.mp.NFWMCRLudlowSph( + centre=(0.0, 0.0), + mass_at_200=10**15.3, + redshift_object=redshift_lens, + redshift_source=z_source_max, + ), + ) + ] + + [ + al.Galaxy(redshift=float(d.redshift), **{d.name: al.ps.Point(centre=(0.0, 0.0))}) + for d in dataset_list + ] + ) + source_centres = [] + for d in dataset_list: + plane_index = tracer.plane_index_via_redshift_from(redshift=float(d.redshift)) + traced = np.asarray( + tracer.traced_grid_2d_list_from( + grid=al.Grid2DIrregular(np.atleast_2d(np.asarray(d.positions))) + )[plane_index] + ) + source_centres.append(tuple(traced.mean(axis=0))) + + def gaussian(mean, fraction=0.01, floor=0.01): + return af.GaussianPrior(mean=float(mean), sigma=max(abs(float(mean)) * fraction, floor)) + + def model(solved: bool): + galaxies = {} + for i, (centre, ra, rs, b0) in enumerate(main_lens_params): + mass = af.Model(al.mp.dPIEMassB0Sph) + mass.centre.centre_0 = gaussian(centre[0]) + mass.centre.centre_1 = gaussian(centre[1]) + mass.ra = gaussian(ra) + mass.rs = gaussian(rs) + mass.b0 = gaussian(b0) + galaxies[f"main_{i}"] = af.Model(al.Galaxy, redshift=redshift_lens, mass=mass) + scaling_b0 = gaussian(b0_ref, floor=0.001) + for i, (centre, lum) in enumerate(zip(scaling_table.centres, scaling_table.luminosities)): + ratio = (lum / lum_ref) ** exponent + mass = af.Model(al.mp.dPIEMassB0Sph) + mass.centre = tuple(centre) + mass.ra = ra_scaling + mass.rs = rs_ref * ratio + mass.b0 = scaling_b0 * ratio + galaxies[f"scaling_{i}"] = af.Model(al.Galaxy, redshift=redshift_lens, mass=mass) + dark = af.Model( + al.mp.NFWMCRLudlowSph, + mass_at_200=10**15.3, + redshift_object=redshift_lens, + redshift_source=z_source_max, + ) + dark.centre.centre_0 = gaussian(0.0) + dark.centre.centre_1 = gaussian(0.0) + galaxies["host_halo"] = af.Model(al.Galaxy, redshift=redshift_lens, dark=dark) + for i, (d, centre) in enumerate(zip(dataset_list, source_centres)): + if solved: + point = af.Model(al.ps.PointSolved) + else: + point = af.Model(al.ps.Point) + point.centre.centre_0 = gaussian(centre[0]) + point.centre.centre_1 = gaussian(centre[1]) + galaxies[f"source_{i}"] = af.Model( + al.Galaxy, redshift=float(d.redshift), **{d.name: point} + ) + return af.Collection(galaxies=af.Collection(**galaxies)) + + def solver(): + return al.PointSolver.for_grid( + grid=al.Grid2D.uniform(shape_native=(200, 200), pixel_scales=0.7), + pixel_scale_precision=0.01, + use_jax=True, + ) + + fit_cls = { + "solved": al.FitPositionsImagePairRepeatSolved, + "plain": al.FitPositionsImagePairRepeat, + } + return { + "datasets": list(dataset_list), + "models": {"solved": model(True), "plain": model(False)}, + "fit_cls": fit_cls, + "solver": solver, + "configuration": { + "dataset": "dataset/cluster/simple/point_datasets.csv", + "n_systems": len(dataset_list), + "n_mass_profiles": len(main_lens_params) + len(scaling_table.luminosities) + 1, + "solver_grid_shape": [200, 200], + "solver_grid_pixel_scale": 0.7, + "solver_pixel_scale_precision": 0.01, + "source_centres_from": "back-traced observed-image centroids (cluster cell step 1)", + "likelihoods": { + "solved": "FitPositionsImagePairRepeatSolved (summed over systems)", + "plain": "FitPositionsImagePairRepeat (summed over systems)", + }, + }, + } + + +def _likelihood_factory(setup: dict, variant: str): + """A factory of FRESH ``vector -> log L`` closures (fresh solver + analyses per call).""" + model = setup["models"][variant] + + def factory(): + solver = setup["solver"]() + analyses = [ + al.AnalysisPoint( + dataset=d, solver=solver, fit_positions_cls=setup["fit_cls"][variant], use_jax=True + ) + for d in setup["datasets"] + ] + + def log_likelihood(vector): + instance = model.instance_from_vector(vector=vector, xp=jnp) + total = 0.0 + for analysis in analyses: + total = total + analysis.log_likelihood_function(instance=instance) + return total + + return log_likelihood + + return factory + + +def _positions_factory(setup: dict, variant: str): + """A factory of FRESH ``vector -> tuple(model positions per system)`` closures.""" + model = setup["models"][variant] + + def factory(): + solver = setup["solver"]() + analyses = [ + al.AnalysisPoint( + dataset=d, solver=solver, fit_positions_cls=setup["fit_cls"][variant], use_jax=True + ) + for d in setup["datasets"] + ] + + def positions(vector): + instance = model.instance_from_vector(vector=vector, xp=jnp) + out = [] + for analysis in analyses: + model_data = analysis.fit_from(instance=instance).positions.model_data + out.append(jnp.asarray(getattr(model_data, "array", model_data))) + return tuple(out) + + return positions + + return factory + + +# --------------------------------------------------------------------------- +# One interleaved timing row +# --------------------------------------------------------------------------- + + +def _timed_call(executable, argument): + t0 = time.perf_counter() + out = block(executable(argument)) + return time.perf_counter() - t0, out + + +def _run_row(label: str, factory, stream: np.ndarray, *, batch: int | None = None) -> dict: + """Compile three routes, warm, interleave; return timings, values and structure.""" + print(f"\n--- row {label} ---") + if batch is None: + arguments = [jnp.asarray(v) for v in stream] + instance_ids = [[i] for i in range(len(stream))] + else: + n_batches = max(1, len(stream) // batch) + instance_ids = [ + [(b * batch + k) % len(stream) for k in range(batch)] for b in range(n_batches) + ] + arguments = [jnp.asarray(stream[ids]) for ids in instance_ids] + compiled = { + route: _compile_route(route, factory, arguments[0], label=label) for route in ROUTES + } + executables = {route: compiled[route]["executable"] for route in ROUTES} + + warm_s = {route: [] for route in ROUTES} + for route in ROUTES: + for w in range(N_WARM): + dt, _ = _timed_call(executables[route], arguments[w % len(arguments)]) + warm_s[route].append(dt) + + times = {route: [] for route in ROUTES} + per_round = {route: [] for route in ROUTES} + values = {route: {} for route in ROUTES} + deterministic = {route: True for route in ROUTES} + call_index = 0 + for r in range(N_ROUNDS): + order = ROUTES[r % len(ROUTES) :] + ROUTES[: r % len(ROUTES)] + start = call_index + for route in order: + round_times = [] + for c in range(N_CALLS): + k = (start + c) % len(arguments) + dt, out = _timed_call(executables[route], arguments[k]) + round_times.append(dt) + value = np.asarray(out, dtype=float) + if k in values[route]: + if not np.array_equal(values[route][k], value, equal_nan=True): + deterministic[route] = False + else: + values[route][k] = value + times[route].extend(round_times) + per_round[route].append(float(np.median(round_times))) + call_index = start + N_CALLS + + seen = sorted(set.intersection(*(set(values[r]) for r in ROUTES))) + value_arrays = {route: np.stack([values[route][k] for k in seen]) for route in ROUTES} + stats = {route: _stats_ms(times[route]) for route in ROUTES} + control = stats["control"] + paired = np.asarray(per_round["control"]) / np.asarray(per_round["nodedup"]) + row = { + "label": label, + "batch": batch, + "n_rounds": N_ROUNDS, + "n_calls_per_round": N_CALLS, + "n_warm": N_WARM, + "route_order": "round-robin, start rotated each round", + "per_call_ms": {route: [t * 1e3 for t in times[route]] for route in ROUTES}, + "warm_ms": {route: [t * 1e3 for t in warm_s[route]] for route in ROUTES}, + "stats": stats, + "ratio_control_over_nodedup": _median_ratio( + times["control"], times["nodedup"], BOOTSTRAP_SEED + ), + "ratio_library_over_nodedup": _median_ratio( + times["library"], times["nodedup"], BOOTSTRAP_SEED + 1 + ), + "ratio_control_over_library": _median_ratio( + times["control"], times["library"], BOOTSTRAP_SEED + 2 + ), + "paired_round_ratio_control_over_nodedup": { + "median": float(np.median(paired)), + "p10": float(np.percentile(paired, 10)), + "p90": float(np.percentile(paired, 90)), + }, + "minimum_detectable_improvement": float( + (control["p90_ms"] - control["p10_ms"]) / control["median_ms"] + ), + "compile": {route: compiled[route]["record"] for route in ROUTES}, + "instances_compared": [instance_ids[k] for k in seen], + "values": {route: value_arrays[route].tolist() for route in ROUTES}, + "deterministic_within_route": deterministic, + "likelihood_gate": _pairs(value_arrays), + } + if batch is None: + row["fiducial_log_likelihood"] = { + route: float(values[route][0]) for route in ROUTES if 0 in values[route] + } + print( + " median ms " + + " ".join(f"{route} {stats[route]['median_ms']:9.3f}" for route in ROUTES) + + f" control/nodedup {row['ratio_control_over_nodedup']['ratio']:.3f} " + f"[{row['ratio_control_over_nodedup']['ci90_low']:.3f}, " + f"{row['ratio_control_over_nodedup']['ci90_high']:.3f}]" + ) + return row + + +def _positions_gate(label: str, factory, stream: np.ndarray) -> dict: + print(f"\n--- positions gate {label} ---") + arguments = [jnp.asarray(v) for v in stream[:N_GATE]] + per_route = {} + compile_records = {} + for route in ROUTES: + compiled = _compile_route(route, factory, arguments[0], label=f"{label}_positions") + compile_records[route] = compiled["record"] + per_route[route] = [ + [np.asarray(p, dtype=float) for p in block(compiled["executable"](a))] + for a in arguments + ] + + def flat(route): + return np.concatenate([np.ravel(p) for inst in per_route[route] for p in inst]) + + pairs = {} + for a, b in (("control", "nodedup"), ("control", "library")): + delta = _array_delta(flat(a), flat(b)) + delta["array_equal_nan_aware"] = delta.pop("bit_identical") + pairs[f"{a}_vs_{b}"] = delta + return { + "n_instances": len(arguments), + "compile": compile_records, + "positions": { + route: [[p.tolist() for p in inst] for inst in per_route[route]] for route in ROUTES + }, + "finite_positions": { + route: [[int(np.isfinite(p).all(axis=-1).sum()) for p in inst] for inst in rows] + for route, rows in per_route.items() + }, + "pairs": pairs, + } + + +def _grad_gate(label: str, factory, stream: np.ndarray) -> dict: + print(f"\n--- gradient gate {label} ---") + arguments = [jnp.asarray(v) for v in stream[:N_GATE]] + + def grad_factory(): + return jax.grad(factory()) + + grads = {} + records = {} + for route in ROUTES: + compiled = _compile_route(route, grad_factory, arguments[0], label=f"{label}_grad") + records[route] = compiled["record"] + grads[route] = np.stack( + [np.asarray(block(compiled["executable"](a)), dtype=float) for a in arguments] + ) + pairs = {} + for a, b in (("control", "nodedup"), ("control", "library")): + delta = _array_delta(grads[a], grads[b]) + delta["allclose"] = bool(np.allclose(grads[a], grads[b], rtol=GRAD_RTOL, atol=GRAD_ATOL)) + pairs[f"{a}_vs_{b}"] = delta + return { + "n_instances": len(arguments), + "rtol": GRAD_RTOL, + "atol": GRAD_ATOL, + "compile": records, + "all_finite": {route: bool(np.isfinite(g).all()) for route, g in grads.items()}, + "gradients": {route: g.tolist() for route, g in grads.items()}, + "pairs": pairs, + } + + +def _vmap_gate(vmap_row: dict, scalar_row: dict) -> dict: + """``vmap`` batch values vs the scalar row's per-instance values, per route and across.""" + scalar_values = { + route: dict( + zip( + [ids[0] for ids in scalar_row["instances_compared"]], + np.asarray(scalar_row["values"][route]).ravel(), + ) + ) + for route in ROUTES + } + within = {} + for route in ROUTES: + batched, reference = [], [] + for ids, vals in zip(vmap_row["instances_compared"], vmap_row["values"][route]): + for i, v in zip(ids, np.ravel(vals)): + if i in scalar_values[route]: + batched.append(v) + reference.append(scalar_values[route][i]) + delta = _array_delta(batched, reference) + delta["allclose_rtol_1e-12"] = bool( + np.allclose(batched, reference, rtol=1e-12, atol=0.0, equal_nan=True) + ) + delta["n_compared"] = len(batched) + within[route] = delta + return {"vmap_vs_scalar_within_route": within, "across_routes": vmap_row["likelihood_gate"]} + + +def _library_label(rows: dict) -> dict: + per_row = {} + for label, row in rows.items(): + counts = {route: row["compile"][route]["hlo_sort_count"] for route in ROUTES} + if counts["control"] == counts["nodedup"]: + match = "injection_ineffective" + elif counts["library"] == counts["control"]: + match = "control" + elif counts["library"] == counts["nodedup"]: + match = "nodedup" + else: + match = "neither" + hashes = {route: row["compile"][route]["hlo_sha256"] for route in ROUTES} + per_row[label] = { + "hlo_sort_count": counts, + "stablehlo_sort_count": { + route: row["compile"][route]["stablehlo_sort_count"] for route in ROUTES + }, + "library_matches": match, + "library_hlo_identical_to": [ + route for route in ("control", "nodedup") if hashes[route] == hashes["library"] + ], + } + labels = {entry["library_matches"] for entry in per_row.values()} + overall = labels.pop() if len(labels) == 1 else "inconsistent" + return {"per_row": per_row, "library_matches": overall} + + +# =========================================================================== +# Run +# =========================================================================== + +rows: dict[str, dict] = {} +gates: dict[str, dict] = {} +model_configurations: dict[str, dict] = {} +free_parameters: dict[str, int] = {} + +for model_name in MODELS: + setup = _simple_setup() if model_name == "simple" else _cluster_setup() + model_configurations[model_name] = setup["configuration"] + # Pytree registration, as the phase-1 cells and autofit's JAX Fitness do. It is + # load-bearing for the gradient gate: without it, jax.grad of this likelihood + # w.r.t. the physical vector comes back identically ZERO (forward values are + # unaffected) — measured 2026-09-23 on PyAutoFit/PyAutoLens main. + for _model in setup["models"].values(): + register_model_pytrees(_model) + for variant in ("solved", "plain"): + model = setup["models"][variant] + free_parameters[f"{model_name}_{variant}"] = int(model.prior_count) + stream = _vector_stream(model, N_STREAM, SEED + (0 if variant == "solved" else 1)) + factory = _likelihood_factory(setup, variant) + label = f"{model_name}_{variant}" + rows[label] = _run_row(label, factory, stream) + if label == "simple_solved": + # Fail fast: if the two substituted bodies lower to the same program + # the injection did not take, and nothing below would mean anything. + counts = {r: rows[label]["compile"][r]["hlo_sort_count"] for r in ROUTES} + if counts["control"] == counts["nodedup"]: + raise RuntimeError( + f"FAIL: control and nodedup lower with the same sort count ({counts}); " + "the injection did not change the traced program." + ) + if variant == "solved": + gates[f"{label}_positions"] = _positions_gate( + label, _positions_factory(setup, variant), stream + ) + if label == "simple_solved": + gates[f"{label}_grad"] = _grad_gate(label, factory, stream) + vlabel = f"{label}_vmap{VMAP_BATCH}" + rows[vlabel] = _run_row( + vlabel, lambda f=factory: jax.vmap(f()), stream, batch=VMAP_BATCH + ) + gates[f"{vlabel}"] = _vmap_gate(rows[vlabel], rows[label]) + +library_label = _library_label(rows) + + +def _gate_summary() -> dict: + """One flat verdict table: every gate, control vs nodedup and control vs library.""" + summary = {} + for label, row in rows.items(): + for pair in ("control_vs_nodedup", "control_vs_library"): + g = row["likelihood_gate"][pair] + summary[f"{label}.log_likelihood.{pair}"] = { + "pass": g["bit_identical"], + "max_abs_delta": g["max_abs_delta"], + "max_rel_delta": g["max_rel_delta"], + } + for label, gate in gates.items(): + if label.endswith("_positions"): + for pair, g in gate["pairs"].items(): + summary[f"{label}.{pair}"] = { + "pass": g["array_equal_nan_aware"], + "max_abs_delta": g["max_abs_delta"], + } + elif label.endswith("_grad"): + for pair, g in gate["pairs"].items(): + summary[f"{label}.{pair}"] = { + "pass": g["allclose"] and all(gate["all_finite"].values()), + "bit_identical": g["bit_identical"], + "max_abs_delta": g["max_abs_delta"], + "max_rel_delta": g["max_rel_delta"], + } + else: + for route, g in gate["vmap_vs_scalar_within_route"].items(): + summary[f"{label}.vmap_vs_scalar.{route}"] = { + "pass": g["allclose_rtol_1e-12"], + "bit_identical": g["bit_identical"], + "max_abs_delta": g["max_abs_delta"], + } + return summary + + +gate_summary = _gate_summary() +bit_identical = all( + rows[label]["likelihood_gate"][pair]["bit_identical"] + for label in rows + for pair in ("control_vs_nodedup", "control_vs_library") +) + +config_name = _cli.config_name or ( + "local_cpu_fp64" if jax.default_backend() == "cpu" else "unlabelled_device_fp64" +) +_home = str(Path.home()) + + +def _scrub(obj): + """Replace the home directory in every string (no /home/ in a committed JSON).""" + if isinstance(obj, dict): + return {k: _scrub(v) for k, v in obj.items()} + if isinstance(obj, list | tuple): + return [_scrub(v) for v in obj] + if isinstance(obj, str) and _home and _home != "/": + return obj.replace(_home, "~") + return obj + + +device = device_info_dict() +if device.get("jax_compilation_cache_dir"): + device["jax_compilation_cache_dir"] = ( + "/" + Path(device["jax_compilation_cache_dir"]).name + ) + +summary = { + "cell": "vertex_dedup_ab", + "issue": "PyAutoLabs/PyAutoArray#568", + "config_name": config_name, + "quick": QUICK, + "models": list(MODELS), + "library_versions": { + "autolens": al.__version__, + "autoarray": aa.__version__, + "autofit": af.__version__, + }, + "package_versions": {"jax": jax.__version__, "jaxlib": jaxlib.__version__}, + "source_revisions": source_revisions(_ROOT), + "autoarray_imported_from": str(Path(aa.__file__).resolve().parent.parent), + "target": TARGET_DOTTED, + "control_source": { + "repo": "PyAutoArray", + "sha": CONTROL_SOURCE_SHA, + "path": "autoarray/structures/triangles/coordinate_array.py", + "body": _BODY_PROVENANCE["control"]["body"], + "bytecode_sha256": _BODY_PROVENANCE["control"]["bytecode_sha256"], + }, + "nodedup_body": _BODY_PROVENANCE["nodedup"]["body"], + "nodedup_bytecode_sha256": _BODY_PROVENANCE["nodedup"]["bytecode_sha256"], + "body_provenance_captured": "import time (see _body_provenance)", + "device": device, + "jax_devices": [str(d) for d in jax.devices()], + "machine": machine_info_dict(), + "thread_environment": thread_environment(), + "sched_affinity": len(os.sched_getaffinity(0)), + "os_cpu_count": os.cpu_count(), + "xla_flags": os.environ.get("XLA_FLAGS"), + "jax_platforms": os.environ.get("JAX_PLATFORMS"), + "jax_enable_x64": bool(jax.config.jax_enable_x64), + "loadavg_start": list(_LOADAVG_START), + "loadavg_end": list(os.getloadavg()), + "protocol": { + "routes": list(ROUTES), + "n_rounds": N_ROUNDS, + "n_calls_per_round": N_CALLS, + "n_warm": N_WARM, + "n_stream": N_STREAM, + "n_gate_instances": N_GATE, + "vmap_batch": VMAP_BATCH, + "instance_seed": SEED, + "instance_stream": "entry 0 = prior medians; rest = vector_from_unit_vector(U(0.25,0.75))", + "argument": "physical parameter vector; instance_from_vector(xp=jnp) inside the trace", + "cache_trap_guard": "fresh closure + fresh solver/analyses per route; jax.clear_caches()", + "bootstrap": {"samples": BOOTSTRAP_SAMPLES, "seed": BOOTSTRAP_SEED, "interval": "90%"}, + "cluster_gates": "log-likelihood and positions only (no cluster grad/vmap)", + "pytrees": "autofit.jax.register_model(model) for every model before any trace", + }, + "free_parameters": free_parameters, + "model_configuration": model_configurations, + "library_label": library_label, + "library_matches": library_label["library_matches"], + "bit_identical": bit_identical, + "gate_summary": gate_summary, + "rows": rows, + "gates": gates, + "wall_s": float(time.perf_counter() - _WALL_START), +} + +dict_path, chart_path = resolve_output_paths( + _cli, + default_dir=_ROOT / "results" / "breakdown" / "point_source", + default_basename="vertex_dedup_ab_local", + cell="vertex_dedup_ab", +) +dict_path.write_text(json.dumps(_scrub(summary), indent=2)) + +# --------------------------------------------------------------------------- +# PNG: per-row boxplots, control vs nodedup vs library +# --------------------------------------------------------------------------- +colours = {"control": "#C44E52", "nodedup": "#4C72B0", "library": "#8C8C8C"} +fig, axes = plt.subplots( + nrows=1, ncols=len(rows), figsize=(4.2 * len(rows), 5.0), constrained_layout=True +) +axes = np.atleast_1d(axes) +for ax, (label, row) in zip(axes, rows.items()): + data = [row["per_call_ms"][route] for route in ROUTES] + box = ax.boxplot(data, whis=(10, 90), showfliers=True, patch_artist=True) + for patch, route in zip(box["boxes"], ROUTES): + patch.set_facecolor(colours[route]) + patch.set_alpha(0.6) + ax.set_xticks(range(1, len(ROUTES) + 1)) + ax.set_xticklabels(ROUTES) + ax.set_ylabel("ms per call" + (f" (batch of {row['batch']})" if row["batch"] else "")) + ratio = row["ratio_control_over_nodedup"] + ax.set_title( + f"{label}\ncontrol/nodedup {ratio['ratio']:.2f}x " + f"[{ratio['ci90_low']:.2f}, {ratio['ci90_high']:.2f}]", + fontsize=9, + ) + ax.set_ylim(bottom=0) +fig.suptitle( + f"PointSolver vertex-dedup A/B ({config_name}); library_matches=" + f"{library_label['library_matches']}; bit_identical={bit_identical}; " + f"whiskers p10/p90", + fontsize=10, +) +fig.savefig(chart_path, dpi=150) +plt.close(fig) + +print("\n" + "=" * 100) +print(f"VERTEX-DEDUP A/B ({config_name}, rounds={N_ROUNDS}, calls/round={N_CALLS})") +print("=" * 100) +print( + f" {'row':<22} {'route':<8} {'median':>9} {'p10':>9} {'p90':>9} {'min':>9} {'max':>9}" + f" {'sorts':>6} {'compile_s':>9}" +) +for label, row in rows.items(): + for route in ROUTES: + s = row["stats"][route] + c = row["compile"][route] + print( + f" {label:<22} {route:<8} {s['median_ms']:9.3f} {s['p10_ms']:9.3f} {s['p90_ms']:9.3f}" + f" {s['min_ms']:9.3f} {s['max_ms']:9.3f} {c['hlo_sort_count']:6d}" + f" {c['compile_s']:9.1f}" + ) + ratio = row["ratio_control_over_nodedup"] + print( + f" {'':<22} control/nodedup {ratio['ratio']:.3f} " + f"[90% {ratio['ci90_low']:.3f}, {ratio['ci90_high']:.3f}] " + f"MDI {row['minimum_detectable_improvement']:.3f}" + ) +print("-" * 100) +print(f" library_matches: {library_label['library_matches']}") +print(f" bit_identical (log L, all rows, control vs nodedup/library): {bit_identical}") +for name, verdict in gate_summary.items(): + if not verdict["pass"]: + print(f" GATE NOT PASSED: {name}: {verdict}") +print(f" wall: {summary['wall_s']:.0f} s") +print(f" Results JSON: {dict_path}") +print(f" Results PNG: {chart_path}")