Location: San Francisco (on-site only)
Team: Research - Numerical Systems
Type: Full-time
Why this role exists
We’re building a next-generation, differentiable atmospheric model for hurricane science and forecasting. One of our key goals is to build a model that’s up to an order of magnitude faster than the state of the art, using novel algorithms, performance optimizations, and numerical methods. You will own the path to world-beating GPU performance. This includes everything from kernel design to numerical methods to communication/computation overlap for multi-GPU scaling so that we can run high-resolution simulations and ensembles on state-of-the-art hardware.
What you’ll do
- Design, implement, and optimize GPU kernels in Julia for our atmospheric modeling software Breeze.jl using CUDA.jl/AMDGPU.jl and KernelAbstractions.jl.
- Implement and develop numerical methods and algorithms for core physics components (radiation, microphysics, turbulence parameterizations, nesting and regridding, atmosphere-ocean coupling)
- Profile end-to-end performance (Nsight Systems/Compute, rocProf, perf) and eliminate bottlenecks across compute, memory, and I/O.
- Along with our software engineers, design an automated benchmarking system for tracking single and multi-GPU performance across pull requests
- Implement and demonstrate high-efficiency scaling on multiple GPUs with MPI.jl
- Explore mixed-precision, kernel fusion, data-layouts, and memory hierarchy optimization to achieve highest possible performance.
- Validate scientific correctness with unit/prop tests and benchmark suites and ensure reproducibility.
- Collaborate with scientists to choose schemes and discretizations that balance accuracy and throughput.
- Collaborate with scientists and software engineers to build a robust CI system, clear documentation, and well-designed user interfaces
Must-have qualifications
- 4+ years in HPC or GPU programming (or equivalent track record via open-source/industrial work).
- Deep hands-on experience with GPU architectures (we mostly use NVIDIA machines, but experience with other devices is useful)
- Experience developing, benchmarking, and optimizing multi-GPU performance for computational physics
- Numerical methods and computational physics background, especially with finite volume/finite difference methods