Research Software Engineer
Apply online: https://main-princeton.icims.com/jobs/13881/research-software-engineer/job
Do you have a background in computational science or engineering research and love to write code? Do you want to help enable and advance groundbreaking seismology research, with application to modeling and simulating earthquakes? If so, Princeton University's Research Computing department is recruiting a Research Software Engineer to join the fast-growing Research Software Engineering (RSE) Group.
In the RSE Group, we collectively provide computational research expertise to multiple divisions within the University. As a central team of software experts, we are focused on improving the quality, performance, and sustainability of Princeton’s computational research software. Our group is committed to building collaborative environments in which the best software engineering practices are valued, and to sharing and applying cross-disciplinary computational techniques in new and emerging areas.
In this position, you will join an international team focused on development of cutting-edge software for the international seismology community. This includes researchers in the Geosciences department as well as developers located at the ETH in Zürich, the University of Münich, and KAUST in Saudi Arabia. You will develop efficient and scalable research code by providing expertise in software design and development and lead the multi-year effort to port, refactor, and extend the opensource seismic wave propagation software packages SPECFEM3D and SPECFEM3D_GLOBE to leverage the Kokkos programming model. Both codes are widely used by the international seismology community and are two of only a handful of AMD Infinity Hub containerized scientific packages. You will also have the opportunity to join the core Kokkos development team by having approximately 25% of your time available to devote to the core Kokkos package.
If you have a strong background in scientific programming or research software engineering, continuum mechanics, and an interest in computational seismology, you have the right skill set to make an immediate impact on this high-profile research project. You will be poised to grow and expand your programming skills and expertise into a dynamic new set of research problems.
- Lead and co-lead the design and refactoring of SpecFEM3D and SPECFEM3D_GLOBE to include Kokkos.
- Participate and contribute directly to the core Kokkos development project.
- Perform software engineering and development activities including requirements analysis, design, implementation, testing, deployment, and maintenance.
- Understand and address software engineering questions that arise in research planning.
- Maintain knowledge of current and future software development tools and techniques, programming languages, and high-performance computing hardware.
- Strong programming skills, especially with C++
- Experience developing scientific HPC software
- GPU programming experience (e.g., CUDA, OpenCL)
- Demonstrated success:
- Consistently using conventional and readable coding style
- Performing test-driven development
- Creating comprehensive and well-written documentation
- Participating in regular code reviews as both a reviewer and reviewee
- Developing and maintaining reproducible build systems
- Using version control systems
- Demonstrated success contributing to a collaborative research team
- Ability to work independently
- Ability to learn new systems beyond area of core knowledge
- Ability to communicate effectively with a diverse user base having varied levels of technical proficiencies
- A background in seismology or continuum mechanics
- Experience working in an academic research environment
- Experience developing code using Kokkos
- Parallel programming expertise (e.g., MPI, OpenMP)
- Fortran and C programming experience
- Parallel I/O experience using ADIOS
- Experience developing research software outside of core domain knowledge
- A background in Seismology
A graduate degree in computational geosciences, seismology, or a continuum mechanics-based discipline. A Ph.D in a related field is strongly preferred.
Princeton University is an Equal Opportunity/Affirmative Action Employer and all qualified applicants will receive consideration for employment without regard to age, race, color, religion, sex, sexual orientation, gender identity or expression, national origin, disability status, protected veteran status, or any other characteristic protected by law. EEO IS THE LAW.