Software Engineer (Performance Optimization)
Posted Updated
- We are looking for a Software Engineer with deep experience in optimizing the application-layer software for embedded systems
- In this role, you will work across multiple components of an autonomous driving software stack deployed on embedded compute platforms
- You will be responsible for fitting a complex software stack into tight compute budgets while maintaining algorithmic performance, analyzing runtime behavior, and ensuring efficient concurrent execution of multiple applications
- Analyze runtime performance of the application layer and identify potential resource contentions
- Optimize compute usage to fit within embedded platform constraints without sacrificing algorithm accuracy or latency
- Profile and tune performance on embedded targets under real-world operating conditions
- Collaborate closely with ML runtime optimization engineers to ensure smooth model inference execution within the stack
- Proactively design for contention avoidance and thread safety through code reviews and software architecture reviews; propose single threaded lock-free approaches where appropriate
- Deploy and validate production code on QNX, Linux-based embedded, or similar RTOS platforms
- Contribute to improving system-wide runtime, latency, and performance monitoring tools
- Experience profiling CPU, GPU, and memory usage performance on constrained compute
- Strong C++ development skills with a focus on runtime performance
- Proven ability to debug complex runtime issues and resolve onboard resource contention
- Bachelors or Masters in Electrical Engineering or Computer Science or a related field
- 5+ years of experience in software development
- Applicants will be required to be fully vaccinated against COVID-19 upon commencing employment. Reasonable accommodations will be considered on a case-by-case basis for exemptions to this requirement in accordance with applicable federal and state law
- Scripting experience for performance profiling and automation
- Prior experience with autonomous driving software stacks
- Experience with memory-constrained deployments and concurrent scheduling
- Exposure to ML models and runtime frameworks (PyTorch, ONNX, TensorRT)