Job ID: 2019-11125 Type: Full-Time # of Openings: 1 Category: Information Technology
Do you have a background in HPC, parallel programming, and vectorization? Do you enjoy the challenge of improving the performance of computational code? Do you want to help enable and advance computational research by optimizing research software? If so, Princeton University’s Research Computing Department is recruiting a Performance Tuning Analyst to join the 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. With this new position we are looking to expand our performance tuning expertise and capability.
In this role, you will collaborate with researchers from across multiple domains to accelerate active research code. You’ll meet with research groups to understand goals and current limitations, identify code that is in need of tuning, profile the code, and identify any bottlenecks. With the results of this process, you’ll work both independently, as well as with researchers and RSEs, to develop new algorithms, increase parallelization and/or vectorization, to ultimately reduce the time to solution. In many cases, the performance improvements you’ll make will enable researchers to produce fundamentally new results.
If you have a strong background in scientific computing, high performance computing, and experience making improvements to the performance of research code then you have the right skill set to make an immediate impact on multiple high-profile research projects. You will be poised to grow and expand your knowledge of current and future high-performance computing processors and accelerators and your expertise into a dynamic new set of computational research problems.
This position will require you to work closely with colleagues in Research Computing as well as with faculty, student/postdoctoral researchers, and technical staff in academic departments to enable and accelerate their research computing efforts.
Parallelize, debug, port, benchmark and tune existing research computing codes to improve performance.
Develop and co-develop research computing codes with academic research groups and research software engineers.
Maintain knowledge of current and experimental high-performance computing hardware.
Maintain expertise in tuning and debugging software used in high-performance computing program development.
Share knowledge, expertise, and guidelines with researchers, RSEs, and other members of the research computing community.
Scientific software development experience, including experience tuning, and optimizing code.
Strong programming skills, particularly in the languages used in high-performance computing applications: C/C++, FORTRAN, and Python.
Parallel programming experience using MPI and OpenMP.
Experience with programming HPC accelerators using CUDA, OpenACC, OpenMP and/or OpenCL.
Extensive and evolving knowledge of current and future tuning and debugging software used in high-performance computing program development. For example, DDT, TotalView, VTune, Advisor, NVProf, MAP, TAU, Perf, etc.
Extensive and evolving knowledge of current and future high-performance computing processors and accelerators.
Strong interpersonal, oral and written communication skills.
Experience achieving significant performance improvement on multiple software projects.
Ability to apply skills and knowledge to solve routine to complex problems in a Linux operating system environment.
Demonstrated successes 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.
Experience working in an academic research environment.
Intel processor tuning experience
Experience developing research software outside of core domain knowledge.
Red Hat Enterprise Linux experience
A bachelor's degree in computer science, engineering, sciences, or related computational field required or a Masters/Ph.D. in computer science, applied science, or other related field with a strong computational focus 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
Internal Number: 116967769
About Princeton University
Princeton University is a vibrant community of scholarship and learning that stands in the nation's service and in the service of all nations. Chartered in 1746, Princeton is the fourth-oldest college in the United States. Princeton is an independent, coeducational, nondenominational institution that provides undergraduate and graduate instruction in the humanities, social sciences, natural sciences and engineering.As a world-renowned research university, Princeton seeks to achieve the highest levels of distinction in the discovery and transmission of knowledge and understanding. At the same time, Princeton is distinctive among research universities in its commitment to undergraduate teaching.Today, more than 1,100 faculty members instruct approximately 5,200 undergraduate students and 2,600 graduate students. The University's generous financial aid program ensures that talented students from all economic backgrounds can afford a Princeton education.