Skip to main content

ArWen

ArWen is a GPU implementation of the WRF-ARW model family, with CUDA forecast kernels and Rust data paths for weather inputs and products. The Python package is gpuwm: gpuwm go takes a configuration from analysis inputs through a regional forecast to rendered products. WRF-exact results are demonstrated in strict mode for one 1-hour, 3 km configuration against stock scalar WRF 4.6.1 on glibc 2.39; the verification scope names the grid and physics used.

What it does

  • Regional forecasts: gpuwm domain --source selects GFS, HRRR, ERA5, RAP, GEFS and other registered sources; gpuwm sources --json lists their routes.
  • Source mappings: the source table and mapped-source guide describe the inputs each route needs.
  • Nested grids: gpuwm domain --ladder 12-3 creates a nest; [experiment] feedback = 1 selects the experimental two-way path.
  • Moving nests: gpuwm cyclone-setup builds a cyclone configuration with a following nest; the cyclone guide covers track selection and sizing.
  • Ensembles: gpuwm go CONFIG --members N --recipe time-lagged uses earlier source cycles; --restart-roster JSON continues the original members from checkpoints.
  • Products: gpuwm render RUN --series --products all draws maps with the Rust renderer; gpuwm export-grib2 RUN --out DIR writes surface and pressure-level GRIB2.
  • Restart: gpuwm resume CONFIG --outdir RUN finds a valid checkpoint; gpuwm go CONFIG --restart CHECKPOINT continues into a new output folder.
  • More than one GPU: gpuwm go CONFIG --devices N splits supported grids into resident slabs; multi-GPU operation describes the supported combinations.

Get ArWen

Download Requirements
Windows desktop: GUI and TUI x86-64 Windows; compatible NVIDIA GPU and driver; internet for first setup
Linux desktop: GUI and TUI x86-64 Linux, glibc 2.39 or newer, such as Ubuntu 24.04; Python 3.11 or newer; X11 or Wayland with working OpenGL
Integration kit Developer guide, CLI/plan examples, catalogs, and client design notes

The desktop archives contain the applications, native map library and map assets; Windows includes a graphical setup launcher that downloads a private Python and CUDA runtime on first use. The Python package gpuwm (below) carries the engine, native processing tools and TUI in its Windows and Linux platform wheels. The release notes and checksums list the exact artifacts and qualification records.

Get running

Local forecasts need a compatible NVIDIA GPU and driver; the runs below used one RTX 5090 with 32 GiB VRAM. Use Python 3.11 or newer on Linux x86-64 or Windows x86-64. The platform wheels include the native tools; the desktop GUI is a separate download.

Linux

python3 -m venv .venv
. .venv/bin/activate
python -m pip install 'gpuwm[all-cu12]==2.9.5'
gpuwm fetch-tables   # optional: stage Thompson tables ahead of the first run
gpuwm fetch-geog
gpuwm doctor

Windows

py -m venv .venv
.\.venv\Scripts\Activate.ps1
python -m pip install 'gpuwm[all-cu12]==2.9.5'
gpuwm fetch-tables   # optional: stage Thompson tables ahead of the first run
gpuwm fetch-geog
gpuwm doctor

Activating the environment puts gpuwm on PATH, and every command the program prints starts with it; gpuwm doctor checks that. gpuwm setup --with-geog runs the same staging (native tools, physics tables and geography) as one resumable command.

fetch-geog sets up the global geography every forecast builds its terrain, land use and soil from, once per computer. It downloads about 2.7 GB and takes about 34 GB of disk once unpacked, including the land-use datasets gpuwm mesh builds MPAS statics from. Every default source is permissively licensed (the soil categories are SoilGrids250m, CC BY 4.0; the deep-soil temperature is built on your machine from ERA5). Add --list to see each dataset and its size without downloading. --datasets wrf stages only what regional forecasts read (about 2.6 GB, about 28 GB unpacked); gpuwm doctor then reports the mesh geography as missing. Without it a forecast is refused at its start.

gpuwm doctor reports each remedy as a command or a # comment explaining the manual step. For CUDA 13, offline installation, source builds, data setup and desktop launchers, use the setup guide.

For a developer installation from a source checkout, use bash install.sh on Linux or powershell -File install.ps1 on Windows. Source installations build the native components and need the corresponding build tools. They make the environment on free-threaded Python 3.14t, using a python3.14t already on PATH or installing one with uv, because multi-card forecasts run about twice as fast on it; --python (-Python on Windows) picks another interpreter. The explicit bash install.sh invocation also works when an extracted source archive has lost executable permission bits; use it if ./install.sh reports Permission denied.

Choose an area and write a three-hour GFS configuration:

gpuwm domain --point 37.5,-90 --point-extent-km 1500 --root-dx 12 --source gfs --cycle latest --hours 3 --out forecast.toml

Run the forecast with one command:

gpuwm go forecast.toml

The command fetches the inputs, prepares the domain, runs the model and writes forecast files, maps and diagnostics in the run folder it prints. Each launch gets a timestamped folder under forecast-go by default. Use gpuwm go forecast.toml --dry-run to inspect the plan before fetching.

Examples

These examples use the configuration above. Replace RUN with the exact run folder printed by gpuwm go; use separate output roots for separate runs.

Three members from GFS cycles

gpuwm go forecast.toml --members 3 --recipe time-lagged --outdir ensemble

This runs three source trajectories over the same forecast window and writes ensemble products. Add --keep-member-files to retain full histories for individual members.

A parent and a 3 km nest

gpuwm domain --point 37.5,-90 --card 32gb --ladder 12-3 --source gfs --cycle latest --hours 3 --out nested.toml
gpuwm go nested.toml

The generated configuration carries the parent and child grids. See configuration for feedback and grid settings. Sub-kilometer storm diagnostics are not resolved tornado dynamics; the scale note explains their interpretation.

Continue an interrupted run

gpuwm resume forecast.toml --outdir RUN

Use the original configuration and run folder. The restart identity check rejects incompatible configurations, and the default retention is one complete checkpoint set.

Render a saved forecast

gpuwm render RUN --series --products t2,refl --out maps

This writes 2 m temperature and composite-reflectivity maps from saved frames. --products all requests the full catalog; the render summary records products that the available fields or forecast times cannot supply.

Export forecast fields

gpuwm export-grib2 RUN --out grib2

The exporter writes surface and pressure-level files. The GRIB2 guide describes fields and definition choices.

Measured runs

These are individual Linux acceptance runs of the 2.9.2 candidate on one RTX 5090, recorded on 2026-10-17. Times are complete command wall times, including products, with geography installed and shared input caches as noted in the measurement record.

Configuration Forecast length Command Wall time
GFS, 12 km, 1500 km extent 3 h gpuwm go 88.151 s
NCAR CONUS, 12 km, supplied WRF inputs 12 h gpuwm run --wrfinput 137.915 s
NCAR CONUS, 12 km, supplied WRF restart Final 1 h gpuwm run --restart-from 25.428 s

These timings exclude installation and geography download. They describe those configurations and cache states, not a throughput guarantee for other grids.

Whole-step driver runs of the 2.9.3 candidate, recorded on 2026-10-18 and 2026-10-19 (case B on one RTX 4090, no products; case A on both cards; the HRRR-shape case on one RTX 5090 with products on):

Configuration Forecast length Wall time
Nested 24 h case A, 1600 parent and 4800 child steps 24 h 111.0 s process, 101.5 s integration on an RTX 5090 (products on cost 0 s); 144.1 s on the RTX 4090, 171.2 s there before the driver
Nested 24 h case B, 4800 steps 24 h 84.8 s (111.8 s before the driver)
HRRR-shape, 796 x 636 x 49 at 3 km, dt 15 s, 5760 steps, products on 24 h 1944.8 s whole command (2092.5 s before), 1495.1 s integration

Documentation

Report problems through GitHub issues with the version, platform, command and error text. gpuwm report RUN --output diagnostics.zip collects a diagnostic bundle; review it for private information before sharing, following the reporting guide.

ArWen is research software; use official meteorological services for safety warnings.

The engine is licensed under Apache-2.0. Third-party code and data retain their terms; see NOTICE and provenance.

Metadata

Release files for gpuwm 2.9.5

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for gpuwm 2.9.5
File Size Uploaded Provenance
gpuwm-2.9.5.tar.gz 46.0 MB With provenance Details

Built distributions (wheels)

Table of built distributions (wheels) for gpuwm 2.9.5
File Interpreter ABI Platform
gpuwm-2.9.5-py3-none-win_amd64.whl Python 3 none Windows x86-64 Details
gpuwm-2.9.5-py3-none-manylinux_2_28_x86_64.whl Python 3 none Linux glibc 2.28+ x86-64 Details
gpuwm-2.9.5-py3-none-any.whl Python 3 none any Details

Total release size: 263.3 MB

Release files / gpuwm-2.9.5.tar.gz

Download URL gpuwm-2.9.5.tar.gz
Size 46.0 MB
Tags Source
SHA-256 checksum
How to use checksums
4338f4b3e6a51db4a72c260682b02032de068c7923e689675d3b63ddcb5bebe8
BLAKE2b-256 checksum
How to use checksums
6d67f95547e1c43e8df66f89626e19954b707140667fbd95905ae9a32d4d2eac
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.

Transparency log

Release files / gpuwm-2.9.5-py3-none-win_amd64.whl

Download URL gpuwm-2.9.5-py3-none-win_amd64.whl
Size 89.1 MB
Tags Python 3 Windows x86-64
SHA-256 checksum
How to use checksums
496fe24f4ce3dd6cc5ab5e5515725c542782e3ce6c6a01499eb52f381aebc12f
BLAKE2b-256 checksum
How to use checksums
26a8870041ffa96e2db99dc6f2cfa524c0c692f34e6e3693772832f87ac5af2c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.

Transparency log

Release files / gpuwm-2.9.5-py3-none-manylinux_2_28_x86_64.whl

Download URL gpuwm-2.9.5-py3-none-manylinux_2_28_x86_64.whl
Size 94.0 MB
Tags Linux glibc 2.28+ x86-64 Python 3
SHA-256 checksum
How to use checksums
3e9deb8134373bd7e9af7fbffa0656afb2b11e17ede4a9e3d27cf6ba2815babc
BLAKE2b-256 checksum
How to use checksums
1b706b7d279a7ef6bfc35f28469b0b41f07549fd3f1c170dbc8d7ab1f18c4a69
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.

Transparency log

Release files / gpuwm-2.9.5-py3-none-any.whl

Download URL gpuwm-2.9.5-py3-none-any.whl
Size 34.2 MB
Tags Python 3
SHA-256 checksum
How to use checksums
14229c61d1e83ef1d07068361e3591994f5f5ea820cc4cc80a3acec2fe14b5ea
BLAKE2b-256 checksum
How to use checksums
d925d6cbea1f2dbb986d85a4f9a60b5d3ec4af99658df66818bda4ebc8b2e545
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.

Transparency log

Security for gpuwm 2.9.5

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 4 files in this release have been uploaded with provenance metadata.

Select from 4 files

Attestation for gpuwm-2.9.5.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

2.9.5 This release

4 release files Full provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page