Software Engineer - System Performance Engineer
About the Team
Our team is at the forefront of enabling cutting-edge autonomous vehicle technology by developing the foundational framework for executing autopilot code, with a focus on performance and reliability. We are also responsible for onboard performance and the continuous improvement of latencies within the system. We design our core framework and APIs in ways that ensure predictable latencies and robustness across all autopilot code. To ensure a rapid development pace, we are building extensive performance validation and testing infrastructure and using it to detect issues early and guide new optimizations.
About the Role
We are looking for an software engineer who is passionate about understanding the systems throughout and finding ways to optimize it. You will investigate how the system performs in different condition and build necessary metrics and tooling to track the performance across the entire fleet. You will build performance testing infrastructure and automate performance reports to detect changes as early as possible. You will collaborate with core framework users (technology developers) to understand their needs and enhance our framework to make writing high-performance code easier. The solutions you develop will stabilize overall system performance and enable rapid technology evolution while maintaining required latency targets.
What You'll Do
- Own the performance tooling, metrics collection and performance testing infrastructure.
- Work with development teams across the project to guide efficient code implementation and understand their requirements for core framework.
- Improve core framework APIs and optimize it’s performance.
- Constantly find ways to further automate performance testing, performance reports and anomalies detection.
- Perform benchmarks for new hardware / software versions.
What You'll Need
- 3+ year of experience in programming in C++.
- Experience in Unix-based systems and Shell.
- Experience in system-level programming - efficient memory management, parallel computing.
- Solid understanding of algorithms and data structures.
- Solid understanding of OS fundamentals and willingness to learn and become an expert.
- Problem-solving skills are important. You are expected to understand the problems clearly, weigh trade-offs of different solutions given their implications, and make sure the goal has been achieved.
Nice to Have
- Experience in using performance profiling tools (perf, heaptrack, nsys, etc) for identifying and resolving system bottlenecks.
- Experience in Python. We use it for performance tooling code.
Candidates are required to be authorized to work in the U.S. The employer is not offering relocation sponsorship, and remote work options are not available.
Apply for this job
*
indicates a required field