Skip to content

Lazy neighborhood filter kernel compilation - #1708

Draft
cmdupuis3 wants to merge 2 commits into
UXARRAY:mainfrom
cmdupuis3:cmd/lazy_nb_kernels
Draft

Lazy neighborhood filter kernel compilation#1708
cmdupuis3 wants to merge 2 commits into
UXARRAY:mainfrom
cmdupuis3:cmd/lazy_nb_kernels

Conversation

@cmdupuis3

@cmdupuis3 cmdupuis3 commented Aug 25, 2026

Copy link
Copy Markdown
Collaborator

Closes #1706

Overview

This PR should solve an issue introduced with PR #941, wherein the neighborhood filter gufunc-based kernels would compile eagerly, forcing a major slowdown of basic import uxarray imports, as well as creating threadpools that would eventually block safe forking that may be needed in PR #1700.

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

  • Adequate tests are created if there is new functionality
  • Tests are not too basic (such as simply calling a function and nothing else)
  • Tests cover all major paths in your new functions
  • If this PR could affect performance, ran ASV benchmarks and confirmed they show expected behavior (add a new benchmark if necessary)

Documentation

  • Docstrings have been added to all new functions
  • Docstrings have been updated with any function changes
  • User (public) functions have been added to docs/api.rst
  • Internal (private) function names start with an underscore (_)

Examples

  • All notebook examples cleared the output of all cells before committing
  • New notebook examples added to appropriate folder (gallery: docs/examples/; guide: docs/user-guide/; quickstart: docs/getting-started/)
  • New notebook examples referenced in appropriate .rst file (gallery: docs/gallery.rst; guide: docs/userguide.rst; quickstart: docs/quickstart.rst)
  • New notebook gallery examples added entry in docs/gallery.yml with appropriate thumbnail photo in docs/_static/thumbnails/

AI Disclosure

AI Usage: Claude Opus 5

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

@cmdupuis3
cmdupuis3 requested a review from Sevans711 August 25, 2026 20:34
@cmdupuis3 cmdupuis3 self-assigned this Aug 25, 2026
@cmdupuis3 cmdupuis3 added bug Something isn't working run-benchmark Run ASV benchmark workflow benchmarking Related to benchmarks, memory usage, and/or time profiling labels Aug 25, 2026
@github-actions

github-actions Bot commented Aug 25, 2026

Copy link
Copy Markdown

ASV Benchmarking

Benchmark Comparison Results

Benchmarks that have improved:

Change Before [c832ff1] After [6014216] Ratio Benchmark (Parameter)
- 409M 336M 0.82 face_bounds.FaceBoundsColdStartRss.peakmem_open_and_bounds(PosixPath('/home/runner/work/uxarray/uxarray/test/meshfiles/mpas/QU/oQU480.231010.nc'))
- 439M 366M 0.83 face_bounds.FaceBoundsColdStartRss.peakmem_open_and_bounds(PosixPath('/home/runner/work/uxarray/uxarray/test/meshfiles/scrip/outCSne8/outCSne8.nc'))
- 412M 338M 0.82 face_bounds.FaceBoundsColdStartRss.peakmem_open_and_bounds(PosixPath('/home/runner/work/uxarray/uxarray/test/meshfiles/ugrid/geoflow-small/grid.nc'))
- 410M 338M 0.82 face_bounds.FaceBoundsColdStartRss.peakmem_open_and_bounds(PosixPath('/home/runner/work/uxarray/uxarray/test/meshfiles/ugrid/quad-hexagon/grid.nc'))
- 12.1±0s 848±5ms 0.07 import.Imports.timeraw_import_uxarray
- 370M 293M 0.79 import.Imports.track_peakmem_import_uxarray
- 429M 356M 0.83 mpas_ocean.CrossSectionsPeakMem.peakmem_const_lat('120km', 1)
- 429M 356M 0.83 mpas_ocean.CrossSectionsPeakMem.peakmem_const_lat('120km', 2)
- 429M 357M 0.83 mpas_ocean.CrossSectionsPeakMem.peakmem_const_lat('120km', 4)
- 412M 339M 0.82 mpas_ocean.CrossSectionsPeakMem.peakmem_const_lat('480km', 1)
- 412M 340M 0.82 mpas_ocean.CrossSectionsPeakMem.peakmem_const_lat('480km', 2)
- 412M 339M 0.82 mpas_ocean.CrossSectionsPeakMem.peakmem_const_lat('480km', 4)
- 424M 352M 0.83 mpas_ocean.GradientColdStartRss.peakmem_gradient('120km')
- 403M 332M 0.82 mpas_ocean.GradientColdStartRss.peakmem_gradient('480km')
- 15.6±0.3ms 12.5±0.3ms 0.8 mpas_ocean.NeighborhoodDask.time_mean('480km', 'grid_chunks')
- 12.1±0.3ms 9.14±0.1ms 0.75 mpas_ocean.NeighborhoodDask.time_mean('480km', 'time_chunks')
- 400±20μs 348±10μs 0.87 mpas_ocean.PointInPolygon.time_face_search_xyz('480km')
- 431M 358M 0.83 mpas_ocean.ZonalAveragePeakMem.peakmem_zonal_average('120km')
- 414M 341M 0.82 mpas_ocean.ZonalAveragePeakMem.peakmem_zonal_average('480km')

Benchmarks that have stayed the same:

Change Before [c832ff1] After [6014216] Ratio Benchmark (Parameter)
196±0.8ms 197±2ms 1.00 bench_connectivity.Connectivity.time_edge_face('120km')
11.9±0.1ms 12.1±0.09ms 1.01 bench_connectivity.Connectivity.time_edge_face('480km')
192±0.6ms 193±2ms 1.01 bench_connectivity.Connectivity.time_edge_node('120km')
10.9±0.08ms 10.9±0.1ms 1.00 bench_connectivity.Connectivity.time_edge_node('480km')
194±1ms 206±10ms 1.06 bench_connectivity.Connectivity.time_face_edge('120km')
11.4±0.1ms 11.3±0.1ms 1.00 bench_connectivity.Connectivity.time_face_edge('480km')
894±20ms 886±4ms 0.99 bench_connectivity.Connectivity.time_face_face('120km')
56.6±0.8ms 56.0±0.6ms 0.99 bench_connectivity.Connectivity.time_face_face('480km')
73.4±4μs 70.1±3μs 0.95 bench_connectivity.Connectivity.time_face_node('120km')
75.7±2μs 71.4±4μs 0.94 bench_connectivity.Connectivity.time_face_node('480km')
431±10μs 433±10μs 1.00 bench_connectivity.Connectivity.time_n_nodes_per_face('120km')
356±4μs 353±10μs 0.99 bench_connectivity.Connectivity.time_n_nodes_per_face('480km')
194±0.6ms 193±0.4ms 1.00 bench_connectivity.Connectivity.time_node_edge('120km')
11.2±0.07ms 11.2±0.09ms 1.00 bench_connectivity.Connectivity.time_node_edge('480km')
90.6±3ms 89.2±3ms 0.98 bench_connectivity.Connectivity.time_node_face('120km')
5.42±0.2ms 5.14±0.06ms 0.95 bench_connectivity.Connectivity.time_node_face('480km')
8.69±0.1ms 8.68±0.1ms 1.00 face_bounds.FaceBounds.time_face_bounds(PosixPath('/home/runner/work/uxarray/uxarray/test/meshfiles/mpas/QU/oQU480.231010.nc'))
2.78±0.07ms 2.71±0.2ms 0.97 face_bounds.FaceBounds.time_face_bounds(PosixPath('/home/runner/work/uxarray/uxarray/test/meshfiles/scrip/outCSne8/outCSne8.nc'))
10.5±10s 10.1±10ms ~0.00 face_bounds.FaceBounds.time_face_bounds(PosixPath('/home/runner/work/uxarray/uxarray/test/meshfiles/ugrid/geoflow-small/grid.nc'))
2.16±0.03ms 2.12±0.04ms 0.98 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.96M 1.98M 1.01 face_bounds.FaceBounds.track_peakmem_face_bounds(PosixPath('/home/runner/work/uxarray/uxarray/test/meshfiles/mpas/QU/oQU480.231010.nc'))
1.97M 1.98M 1.01 face_bounds.FaceBounds.track_peakmem_face_bounds(PosixPath('/home/runner/work/uxarray/uxarray/test/meshfiles/scrip/outCSne8/outCSne8.nc'))
2.13M 2.15M 1.01 face_bounds.FaceBounds.track_peakmem_face_bounds(PosixPath('/home/runner/work/uxarray/uxarray/test/meshfiles/ugrid/geoflow-small/grid.nc'))
38.3k 38.3k 1.00 face_bounds.FaceBounds.track_peakmem_face_bounds(PosixPath('/home/runner/work/uxarray/uxarray/test/meshfiles/ugrid/quad-hexagon/grid.nc'))
1.20±0.05μs 1.23±0.03μs 1.03 geometry_kernels.AccucrossKernels.time_accucross
2.72±0.03μs 2.73±0.04μs 1.00 geometry_kernels.AccucrossKernels.time_accucross_pair
450±10ns 461±20ns 1.02 geometry_kernels.EFTPrimitives.time_acc_sqrt_re
451±10ns 421±20ns 0.93 geometry_kernels.EFTPrimitives.time_diff_of_products
366±20ns 375±20ns 1.03 geometry_kernels.EFTPrimitives.time_two_prod
375±10ns 370±9ns 0.99 geometry_kernels.EFTPrimitives.time_two_sum
1.61±0.05μs 1.56±0.03μs 0.97 geometry_kernels.GCAConstLatIntersection.time_accux_constlat_kernel
1.21±0.09μs 1.14±0.04μs 0.94 geometry_kernels.GCAConstLatIntersection.time_gca_const_lat_intersection
1.99±0.02μs 1.94±0.02μs 0.98 geometry_kernels.GCAConstLatIntersection.time_try_gca_const_lat_intersection
1.76±0.04μs 1.70±0.04μs 0.97 geometry_kernels.GCAGCAIntersection.time_accux_gca_kernel
1.43±0.03μs 1.44±0.03μs 1.01 geometry_kernels.GCAGCAIntersection.time_gca_gca_intersection
2.20±0.6μs 2.20±0.03μs 1.00 geometry_kernels.GCAGCAIntersection.time_try_gca_gca_intersection
52.3±0.6μs 50.8±0.5μs 0.97 geometry_kernels.OrientPredicates.time_on_minor_arc
1.12±0.04μs 1.13±0.04μs 1.01 geometry_kernels.OrientPredicates.time_orient3d_on_sphere
2.72±0.1ms 2.60±0.01ms 0.96 geometry_samebody.SameBodyConstLat.time_accux_dispatch
1.18±0.01ms 1.17±0.01ms 0.99 geometry_samebody.SameBodyConstLat.time_accux_kernel
1.73±0.01ms 1.72±0.01ms 1.00 geometry_samebody.SameBodyConstLat.time_fp64_dispatch
149±2μs 151±3μs 1.01 geometry_samebody.SameBodyConstLat.time_fp64_kernel
32.4±0.07ms 32.2±0.02ms 0.99 geometry_samebody_gcagca.SameBodyGcaGca.time_accux_dispatch
10.3±0.04ms 10.4±0.06ms 1.01 geometry_samebody_gcagca.SameBodyGcaGca.time_accux_kernel
26.5±0.02ms 26.5±0.03ms 1.00 geometry_samebody_gcagca.SameBodyGcaGca.time_fp64_dispatch
4.98±0.08ms 4.87±0.02ms 0.98 geometry_samebody_gcagca.SameBodyGcaGca.time_fp64_kernel
2.81±0.07ms 2.73±0.03ms 0.97 mpas_ocean.CheckNorm.time_check_norm('120km')
2.29±0.04ms 2.32±0.05ms 1.01 mpas_ocean.CheckNorm.time_check_norm('480km')
867±10ms 840±4ms 0.97 mpas_ocean.ConnectivityConstruction.time_face_face_connectivity('120km')
54.6±1ms 53.4±0.7ms 0.98 mpas_ocean.ConnectivityConstruction.time_face_face_connectivity('480km')
691±20μs 684±10μs 0.99 mpas_ocean.ConnectivityConstruction.time_n_nodes_per_face('120km')
581±10μs 606±10μs 1.04 mpas_ocean.ConnectivityConstruction.time_n_nodes_per_face('480km')
5.48±0.03ms 5.47±0.04ms 1.00 mpas_ocean.ConstructFaceLatLon.time_cartesian_averaging('120km')
4.04±0.04ms 3.95±0.02ms 0.98 mpas_ocean.ConstructFaceLatLon.time_cartesian_averaging('480km')
99.9±0.3ms 99.3±0.4ms 0.99 mpas_ocean.ConstructFaceLatLon.time_welzl('120km')
11.1±0.3ms 10.5±0.3ms 0.95 mpas_ocean.ConstructFaceLatLon.time_welzl('480km')
18.2±0.03ms 18.2±0.02ms 1.00 mpas_ocean.ConstructTreeStructures.time_ball_tree('120km')
1.08±0.02ms 1.06±0.01ms 0.99 mpas_ocean.ConstructTreeStructures.time_ball_tree('480km')
10.7±0.02ms 10.6±0.02ms 1.00 mpas_ocean.ConstructTreeStructures.time_kd_tree('120km')
756±7μs 741±4μs 0.98 mpas_ocean.ConstructTreeStructures.time_kd_tree('480km')
592±5ms 587±8ms 0.99 mpas_ocean.CrossSections.time_const_lat('120km', 1)
298±3ms 294±4ms 0.99 mpas_ocean.CrossSections.time_const_lat('120km', 2)
154±1ms 155±2ms 1.01 mpas_ocean.CrossSections.time_const_lat('120km', 4)
542±5ms 542±6ms 1.00 mpas_ocean.CrossSections.time_const_lat('480km', 1)
271±2ms 271±3ms 1.00 mpas_ocean.CrossSections.time_const_lat('480km', 2)
139±0.9ms 140±0.9ms 1.01 mpas_ocean.CrossSections.time_const_lat('480km', 4)
25.2±0.04ms 25.0±0.1ms 0.99 mpas_ocean.DualMesh.time_dual_mesh_construction('120km')
3.32±0.2ms 3.31±0.09ms 1.00 mpas_ocean.DualMesh.time_dual_mesh_construction('480km')
62.0±0.3ms 61.8±1ms 1.00 mpas_ocean.FaceAreas.time_face_areas('120km')
5.03±5s 7.75±6ms ~0.00 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')
817k 823k 1.01 mpas_ocean.FaceAreas.track_peakmem_face_areas('480km')
931±3ms 936±2ms 1.01 mpas_ocean.GeoDataFrame.time_to_geodataframe('120km', False)
52.2±0.9ms 54.0±1ms 1.03 mpas_ocean.GeoDataFrame.time_to_geodataframe('120km', True)
84.3±0.2ms 83.2±0.5ms 0.99 mpas_ocean.GeoDataFrame.time_to_geodataframe('480km', False)
6.00±0.1ms 5.89±0.2ms 0.98 mpas_ocean.GeoDataFrame.time_to_geodataframe('480km', True)
177±1ms 176±0.9ms 1.00 mpas_ocean.Gradient.time_gradient('120km')
12.8±0.3ms 12.3±0.06ms 0.96 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')
5.08M 5.08M 1.00 mpas_ocean.Gradient.track_peakmem_gradient('120km')
328k 328k 1.00 mpas_ocean.Gradient.track_peakmem_gradient('480km')
393±10μs 393±10μs 1.00 mpas_ocean.HoleEdgeIndices.time_construct_hole_edge_indices('120km')
212±9μs 229±4μs 1.08 mpas_ocean.HoleEdgeIndices.time_construct_hole_edge_indices('480km')
576±20μs 605±30μs 1.05 mpas_ocean.Integrate.time_integrate('120km')
517±30μs 542±10μs 1.05 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')
185±2ms 185±2ms 1.00 mpas_ocean.MatplotlibConversion.time_dataarray_to_polycollection('120km', 'exclude')
181±0.5ms 184±1ms 1.01 mpas_ocean.MatplotlibConversion.time_dataarray_to_polycollection('120km', 'include')
181±1ms 182±0.4ms 1.00 mpas_ocean.MatplotlibConversion.time_dataarray_to_polycollection('120km', 'split')
14.0±0.09ms 14.1±0.4ms 1.01 mpas_ocean.MatplotlibConversion.time_dataarray_to_polycollection('480km', 'exclude')
14.1±0.2ms 14.2±0.2ms 1.01 mpas_ocean.MatplotlibConversion.time_dataarray_to_polycollection('480km', 'include')
13.8±0.09ms 14.1±0.5ms 1.02 mpas_ocean.MatplotlibConversion.time_dataarray_to_polycollection('480km', 'split')
238±0.5ms 237±0.6ms 0.99 mpas_ocean.NeighborhoodBuild.time_build('120km', 1.0)
1.27±0s 1.27±0.01s 1.00 mpas_ocean.NeighborhoodBuild.time_build('120km', 15.0)
494±1ms 493±2ms 1.00 mpas_ocean.NeighborhoodBuild.time_build('120km', 5.0)
13.1±0.04ms 13.0±0.05ms 1.00 mpas_ocean.NeighborhoodBuild.time_build('480km', 1.0)
25.2±0.1ms 25.1±0.1ms 1.00 mpas_ocean.NeighborhoodBuild.time_build('480km', 15.0)
16.3±0.06ms 16.1±0.1ms 0.99 mpas_ocean.NeighborhoodBuild.time_build('480km', 5.0)
234±0.3ms 233±0.4ms 1.00 mpas_ocean.NeighborhoodBuild.time_query_radius('120km', 1.0)
1.25±0s 1.25±0s 1.00 mpas_ocean.NeighborhoodBuild.time_query_radius('120km', 15.0)
487±1ms 488±0.5ms 1.00 mpas_ocean.NeighborhoodBuild.time_query_radius('120km', 5.0)
12.7±0.05ms 12.5±0.04ms 0.99 mpas_ocean.NeighborhoodBuild.time_query_radius('480km', 1.0)
24.4±0.04ms 24.5±0.03ms 1.00 mpas_ocean.NeighborhoodBuild.time_query_radius('480km', 15.0)
15.7±0.03ms 15.7±0.05ms 1.00 mpas_ocean.NeighborhoodBuild.time_query_radius('480km', 5.0)
1.19 1.19 1.00 mpas_ocean.NeighborhoodBuild.track_mean_neighbors('120km', 1.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)
1.0 1.0 1.00 mpas_ocean.NeighborhoodBuild.track_mean_neighbors('480km', 1.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)
728k 728k 1.00 mpas_ocean.NeighborhoodBuild.track_nbytes_neighbors('120km', 1.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)
43k 43k 1.00 mpas_ocean.NeighborhoodBuild.track_nbytes_neighbors('480km', 1.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)
5.72M 5.72M 1.00 mpas_ocean.NeighborhoodBuild.track_peakmem_build('120km', 1.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)
362k 362k 1.00 mpas_ocean.NeighborhoodBuild.track_peakmem_build('480km', 1.0)
825k 825k 1.00 mpas_ocean.NeighborhoodBuild.track_peakmem_build('480km', 15.0)
384k 384k 1.00 mpas_ocean.NeighborhoodBuild.track_peakmem_build('480km', 5.0)
48.1±0.6ms 45.7±0.7ms 0.95 mpas_ocean.NeighborhoodDask.time_mean('120km', 'grid_chunks')
22.7±0.04ms 22.6±0.03ms 1.00 mpas_ocean.NeighborhoodDask.time_mean('120km', 'numpy')
44.7±0.5ms 42.0±1ms 0.94 mpas_ocean.NeighborhoodDask.time_mean('120km', 'time_chunks')
659±40μs 666±30μs 1.01 mpas_ocean.NeighborhoodDask.time_mean('480km', 'numpy')
5.76M 5.9M 1.02 mpas_ocean.NeighborhoodDask.track_peakmem_mean('120km', 'grid_chunks')
2.75M 2.75M 1.00 mpas_ocean.NeighborhoodDask.track_peakmem_mean('120km', 'numpy')
5.69M 5.67M 1.00 mpas_ocean.NeighborhoodDask.track_peakmem_mean('120km', 'time_chunks')
686k 676k 0.98 mpas_ocean.NeighborhoodDask.track_peakmem_mean('480km', 'grid_chunks')
177k 177k 1.00 mpas_ocean.NeighborhoodDask.track_peakmem_mean('480km', 'numpy')
537k 524k 0.98 mpas_ocean.NeighborhoodDask.track_peakmem_mean('480km', 'time_chunks')
12.5±0s 12.5±0.01s 1.00 mpas_ocean.NeighborhoodReduce.time_dataset_reduce('120km', 'mean')
13.1±0.01s 13.2±0.01s 1.01 mpas_ocean.NeighborhoodReduce.time_dataset_reduce('120km', 'median')
227±0.9ms 227±0.5ms 1.00 mpas_ocean.NeighborhoodReduce.time_dataset_reduce('480km', 'mean')
233±0.2ms 233±0.1ms 1.00 mpas_ocean.NeighborhoodReduce.time_dataset_reduce('480km', 'median')
1.31±0s 1.30±0s 1.00 mpas_ocean.NeighborhoodReduce.time_neighborhood_reduce('120km', 'mean')
1.50±0s 1.50±0s 1.00 mpas_ocean.NeighborhoodReduce.time_neighborhood_reduce('120km', 'median')
25.8±0.1ms 25.6±0.2ms 0.99 mpas_ocean.NeighborhoodReduce.time_neighborhood_reduce('480km', 'mean')
27.3±0.2ms 26.9±0.2ms 0.99 mpas_ocean.NeighborhoodReduce.time_neighborhood_reduce('480km', 'median')
40.0±0.04ms 40.0±0.03ms 1.00 mpas_ocean.NeighborhoodReduce.time_reduce('120km', 'mean')
233±0.2ms 234±0.1ms 1.00 mpas_ocean.NeighborhoodReduce.time_reduce('120km', 'median')
724±50μs 681±20μs 0.94 mpas_ocean.NeighborhoodReduce.time_reduce('480km', 'mean')
2.06±0.04ms 2.06±0.01ms 1.00 mpas_ocean.NeighborhoodReduce.time_reduce('480km', 'median')
239k 239k 1.00 mpas_ocean.NeighborhoodReduce.track_peakmem_reduce('120km', 'mean')
245k 245k 1.00 mpas_ocean.NeighborhoodReduce.track_peakmem_reduce('120km', 'median')
19.7k 19.3k 0.98 mpas_ocean.NeighborhoodReduce.track_peakmem_reduce('480km', 'mean')
20.2k 19.8k 0.98 mpas_ocean.NeighborhoodReduce.track_peakmem_reduce('480km', 'median')
412±40μs 413±20μs 1.00 mpas_ocean.PointInPolygon.time_face_search_lonlat('120km')
378±10μs 391±10μs 1.03 mpas_ocean.PointInPolygon.time_face_search_lonlat('480km')
390±20μs 393±10μs 1.01 mpas_ocean.PointInPolygon.time_face_search_xyz('120km')
235±0.9ms 234±1ms 0.99 mpas_ocean.RemapDownsample.time_bilinear_remapping
287±4ms 286±4ms 1.00 mpas_ocean.RemapDownsample.time_inverse_distance_weighted_remapping
15.8±0.2ms 15.8±0.2ms 1.00 mpas_ocean.RemapDownsample.time_nearest_neighbor_remapping
1.35±0.01s 1.35±0s 1.00 mpas_ocean.RemapUpsample.time_bilinear_remapping
36.4±0.3ms 37.1±0.5ms 1.02 mpas_ocean.RemapUpsample.time_inverse_distance_weighted_remapping
12.4±0.2ms 12.3±0.1ms 0.99 mpas_ocean.RemapUpsample.time_nearest_neighbor_remapping
10.4±0.2ms 10.1±0.06ms 0.97 mpas_ocean.ZonalAverage.time_zonal_average('120km')
5.85±0.2ms 5.73±0.3ms 0.98 mpas_ocean.ZonalAverage.time_zonal_average('480km')
7.54±0.5ms 7.59±0.3ms 1.01 quad_hexagon.QuadHexagon.time_open_dataset
6.01±0.2ms 6.09±0.2ms 1.01 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
73.8k 73.5k 1.00 quad_hexagon.QuadHexagon.track_peakmem_open_dataset
72.8k 72.8k 1.00 quad_hexagon.QuadHexagon.track_peakmem_open_grid

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

benchmarking Related to benchmarks, memory usage, and/or time profiling bug Something isn't working run-benchmark Run ASV benchmark workflow

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Neighborhood filter reductions are making uxarray imports slow

1 participant