Sr. Firmware Engineer, Annapurna Labs, Machine Learning Acceleration - Power and Performance
About the role
AWS Utility Computing (UC) provides product Annapurna Labs (our organization within AWS UC) designs silicon and software that accelerates innovation. Customers choose us to create cloud solutions that solve challenges that were unimaginable a short time ago—even yesterday. Our custom chips, accelerators, and software stacks enable us to take on technical challenges that have never been seen before, and deliver results that help our customers change the world. We are seeking a Senior Firmware Engineer to join our Power Architecture team, developing firmware algorithms for power and performance management on ML Acceleration Chips.
Responsibilities
Design and implement firmware algorithms for power management, thermal control, and performance optimization on ML acceleration hardware
Develop real-time control policies and state machines that dynamically balance power, thermal, and performance constraints
Implement optimization algorithms for resource allocation, frequency/voltage scaling, and workload scheduling
Build efficient data structures and algorithms suitable for embedded, resource-constrained environments
Design and implement on-device tracing and telemetry collection systems to support algorithm development and validation
Build developer tools and data pipelines for metric collection, analysis, and visualization of algorithm behavior
Implement low-overhead instrumentation that minimizes impact on workload performance
Collaborate with hardware architects to understand hardware capabilities and identify optimal instrumentation points
Develop automated testing and validation workflows; integrate with optional cloud-based analytics pipelines
Own firmware code quality through rigorous testing, debugging, and validation on hardware
Requirements
5+ years of non-internship professional software development experience
Bachelor's degree in computer science, electrical engineering, or related field
Strong firmware or embedded systems development experience
Proficiency in C/C++ for systems programming with strong foundation in algorithms and data structures
Experience implementing efficient algorithms in resource-constrained, real-time environments
Experience with hardware interfaces, instrumentation, or performance monitoring
Strong debugging skills with hardware-software systems
Experience building developer tools or instrumentation frameworks
Qualifications
Experience developing control algorithms, optimization algorithms, or state machines in firmware
Background in tracing frameworks, telemetry systems, or performance analysis
Understanding of algorithmic complexity and optimization techniques for embedded systems
Familiarity with hardware performance counters, on-chip monitoring, or hardware debug interfaces
Experience with data collection pipelines and scripting (Python, shell) for algorithm validation
Understanding of ML training/inference workloads and their performance characteristics
Takes strong ownership, works effectively in ambiguous situations, demonstrates a bias for action while consistently delivering impactful results