9.1 A New High-Performance, Cross-Platform, Cross-Language Sounding Analysis Library from the Storm Prediction Center

Wednesday, 31 January 2024: 8:45 AM
324 (The Baltimore Convention Center)
Kelton T. Halbert, CIWRO - Cooperative Institute for Severe and High-Impact Weather Research and Operations, Norman, OK; and J. A. Hart and R. L. Thompson

Much of the research published on severe storms and near-tornadic environments by the Storm Prediction Center (SPC) has been conducted using techniques and software developed in-house. This software, known as the Sounding and Hodograph Analysis and Research Program (SHARP), has been used to interrogate convective environments through analysis of observed radiosonde launches, point forecast soundings from numerical models, and gridded mesoanalysis used to support operational products. In an effort to democratize these tools to the wider community and support open, reproducible science, the Python library known as SHARPpy was released in 2015. The goal of SHARPpy was to reproduce, as faithfully as possible, the forecast displays and parameters used by SPC forecasters rather than extend functionality or address deficiencies in the software. One such deficiency in an interpreted language like Python was a lack of ability to apply the library to gridded datasets in a computationally efficient and timely manner. Both internally and externally, this left a need for different tools for different datasets, i.e. forecast sounding visualization vs. gridded mesoanalysis computation. The fragmented nature of these tools made getting consistent results and applying updates, fixes, and additions across all use cases difficult at best, and outright absent at worst. There’s also been an increase in large, high-resolution datasets such as the open-access archive of HRRR forecasts on Amazon Web Services (AWS) and Google Cloud Platform (GCP), or the potential introduction of full-resolution radiosonde data with thousands of levels per profile into AWIPS, with a lack of any tools that can fully leverage the scales of data presented. In order to address the outstanding issues and tackle new and future use cases, the core numerics of SHARP have been re-written from the ground-up and packaged into a cross-platform, cross-language numerics library known as SHARPlib.

The core of SHARPlib is written in C++ with minimal external dependencies, as well as native C wrappers for legacy C/FORTRAN use cases, and a fully-wrapped Python library with NumPy array support. SHARPlib is generalized in such a way that parameters to routines are 1D arrays corresponding to vertical profiles of data, and leverages concepts such as CPU cache locality to improve performance. This granularity leaves headroom for parallelization on a per-profile basis with your parallel processing technique of choice (e.g. Python multiprocessing library, Dask, OpenMP, CUDA), and should make incorporating the library into existing software more straightforward. These improvements to code logic and reduction of duplicate code have also enabled the ability to have multiple methods of computing moist adiabatic ascent, including those that conserve ice microphysics or account for the entraining of environmental air into rising parcels. This presentation will provide an overview of how this library might differ from SHARPpy, performance comparisons where appropriate, and examples of using this unified library with gridded datasets.

- Indicates paper has been withdrawn from meeting
- Indicates an Award Winner