11-20, 16:30–16:55 (Pacific/Auckland), WG308 TE IRINGA
Reading a Cloud-optimized GeoTIFF involves several steps, from fetching compressed bytes over a network/disk, decompressing those bytes, to finally parsing of TIFF tag metadata. Can we speed up the decoding using asynchronous methods, or even GPU-accelerated libraries? Let's see how we can program this in Rust!
How can we compose together a modern library to decode Cloud-optimized GeoTIFFs (COGs) efficiently? By using a programming language called Rust, with bindings to Python, WebAssembly and more, our goal is to enable applications that demand high-performance reads, such as web-based COG tilers or machine learning workflows leveraging Graphical Processing Units (GPUs). For CPU workflows, we delegate the network/disk transfer handling to the object_store crate, use various Rust-based algorithms for decompressing raw bytes, and let the async-tiff crate do the actual TIFF tag metadata and pixel data parsing. For GPU workflows, we swap the decompression library for nvCOMP, and do the TIFF parsing using nvTIFF, with the resulting pixel data decoded directly into CUDA device memory. Come and see how these asynchronous and GPU-accelerated GeoTIFF readers compare against GDAL's libertiff driver, and find out how we're making these performant low-level Rust-based readers more accessible by integrating with the xarray ecosystem and beyond!