Do you love translating mathematical concepts into code? Do you find shaving microseconds off your function calls satisfying? Are you tenacious in tracking down obscure bugs? Can you build high-level abstractions without sacrificing performance? Have you helped maintain large shared codebases, shepherding changes while keeping continuous integration tests passing? Do you enjoy learning about new technologies and pushing their limits? Are you interested in joining world-leading experts to help solve one of the most important scientific problems of our time?
If you answered yes to some of these questions, the Climate Modeling Alliance (CliMA) at Caltech would like to hear from you. CliMA is a multi-disciplinary team of engineers and scientists developing a new class of Earth system models to predict future climate conditions with calibrated uncertainties. Our model is the first that automatically learns from global observations and targeted high-resolution simulations of clouds and other elements of the Earth system to provide the actionable information we need to mitigate and adapt to climate change.
As a Software Engineer in the CliMA team at Caltech, you will work with climate scientists and experts in numerical techniques, GPU programming, and high-performance computing to develop and implement open-source software solutions to problems in climate modeling.
- Implement software solutions at the interface of computational science and Earth system science.
- Design and develop innovative high-performance software suitable for the next-generation of supercomputing hardware with heterogeneous manycore architectures.
- Develop and implement innovative software solutions to climate modeling problems in collaboration with experts in GPU programming, language design, compiler development, parallel high-performance computing, and numerical techniques.
- Contribute to the design, specification, and development of an integrated open-source software system using modern languages and development techniques to ensure code health, scalability, and robustness.
- Consult with scientific users, management, and engineers to determine computing needs and software system requirements.
You will work in a friendly and diverse environment inside a renovated mid-century house on the edge of the Caltech campus in Pasadena. As a member of the Caltech community you will have access to health and disability insurance, retirement benefits, an on-campus gym, and more.
- Bachelor's or higher degree in a technical discipline (e.g., computer science, physical science, engineering, mathematics), or equivalent experience.
- Demonstrated expertise in numerical algorithms, for example through coursework, or research in topics such as linear algebra, differential equations, or computational fluid dynamics.
- Experience with at least two programming languages (e.g., C, C++, Fortran, Python, Julia, Matlab/Octave).
- Experience developing collaborative software projects, for example contributions to an open source project with distributed contributors.
- Research experience in applied mathematics, physics, computational fluid dynamics, or other relevant areas.
- Experience developing numerical software.
- Experience with high-performance computing technologies, including MPI, multicore processors and GPU or other accelerators.
- Familiarity with the Julia language.
- Experience developing and maintaining computational research infrastructure, such as version control repositories, continuous integration services, cluster and cloud deployment tooling.
- Cover Letter