Research Software Engineer II at Princeton University in Princeton, New Jersey

Posted in Other about 3 hours ago.





Job Description:


Research Software Engineer II

US-NJ-Princeton

Job ID: 2024-20006
Type: Full-Time
# of Openings: 1
Category: Information Technology

Overview

Princeton University seeks candidates for a new position within the fast-growing Research Software Engineering (RSE) Group. The successful candidate will have a strong background in software development, high-performance computing (HPC), and numerical modeling in Geophysics.

The RSE Group collectively provides 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 dedicated to creating collaborative and inclusive environments that value the best software engineering practices and to sharing and applying cross-disciplinary computational techniques in new and emerging areas.

In this position, you will be an integral part of the Theoretical & Computational Seismology group. As part of a team of RSEs, you will collaborate with several researchers and develop the SPECFEM++ framework, which involves modern C++ features and the Kokkos portability performance library. This group of researchers heavily uses computing resources at Princeton University and national supercomputing facilities, providing the opportunity to utilize the nation's state-of-the-art systems. As part of your role, you will focus on importing features from the original SPECFEM Fortran codebase and implementing new features directly into SPECFEM++, all with a focus on the code's performance, scalability, and maintainability. You will also help researchers to contribute new models to the codebase.

If you have a strong background in HPC and Geosciences, you have the proper skill set to impact a high-profile research project immediately. This role functions within a dynamic, supportive team environment that permits diverse backgrounds to thrive.



Responsibilities

Application of Domain Expertise:

  • Through directed independent studies, including reading publications and studying existing code bases, understand relevant topical areas and corresponding numerical methods in Geophysics, which will be needed for software development projects.
  • Collaborate with scientific researchers to understand their needs and challenges and develop software solutions to support their work.
  • Foster open collaboration via regular meetings and effective communication to ensure software development meets the research objectives.

RSE:

  • Work independently or as a self-directed team member to design, develop, and maintain software tools and applications for scientific research projects.
  • Write efficient, robust, and maintainable code that is well-documented and tested.
  • Optimize code performance for large-scale, parallel simulations and modeling.
  • Write technical reports and documentation to communicate software development processes and usage.
  • Manage software projects by developing project scopes and planning delivery timelines. Communicate project plans and progress updates with the scientific research team.
  • Communicate software engineering concepts to project teams with varying levels of software engineering knowledge.

Professional Development:

  • Keep up-to-date with new software technologies and tools that could improve research outcomes.


Qualifications

Essential Qualifications:

  • A minimum of 4 years as a Research Software Engineer or equivalent experience (e.g., graduate school, industry experience, open-source software development, etc.)
  • Extensive experience with the Finite Element Method (FEM).
  • Strong programming skills, particularly in C++ and Python.
  • Strong experience in High-Performance Computing (HPC). Particularly:
    • Parallel computing (MPI, OpenMP, hybrid CPU/GPU code).
    • GPU programming.
  • Experience with code performance tuning using performance analysis tools (e.g., profilers.)
  • Demonstrated success in:
    • Consistently using conventional and readable coding style.
    • Creating comprehensive and well-written documentation.
    • Developing and maintaining reproducible build systems.
    • Using modern software development workflows based on Git and Continuous Integration/Continuous Development methods.
  • Ability and interest in learning new concepts and technologies beyond current core knowledge areas.
  • Ability to communicate effectively with a diverse user base with varied technical proficiencies.
  • Experience working in an academic research environment.
  • Experience with HPC cluster environments (e.g., workflow manager, parallel file system).
  • Demonstrated successes working independently and in a collaborative software development environment ("team science," often geographically distributed).
  • A scientific and mathematical background appropriate for understanding the algorithms used in Geosciences and communicating effectively with researchers.
  • Education: A Bachelor's degree in computer science, engineering, physical science, or a related computational field is required.

Preferred Qualifications:

  • Experience with the Kokkos library.
  • Background in Geophysics.
  • A Master's/Ph.D. in Geosciences.

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. KNOW YOUR RIGHTS





PI253627142

Salary:

$1.00


More jobs in Princeton, New Jersey

Other
about 3 hours ago

Princeton University
Other
about 3 hours ago

Princeton University
More jobs in Other

Other
1 minute ago

DSS, Inc.
Other
3 minutes ago

Star Beacon
Other
3 minutes ago

Rio Grande Credit Union