Skip to content

Performance analysis#54

Merged
jourdain merged 3 commits intoKitware:masterfrom
berkgeveci:performance-analysis
Apr 23, 2026
Merged

Performance analysis#54
jourdain merged 3 commits intoKitware:masterfrom
berkgeveci:performance-analysis

Conversation

@berkgeveci
Copy link
Copy Markdown
Collaborator

Adds an opt-in --perf CLI flag that turns on [PERF] <label>: <ms> ms timing on stderr across the full server-side slider-tick path, plus a no-op shim so instrumented code paths are near-free (one bool check per call site) when the flag is off. Motivated by a user report of ~2 s/tick on a NERSC cloud instance — we want a way to confirm (or rule out) I/O, rendering, and the web-streaming layer without running a profiler.

Three commits:

  1. 2cc8f34 — new utils/perf.py module, --perf flag wired through CLI, timers around every logical tick stage: tick.pipeline / tick.color_range / tick.render / tick.extract_avgs, per-variable reader.netcdf_read.<var> + reader.fill_value_scan.<var>, all three Python filters (center_meridian / extract / project) with cache-hit vs. rebuild breakdowns, add_cell_arrays slice-plan + per-variable pedigree copy, per-view render + color-range, and per-variable extract_avgs.

  2. cfee690 — the existing view.<var>.render timer only wrapped ctx[name].update() (non-blocking trigger), so it reported ~0 ms. Added Start/EndEvent observers on the render window in both view managers that emit view.<var>.render_window (default) / view.shared.render_window (--fast) with the actual VTK render time.

  3. 16dd8c2 — monkey-patches trame_rca.RcaEncoder.encode and RcaViewAdapter.push to emit rca.encode.<encoder> (turbo-jpeg/jpeg/…) and rca.push.<area> per call. Together with the render-window timer, the server-side path is now end-to-end instrumented: pipeline → VTK render → JPEG encode → websocket write.

Local steady-state trace (25M-cell grid, 2 variables, --fast):

tick.pipeline:               ~114 ms    (reader 90, center_meridian 22, rest 0)
tick.color_range:             ~50 ms    (2 × GetRange on 25M float32)
tick.extract_avgs:            ~40 ms    (2 × weighted average)
tick.total:                  ~203 ms
view.shared.render_window:   ~170 ms    (async, fires after tick returns)
rca.encode.turbo-jpeg:         ~2 ms
rca.push.rca_image_stream_1:   ~0.02 ms (kernel enqueue, not round-trip)
─────────────────────────────────
server wall-clock per scrub: ~370 ms

Known blind spot: rca.push measures the server-side handoff to the kernel; actual websocket transit to the browser isn't captured. For the NERSC case, rca.push.* in the tens/hundreds of ms would indicate a blocked websocket write (back-pressure from a slow client link); rca.push.* staying ~0 ms while user-perceived lag is high would point at network round-trip or client-side paint.

…eline

Adds optional performance instrumentation that emits [PERF] lines on
stderr, guarded behind a new --perf CLI flag (off by default, zero
overhead when off). Useful for diagnosing where slider-tick time is
going on a given install — reader I/O on network filesystems, pipeline
filters, rendering, and Trame round-trips each get their own labels.

New module:
- utils/perf.py: enable/is_enabled/timed/log. The timed(label) context
  manager checks the module-level bool once and does nothing further
  when disabled. Safe to leave timers in production code paths.

CLI:
- utils/cli.py: --perf boolean flag.
- app.py: perf.enable(args.perf) at startup.

Instrumented paths:
- app._on_slicing_change: total tick + pipeline/color_range/render/
  extract_avgs sub-steps (label includes dim=N so runs are paired up).
- app._on_downstream_change: same 4-stage breakdown under
  downstream_change.* for crop/projection changes.
- app._data_load_variables: initial load — LoadVariables, both
  network_completion awaits, build_auto_layout, reset_camera.
- plugins/eam_reader: RequestData total + per-variable netcdf_read
  and fill_value_scan. These are the I/O-hypothesis targets.
- plugins/eam_projection:
  - EAMCenterMeridian.RequestData: cache_hit vs rebuild, plus
    clip_left/clip_right/transform/append within rebuild.
  - EAMExtract.RequestData: cache_hit vs rebuild_trim, plus
    cell_centers, deep_copy_cells, ghost_mask, remove_ghost_cells.
  - EAMProject.RequestData: cache_hit vs cache_miss, plus
    deep_copy_points and pyproj_transform within the miss path.
  - add_cell_arrays: slice_plan build + per-array pedigree_copy.
- view_manager.VariableView: per-view render, update_color_range,
  nested get_range.
- utils/compute.extract_avgs: per-variable weighted-average cost.

Plugins use a try/except fallback to a no-op shim for the import so
they still work if loaded by ParaView GUI with quickview not on
sys.path.

Output format: `[PERF] <label>:    NN.NN ms`. Hierarchical labels
(e.g. "tick.pipeline", "reader.netcdf_read.U") are easy to grep,
sort, and aggregate.
The existing view.<var>.render timer wraps the ctx[name].update() call,
which is non-blocking — it only schedules the trame/RCA push. The real
VTK render happens later on the event loop, so the timer reported
~0.01 ms and left a gap in the per-tick picture.

Add Start/EndEvent observers on the render window in both view
managers. Each render (RCA-triggered, camera change, whatever) emits

    [PERF] view.<var>.render_window: <ms> ms        (default view manager)
    [PERF] view.shared.render_window: <ms> ms       (single-window --fast)

The observers only compute/log when perf.is_enabled() is true, so the
non-perf path pays only one bool check per render event.

JPEG encode + websocket push are still not captured; those happen in
the RCA/trame layer after VTK returns. If that turns out to dominate
we'll need to hook further into the RCA view handler.
Monkey-patch RcaEncoder.encode and RcaViewAdapter.push at import so the
two phases show up under --perf:

    [PERF] rca.encode.<encoder>: <ms> ms    (turbo-jpeg / jpeg / avif / etc.)
    [PERF] rca.push.<area>:      <ms> ms    (one per view's websocket push)

With this plus the existing view.<var>.render_window timer, the full
server-side tick path is now accounted for: VTK render → JPEG encode
→ websocket push. On a NERSC-style trace the difference between wall-
clock lag and the sum of these three labels is the network-to-client
bandwidth.

Wrappers check _ENABLED per-call so the non-perf path costs only a
bool test per encode/push.
@berkgeveci berkgeveci requested a review from jourdain April 23, 2026 13:02
@berkgeveci
Copy link
Copy Markdown
Collaborator Author

@jourdain Can you deploy that on NERSC so that we can get more details on the 2 sec / frame? It needs to be run with --perf and outputs to stderr.

@jourdain jourdain merged commit 315b8f3 into Kitware:master Apr 23, 2026
1 check passed
@jourdain
Copy link
Copy Markdown
Collaborator

The new version (v2.4.0) has been release. Now someone needs to update it on NERSC and run it with the --perf arg.

@huiwanpnnl I will try to do that later today, but if you manage to try it sooner, please go ahead. Thx

@huiwanpnnl
Copy link
Copy Markdown
Collaborator

I updated the installation at NERSC, and updated the script /global/common/software/m4359/quickview2 to the following:

#!/usr/bin/env bash

module load conda
conda activate /global/common/software/m4359/conda-envs/quickview-family
quickview -p 0 --perf $@

@huiwanpnnl
Copy link
Copy Markdown
Collaborator

I did a quick test on an exclusive GPU node and got the following in the terminal. Not sure if it's informative for @berkgeveci . I'm attending a NERSC training course today and hence am slow in responding. Sorry!

perlmutter:nid001001: 202601_ne1024 % /global/common/software/m4359/quickview2
2026-04-23 09:52:51.817 | INFO     | trame_dataclass.module:setup:16 - dataclass protocol setup to v2
Loading plugin :  /global/common/software/m4359/conda-envs/quickview-family/lib/python3.13/site-packages/e3sm_quickview/plugins/eam_gridlines.py
Loading plugin :  /global/common/software/m4359/conda-envs/quickview-family/lib/python3.13/site-packages/e3sm_quickview/plugins/eam_projection.py
Loading plugin :  /global/common/software/m4359/conda-envs/quickview-family/lib/python3.13/site-packages/e3sm_quickview/plugins/eam_reader.py
Loading plugin :  /global/common/software/m4359/conda-envs/quickview-family/lib/python3.13/site-packages/e3sm_quickview/plugins/eam_filters.py

Use URL below to connect to the application:

  => https://jupyter.nersc.gov/user/huiwan/perlmutter-exclusive-node-gpu/proxy/33675/index.html?ui=main&reconnect=auto

Load files:
 - simulation: /global/cfs/cdirs/m4359/www/huiwan/vis/202601_ne1024/output.scream.Cess.hourly2DVars.INSTANT.nhours_x1.2019-09-02-03600.nc
 - connectivity: /global/cfs/cdirs/m4359/www/huiwan/vis/202601_ne1024/connectivity_ne1024pg2_TEMPEST.scrip.nc
[PERF] reader.RequestData:  4229.31 ms
[PERF] reader.RequestData:     0.05 ms
[PERF] center_meridian.clip_left:  1623.14 ms
[PERF] center_meridian.clip_right:  1590.55 ms
[PERF] center_meridian.transform:   175.77 ms
[PERF] center_meridian.append:   300.19 ms
[PERF] center_meridian.rebuild:  3705.54 ms
[PERF] center_meridian.RequestData:  3705.60 ms
[PERF] extract.RequestData:     0.10 ms
[PERF] project.deep_copy_points:   155.06 ms
[PERF] project.pyproj_transform:   613.78 ms
[PERF] project.cache_miss:  1431.99 ms
[PERF] project.RequestData:  1432.22 ms
[PERF] tick.pipeline:  5246.27 ms
[PERF] tick.color_range:     0.03 ms
[PERF] tick.render:     0.00 ms
[PERF] tick.extract_avgs:     0.34 ms
[PERF] tick.time=50.total:  5246.81 ms
[PERF] load_variables.LoadVariables:     0.75 ms
[PERF] reader.netcdf_read.LW_flux_up_at_model_top:  2258.87 ms
[PERF] reader.fill_value_scan.LW_flux_up_at_model_top:    19.41 ms
[PERF] reader.netcdf_read.precip_total_surf_mass_flux:  2191.09 ms
[PERF] reader.fill_value_scan.precip_total_surf_mass_flux:    19.45 ms
[PERF] reader.RequestData:  4489.98 ms
[PERF] add_cell_arrays.slice_plan:    50.40 ms
[PERF] add_cell_arrays.pedigree_copy.LW_flux_up_at_model_top:    22.20 ms
[PERF] add_cell_arrays.pedigree_copy.precip_total_surf_mass_flux:    22.38 ms
[PERF] center_meridian.cache_hit:    95.39 ms
[PERF] center_meridian.RequestData:    95.50 ms
[PERF] extract.RequestData:     0.07 ms
[PERF] project.cache_hit:     0.01 ms
[PERF] project.RequestData:     0.09 ms
[PERF] downstream_change.pipeline:  4669.02 ms
[PERF] downstream_change.color_range:     0.01 ms
[PERF] downstream_change.render:     0.00 ms
[PERF] extract_avgs.LW_flux_up_at_model_top:    55.97 ms
[PERF] extract_avgs.precip_total_surf_mass_flux:    56.63 ms
[PERF] downstream_change.extract_avgs:   112.92 ms
[PERF] downstream_change.total:  4782.01 ms
[PERF] load_variables.network_completion_1:     0.60 ms
[PERF] view.LW_flux_up_at_model_top.get_range:    29.34 ms
[PERF] view.LW_flux_up_at_model_top.update_color_range:    31.67 ms
[PERF] project.deep_copy_points:     0.02 ms
[PERF] project.pyproj_transform:     3.32 ms
[PERF] project.cache_miss:     4.50 ms
[PERF] project.RequestData:     4.57 ms
[PERF] project.deep_copy_points:     0.01 ms
[PERF] project.pyproj_transform:     0.31 ms
[PERF] project.cache_miss:     0.99 ms
[PERF] project.RequestData:     1.04 ms
[PERF] view.LW_flux_up_at_model_top.render_window:  3913.19 ms
[PERF] view.LW_flux_up_at_model_top.render_window:    77.09 ms
[PERF] view.LW_flux_up_at_model_top.render:     0.02 ms
[PERF] view.precip_total_surf_mass_flux.get_range:    29.76 ms
[PERF] view.precip_total_surf_mass_flux.update_color_range:    32.05 ms
[PERF] view.precip_total_surf_mass_flux.render_window:  3668.47 ms
[PERF] view.precip_total_surf_mass_flux.render:     0.02 ms
[PERF] load_variables.build_auto_layout:  9424.58 ms
[PERF] view.LW_flux_up_at_model_top.get_range:     0.01 ms
[PERF] view.LW_flux_up_at_model_top.render:     0.01 ms
[PERF] view.LW_flux_up_at_model_top.update_color_range:     1.94 ms
[PERF] view.precip_total_surf_mass_flux.get_range:     0.01 ms
[PERF] view.precip_total_surf_mass_flux.render:     0.01 ms
[PERF] view.precip_total_surf_mass_flux.update_color_range:     1.24 ms
[PERF] view.LW_flux_up_at_model_top.render_window:  1236.73 ms
[PERF] rca.encode.turbo-jpeg:     2.91 ms
[PERF] view.precip_total_surf_mass_flux.render_window:  1172.73 ms
[PERF] rca.push.trame_rca_1:     0.03 ms
[PERF] rca.encode.turbo-jpeg:     0.93 ms
[PERF] view.LW_flux_up_at_model_top.render_window:    76.37 ms
[PERF] rca.encode.turbo-jpeg:     0.61 ms
[PERF] view.precip_total_surf_mass_flux.render_window:    73.55 ms
[PERF] rca.push.trame_rca_2:     0.02 ms
[PERF] rca.push.trame_rca_1:     0.01 ms
[PERF] rca.encode.turbo-jpeg:     0.52 ms
[PERF] rca.push.trame_rca_2:     0.01 ms
[PERF] load_variables.network_completion_2:  2572.63 ms
[PERF] view.LW_flux_up_at_model_top.render_window:    38.42 ms
[PERF] rca.encode.turbo-jpeg:     1.83 ms
[PERF] view.precip_total_surf_mass_flux.render_window:    20.75 ms
[PERF] rca.push.trame_rca_1:     0.01 ms
[PERF] rca.encode.turbo-jpeg:     1.69 ms
[PERF] rca.push.trame_rca_2:     0.01 ms
[PERF] load_variables.reset_camera:     0.86 ms
[PERF] load_variables.total: 16882.85 ms
[PERF] view.LW_flux_up_at_model_top.render_window:    20.84 ms
[PERF] rca.encode.turbo-jpeg:     0.76 ms
[PERF] view.precip_total_surf_mass_flux.render_window:    20.36 ms
[PERF] rca.push.trame_rca_1:     0.01 ms
[PERF] rca.encode.turbo-jpeg:     0.82 ms
[PERF] rca.push.trame_rca_2:     0.01 ms
[PERF] view.LW_flux_up_at_model_top.render_window:    19.44 ms
[PERF] rca.encode.turbo-jpeg:     0.97 ms
[PERF] view.precip_total_surf_mass_flux.render_window:    19.02 ms
[PERF] rca.push.trame_rca_1:     0.01 ms
[PERF] rca.encode.turbo-jpeg:     0.63 ms
[PERF] rca.push.trame_rca_2:     0.01 ms
[PERF] reader.netcdf_read.LW_flux_up_at_model_top:  2474.98 ms
[PERF] reader.fill_value_scan.LW_flux_up_at_model_top:    20.21 ms
[PERF] reader.netcdf_read.precip_total_surf_mass_flux:  2199.38 ms
[PERF] reader.fill_value_scan.precip_total_surf_mass_flux:    20.03 ms
[PERF] reader.RequestData:  4715.35 ms
[PERF] add_cell_arrays.slice_plan:     0.01 ms
[PERF] add_cell_arrays.pedigree_copy.LW_flux_up_at_model_top:    21.67 ms
[PERF] add_cell_arrays.pedigree_copy.precip_total_surf_mass_flux:    22.69 ms
[PERF] center_meridian.cache_hit:    45.23 ms
[PERF] center_meridian.RequestData:    45.31 ms
[PERF] extract.RequestData:     0.06 ms
[PERF] project.cache_hit:     0.00 ms
[PERF] project.RequestData:     0.08 ms
[PERF] tick.pipeline:  4844.10 ms
[PERF] view.LW_flux_up_at_model_top.get_range:    29.20 ms
[PERF] view.LW_flux_up_at_model_top.render:     0.01 ms
[PERF] view.LW_flux_up_at_model_top.update_color_range:    31.19 ms
[PERF] view.precip_total_surf_mass_flux.get_range:    29.10 ms
[PERF] view.precip_total_surf_mass_flux.render:     0.01 ms
[PERF] view.precip_total_surf_mass_flux.update_color_range:    30.52 ms
[PERF] tick.color_range:    61.74 ms
[PERF] view.LW_flux_up_at_model_top.render:     0.01 ms
[PERF] view.precip_total_surf_mass_flux.render:     0.00 ms
[PERF] tick.render:     0.03 ms
[PERF] extract_avgs.LW_flux_up_at_model_top:    56.85 ms
[PERF] extract_avgs.precip_total_surf_mass_flux:    55.64 ms
[PERF] tick.extract_avgs:   112.70 ms
[PERF] tick.time=1.total:  5018.62 ms
[PERF] view.LW_flux_up_at_model_top.get_range:     0.01 ms
[PERF] view.LW_flux_up_at_model_top.render:     0.02 ms
[PERF] view.LW_flux_up_at_model_top.update_color_range:     1.51 ms
[PERF] view.precip_total_surf_mass_flux.get_range:     0.00 ms
[PERF] view.precip_total_surf_mass_flux.render:     0.01 ms
[PERF] view.precip_total_surf_mass_flux.update_color_range:     1.12 ms
[PERF] view.LW_flux_up_at_model_top.render_window:  1190.05 ms
[PERF] rca.encode.turbo-jpeg:     0.85 ms
[PERF] view.precip_total_surf_mass_flux.render_window:  1150.91 ms
[PERF] rca.push.trame_rca_1:     0.06 ms
[PERF] rca.encode.turbo-jpeg:     3.16 ms
[PERF] reader.netcdf_read.LW_flux_up_at_model_top:  1937.81 ms
[PERF] reader.fill_value_scan.LW_flux_up_at_model_top:    20.34 ms
[PERF] reader.netcdf_read.precip_total_surf_mass_flux:  2207.67 ms
[PERF] reader.fill_value_scan.precip_total_surf_mass_flux:    19.63 ms
[PERF] reader.RequestData:  4186.20 ms
[PERF] add_cell_arrays.slice_plan:     0.00 ms
[PERF] add_cell_arrays.pedigree_copy.LW_flux_up_at_model_top:    22.82 ms
[PERF] add_cell_arrays.pedigree_copy.precip_total_surf_mass_flux:    22.62 ms
[PERF] center_meridian.cache_hit:    46.40 ms
[PERF] center_meridian.RequestData:    46.48 ms
[PERF] extract.RequestData:     0.06 ms
[PERF] project.cache_hit:     0.00 ms
[PERF] project.RequestData:     0.07 ms
[PERF] tick.pipeline:  4316.64 ms
[PERF] view.LW_flux_up_at_model_top.get_range:    29.00 ms
[PERF] view.LW_flux_up_at_model_top.render:     0.04 ms
[PERF] view.LW_flux_up_at_model_top.update_color_range:    31.43 ms
[PERF] view.precip_total_surf_mass_flux.get_range:    29.14 ms
[PERF] view.precip_total_surf_mass_flux.render:     0.01 ms
[PERF] view.precip_total_surf_mass_flux.update_color_range:    30.95 ms
[PERF] tick.color_range:    62.41 ms
[PERF] view.LW_flux_up_at_model_top.render:     0.01 ms
[PERF] view.precip_total_surf_mass_flux.render:     0.00 ms
[PERF] tick.render:     0.03 ms
[PERF] extract_avgs.LW_flux_up_at_model_top:    56.87 ms
[PERF] extract_avgs.precip_total_surf_mass_flux:    56.70 ms
[PERF] tick.extract_avgs:   113.79 ms
[PERF] tick.time=2.total:  4492.92 ms
[PERF] view.LW_flux_up_at_model_top.get_range:     0.00 ms
[PERF] view.LW_flux_up_at_model_top.render:     0.02 ms
[PERF] view.LW_flux_up_at_model_top.update_color_range:     1.57 ms
[PERF] view.precip_total_surf_mass_flux.get_range:     0.00 ms
[PERF] view.precip_total_surf_mass_flux.render:     0.01 ms
[PERF] view.precip_total_surf_mass_flux.update_color_range:     1.21 ms
[PERF] rca.push.trame_rca_2:     0.01 ms
[PERF] reader.netcdf_read.LW_flux_up_at_model_top:  2184.42 ms
[PERF] reader.fill_value_scan.LW_flux_up_at_model_top:    18.86 ms
[PERF] reader.netcdf_read.precip_total_surf_mass_flux:  2113.25 ms
[PERF] reader.fill_value_scan.precip_total_surf_mass_flux:    20.07 ms
[PERF] reader.RequestData:  4337.17 ms
[PERF] add_cell_arrays.slice_plan:     0.00 ms
[PERF] add_cell_arrays.pedigree_copy.LW_flux_up_at_model_top:    22.84 ms
[PERF] add_cell_arrays.pedigree_copy.precip_total_surf_mass_flux:    22.71 ms
[PERF] center_meridian.cache_hit:    46.58 ms
[PERF] center_meridian.RequestData:    46.63 ms
[PERF] extract.RequestData:     0.05 ms
[PERF] project.cache_hit:     0.00 ms
[PERF] project.RequestData:     0.06 ms
[PERF] tick.pipeline:  4466.38 ms
[PERF] view.LW_flux_up_at_model_top.get_range:    28.96 ms
[PERF] view.LW_flux_up_at_model_top.render:     0.02 ms
[PERF] view.LW_flux_up_at_model_top.update_color_range:    30.85 ms
[PERF] view.precip_total_surf_mass_flux.get_range:    29.78 ms
[PERF] view.precip_total_surf_mass_flux.render:     0.01 ms
[PERF] view.precip_total_surf_mass_flux.update_color_range:    31.37 ms
[PERF] tick.color_range:    62.24 ms
[PERF] view.LW_flux_up_at_model_top.render:     0.01 ms
[PERF] view.precip_total_surf_mass_flux.render:     0.00 ms
[PERF] tick.render:     0.03 ms
[PERF] extract_avgs.LW_flux_up_at_model_top:    55.55 ms
[PERF] extract_avgs.precip_total_surf_mass_flux:    55.13 ms
[PERF] tick.extract_avgs:   110.88 ms
[PERF] tick.time=3.total:  4639.58 ms
[PERF] view.LW_flux_up_at_model_top.get_range:     0.01 ms
[PERF] view.LW_flux_up_at_model_top.render:     0.02 ms
[PERF] view.LW_flux_up_at_model_top.update_color_range:     1.58 ms
[PERF] view.precip_total_surf_mass_flux.get_range:     0.00 ms
[PERF] view.precip_total_surf_mass_flux.render:     0.01 ms
[PERF] view.precip_total_surf_mass_flux.update_color_range:     1.42 ms
[PERF] view.LW_flux_up_at_model_top.render_window:  1187.95 ms
[PERF] rca.encode.turbo-jpeg:     0.79 ms
[PERF] view.precip_total_surf_mass_flux.render_window:  1156.07 ms
[PERF] rca.push.trame_rca_1:     0.02 ms
[PERF] rca.encode.turbo-jpeg:     0.66 ms
[PERF] rca.push.trame_rca_2:     0.00 ms
[PERF] view.LW_flux_up_at_model_top.render_window:    76.61 ms
[PERF] rca.encode.turbo-jpeg:     1.01 ms
[PERF] view.precip_total_surf_mass_flux.render_window:    65.94 ms
[PERF] rca.push.trame_rca_1:     0.00 ms
[PERF] rca.encode.turbo-jpeg:     0.66 ms
[PERF] rca.push.trame_rca_2:     0.00 ms

@jourdain
Copy link
Copy Markdown
Collaborator

@huiwanpnnl for doing the test with only 1 render window, you need to keep the --fast arg.

quickview -p 0 --fast --perf $@

@jourdain
Copy link
Copy Markdown
Collaborator

I will make it the default at some point but since we were running into graphic issue, I kept the old mode too. I may switch the default though.

@huiwanpnnl
Copy link
Copy Markdown
Collaborator

I see. I've updated /global/common/software/m4359/quickview2 to the following.

#!/usr/bin/env bash

module load conda
conda activate /global/common/software/m4359/conda-envs/quickview-family
quickview -p 0 --fast --perf $@                     

@berkgeveci
Copy link
Copy Markdown
Collaborator Author

Here is the AI analysis of perf results. Rendering is a concern.

@jourdain : There is a way of printing out what rendering backend ParaView is using, I think. Same thing that shows in the about panel. Can you print it out to make sure that we are using the GPU? An NVIDIA GPU should be much faster than my Mac.

@huiwanpnnl : Which file is this?

Where the time is going

  1. I/O is the dominant issue — confirmed.

Each reader.netcdf_read. is ~2,000 ms on NERSC vs ~45 ms locally. That's 50× slower,
consistent with a slow shared filesystem (Lustre cold reads, or Community Filesystem). For
the 2-variable case this alone is ~4.2 s per tick and is essentially the entire
tick.pipeline.

  1. rca.encode and rca.push are tiny — network to client is NOT the bottleneck.

rca.push.* is 0.01–0.06 ms on NERSC. The websocket kernel write is not back-pressuring. If
there's any client-side lag it's pure round-trip (not instrumented), but it's not blocking
the server.

  1. Rendering is 7× slower and the user is not using --fast.

Labels are per-view (view.LW.render_window + view.precip.render_window) rather than
view.shared.render_window → --fast is off. Each render_window is ~1.15 s; with 2 views that's
~2.3 s of render wall-clock per tick.

Likely cause: NERSC compute instances typically run software GL (Mesa llvmpipe) — no GPU. 25M
triangles on software OpenGL is genuinely slow.

  1. Interesting bright spot: pyproj_transform is FASTER on NERSC.

Line 11: project.pyproj_transform: 614 ms (cold) vs ~2,500 ms locally. Our threaded pyproj is
scaling beautifully — NERSC compute nodes likely have many more cores than your 10-core
laptop, and cpu_count - 1 gives ThreadPoolExecutor more workers. So the projection MR work
paid off here.

  1. load_variables.total = 16.9 s — mostly build_auto_layout = 9.4 s + render_window = 3.9 s +
    3.7 s first-frame warmup. That's one-time; not a per-tick concern, but the initial user wait
    is painful. --fast would drop build_auto_layout from ~9.4 s to <1 s (single RCA handler
    instead of N).

@huiwanpnnl
Copy link
Copy Markdown
Collaborator

Hi @berkgeveci

Simulation file:

/global/cfs/cdirs/m4359/www/huiwan/vis/202601_ne1024/output.scream.Cess.hourly2DVars.INSTANT.nhours_x1.2019-09-02-03600.nc

Connectivity:

/global/cfs/cdirs/m4359/www/huiwan/vis/202601_ne1024/connectivity_ne1024pg2_TEMPEST.scrip.nc

@jourdain
Copy link
Copy Markdown
Collaborator

When I did the test of the GPU used at NERSC, I was getting the Nvidia EGL of the A100.

@berkgeveci
Copy link
Copy Markdown
Collaborator Author

@huiwanpnnl Does that machine have access to $SCRATCH? If it does, would you mind copying the file to scratch, running again and sending the performance log?

@jourdain Can you add print(w.ReportCapabilities()) where w is the render window somewhere near the start?

@huiwanpnnl
Copy link
Copy Markdown
Collaborator

huiwanpnnl commented Apr 23, 2026

I've copied the connectivity file and data files to scratch under

/pscratch/sd/h/huiwan/vis/test_data/202601_ne1024/

@jourdain
Copy link
Copy Markdown
Collaborator

026-04-23 14:34:03.928 (   1.348s) [    7F38B35D7B80]vtkXOpenGLRenderWindow.:1460  WARN| bad X server connection. DISPLAY=
EGL version string:  1.5
EGL vendor string:  NVIDIA
EGL client APIs:  OpenGL_ES OpenGL
EGL extensions:  EGL_ANDROID_native_fence_sync EGL_EXT_buffer_age EGL_EXT_client_sync EGL_EXT_create_context_robustness EGL_EXT_image_dma_buf_import EGL_EXT_image_dma_buf_import_modifiers EGL_MESA_image_dma_buf_export EGL_EXT_output_base EGL_EXT_output_drm EGL_EXT_protected_content EGL_EXT_stream_consumer_egloutput EGL_EXT_stream_acquire_mode EGL_EXT_sync_reuse EGL_IMG_context_priority EGL_KHR_config_attribs EGL_KHR_create_context_no_error EGL_KHR_context_flush_control EGL_KHR_create_context EGL_KHR_fence_sync EGL_KHR_get_all_proc_addresses EGL_KHR_partial_update EGL_KHR_swap_buffers_with_damage EGL_KHR_no_config_context EGL_KHR_gl_colorspace EGL_KHR_gl_renderbuffer_image EGL_KHR_gl_texture_2D_image EGL_KHR_gl_texture_3D_image EGL_KHR_gl_texture_cubemap_image EGL_KHR_image EGL_KHR_image_base EGL_KHR_reusable_sync EGL_KHR_stream EGL_KHR_stream_attrib EGL_KHR_stream_consumer_gltexture EGL_KHR_stream_cross_process_fd EGL_KHR_stream_fifo EGL_KHR_stream_producer_eglsurface EGL_KHR_surfaceless_context EGL_KHR_wait_sync EGL_NV_nvrm_fence_sync EGL_NV_quadruple_buffer EGL_NV_stream_consumer_eglimage EGL_NV_stream_cross_display EGL_NV_stream_cross_object EGL_NV_stream_cross_process EGL_NV_stream_cross_system EGL_NV_stream_dma EGL_NV_stream_flush EGL_NV_stream_metadata EGL_NV_stream_remote EGL_NV_stream_reset EGL_NV_stream_socket EGL_NV_stream_socket_inet EGL_NV_stream_socket_unix EGL_NV_stream_sync EGL_NV_stream_fifo_next EGL_NV_stream_fifo_synchronous EGL_NV_stream_consumer_gltexture_yuv EGL_NV_stream_attrib EGL_NV_stream_origin EGL_NV_system_time EGL_NV_output_drm_flip_event EGL_NV_triple_buffer EGL_NV_robustness_video_memory_purge EGL_WL_bind_wayland_display EGL_WL_wayland_eglstream
OpenGL vendor string:  NVIDIA Corporation
OpenGL renderer string:  NVIDIA A100-SXM4-40GB/PCIe/SSE2
OpenGL version string:  3.2.0 NVIDIA 580.105.08

@jourdain
Copy link
Copy Markdown
Collaborator

Loading from the scratch path

Load files:
 - simulation: /pscratch/sd/h/huiwan/vis/test_data/202601_ne1024/output.scream.Cess.hourly2DVars.INSTANT.nhours_x1.2019-09-02-03600.nc
 - connectivity: /pscratch/sd/h/huiwan/vis/test_data/202601_ne1024/connectivity_ne1024pg2_TEMPEST.scrip.nc

Staring up + loading (LW + precip)

[PERF] reader.RequestData:  2139.00 ms
[PERF] reader.RequestData:     0.06 ms
[PERF] center_meridian.clip_left:  1296.55 ms
[PERF] center_meridian.clip_right:  1243.75 ms
[PERF] center_meridian.transform:   163.60 ms
[PERF] center_meridian.append:   285.81 ms
[PERF] center_meridian.rebuild:  3002.79 ms
[PERF] center_meridian.RequestData:  3002.85 ms
[PERF] extract.RequestData:     0.09 ms
[PERF] project.deep_copy_points:   150.21 ms
[PERF] project.pyproj_transform:   600.59 ms
[PERF] project.cache_miss:  1414.08 ms
[PERF] project.RequestData:  1414.30 ms
[PERF] tick.pipeline:  4518.47 ms
[PERF] tick.color_range:     0.34 ms
[PERF] tick.render:     0.02 ms
[PERF] tick.extract_avgs:     0.22 ms
[PERF] tick.time=50.total:  4519.15 ms
[PERF] view.shared.render_window:    74.40 ms
[PERF] rca.encode.turbo-jpeg:     3.31 ms
[PERF] rca.push.rca_image_stream_1:     0.05 ms
[PERF] view.shared.render_window:     0.37 ms
[PERF] rca.encode.turbo-jpeg:     0.50 ms
[PERF] rca.push.rca_image_stream_1:     0.01 ms
[PERF] load_variables.LoadVariables:     0.63 ms
[PERF] reader.netcdf_read.LW_flux_up_at_model_top:   260.80 ms
[PERF] reader.fill_value_scan.LW_flux_up_at_model_top:    20.03 ms
[PERF] reader.netcdf_read.precip_total_surf_mass_flux:    84.76 ms
[PERF] reader.fill_value_scan.precip_total_surf_mass_flux:    19.48 ms
[PERF] reader.RequestData:   386.11 ms
[PERF] add_cell_arrays.slice_plan:    50.03 ms
[PERF] add_cell_arrays.pedigree_copy.LW_flux_up_at_model_top:    22.92 ms
[PERF] add_cell_arrays.pedigree_copy.precip_total_surf_mass_flux:    23.44 ms
[PERF] center_meridian.cache_hit:    96.98 ms
[PERF] center_meridian.RequestData:    97.10 ms
[PERF] extract.RequestData:     0.10 ms
[PERF] project.cache_hit:     0.01 ms
[PERF] project.RequestData:     0.10 ms
[PERF] downstream_change.pipeline:   567.24 ms
[PERF] downstream_change.color_range:     0.22 ms
[PERF] downstream_change.render:     0.01 ms
[PERF] extract_avgs.LW_flux_up_at_model_top:    56.04 ms
[PERF] extract_avgs.precip_total_surf_mass_flux:    55.60 ms
[PERF] downstream_change.extract_avgs:   111.93 ms
[PERF] downstream_change.total:   679.46 ms
[PERF] view.shared.render_window:     1.62 ms
[PERF] load_variables.network_completion_1:     3.14 ms
[PERF] rca.encode.turbo-jpeg:     3.29 ms
[PERF] load_variables.build_auto_layout:    96.26 ms
[PERF] rca.push.rca_image_stream_1:     0.01 ms
[PERF] view.shared.render_window:     0.39 ms
[PERF] rca.encode.turbo-jpeg:     0.28 ms
[PERF] rca.push.rca_image_stream_1:     0.01 ms
[PERF] load_variables.network_completion_2:     4.32 ms
[PERF] view.shared.render_window:     0.36 ms
[PERF] rca.encode.turbo-jpeg:     0.43 ms
[PERF] rca.push.rca_image_stream_1:     0.01 ms
[PERF] load_variables.reset_camera:     0.00 ms
[PERF] load_variables.total:   885.48 ms
[PERF] view.shared.render_window:     0.33 ms
[PERF] rca.encode.turbo-jpeg:     0.53 ms
[PERF] rca.push.rca_image_stream_1:     0.01 ms
[PERF] project.deep_copy_points:     0.03 ms
[PERF] project.pyproj_transform:     3.31 ms
[PERF] project.cache_miss:     4.57 ms
[PERF] project.RequestData:     4.64 ms
[PERF] project.deep_copy_points:     0.02 ms
[PERF] project.pyproj_transform:     0.30 ms
[PERF] project.cache_miss:     1.00 ms
[PERF] project.RequestData:     1.04 ms

[PERF] view.shared.render_window:  6232.63 ms
[PERF] rca.encode.turbo-jpeg:     4.94 ms
[PERF] rca.push.rca_image_stream_1:     0.08 ms
[PERF] view.shared.render_window:   144.86 ms
[PERF] rca.encode.turbo-jpeg:     5.83 ms
[PERF] rca.push.rca_image_stream_1:     0.02 ms

Then moving time forward

[PERF] reader.netcdf_read.LW_flux_up_at_model_top:   224.57 ms
[PERF] reader.fill_value_scan.LW_flux_up_at_model_top:    20.60 ms
[PERF] reader.netcdf_read.precip_total_surf_mass_flux:    85.95 ms
[PERF] reader.fill_value_scan.precip_total_surf_mass_flux:    20.40 ms
[PERF] reader.RequestData:   352.61 ms
[PERF] add_cell_arrays.slice_plan:     0.01 ms
[PERF] add_cell_arrays.pedigree_copy.LW_flux_up_at_model_top:    22.71 ms
[PERF] add_cell_arrays.pedigree_copy.precip_total_surf_mass_flux:    22.41 ms
[PERF] center_meridian.cache_hit:    46.23 ms
[PERF] center_meridian.RequestData:    46.36 ms
[PERF] extract.RequestData:     0.05 ms
[PERF] project.cache_hit:     0.00 ms
[PERF] project.RequestData:     0.08 ms
[PERF] tick.pipeline:   483.01 ms
[PERF] tick.color_range:    63.15 ms
[PERF] tick.render:     0.01 ms
[PERF] extract_avgs.LW_flux_up_at_model_top:    56.89 ms
[PERF] extract_avgs.precip_total_surf_mass_flux:    57.09 ms
[PERF] tick.extract_avgs:   114.19 ms
[PERF] tick.time=1.total:   660.45 ms
[PERF] view.shared.render_window:  2248.95 ms
[PERF] rca.encode.turbo-jpeg:     4.97 ms
[PERF] view.shared.render_window:   128.30 ms
[PERF] rca.push.rca_image_stream_1:     0.03 ms
[PERF] rca.encode.turbo-jpeg:     4.41 ms
[PERF] rca.push.rca_image_stream_1:     0.01 ms
[PERF] view.shared.render_window:   112.33 ms
[PERF] rca.encode.turbo-jpeg:     6.12 ms
[PERF] rca.push.rca_image_stream_1:     0.02 ms

again

[PERF] reader.netcdf_read.LW_flux_up_at_model_top:    85.47 ms
[PERF] reader.fill_value_scan.LW_flux_up_at_model_top:    20.13 ms
[PERF] reader.netcdf_read.precip_total_surf_mass_flux:    85.47 ms
[PERF] reader.fill_value_scan.precip_total_surf_mass_flux:    19.81 ms
[PERF] reader.RequestData:   211.68 ms
[PERF] add_cell_arrays.slice_plan:     0.01 ms
[PERF] add_cell_arrays.pedigree_copy.LW_flux_up_at_model_top:    23.13 ms
[PERF] add_cell_arrays.pedigree_copy.precip_total_surf_mass_flux:    23.43 ms
[PERF] center_meridian.cache_hit:    47.61 ms
[PERF] center_meridian.RequestData:    47.70 ms
[PERF] extract.RequestData:     0.06 ms
[PERF] project.cache_hit:     0.00 ms
[PERF] project.RequestData:     0.08 ms
[PERF] tick.pipeline:   343.63 ms
[PERF] tick.color_range:    63.71 ms
[PERF] tick.render:     0.01 ms
[PERF] extract_avgs.LW_flux_up_at_model_top:    56.90 ms
[PERF] extract_avgs.precip_total_surf_mass_flux:    58.08 ms
[PERF] tick.extract_avgs:   115.18 ms
[PERF] tick.time=2.total:   522.62 ms
[PERF] view.shared.render_window:  2200.53 ms
[PERF] rca.encode.turbo-jpeg:     5.00 ms
[PERF] view.shared.render_window:   144.67 ms
[PERF] rca.push.rca_image_stream_1:     0.03 ms
[PERF] rca.encode.turbo-jpeg:     4.47 ms
[PERF] rca.push.rca_image_stream_1:     0.02 ms
[PERF] view.shared.render_window:   112.59 ms
[PERF] rca.encode.turbo-jpeg:     5.96 ms
[PERF] rca.push.rca_image_stream_1:     0.02 ms

and again

[PERF] reader.netcdf_read.LW_flux_up_at_model_top:    85.59 ms
[PERF] reader.fill_value_scan.LW_flux_up_at_model_top:    19.73 ms
[PERF] reader.netcdf_read.precip_total_surf_mass_flux:    85.71 ms
[PERF] reader.fill_value_scan.precip_total_surf_mass_flux:    20.29 ms
[PERF] reader.RequestData:   212.08 ms
[PERF] add_cell_arrays.slice_plan:     0.01 ms
[PERF] add_cell_arrays.pedigree_copy.LW_flux_up_at_model_top:    22.28 ms
[PERF] add_cell_arrays.pedigree_copy.precip_total_surf_mass_flux:    22.60 ms
[PERF] center_meridian.cache_hit:    45.93 ms
[PERF] center_meridian.RequestData:    46.01 ms
[PERF] extract.RequestData:     0.06 ms
[PERF] project.cache_hit:     0.00 ms
[PERF] project.RequestData:     0.06 ms
[PERF] tick.pipeline:   342.14 ms
[PERF] tick.color_range:    62.33 ms
[PERF] tick.render:     0.01 ms
[PERF] extract_avgs.LW_flux_up_at_model_top:    56.78 ms
[PERF] extract_avgs.precip_total_surf_mass_flux:    57.16 ms
[PERF] tick.extract_avgs:   114.14 ms
[PERF] tick.time=3.total:   518.71 ms
[PERF] view.shared.render_window:  2200.14 ms
[PERF] rca.encode.turbo-jpeg:     4.62 ms
[PERF] view.shared.render_window:   144.55 ms
[PERF] rca.push.rca_image_stream_1:     0.03 ms
[PERF] rca.encode.turbo-jpeg:     4.55 ms
[PERF] rca.push.rca_image_stream_1:     0.01 ms
[PERF] view.shared.render_window:   112.44 ms
[PERF] rca.encode.turbo-jpeg:     6.11 ms
[PERF] rca.push.rca_image_stream_1:     0.03 ms

@jourdain
Copy link
Copy Markdown
Collaborator

And when cropping so the rendering endup "smaller" but with 4 variables.

Longitude = [ -50, 96 ]
Latitude = [ -66, 73 ]
[PERF] reader.netcdf_read.LW_flux_up_at_model_top:    78.85 ms
[PERF] reader.fill_value_scan.LW_flux_up_at_model_top:    10.57 ms
[PERF] reader.netcdf_read.precip_total_surf_mass_flux:    78.87 ms
[PERF] reader.fill_value_scan.precip_total_surf_mass_flux:    17.77 ms
[PERF] reader.RequestData:   186.86 ms
[PERF] add_cell_arrays.slice_plan:     0.01 ms
[PERF] add_cell_arrays.pedigree_copy.area:    23.09 ms
[PERF] add_cell_arrays.pedigree_copy.LW_flux_up_at_model_top:    22.80 ms
[PERF] add_cell_arrays.pedigree_copy.precip_total_surf_mass_flux:    22.44 ms
[PERF] add_cell_arrays.pedigree_copy.lat:    22.66 ms
[PERF] center_meridian.cache_hit:    92.18 ms
[PERF] center_meridian.RequestData:    92.28 ms
[PERF] add_cell_arrays.slice_plan:     0.00 ms
[PERF] add_cell_arrays.pedigree_copy.area:     8.01 ms
[PERF] add_cell_arrays.pedigree_copy.LW_flux_up_at_model_top:     9.85 ms
[PERF] add_cell_arrays.pedigree_copy.precip_total_surf_mass_flux:     9.88 ms
[PERF] add_cell_arrays.pedigree_copy.lat:     8.90 ms
[PERF] extract.cache_hit:    36.99 ms
[PERF] extract.RequestData:    37.09 ms
[PERF] project.cache_hit:     0.01 ms
[PERF] project.RequestData:     0.08 ms
[PERF] tick.pipeline:   352.27 ms
[PERF] tick.color_range:    50.81 ms
[PERF] tick.render:     0.01 ms
[PERF] extract_avgs.LW_flux_up_at_model_top:    23.69 ms
[PERF] extract_avgs.precip_total_surf_mass_flux:    23.73 ms
[PERF] extract_avgs.area:    25.26 ms
[PERF] extract_avgs.lat:    24.19 ms
[PERF] tick.extract_avgs:    97.27 ms
[PERF] tick.time=30.total:   500.44 ms
[PERF] view.shared.render_window:  1664.24 ms
[PERF] rca.encode.turbo-jpeg:    15.36 ms
[PERF] view.shared.render_window:   116.38 ms
[PERF] rca.push.rca_image_stream_1:     0.05 ms
[PERF] rca.encode.turbo-jpeg:    15.93 ms
[PERF] rca.push.rca_image_stream_1:     0.03 ms
[PERF] view.shared.render_window:    91.17 ms
[PERF] rca.encode.turbo-jpeg:    18.20 ms
[PERF] rca.push.rca_image_stream_1:     0.03 ms

@berkgeveci
Copy link
Copy Markdown
Collaborator Author

berkgeveci commented Apr 24, 2026 via email

@jourdain
Copy link
Copy Markdown
Collaborator

Who ever get to there first @huiwanpnnl

# Load module
module load conda
conda activate /global/common/software/m4359/conda-envs/quickview-family

# Chunk data
cd /pscratch/sd/h/huiwan/vis/test_data/202601_ne1024
quickview-chunk --input output.scream.Cess.hourly2DVars.INSTANT.nhours_x1.2019-09-02-03600.nc

# Load chunked data
quickview -p 0 --fast --perf -df output.scream.Cess.hourly2DVars.INSTANT.nhours_x1.2019-09-02-03600.chunked.nc -cf connectivity_ne1024pg2_TEMPEST.scrip.nc

@jourdain
Copy link
Copy Markdown
Collaborator

On login node (shared gpu/resources)

Load files:
 - simulation: output.scream.Cess.hourly2DVars.INSTANT.nhours_x1.2019-09-02-03600.chunked.nc
 - connectivity: connectivity_ne1024pg2_TEMPEST.scrip.nc
[PERF] reader.RequestData:  5500.47 ms
[PERF] reader.RequestData:     0.09 ms
[PERF] center_meridian.clip_left:  2638.64 ms
[PERF] center_meridian.clip_right:  2527.13 ms
[PERF] center_meridian.transform:   440.03 ms
[PERF] center_meridian.append:  1697.35 ms
[PERF] center_meridian.rebuild:  7310.07 ms
[PERF] center_meridian.RequestData:  7310.18 ms
[PERF] extract.RequestData:     0.11 ms
[PERF] project.deep_copy_points:   729.41 ms
[PERF] project.pyproj_transform:  1746.38 ms
[PERF] project.cache_miss:  5300.04 ms
[PERF] project.RequestData:  5300.33 ms
[PERF] tick.pipeline: 13180.15 ms
[PERF] tick.color_range:     0.42 ms
[PERF] tick.render:     0.02 ms
[PERF] tick.extract_avgs:     0.34 ms
[PERF] tick.time=50.total: 13181.10 ms
[PERF] view.shared.render_window:    61.69 ms
[PERF] rca.encode.turbo-jpeg:     7.95 ms
[PERF] rca.push.rca_image_stream_1:     0.03 ms
[PERF] view.shared.render_window:     1.92 ms
[PERF] rca.encode.turbo-jpeg:     0.67 ms
[PERF] rca.push.rca_image_stream_1:     0.02 ms
[PERF] load_variables.LoadVariables:     0.78 ms
[PERF] reader.netcdf_read.LW_flux_up_at_model_top:   305.87 ms
[PERF] reader.fill_value_scan.LW_flux_up_at_model_top:    89.52 ms
[PERF] reader.netcdf_read.precip_total_surf_mass_flux:   311.48 ms
[PERF] reader.fill_value_scan.precip_total_surf_mass_flux:    95.34 ms
[PERF] reader.RequestData:   803.62 ms
[PERF] add_cell_arrays.slice_plan:   200.46 ms
[PERF] add_cell_arrays.pedigree_copy.LW_flux_up_at_model_top:    91.98 ms
[PERF] add_cell_arrays.pedigree_copy.precip_total_surf_mass_flux:    73.25 ms
[PERF] center_meridian.cache_hit:   366.34 ms
[PERF] center_meridian.RequestData:   366.47 ms
[PERF] extract.RequestData:     0.07 ms
[PERF] project.cache_hit:     0.00 ms
[PERF] project.RequestData:     0.11 ms
[PERF] downstream_change.pipeline:  1283.02 ms
[PERF] downstream_change.color_range:     0.22 ms
[PERF] downstream_change.render:     0.01 ms
[PERF] extract_avgs.LW_flux_up_at_model_top:   218.21 ms
[PERF] extract_avgs.precip_total_surf_mass_flux:   220.90 ms
[PERF] downstream_change.extract_avgs:   439.53 ms
[PERF] downstream_change.total:  1722.92 ms
[PERF] view.shared.render_window:     6.18 ms
[PERF] load_variables.network_completion_1:    10.65 ms
[PERF] rca.encode.turbo-jpeg:    48.39 ms
[PERF] load_variables.build_auto_layout:   130.59 ms
[PERF] rca.push.rca_image_stream_1:     0.03 ms
[PERF] view.shared.render_window:     1.89 ms
[PERF] load_variables.network_completion_2:     8.60 ms
[PERF] rca.encode.turbo-jpeg:     0.62 ms
[PERF] rca.push.rca_image_stream_1:     0.02 ms
[PERF] view.shared.render_window:     1.61 ms
[PERF] rca.encode.turbo-jpeg:     0.49 ms
[PERF] rca.push.rca_image_stream_1:     0.02 ms
[PERF] load_variables.reset_camera:     0.02 ms
[PERF] load_variables.total:  1976.53 ms
 JS Error => error: ResizeObserver loop completed with undelivered notifications.
[PERF] view.shared.render_window:     2.46 ms
[PERF] rca.encode.turbo-jpeg:     0.52 ms
[PERF] rca.push.rca_image_stream_1:     0.05 ms
[PERF] project.deep_copy_points:     0.04 ms
[PERF] project.pyproj_transform:     3.84 ms
[PERF] project.cache_miss:     5.76 ms
[PERF] project.RequestData:     5.86 ms
[PERF] project.deep_copy_points:     0.03 ms
[PERF] project.pyproj_transform:     0.35 ms
[PERF] project.cache_miss:     1.16 ms
[PERF] project.RequestData:     1.21 ms
[PERF] view.shared.render_window: 12192.52 ms
[PERF] rca.encode.turbo-jpeg:     3.78 ms
[PERF] rca.push.rca_image_stream_1:     0.09 ms
[PERF] view.shared.render_window:   107.49 ms
[PERF] rca.encode.turbo-jpeg:     5.05 ms
[PERF] rca.push.rca_image_stream_1:     0.03 ms
[PERF] reader.netcdf_read.LW_flux_up_at_model_top:   210.98 ms
[PERF] reader.fill_value_scan.LW_flux_up_at_model_top:    73.23 ms
[PERF] reader.netcdf_read.precip_total_surf_mass_flux:   195.66 ms
[PERF] reader.fill_value_scan.precip_total_surf_mass_flux:    74.63 ms
[PERF] reader.RequestData:   555.59 ms
[PERF] add_cell_arrays.slice_plan:     0.03 ms
[PERF] add_cell_arrays.pedigree_copy.LW_flux_up_at_model_top:    72.80 ms
[PERF] add_cell_arrays.pedigree_copy.precip_total_surf_mass_flux:    95.18 ms
[PERF] center_meridian.cache_hit:   183.79 ms
[PERF] center_meridian.RequestData:   183.89 ms
[PERF] extract.RequestData:     0.12 ms
[PERF] project.cache_hit:     0.01 ms
[PERF] project.RequestData:     0.14 ms
[PERF] tick.pipeline:   895.81 ms
[PERF] tick.color_range:    81.36 ms
[PERF] tick.render:     0.01 ms
[PERF] extract_avgs.LW_flux_up_at_model_top:   221.37 ms
[PERF] extract_avgs.precip_total_surf_mass_flux:   221.87 ms
[PERF] tick.extract_avgs:   443.53 ms
[PERF] tick.time=1.total:  1420.90 ms
[PERF] view.shared.render_window:  3885.98 ms
[PERF] rca.encode.turbo-jpeg:     3.57 ms
[PERF] view.shared.render_window:    98.68 ms
[PERF] rca.push.rca_image_stream_1:     0.06 ms
[PERF] rca.encode.turbo-jpeg:     3.18 ms
[PERF] rca.push.rca_image_stream_1:     0.01 ms
[PERF] view.shared.render_window:   105.70 ms
[PERF] rca.encode.turbo-jpeg:     4.33 ms
[PERF] rca.push.rca_image_stream_1:     0.03 ms







[PERF] view.shared.render_window:  8437.75 ms
[PERF] rca.encode.turbo-jpeg:     5.98 ms
[PERF] reader.netcdf_read.LW_flux_up_at_model_top:   210.04 ms
[PERF] reader.fill_value_scan.LW_flux_up_at_model_top:    76.39 ms
[PERF] reader.netcdf_read.precip_total_surf_mass_flux:   200.47 ms
[PERF] reader.fill_value_scan.precip_total_surf_mass_flux:    77.24 ms
[PERF] reader.RequestData:   565.21 ms
[PERF] add_cell_arrays.slice_plan:     0.01 ms
[PERF] add_cell_arrays.pedigree_copy.LW_flux_up_at_model_top:    79.04 ms
[PERF] add_cell_arrays.pedigree_copy.precip_total_surf_mass_flux:    77.15 ms
[PERF] center_meridian.cache_hit:   172.48 ms
[PERF] center_meridian.RequestData:   172.56 ms
[PERF] extract.RequestData:     0.07 ms
[PERF] project.cache_hit:     0.01 ms
[PERF] project.RequestData:     0.09 ms
[PERF] tick.pipeline:   853.06 ms
[PERF] tick.color_range:    87.50 ms
[PERF] tick.render:     0.01 ms
[PERF] extract_avgs.LW_flux_up_at_model_top:   221.94 ms
[PERF] extract_avgs.precip_total_surf_mass_flux:   221.43 ms
[PERF] tick.extract_avgs:   443.72 ms
[PERF] tick.time=2.total:  1384.43 ms
[PERF] rca.push.rca_image_stream_1:     0.03 ms





[PERF] view.shared.render_window:  3730.74 ms
[PERF] rca.encode.turbo-jpeg:     2.77 ms
[PERF] rca.push.rca_image_stream_1:     0.09 ms
[PERF] view.shared.render_window:    88.19 ms
[PERF] rca.encode.turbo-jpeg:     3.30 ms
[PERF] rca.push.rca_image_stream_1:     0.03 ms
[PERF] reader.netcdf_read.LW_flux_up_at_model_top:   248.77 ms
[PERF] reader.fill_value_scan.LW_flux_up_at_model_top:    81.13 ms
[PERF] reader.netcdf_read.precip_total_surf_mass_flux:   232.08 ms
[PERF] reader.fill_value_scan.precip_total_surf_mass_flux:    84.61 ms
[PERF] reader.RequestData:   647.93 ms
[PERF] add_cell_arrays.slice_plan:     0.01 ms
[PERF] add_cell_arrays.pedigree_copy.LW_flux_up_at_model_top:    82.79 ms
[PERF] add_cell_arrays.pedigree_copy.precip_total_surf_mass_flux:    78.96 ms
[PERF] center_meridian.cache_hit:   177.99 ms
[PERF] center_meridian.RequestData:   178.09 ms
[PERF] extract.RequestData:     0.06 ms
[PERF] project.cache_hit:     0.03 ms
[PERF] project.RequestData:     0.13 ms
[PERF] tick.pipeline:   945.77 ms
[PERF] tick.color_range:    81.82 ms
[PERF] tick.render:     0.01 ms
[PERF] extract_avgs.LW_flux_up_at_model_top:   280.06 ms
[PERF] extract_avgs.precip_total_surf_mass_flux:   297.74 ms
[PERF] tick.extract_avgs:   578.14 ms
[PERF] tick.time=3.total:  1605.84 ms
[PERF] view.shared.render_window:  4198.89 ms
[PERF] rca.encode.turbo-jpeg:     3.47 ms
[PERF] view.shared.render_window:    88.77 ms
[PERF] rca.push.rca_image_stream_1:     0.04 ms
[PERF] rca.encode.turbo-jpeg:     2.49 ms
[PERF] rca.push.rca_image_stream_1:     0.02 ms
[PERF] reader.netcdf_read.LW_flux_up_at_model_top:   279.33 ms
[PERF] reader.fill_value_scan.LW_flux_up_at_model_top:    79.50 ms
[PERF] reader.netcdf_read.precip_total_surf_mass_flux:   265.80 ms
[PERF] reader.fill_value_scan.precip_total_surf_mass_flux:    99.53 ms
[PERF] reader.RequestData:   726.25 ms
[PERF] add_cell_arrays.slice_plan:     0.02 ms
[PERF] add_cell_arrays.pedigree_copy.LW_flux_up_at_model_top:    86.66 ms
[PERF] add_cell_arrays.pedigree_copy.precip_total_surf_mass_flux:    85.98 ms
[PERF] center_meridian.cache_hit:   197.05 ms
[PERF] center_meridian.RequestData:   197.34 ms
[PERF] extract.RequestData:     0.08 ms
[PERF] project.cache_hit:     0.10 ms
[PERF] project.RequestData:     0.18 ms
[PERF] tick.pipeline:  1057.01 ms
[PERF] tick.color_range:    82.21 ms
[PERF] tick.render:     0.02 ms
[PERF] extract_avgs.LW_flux_up_at_model_top:   242.10 ms
[PERF] extract_avgs.precip_total_surf_mass_flux:   225.79 ms
[PERF] tick.extract_avgs:   468.35 ms
[PERF] tick.time=4.total:  1607.77 ms
[PERF] view.shared.render_window:  3878.87 ms
[PERF] rca.encode.turbo-jpeg:     3.45 ms
[PERF] rca.push.rca_image_stream_1:     0.05 ms
[PERF] reader.netcdf_read.LW_flux_up_at_model_top:   237.67 ms
[PERF] reader.fill_value_scan.LW_flux_up_at_model_top:    77.34 ms
[PERF] reader.netcdf_read.precip_total_surf_mass_flux:   252.13 ms
[PERF] reader.fill_value_scan.precip_total_surf_mass_flux:    88.61 ms
[PERF] reader.RequestData:   657.74 ms
[PERF] add_cell_arrays.slice_plan:     0.01 ms
[PERF] add_cell_arrays.pedigree_copy.LW_flux_up_at_model_top:    85.57 ms
[PERF] add_cell_arrays.pedigree_copy.precip_total_surf_mass_flux:    80.25 ms
[PERF] center_meridian.cache_hit:   183.87 ms
[PERF] center_meridian.RequestData:   184.17 ms
[PERF] extract.RequestData:     0.08 ms
[PERF] project.cache_hit:     0.10 ms
[PERF] project.RequestData:     0.20 ms
[PERF] tick.pipeline:   969.01 ms
[PERF] tick.color_range:    88.14 ms
[PERF] tick.render:     0.01 ms
[PERF] extract_avgs.LW_flux_up_at_model_top:   246.05 ms
[PERF] extract_avgs.precip_total_surf_mass_flux:   255.60 ms
[PERF] tick.extract_avgs:   502.07 ms
[PERF] tick.time=5.total:  1559.39 ms
[PERF] view.shared.render_window:  3978.56 ms
[PERF] rca.encode.turbo-jpeg:     2.82 ms
[PERF] rca.push.rca_image_stream_1:     0.03 ms
[PERF] view.shared.render_window:    89.84 ms
[PERF] rca.encode.turbo-jpeg:     3.16 ms
[PERF] rca.push.rca_image_stream_1:     0.03 ms

@huiwanpnnl
Copy link
Copy Markdown
Collaborator

On exclusive GPU node, using 2.5.0.

Start app, load file:

 quickview -p 0 --fast --perf -df output.scream.Cess.hourly2DVars.INSTANT.nhours_x1.2019-09-02-03600.chunked.nc -cf connectivity_ne1024pg2_TEMPEST.scrip.nc
2026-04-24 09:07:12.271 | INFO     | trame_dataclass.module:setup:16 - dataclass protocol setup to v2
Loading plugin :  /global/common/software/m4359/conda-envs/quickview-family/lib/python3.13/site-packages/e3sm_quickview/plugins/eam_gridlines.py
Loading plugin :  /global/common/software/m4359/conda-envs/quickview-family/lib/python3.13/site-packages/e3sm_quickview/plugins/eam_projection.py
Loading plugin :  /global/common/software/m4359/conda-envs/quickview-family/lib/python3.13/site-packages/e3sm_quickview/plugins/eam_reader.py
Loading plugin :  /global/common/software/m4359/conda-envs/quickview-family/lib/python3.13/site-packages/e3sm_quickview/plugins/eam_filters.py
Load files:
 - simulation: output.scream.Cess.hourly2DVars.INSTANT.nhours_x1.2019-09-02-03600.chunked.nc
 - connectivity: connectivity_ne1024pg2_TEMPEST.scrip.nc

Use URL below to connect to the application:

  => https://jupyter.nersc.gov/user/huiwan/perlmutter-exclusive-node-gpu/proxy/33111/index.html?ui=main&reconnect=auto

[PERF] reader.RequestData:  2060.34 ms
[PERF] reader.RequestData:     0.06 ms
[PERF] center_meridian.clip_left:  1292.51 ms
[PERF] center_meridian.clip_right:  1234.39 ms
[PERF] center_meridian.transform:   160.72 ms
[PERF] center_meridian.append:   299.62 ms
[PERF] center_meridian.rebuild:  3008.33 ms
[PERF] center_meridian.RequestData:  3008.40 ms
[PERF] extract.RequestData:     0.08 ms
[PERF] project.deep_copy_points:   153.99 ms
[PERF] project.pyproj_transform:   584.48 ms
[PERF] project.cache_miss:  1387.99 ms
[PERF] project.RequestData:  1388.21 ms
[PERF] tick.pipeline:  4499.09 ms
[PERF] tick.color_range:     0.42 ms
[PERF] tick.render:     0.02 ms
[PERF] tick.extract_avgs:     0.30 ms
[PERF] tick.time=50.total:  4500.01 ms
[PERF] view.shared.render_window:   103.14 ms
[PERF] rca.encode.turbo-jpeg:     2.54 ms
[PERF] rca.push.rca_image_stream_1:     0.05 ms
[PERF] view.shared.render_window:     0.40 ms
[PERF] rca.encode.turbo-jpeg:     0.40 ms
[PERF] rca.push.rca_image_stream_1:     0.00 ms

@huiwanpnnl
Copy link
Copy Markdown
Collaborator

Load one surface variable:

[PERF] load_variables.LoadVariables:     0.58 ms
[PERF] reader.netcdf_read.LW_flux_up_at_model_top:   137.43 ms
[PERF] reader.fill_value_scan.LW_flux_up_at_model_top:    18.77 ms
[PERF] reader.RequestData:   156.71 ms
[PERF] add_cell_arrays.slice_plan:    51.19 ms
[PERF] add_cell_arrays.pedigree_copy.LW_flux_up_at_model_top:    21.92 ms
[PERF] center_meridian.cache_hit:    73.69 ms
[PERF] center_meridian.RequestData:    73.78 ms
[PERF] extract.RequestData:     0.09 ms
[PERF] project.cache_hit:     0.01 ms
[PERF] project.RequestData:     0.10 ms
[PERF] downstream_change.pipeline:   313.28 ms
[PERF] downstream_change.color_range:     0.17 ms
[PERF] downstream_change.render:     0.01 ms
[PERF] extract_avgs.LW_flux_up_at_model_top:    55.80 ms
[PERF] downstream_change.extract_avgs:    55.97 ms
[PERF] downstream_change.total:   369.48 ms
[PERF] view.shared.render_window:     1.61 ms
[PERF] load_variables.network_completion_1:     2.99 ms
[PERF] rca.encode.turbo-jpeg:     2.37 ms
[PERF] load_variables.build_auto_layout:    50.77 ms
[PERF] rca.push.rca_image_stream_1:     0.01 ms
[PERF] view.shared.render_window:     0.36 ms
[PERF] load_variables.network_completion_2:     3.15 ms
[PERF] rca.encode.turbo-jpeg:     0.48 ms
[PERF] rca.push.rca_image_stream_1:     0.01 ms
[PERF] view.shared.render_window:     0.38 ms
[PERF] rca.encode.turbo-jpeg:     0.34 ms
[PERF] rca.push.rca_image_stream_1:     0.02 ms
[PERF] load_variables.reset_camera:     0.00 ms
[PERF] load_variables.total:   528.79 ms
[PERF] project.deep_copy_points:     0.02 ms
[PERF] project.pyproj_transform:     3.32 ms
[PERF] project.cache_miss:     4.55 ms
[PERF] project.RequestData:     4.63 ms
[PERF] project.deep_copy_points:     0.02 ms
[PERF] project.pyproj_transform:     0.31 ms
[PERF] project.cache_miss:     1.00 ms
[PERF] project.RequestData:     1.04 ms
[PERF] view.shared.render_window:  4138.87 ms
[PERF] rca.encode.turbo-jpeg:    35.87 ms
[PERF] rca.push.rca_image_stream_1:     0.07 ms
[PERF] view.shared.render_window:  2978.62 ms
[PERF] rca.encode.turbo-jpeg:     1.54 ms
[PERF] rca.push.rca_image_stream_1:     0.13 ms
[PERF] view.shared.render_window:    56.90 ms
[PERF] rca.encode.turbo-jpeg:     2.28 ms
[PERF] rca.push.rca_image_stream_1:     0.03 ms

Manually stepping through some time steps:

[PERF] reader.netcdf_read.LW_flux_up_at_model_top:   141.55 ms
[PERF] reader.fill_value_scan.LW_flux_up_at_model_top:    19.23 ms
[PERF] reader.RequestData:   161.30 ms
[PERF] add_cell_arrays.slice_plan:     0.01 ms
[PERF] add_cell_arrays.pedigree_copy.LW_flux_up_at_model_top:    21.17 ms
[PERF] center_meridian.cache_hit:    21.63 ms
[PERF] center_meridian.RequestData:    21.71 ms
[PERF] extract.RequestData:     0.05 ms
[PERF] project.cache_hit:     0.00 ms
[PERF] project.RequestData:     0.07 ms
[PERF] tick.pipeline:   266.34 ms
[PERF] tick.color_range:    31.74 ms
[PERF] tick.render:     0.01 ms
[PERF] extract_avgs.LW_flux_up_at_model_top:    55.96 ms
[PERF] tick.extract_avgs:    56.10 ms
[PERF] tick.time=1.total:   354.27 ms
[PERF] view.shared.render_window:  1310.82 ms
[PERF] rca.encode.turbo-jpeg:     1.72 ms
[PERF] rca.push.rca_image_stream_1:     0.04 ms
[PERF] view.shared.render_window:    57.14 ms
[PERF] rca.encode.turbo-jpeg:     2.15 ms
[PERF] rca.push.rca_image_stream_1:     0.01 ms

[PERF] reader.netcdf_read.LW_flux_up_at_model_top:    76.44 ms
[PERF] reader.fill_value_scan.LW_flux_up_at_model_top:    18.78 ms
[PERF] reader.RequestData:    95.76 ms
[PERF] add_cell_arrays.slice_plan:     0.01 ms
[PERF] add_cell_arrays.pedigree_copy.LW_flux_up_at_model_top:    22.31 ms
[PERF] center_meridian.cache_hit:    22.86 ms
[PERF] center_meridian.RequestData:    22.94 ms
[PERF] extract.RequestData:     0.05 ms
[PERF] project.cache_hit:     0.00 ms
[PERF] project.RequestData:     0.07 ms
[PERF] tick.pipeline:   202.26 ms
[PERF] tick.color_range:    31.51 ms
[PERF] tick.render:     0.01 ms
[PERF] extract_avgs.LW_flux_up_at_model_top:    54.55 ms
[PERF] tick.extract_avgs:    54.68 ms
[PERF] tick.time=2.total:   288.54 ms
[PERF] view.shared.render_window:  1332.75 ms
[PERF] rca.encode.turbo-jpeg:     1.43 ms
[PERF] rca.push.rca_image_stream_1:     0.02 ms
[PERF] view.shared.render_window:    57.03 ms
[PERF] rca.encode.turbo-jpeg:     2.24 ms
[PERF] rca.push.rca_image_stream_1:     0.02 ms

[PERF] reader.netcdf_read.LW_flux_up_at_model_top:   122.97 ms
[PERF] reader.fill_value_scan.LW_flux_up_at_model_top:    19.79 ms
[PERF] reader.RequestData:   143.08 ms
[PERF] add_cell_arrays.slice_plan:     0.00 ms
[PERF] add_cell_arrays.pedigree_copy.LW_flux_up_at_model_top:    22.37 ms
[PERF] center_meridian.cache_hit:    22.94 ms
[PERF] center_meridian.RequestData:    22.99 ms
[PERF] extract.RequestData:     0.05 ms
[PERF] project.cache_hit:     0.00 ms
[PERF] project.RequestData:     0.06 ms
[PERF] tick.pipeline:   249.74 ms
[PERF] tick.color_range:    31.27 ms
[PERF] tick.render:     0.01 ms
[PERF] extract_avgs.LW_flux_up_at_model_top:    55.76 ms
[PERF] tick.extract_avgs:    55.87 ms
[PERF] tick.time=3.total:   336.96 ms
[PERF] view.shared.render_window:  1261.80 ms
[PERF] rca.encode.turbo-jpeg:     1.84 ms
[PERF] rca.push.rca_image_stream_1:     0.04 ms
[PERF] view.shared.render_window:   133.23 ms
[PERF] rca.encode.turbo-jpeg:     2.30 ms
[PERF] rca.push.rca_image_stream_1:     0.02 ms


[PERF] reader.netcdf_read.LW_flux_up_at_model_top:   106.38 ms
[PERF] reader.fill_value_scan.LW_flux_up_at_model_top:    19.45 ms
[PERF] reader.RequestData:   126.36 ms
[PERF] add_cell_arrays.slice_plan:     0.01 ms
[PERF] add_cell_arrays.pedigree_copy.LW_flux_up_at_model_top:    22.12 ms
[PERF] center_meridian.cache_hit:    22.74 ms
[PERF] center_meridian.RequestData:    22.82 ms
[PERF] extract.RequestData:     0.05 ms
[PERF] project.cache_hit:     0.00 ms
[PERF] project.RequestData:     0.07 ms
[PERF] tick.pipeline:   233.62 ms
[PERF] tick.color_range:    31.90 ms
[PERF] tick.render:     0.01 ms
[PERF] extract_avgs.LW_flux_up_at_model_top:    55.02 ms
[PERF] tick.extract_avgs:    55.14 ms
[PERF] tick.time=4.total:   320.73 ms
[PERF] view.shared.render_window:  1276.28 ms
[PERF] rca.encode.turbo-jpeg:     1.66 ms
[PERF] rca.push.rca_image_stream_1:     0.02 ms
[PERF] view.shared.render_window:    56.97 ms
[PERF] rca.encode.turbo-jpeg:     1.95 ms
[PERF] rca.push.rca_image_stream_1:     0.02 ms


[PERF] reader.netcdf_read.LW_flux_up_at_model_top:    61.53 ms
[PERF] reader.fill_value_scan.LW_flux_up_at_model_top:    20.13 ms
[PERF] reader.RequestData:    81.99 ms
[PERF] add_cell_arrays.slice_plan:     0.00 ms
[PERF] add_cell_arrays.pedigree_copy.LW_flux_up_at_model_top:    22.95 ms
[PERF] center_meridian.cache_hit:    23.51 ms
[PERF] center_meridian.RequestData:    23.57 ms
[PERF] extract.RequestData:     0.05 ms
[PERF] project.cache_hit:     0.00 ms
[PERF] project.RequestData:     0.07 ms
[PERF] tick.pipeline:   188.12 ms
[PERF] tick.color_range:    30.70 ms
[PERF] tick.render:     0.01 ms
[PERF] extract_avgs.LW_flux_up_at_model_top:    55.07 ms
[PERF] tick.extract_avgs:    55.18 ms
[PERF] tick.time=5.total:   274.07 ms
[PERF] view.shared.render_window:  1264.48 ms
[PERF] rca.encode.turbo-jpeg:     1.63 ms
[PERF] rca.push.rca_image_stream_1:     0.02 ms
[PERF] view.shared.render_window:    56.98 ms
[PERF] rca.encode.turbo-jpeg:     2.14 ms
[PERF] rca.push.rca_image_stream_1:     0.02 ms


[PERF] reader.netcdf_read.LW_flux_up_at_model_top:   126.68 ms
[PERF] reader.fill_value_scan.LW_flux_up_at_model_top:    19.71 ms
[PERF] reader.RequestData:   146.70 ms
[PERF] add_cell_arrays.slice_plan:     0.00 ms
[PERF] add_cell_arrays.pedigree_copy.LW_flux_up_at_model_top:    23.07 ms
[PERF] center_meridian.cache_hit:    23.57 ms
[PERF] center_meridian.RequestData:    23.62 ms
[PERF] extract.RequestData:     0.05 ms
[PERF] project.cache_hit:     0.00 ms
[PERF] project.RequestData:     0.06 ms
[PERF] tick.pipeline:   254.02 ms
[PERF] tick.color_range:    30.71 ms
[PERF] tick.render:     0.01 ms
[PERF] extract_avgs.LW_flux_up_at_model_top:    54.81 ms
[PERF] tick.extract_avgs:    54.92 ms
[PERF] tick.time=6.total:   339.71 ms
[PERF] view.shared.render_window:  1290.70 ms
[PERF] rca.encode.turbo-jpeg:     1.48 ms
[PERF] rca.push.rca_image_stream_1:     0.02 ms
[PERF] view.shared.render_window:    56.95 ms
[PERF] rca.encode.turbo-jpeg:     2.11 ms
[PERF] rca.push.rca_image_stream_1:     0.02 ms

@huiwanpnnl
Copy link
Copy Markdown
Collaborator

huiwanpnnl commented Apr 24, 2026

I also tried the "play" button. Given that we are looking at a ultra-high-resolution (3.5 km) global field, I'd say this is pretty good. Thanks!

@huiwanpnnl
Copy link
Copy Markdown
Collaborator

I just realized that if I crop a smaller (but still fairly large) lat-lon box, then the stepping through slices appears impressively fast.

QuickView2.5.0_SCREAM_TOMLWup.mov

@berkgeveci
Copy link
Copy Markdown
Collaborator Author

You guys chunked the surface variables file. I want to test with a 3D file like output.scream.Cess.monthly_ne1024.AVERAGE.small.nc and vary the lev instead of the time. Chunking the surface fields is not useful and probably counter-productive.

@berkgeveci
Copy link
Copy Markdown
Collaborator Author

Yes. I verified that we don't want to chunk the surface variable. Just the 3D vars. Also, head node is about 4x slower than the compute nodes in processing.

@huiwanpnnl
Copy link
Copy Markdown
Collaborator

Oops. Thanks, Berk!

I chunked some 3D variables related to cloud fraction. Below is a real-time screen recording showing version 2.5.1's performance in stepping through the lev dimension. This was on an exclusive GPU node.

module load conda
conda activate /global/common/software/m4359/conda-envs/quickview-family

quickview -p 0 --fast --perf -df output.scream.Cess.monthly_ne1024.AVERAGE.nmonths_x1.2019-09-01-00000.cldfrac.chunked.nc -cf connectivity_ne1024pg2_TEMPEST.scrip.nc
QuickView2.5.0_SCREAM_cldfrac_tot.mov

@berkgeveci
Copy link
Copy Markdown
Collaborator Author

Nice!!!

@huiwanpnnl huiwanpnnl mentioned this pull request Apr 27, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants