HEALPix by Górskiet al. (2005) is a de-facto standard for Cosmic Microwave Background (CMB) data storage and analysis, and is widely used in current and upcoming CMB experiments. Almost all the datasets in Legacy Archive for Microwave Background Data Analysis (LAMBDA) use HEALPix as a format of choice. Visualizing the data plays important role in research, and several toolsets were developed to do that for HEALPix maps, most notably original Fortran facilities and Python integration with healpy. With the current state of GPU performance, it is now possible to visualize extremely large maps in real time on a laptop or a tablet. HEALPix Viewer described here is developed for macOS, and takes full advantage of GPU acceleration to handle extremely large datasets in real time. It compiles natively on Intel and Arm64 architectures, and uses Metal framework for high-performance GPU computations. The aim of this project is to reduce the effort required for interactive data exploration, as well as time overhead for producing publication-quality maps. Drag and drop integration with Keynote and Powerpoint makes creating presentations easy. The main codebase is written in Swift, a modern and efficient compiled language, with high-performance computing parts delegated entirely to GPU, and a few inserts in C interfacing to cfitsio library for I/O. Graphical user interface is written in SwiftUI, a new declarative UI framework based on Swift. Most common spherical projections and colormaps are supported out of the box, and the available source code makes it easy to customize the application and to add new features if desired. On a M1 Max laptop, an nside=8192 maps are processed in real time, with geometry effects rendered at 60fps in full resolution with no appreciable load to the machine. Main user-facing delays are limited to CPU-bound cfitsio load times, and sorting needed to construct Cumulative Distribution Function (CDF) estimators for statistical analysis (hidden in background queue). Overall performance improves on the current Python software stack by a factor of 3–180x depending on the task at hand.
Read full abstract