Skip to content

Fix ASV references to mamba - #1898

Merged
erogluorhan merged 1 commit into
mainfrom
cmd/ci-fix
Nov 13, 2026
Merged

erogluorhan merged 1 commit into
mainfrom
cmd/ci-fix

Conversation

@cmdupuis3

@cmdupuis3 cmdupuis3 commented Nov 13, 2026 •

Copy link
Copy Markdown
Collaborator

Closes #1897

Overview

The PR benchmark workflow failed in Setup with "Could not find 'conda' in PATH": asv.conf.json uses environment_type "conda", so asv shells out to a conda executable, which micromamba does not provide. mamba in create-args used to pull conda in, but mamba 2.x is a standalone binary that no longer depends on it. mamba itself was only needed while environment_type was "mamba" (#831, switched back to "conda" in #844), and asv 0.6.6 no longer has a mamba backend.

  • asv-benchmarking-pr.yml: create-args is now asv conda. It used to be asv python-build mamba, but nothing used mamba or python-build, and asv needs the conda executable. A comment records why conda is there and why rattler isn’t.
  • ci.yml link-check and upstream-dev-ci.yml: these jobs set up with micromamba but ran conda list, so conda probably wasn’t there and those steps were likely failing. They now run micromamba list. The conda list steps in the main test job and the main-branch benchmarks stay, because those jobs use Miniforge.
  • asv.conf.json: the comment now lists the environment types asv 0.6.6 actually has.
  • The notebooks keep mamba install, as before.

PR Checklist

General

  • An issue is created and linked
  • Added appropriate labels (if your uxarray repo permissions allow it)
  • Filled out Overview and Expected Usage (if applicable) sections

Testing & Benchmarking

  • There is adequate test coverage of changes from this PR (add new tests if needed)
  • If this PR could affect performance, ran ASV benchmarks and confirmed they show expected behavior (add a new benchmark if necessary)

Documentation and Examples

  • If touched any notebook files, cleared the output of all cells before committing

AI Disclosure

AI Usage:

  • I have tested and take responsibility for all AI-generated content in my PR.

@cmdupuis3
cmdupuis3 requested a review from Sevans711 November 13, 2026 18:08
@review-notebook-app

Copy link
Copy Markdown

Check out this pull request on  ReviewNB

See visual diffs & provide feedback on Jupyter Notebooks.


Powered by ReviewNB

@Sevans711 Sevans711 added the run-benchmark Run ASV benchmark workflow label Nov 13, 2026
@Sevans711

Copy link
Copy Markdown
Collaborator

Running the three different workflows against this PR to confirm whether they are fixed:

  1. ASV suite (added the run-benchmark label)
  2. CI: https://github.com/UXARRAY/uxarray/actions/runs/43480525806
  3. CI Upstream: https://github.com/UXARRAY/uxarray/actions/runs/43480651017

I'll give a full review once these all finish!

The PR benchmark workflow failed in Setup with "Could not find 'conda' in
PATH": asv.conf.json uses environment_type "conda", so asv shells out to a
conda executable, which micromamba does not provide. `mamba` in create-args
used to pull conda in, but mamba 2.x is a standalone binary that no longer
depends on it. mamba itself was only needed while environment_type was
"mamba" (#831, switched back to "conda" in #844); asv 0.6.6 has no mamba
backend.

Install `conda` instead of `mamba`, and drop `python-build`: asv builds the
wheel in its own env, where the asv.conf.json matrix provides it.

asv's faster "rattler" backend was considered, but it passes the
`nodefaults` entry of ci/environment.yml to the solver as a real channel and
fails fetching conda.anaconda.org/nodefaults. `nodefaults` stays: it is what
keeps uxarray_build defined by the repo alone, not by a user's .condarc.

Also:
- ci.yml link-check and upstream-dev-ci.yml set up with micromamba but ran
  `conda list`, which micromamba cannot satisfy; use `micromamba list`.
- asv.conf.json: list the environment types asv 0.6.6 actually has.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@cmdupuis3 cmdupuis3 added bug Something isn't working CI Continuous Integration labels Nov 13, 2026
@cmdupuis3

Copy link
Copy Markdown
Collaborator Author

@Sevans711 Okay np, I've been trying a few different approaches, so make sure you're using the latest code.

I was looking at potentially using rattler, but for now it's just a quick fix.

@cmdupuis3 cmdupuis3 changed the title Replace setup-micromamba with setup-miniconda; drop mamba Fix ASV references to mamba Nov 13, 2026
@github-actions

github-actions Bot commented Nov 13, 2026 •

Copy link
Copy Markdown

ASV Benchmarking

Benchmark Comparison Results

Benchmarks that have stayed the same:

Change Before [29192b3] After [3bc3e6d] Ratio Benchmark (Parameter)
949±20μs 963±20μs 1.01 connectivity.Connectivity.time_edge_face('120km')
455±10μs 464±5μs 1.02 connectivity.Connectivity.time_edge_face('480km')
6.10±0.07ms 6.22±0.2ms 1.02 connectivity.Connectivity.time_edge_node('120km')
1.21±0.02ms 1.22±0.07ms 1.01 connectivity.Connectivity.time_edge_node('480km')
70.0±10μs 69.5±10μs 0.99 connectivity.Connectivity.time_face_edge('120km')
62.8±4μs 62.1±2μs 0.99 connectivity.Connectivity.time_face_edge('480km')
941±10μs 1.01±0.04ms 1.07 connectivity.Connectivity.time_face_face('120km')
385±20μs 387±30μs 1.01 connectivity.Connectivity.time_face_face('480km')
61.1±20μs 57.0±8μs 0.93 connectivity.Connectivity.time_face_node('120km')
57.7±3μs 56.6±2μs 0.98 connectivity.Connectivity.time_face_node('480km')
466±40μs 458±20μs 0.98 connectivity.Connectivity.time_n_nodes_per_face('120km')
384±30μs 385±20μs 1.00 connectivity.Connectivity.time_n_nodes_per_face('480km')
1.35±0.05ms 1.37±0.01ms 1.01 connectivity.Connectivity.time_node_edge('120km')
471±10μs 473±10μs 1.00 connectivity.Connectivity.time_node_edge('480km')
95.4±3ms 95.0±2ms 1.00 connectivity.Connectivity.time_node_face('120km')
6.02±0.04ms 5.54±0.03ms 0.92 connectivity.Connectivity.time_node_face('480km')
1.42M 1.42M 1.00 connectivity.ConnectivityTracemalloc.track_peakmem_edge_face('120km')
105k 105k 1.00 connectivity.ConnectivityTracemalloc.track_peakmem_edge_face('480km')
6.48M 6.48M 1.00 connectivity.ConnectivityTracemalloc.track_peakmem_edge_node('120km')
419k 419k 1.00 connectivity.ConnectivityTracemalloc.track_peakmem_edge_node('480km')
2.05k 2.05k 1.00 connectivity.ConnectivityTracemalloc.track_peakmem_face_edge('120km')
2.05k 2.05k 1.00 connectivity.ConnectivityTracemalloc.track_peakmem_face_edge('480km')
1.6M 1.6M 1.00 connectivity.ConnectivityTracemalloc.track_peakmem_face_face('120km')
101k 101k 1.00 connectivity.ConnectivityTracemalloc.track_peakmem_face_face('480km')
2.18k 2.18k 1.00 connectivity.ConnectivityTracemalloc.track_peakmem_face_node('120km')
2.18k 2.18k 1.00 connectivity.ConnectivityTracemalloc.track_peakmem_face_node('480km')
240k 240k 1.00 connectivity.ConnectivityTracemalloc.track_peakmem_n_nodes_per_face('120km')
26k 26k 1.00 connectivity.ConnectivityTracemalloc.track_peakmem_n_nodes_per_face('480km')
1.9M 1.9M 1.00 connectivity.ConnectivityTracemalloc.track_peakmem_node_edge('120km')
127k 127k 1.00 connectivity.ConnectivityTracemalloc.track_peakmem_node_edge('480km')
11.9M 11.9M 1.00 connectivity.ConnectivityTracemalloc.track_peakmem_node_face('120km')
747k 747k 1.00 connectivity.ConnectivityTracemalloc.track_peakmem_node_face('480km')
9.13±0.1ms 9.17±0.4ms 1.01 face_bounds.FaceBounds.time_face_bounds(PosixPath('/home/runner/work/uxarray/uxarray/test/meshfiles/mpas/QU/oQU480.231010.nc'))
2.59±0.07ms 2.69±0.06ms 1.04 face_bounds.FaceBounds.time_face_bounds(PosixPath('/home/runner/work/uxarray/uxarray/test/meshfiles/scrip/outCSne8/outCSne8.nc'))
11.0±0.09ms 11.1±8ms 1.01 face_bounds.FaceBounds.time_face_bounds(PosixPath('/home/runner/work/uxarray/uxarray/test/meshfiles/ugrid/geoflow-small/grid.nc'))
1.41±0.06ms 1.39±0.03ms 0.99 face_bounds.FaceBounds.time_face_bounds(PosixPath('/home/runner/work/uxarray/uxarray/test/meshfiles/ugrid/quad-hexagon/grid.nc'))
57.3k 57.3k 1.00 face_bounds.FaceBounds.track_nbytes_face_bounds(PosixPath('/home/runner/work/uxarray/uxarray/test/meshfiles/mpas/QU/oQU480.231010.nc'))
12.3k 12.3k 1.00 face_bounds.FaceBounds.track_nbytes_face_bounds(PosixPath('/home/runner/work/uxarray/uxarray/test/meshfiles/scrip/outCSne8/outCSne8.nc'))
123k 123k 1.00 face_bounds.FaceBounds.track_nbytes_face_bounds(PosixPath('/home/runner/work/uxarray/uxarray/test/meshfiles/ugrid/geoflow-small/grid.nc'))
128 128 1.00 face_bounds.FaceBounds.track_nbytes_face_bounds(PosixPath('/home/runner/work/uxarray/uxarray/test/meshfiles/ugrid/quad-hexagon/grid.nc'))
1.27M 1.27M 1.00 face_bounds.FaceBounds.track_nbytes_grid_with_bounds(PosixPath('/home/runner/work/uxarray/uxarray/test/meshfiles/mpas/QU/oQU480.231010.nc'))
50.1k 50.1k 1.00 face_bounds.FaceBounds.track_nbytes_grid_with_bounds(PosixPath('/home/runner/work/uxarray/uxarray/test/meshfiles/scrip/outCSne8/outCSne8.nc'))
1.48M 1.48M 1.00 face_bounds.FaceBounds.track_nbytes_grid_with_bounds(PosixPath('/home/runner/work/uxarray/uxarray/test/meshfiles/ugrid/geoflow-small/grid.nc'))
712 712 1.00 face_bounds.FaceBounds.track_nbytes_grid_with_bounds(PosixPath('/home/runner/work/uxarray/uxarray/test/meshfiles/ugrid/quad-hexagon/grid.nc'))
1.69M 1.69M 1.00 face_bounds.FaceBounds.track_peakmem_face_bounds(PosixPath('/home/runner/work/uxarray/uxarray/test/meshfiles/mpas/QU/oQU480.231010.nc'))
1.69M 1.69M 1.00 face_bounds.FaceBounds.track_peakmem_face_bounds(PosixPath('/home/runner/work/uxarray/uxarray/test/meshfiles/scrip/outCSne8/outCSne8.nc'))
1.85M 1.85M 1.00 face_bounds.FaceBounds.track_peakmem_face_bounds(PosixPath('/home/runner/work/uxarray/uxarray/test/meshfiles/ugrid/geoflow-small/grid.nc'))
35.3k 35.3k 1.00 face_bounds.FaceBounds.track_peakmem_face_bounds(PosixPath('/home/runner/work/uxarray/uxarray/test/meshfiles/ugrid/quad-hexagon/grid.nc'))
1.14±0.02μs 1.12±0.03μs 0.98 geometry_kernels.AccucrossKernels.time_accucross
2.56±0.05μs 2.55±0.03μs 1.00 geometry_kernels.AccucrossKernels.time_accucross_pair
361±20ns 345±20ns 0.96 geometry_kernels.EFTPrimitives.time_acc_sqrt_re
311±20ns 341±20ns 1.09 geometry_kernels.EFTPrimitives.time_diff_of_products
290±20ns 271±10ns 0.93 geometry_kernels.EFTPrimitives.time_two_prod
276±30ns 280±30ns 1.02 geometry_kernels.EFTPrimitives.time_two_sum
470±9ns 476±30ns 1.01 geometry_kernels.GCAConstLatIntersection.time_accux_constlat_kernel
526±20ns 511±9ns 0.97 geometry_kernels.GCAConstLatIntersection.time_gca_const_lat_intersection
576±20ns 566±20ns 0.98 geometry_kernels.GCAConstLatIntersection.time_try_gca_const_lat_intersection
887±30ns 816±30ns 0.92 geometry_kernels.GCAGCAIntersection.time_accux_gca_kernel
987±70ns 932±20ns 0.94 geometry_kernels.GCAGCAIntersection.time_gca_gca_intersection
1.17±0.02μs 1.09±0.04μs 0.93 geometry_kernels.GCAGCAIntersection.time_try_gca_gca_intersection
29.0±0.5μs 29.7±0.4μs 1.03 geometry_kernels.OrientPredicates.time_on_minor_arc
29.1±0.3μs 29.4±0.3μs 1.01 geometry_kernels.OrientPredicates.time_orient3d_on_sphere
3.04±0ms 3.06±0ms 1.00 geometry_samebody.SameBodyConstLat.time_accux_dispatch
1.17±0ms 1.16±0ms 1.00 geometry_samebody.SameBodyConstLat.time_accux_kernel
2.28±0ms 2.29±0ms 1.00 geometry_samebody.SameBodyConstLat.time_fp64_dispatch
148±0.1μs 148±0.3μs 1.00 geometry_samebody.SameBodyConstLat.time_fp64_kernel
28.3±0.02ms 27.8±0.03ms 0.98 geometry_samebody_gcagca.SameBodyGcaGca.time_accux_dispatch
6.81±0.01ms 6.81±0.01ms 1.00 geometry_samebody_gcagca.SameBodyGcaGca.time_accux_kernel
21.2±0.3ms 21.2±0.2ms 1.00 geometry_samebody_gcagca.SameBodyGcaGca.time_fp64_dispatch
867±0.3μs 868±8μs 1.00 geometry_samebody_gcagca.SameBodyGcaGca.time_fp64_kernel
801±7ms 811±10ms 1.01 import.Imports.timeraw_import_uxarray
1 1 1.00 lazy_grid_construction.LazyGridConstruction.track_computes_isel
2 2 1.00 lazy_grid_construction.LazyGridConstruction.track_computes_open_grid_chunked
97.5±2ms 97.8±0.5ms 1.00 lazy_grid_construction.OpenGridChunked.time_open_grid('120km')
135±2ms 141±2ms 1.04 lazy_grid_construction.OpenGridChunked.time_open_grid('480km')
2.01M 1.99M 0.99 lazy_grid_construction.OpenGridChunked.track_peakmem_open_grid('120km')
2.32M 2.3M 0.99 lazy_grid_construction.OpenGridChunked.track_peakmem_open_grid('480km')
2.38±0.02ms 2.37±0.02ms 0.99 mpas_ocean.CheckNorm.time_check_norm('120km')
2.04±0.05ms 1.86±0.03ms 0.91 mpas_ocean.CheckNorm.time_check_norm('480km')
766±5μs 789±10μs 1.03 mpas_ocean.ConnectivityConstruction.time_face_face_connectivity('120km')
366±6μs 373±6μs 1.02 mpas_ocean.ConnectivityConstruction.time_face_face_connectivity('480km')
498±7μs 502±6μs 1.01 mpas_ocean.ConnectivityConstruction.time_n_nodes_per_face('120km')
391±7μs 414±4μs 1.06 mpas_ocean.ConnectivityConstruction.time_n_nodes_per_face('480km')
4.46±0.05ms 4.44±0.09ms 1.00 mpas_ocean.ConstructFaceLatLon.time_cartesian_averaging('120km')
3.33±0.08ms 3.32±0.02ms 1.00 mpas_ocean.ConstructFaceLatLon.time_cartesian_averaging('480km')
126±0.7ms 123±0.5ms 0.98 mpas_ocean.ConstructFaceLatLon.time_welzl('120km')
10.6±0.02ms 10.8±0.09ms 1.02 mpas_ocean.ConstructFaceLatLon.time_welzl('480km')
20.4±0.03ms 20.6±0.1ms 1.01 mpas_ocean.ConstructTreeStructures.time_ball_tree('120km')
1.00±0.01ms 1.01±0.01ms 1.00 mpas_ocean.ConstructTreeStructures.time_ball_tree('480km')
10.6±0.04ms 10.6±0.08ms 1.00 mpas_ocean.ConstructTreeStructures.time_kd_tree('120km')
611±20μs 596±20μs 0.98 mpas_ocean.ConstructTreeStructures.time_kd_tree('480km')
586±20ms 550±3ms 0.94 mpas_ocean.CrossSections.time_const_lat('120km', 1)
299±10ms 281±6ms 0.94 mpas_ocean.CrossSections.time_const_lat('120km', 2)
150±2ms 149±3ms 1.00 mpas_ocean.CrossSections.time_const_lat('120km', 4)
504±5ms 498±2ms 0.99 mpas_ocean.CrossSections.time_const_lat('480km', 1)
257±3ms 248±4ms 0.97 mpas_ocean.CrossSections.time_const_lat('480km', 2)
133±2ms 130±0.9ms 0.98 mpas_ocean.CrossSections.time_const_lat('480km', 4)
28.6±0.2ms 28.8±0.5ms 1.00 mpas_ocean.DualMesh.time_dual_mesh_construction('120km')
3.19±0.07ms 3.15±0.1ms 0.99 mpas_ocean.DualMesh.time_dual_mesh_construction('480km')
12.5±2ms 11.7±2ms 0.94 mpas_ocean.FaceAreas.time_face_areas('120km')
3.55±0.1ms 3.37±0.2ms 0.95 mpas_ocean.FaceAreas.time_face_areas('480km')
229k 229k 1.00 mpas_ocean.FaceAreas.track_nbytes_face_areas('120km')
14.3k 14.3k 1.00 mpas_ocean.FaceAreas.track_nbytes_face_areas('480km')
2.12M 2.12M 1.00 mpas_ocean.FaceAreas.track_peakmem_face_areas('120km')
688k 688k 1.00 mpas_ocean.FaceAreas.track_peakmem_face_areas('480km')
54.7±0.6ms 54.7±1ms 1.00 mpas_ocean.GeoDataFrame.time_to_geodataframe('120km', 'exclude')
166±2ms 158±3ms 0.96 mpas_ocean.GeoDataFrame.time_to_geodataframe('120km', 'split')
4.91±0.3ms 5.05±0.3ms 1.03 mpas_ocean.GeoDataFrame.time_to_geodataframe('480km', 'exclude')
32.0±0.3ms 30.6±1ms 0.96 mpas_ocean.GeoDataFrame.time_to_geodataframe('480km', 'split')
10.5±0.06ms 10.4±0.01ms 0.99 mpas_ocean.Gradient.time_gradient('120km')
1.75±0.01ms 1.76±0.01ms 1.01 mpas_ocean.Gradient.time_gradient('480km')
457k 457k 1.00 mpas_ocean.Gradient.track_nbytes_gradient('120km')
28.7k 28.7k 1.00 mpas_ocean.Gradient.track_nbytes_gradient('480km')
3.44M 3.44M 1.00 mpas_ocean.Gradient.track_peakmem_gradient('120km')
226k 226k 1.00 mpas_ocean.Gradient.track_peakmem_gradient('480km')
213±4μs 211±0.9μs 0.99 mpas_ocean.HoleEdgeIndices.time_construct_hole_edge_indices('120km')
95.6±0.5μs 97.9±4μs 1.02 mpas_ocean.HoleEdgeIndices.time_construct_hole_edge_indices('480km')
178±5μs 178±2μs 1.00 mpas_ocean.Integrate.time_integrate('120km')
165±10μs 157±1μs 0.95 mpas_ocean.Integrate.time_integrate('480km')
18.4M 18.4M 1.00 mpas_ocean.Integrate.track_nbytes_integrate('120km')
1.2M 1.2M 1.00 mpas_ocean.Integrate.track_nbytes_integrate('480km')
131±0.7ms 127±1ms 0.98 mpas_ocean.MatplotlibConversion.time_dataarray_to_polycollection('120km', 'exclude')
129±0.5ms 128±0.6ms 0.99 mpas_ocean.MatplotlibConversion.time_dataarray_to_polycollection('120km', 'include')
130±1ms 128±0.3ms 0.99 mpas_ocean.MatplotlibConversion.time_dataarray_to_polycollection('120km', 'split')
9.28±0.1ms 9.20±0.08ms 0.99 mpas_ocean.MatplotlibConversion.time_dataarray_to_polycollection('480km', 'exclude')
9.40±0.07ms 9.60±0.5ms 1.02 mpas_ocean.MatplotlibConversion.time_dataarray_to_polycollection('480km', 'include')
9.20±0.2ms 9.13±0.06ms 0.99 mpas_ocean.MatplotlibConversion.time_dataarray_to_polycollection('480km', 'split')
165±1ms 165±0.2ms 1.00 mpas_ocean.NeighborhoodBuild.time_build('120km', 1.0)
359±2ms 358±3ms 1.00 mpas_ocean.NeighborhoodBuild.time_build('120km', 5.0)
10.5±0.07ms 10.4±0.04ms 0.99 mpas_ocean.NeighborhoodBuild.time_build('480km', 1.0)
13.1±0.07ms 13.2±0.1ms 1.01 mpas_ocean.NeighborhoodBuild.time_build('480km', 5.0)
162±1ms 163±2ms 1.00 mpas_ocean.NeighborhoodBuild.time_query_radius('120km', 1.0)
353±2ms 356±4ms 1.01 mpas_ocean.NeighborhoodBuild.time_query_radius('120km', 5.0)
10.3±0.1ms 10.2±0.1ms 0.99 mpas_ocean.NeighborhoodBuild.time_query_radius('480km', 1.0)
12.9±0.06ms 12.7±0.04ms 0.98 mpas_ocean.NeighborhoodBuild.time_query_radius('480km', 5.0)
612.76 612.76 1.00 mpas_ocean.NeighborhoodBuild.track_mean_neighbors('120km', 15.0)
74.17 74.17 1.00 mpas_ocean.NeighborhoodBuild.track_mean_neighbors('120km', 5.0)
37.29 37.29 1.00 mpas_ocean.NeighborhoodBuild.track_mean_neighbors('480km', 15.0)
6.57 6.57 1.00 mpas_ocean.NeighborhoodBuild.track_mean_neighbors('480km', 5.0)
141M 141M 1.00 mpas_ocean.NeighborhoodBuild.track_nbytes_neighbors('120km', 15.0)
17.4M 17.4M 1.00 mpas_ocean.NeighborhoodBuild.track_nbytes_neighbors('120km', 5.0)
563k 563k 1.00 mpas_ocean.NeighborhoodBuild.track_nbytes_neighbors('480km', 15.0)
123k 123k 1.00 mpas_ocean.NeighborhoodBuild.track_nbytes_neighbors('480km', 5.0)
145M 145M 1.00 mpas_ocean.NeighborhoodBuild.track_peakmem_build('120km', 15.0)
21.5M 21.5M 1.00 mpas_ocean.NeighborhoodBuild.track_peakmem_build('120km', 5.0)
824k 824k 1.00 mpas_ocean.NeighborhoodBuild.track_peakmem_build('480km', 15.0)
384k 384k 1.00 mpas_ocean.NeighborhoodBuild.track_peakmem_build('480km', 5.0)
31.7±0.3ms 31.4±0.2ms 0.99 mpas_ocean.NeighborhoodDask.time_mean('120km', 'grid_chunks')
14.3±0.1ms 14.2±0.06ms 0.99 mpas_ocean.NeighborhoodDask.time_mean('120km', 'numpy')
29.1±0.9ms 28.8±0.4ms 0.99 mpas_ocean.NeighborhoodDask.time_mean('120km', 'time_chunks')
7.26±0.03ms 7.34±0.07ms 1.01 mpas_ocean.NeighborhoodDask.time_mean('480km', 'grid_chunks')
414±7μs 412±3μs 1.00 mpas_ocean.NeighborhoodDask.time_mean('480km', 'numpy')
4.94±0.03ms 4.93±0.01ms 1.00 mpas_ocean.NeighborhoodDask.time_mean('480km', 'time_chunks')
5.82M 5.82M 1.00 mpas_ocean.NeighborhoodDask.track_peakmem_mean('120km', 'grid_chunks')
2.75M 2.75M 1.00 mpas_ocean.NeighborhoodDask.track_peakmem_mean('120km', 'numpy')
5.68M 5.68M 1.00 mpas_ocean.NeighborhoodDask.track_peakmem_mean('120km', 'time_chunks')
177k 177k 1.00 mpas_ocean.NeighborhoodDask.track_peakmem_mean('480km', 'numpy')
535k 534k 1.00 mpas_ocean.NeighborhoodDask.track_peakmem_mean('480km', 'time_chunks')
3.35±0.01s 3.39±0.01s 1.01 mpas_ocean.NeighborhoodReduce.time_dataset_reduce('120km', 'mean')
3.49±0.03s 3.50±0.01s 1.00 mpas_ocean.NeighborhoodReduce.time_dataset_reduce('120km', 'median')
94.2±0.7ms 96.1±1ms 1.02 mpas_ocean.NeighborhoodReduce.time_dataset_reduce('480km', 'mean')
96.4±0.3ms 96.3±0.3ms 1.00 mpas_ocean.NeighborhoodReduce.time_dataset_reduce('480km', 'median')
366±1ms 363±2ms 0.99 mpas_ocean.NeighborhoodReduce.time_neighborhood_reduce('120km', 'mean')
392±4ms 390±0.5ms 0.99 mpas_ocean.NeighborhoodReduce.time_neighborhood_reduce('120km', 'median')
13.4±0.03ms 13.3±0.02ms 0.99 mpas_ocean.NeighborhoodReduce.time_neighborhood_reduce('480km', 'mean')
13.9±0.2ms 13.5±0.04ms 0.97 mpas_ocean.NeighborhoodReduce.time_neighborhood_reduce('480km', 'median')
4.94±0.01ms 4.99±0.04ms 1.01 mpas_ocean.NeighborhoodReduce.time_reduce('120km', 'mean')
34.4±0.2ms 34.3±0.2ms 1.00 mpas_ocean.NeighborhoodReduce.time_reduce('120km', 'median')
182±1μs 188±5μs 1.04 mpas_ocean.NeighborhoodReduce.time_reduce('480km', 'mean')
516±7μs 525±10μs 1.02 mpas_ocean.NeighborhoodReduce.time_reduce('480km', 'median')
234k 234k 1.00 mpas_ocean.NeighborhoodReduce.track_peakmem_reduce('120km', 'mean')
235k 235k 1.00 mpas_ocean.NeighborhoodReduce.track_peakmem_reduce('120km', 'median')
19.5k 19.5k 1.00 mpas_ocean.NeighborhoodReduce.track_peakmem_reduce('480km', 'mean')
19.6k 19.6k 1.00 mpas_ocean.NeighborhoodReduce.track_peakmem_reduce('480km', 'median')
406±20μs 381±20μs 0.94 mpas_ocean.PointInPolygon.time_face_search_lonlat('120km')
373±4μs 388±4μs 1.04 mpas_ocean.PointInPolygon.time_face_search_lonlat('480km')
357±8μs 354±20μs 0.99 mpas_ocean.PointInPolygon.time_face_search_xyz('120km')
356±9μs 351±10μs 0.99 mpas_ocean.PointInPolygon.time_face_search_xyz('480km')
98.6±0.7ms 98.1±1ms 0.99 mpas_ocean.RemapDownsample.time_bilinear_remapping
15.7±0.1ms 15.8±0.1ms 1.01 mpas_ocean.RemapDownsample.time_inverse_distance_weighted_remapping
14.3±0.4ms 14.3±0.05ms 1.00 mpas_ocean.RemapDownsample.time_nearest_neighbor_remapping
1.09±0.01s 1.09±0s 1.00 mpas_ocean.RemapUpsample.time_bilinear_remapping
25.3±0.2ms 26.0±0.4ms 1.03 mpas_ocean.RemapUpsample.time_inverse_distance_weighted_remapping
10.7±0.04ms 11.1±0.9ms 1.03 mpas_ocean.RemapUpsample.time_nearest_neighbor_remapping
7.66±0.2ms 7.68±0.2ms 1.00 mpas_ocean.ZonalAverage.time_zonal_average('120km')
4.63±0.05ms 4.60±0.1ms 0.99 mpas_ocean.ZonalAverage.time_zonal_average('480km')
1.022153377953614 1.0444557118517908 1.02 nogil_scaling.GILScaling.track_gil_scaling
947±20μs 980±20μs 1.03 open_dataset.OpenDataset.time_open_dataset('dataset', 'dataset')
1.98±0.06ms 1.94±0.02ms 0.98 open_dataset.OpenDataset.time_open_dataset('dataset', 'file')
4.32±0.02ms 4.35±0.07ms 1.01 open_dataset.OpenDataset.time_open_dataset('file', 'dataset')
5.31±0.05ms 5.39±0.2ms 1.01 open_dataset.OpenDataset.time_open_dataset('file', 'file')
177±0.8μs 200±20μs ~1.13 open_dataset.OpenDataset.time_open_dataset('grid', 'dataset')
1.11±0.02ms 1.17±0.02ms 1.05 open_dataset.OpenDataset.time_open_dataset('grid', 'file')
298±3ms 294±2ms 0.99 plots.PlotHealpix.time_default_plot(6)
2.76±0.01s 2.73±0.01s 0.99 plots.PlotHealpix.time_default_plot(8)
28M 28M 1.00 plots.PlotHealpix.track_peakmem_default_plot(6)
443M 443M 1.00 plots.PlotHealpix.track_peakmem_default_plot(8)
5.43±0.02ms 5.60±0.05ms 1.03 quad_hexagon.QuadHexagon.time_open_dataset
4.60±0.02ms 4.72±0.04ms 1.03 quad_hexagon.QuadHexagon.time_open_grid
408 408 1.00 quad_hexagon.QuadHexagon.track_nbytes_open_dataset
392 392 1.00 quad_hexagon.QuadHexagon.track_nbytes_open_grid
70.2k 70.2k 1.00 quad_hexagon.QuadHexagon.track_peakmem_open_dataset
69.8k 69.8k 1.00 quad_hexagon.QuadHexagon.track_peakmem_open_grid
10.3±0.5ms 10.4±0.4ms 1.01 subset.BoundingBox.time_bounding_box('120km')
5.87±0.2ms 5.74±0.2ms 0.98 subset.BoundingBox.time_bounding_box('480km')
2.38M 2.38M 1.00 subset.BoundingBox.track_peakmem_bounding_box('120km')
203k 203k 1.00 subset.BoundingBox.track_peakmem_bounding_box('480km')
2.96±0.03ms 3.05±7ms 1.03 subset.BoundingBoxHealpix.time_bounding_box(6)
12.6±0.2ms 12.6±0.2ms 1.01 subset.BoundingBoxHealpix.time_bounding_box(8)
2.26M 2.26M 1.00 subset.BoundingBoxHealpix.track_peakmem_bounding_box(6)
13.2M 13.2M 1.00 subset.BoundingBoxHealpix.track_peakmem_bounding_box(8)
713±3ms 706±4ms 0.99 to_raster.ToRaster.time_to_raster((10000.0, 10.0))
1.46±0.01s 1.45±0.01s 1.00 to_raster.ToRaster.time_to_raster((10000.0, 100.0))
1.69±0.01s 1.68±0.01s 0.99 to_raster.ToRaster.time_to_raster((100000.0, 100.0))
270M 270M 1.00 to_raster.ToRaster.track_peakmem((10000.0, 10.0))
680M 680M 1.00 to_raster.ToRaster.track_peakmem((10000.0, 100.0))
765M 765M 1.00 to_raster.ToRaster.track_peakmem((100000.0, 100.0))

Benchmarks that have got worse:

Change Before [29192b3] After [3bc3e6d] Ratio Benchmark (Parameter)
+ 298M 385M 1.29 face_bounds.FaceBoundsColdStartRss.track_peakmem_open_and_bounds(PosixPath('/home/runner/work/uxarray/uxarray/test/meshfiles/mpas/QU/oQU480.231010.nc'))
+ 298M 385M 1.29 face_bounds.FaceBoundsColdStartRss.track_peakmem_open_and_bounds(PosixPath('/home/runner/work/uxarray/uxarray/test/meshfiles/scrip/outCSne8/outCSne8.nc'))
+ 300M 385M 1.29 face_bounds.FaceBoundsColdStartRss.track_peakmem_open_and_bounds(PosixPath('/home/runner/work/uxarray/uxarray/test/meshfiles/ugrid/geoflow-small/grid.nc'))
+ 299M 385M 1.29 face_bounds.FaceBoundsColdStartRss.track_peakmem_open_and_bounds(PosixPath('/home/runner/work/uxarray/uxarray/test/meshfiles/ugrid/quad-hexagon/grid.nc'))
+ 276M 383M 1.39 import.Imports.track_peakmem_import_uxarray
+ 318M 385M 1.21 mpas_ocean.CrossSectionsPeakMem.track_peakmem_const_lat('120km', 1)
+ 318M 385M 1.21 mpas_ocean.CrossSectionsPeakMem.track_peakmem_const_lat('120km', 2)
+ 318M 385M 1.21 mpas_ocean.CrossSectionsPeakMem.track_peakmem_const_lat('120km', 4)
+ 301M 385M 1.28 mpas_ocean.CrossSectionsPeakMem.track_peakmem_const_lat('480km', 1)
+ 301M 385M 1.28 mpas_ocean.CrossSectionsPeakMem.track_peakmem_const_lat('480km', 2)
+ 301M 385M 1.28 mpas_ocean.CrossSectionsPeakMem.track_peakmem_const_lat('480km', 4)
+ 314M 385M 1.23 mpas_ocean.GradientColdStartRss.track_peakmem_gradient('120km')
+ 294M 385M 1.31 mpas_ocean.GradientColdStartRss.track_peakmem_gradient('480km')
+ 676k 745k 1.1 mpas_ocean.NeighborhoodDask.track_peakmem_mean('480km', 'grid_chunks')
+ 319M 385M 1.21 mpas_ocean.ZonalAveragePeakMem.track_peakmem_zonal_average('120km')
+ 303M 385M 1.27 mpas_ocean.ZonalAveragePeakMem.track_peakmem_zonal_average('480km')

@Sevans711 Sevans711 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Simple-looking changes touching only a few lines, and I'm seeing successful runs in ASV, CI, and Upstream CI now (links in my previous comment), so I'm happy to approve. Thank you for handling this one!

@erogluorhan
erogluorhan merged commit f28d5c8 into main Nov 13, 2026
34 checks passed
@erogluorhan
erogluorhan deleted the cmd/ci-fix branch November 13, 2026 23:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working CI Continuous Integration run-benchmark Run ASV benchmark workflow

Projects

None yet

Development

Successfully merging this pull request may close these issues.

ASV mamba no longer depends on conda

3 participants