Senior Systems Software Engineer, Profiling Tools
We are now looking for a Senior Systems Software Engineer, Profiling Tools! NVIDIA’s invention of the GPU in 1999 sparked the growth of the PC gaming market, redefined modern computer graphics, and revolutionized parallel computing. More recently, GPU-enabled deep learning ignited modern AI — the next era of computing — with the GPU acting as the workhorse that powers intelligent applications in a multitude of domains and computing environments. With performance at the center of everything we do at NVIDIA, we pride ourselves on not only building the world’s fastest processors, but also on providing a full ecosystem that empowers developers to realize that performance in practice.
NVIDIA’s GPU Architecture Group is looking for a software engineer to help us push the boundaries of our performance analysis capabilities. As a member of our team, you will work closely with GPU/CPU architects, CUDA developers, and deep learning performance engineers to devise innovative approaches to hardware and software profiling and incorporate them into our internal tools. Your work will accelerate progress toward our broader mission, which spans both hardware and software, to consistently deliver the world’s fastest accelerated computing systems in domains ranging from autonomous vehicles to supercomputers. Join our technically diverse team of GPU architects, software engineers, and infrastructure experts to advance the frontiers of computing performance!
What you’ll be doing:
Design and develop software tools to analyze performance of CUDA applications from various sectors (e.g. Deep Learning and scientific computing) on various platforms including embedded systems and large clusters.
Work with multi-disciplinary teams to design, implement, and verify new features for profiling and monitoring, often incorporating new hardware capabilities
Define hardware metrics for performance analysis and verify them for upcoming architectures
Give feedback to improve GPU and CPU architectures for profiling
Constantly learn about hardware architecture and the performance analysis process to improve the efficiency and effectiveness of our tools
What we need to see:
Bachelors, Masters, or PhD in relevant field (e.g. CS, EE, CE) or equivalent experience.
5+ years of relevant work experience
Proficiency in C, C++, and Python.
Experience in software architecture and design
Strong computer science fundamentals - algorithm and data structures, parallel computing and system software
Strong software optimization and debugging skills.
Experience in developing, analyzing, and optimizing parallel algorithms
In-depth knowledge of GPU and/or CPU architecture and general computer architecture principles
Ways to stand out from the crowd:
Knowledge of operating systems, device drivers, and/or compiler implementation
Experience developing CUDA libraries or applications
Experience analyzing GPU application performance
Experience with design and development of monitoring, profiling or optimization software tools