Summer Program for Undergraduate Research (SPUR)

If you are an undergrad student at CU and interested in any of these projects, please email or apply directly with SPUR.

Scientific computing libraries in Rust

Rust is a new systems programming language that is rapidly growing in popularity, but library support for parallel and GPU-enabled scientific computing remains limited. As compared to the status quo languages of C, C++, and Fortran, use of Rust creates the opportunity to make scientific software more accessible, safe, reliable, easier to extend and maintain, and easier to package and distribute. Our research group has created and contributed to some crates that make production libraries accessible to libraries and applications written using Rust, but there remain many gaps and few examples. This project would address performance, safety, features, and/or examples to make Rust a viable choice for new production scientific software and for incremental porting of existing software.

Automatic differentiation and machine learning in scientific simulation

Physical models based on partial differential equations (PDE) offer strong generalization and interpretability, including ability to infer unobserved properties. Calibrating such models with observed data often requires propagation of derivatives through PDE solvers, constitutive relations (which describe complex materials), and data layers such as image processing. These components are often written in different languages and possess structure that enable more efficient and accurate differentiation. Enzyme is an exciting new language-agnostic automatic differentiation tool that operates on LLVM intermediate representation. This project will explore use of, and possibly contribution to, Enzyme to represent and compose structure/symmetry-exploiting algorithms found in data-driven PDE-based models. This work may use libraries such as libCEED, PETSc, and CRIKit.

High-performance algorithms for simulation of fluids and structures

Fluid and solid mechanics are modeled and simulated using partial differential equations, which accounts for a large fraction of compute time in research and industry engineering. Evolving hardware has shifted the relative costs and so-called higher order methods are becoming increasingly attractive from a computational standpoint, but are still rarely adopted in production engineering. Our research group has developed new algorithms and software for such simulations. This project would assess these algorithms on emerging high-performance computing architectures. You’ll learn to construct parallel scalability studies and to assess accuracy in convergence studies, ultimately describing the Pareto-optimal configurations for representative engineering problems. This work will use performance-portable software libraries including libCEED and PETSc.

Research Assistant

CEED: Dashboard for performance intercomparison

The Center for Efficient Exascale Discretization (CEED) seeks a research assistant to collaborate in development of a dashboard for comparing performance and accuracy of different software implementations and compute architectures on benchmark problems. Our current prototype uses Altair and Vega-Lite, which we would like to extend for interactive use and ease of data submission.

This hourly position can start immediately and is open to CU students (undergrad or grad). We anticipate being able to support up to 15 hours/week for up to a semester at $20 to $25/hour depending on experience.

To apply, please send a CV and cover letter to