Arm's Central Technology Machine Learning Group is seeking highly motivated and creative Software Engineers to join the Cambridge-based CPU performance optimisation team!
CPUs are of critical importance to Arm and, as ML workloads become increasingly widespread, joining this team would be a phenomenal opportunity to experience and contribute to driving ML performance from the smallest edge CPUs to our newest datacentre designs.
Working closely with experts in ML and hardware architecture and microarchitecture teams you will have the chance to explore how architecture, hardware and software come together to maximise performance in these vital workloads and drive performance improvements for both current and future CPUs.
About the role
The team functions as a repository of deep expertise on CPU machine learning, for current and future generations of CPUs. Responsibilities and accomplishments of the team to date include:
Extrapolating full network performance from prototype software and models to evaluate impact of proposed architecture features on real ML workloads that matter to our partners.
Tracking the evolution of neural network architectures and identifying the impact this has on CPU hardware and software designs.
Understanding ML algorithms in detail, and how they interact with CPU architectural and microarchitectural features, to produce optimized implementations tuned to Arm.
Working with the architecture group to ensure future architecture is optimised for ML.
Providing meaningful proxy microbenchmarks to CPU teams to guide microarchitecture optimisations.
Working with library engineering teams to make our implementations available in release libraries across a range of Arm implementations.
As this is a role at a senior grade it is expected that your contribution to the team will be shaped by your existing strengths, with the opportunity to learn new skills in related areas.
The ideal person is someone with a keen problem-solving mind, passionate about state of the art machine learning, and its ability to find solutions to new and complex problems. As a dynamic field, being able to provide a clear view of the different options for solving each problem and the trade-offs between them will be the biggest challenge.
Essential skills and experience:
A background in computer science, software engineering or other comparable skillset
Familiarity with Linux and cloud services
Have a strong attention to detail to ensure that code or analysis you produce is well-understood and accurate
Deep experience with one or more of the desirable skills listed below.
Show strong communication skills – in this role you will regularly share your work with wider teams within Arm
Ability to perform accurate, fair benchmarking to produce trustworthy results.
Experience with analysing and dissecting raw performance data to produce accessible, accurate summaries and actionable insights.
Good knowledge of C++
Good knowledge of Arm assembler.
Good knowledge of algorithm optimisation, particularly for SIMD architectures.
Good knowledge of Python – used by ML frameworks and for many of our internal tools.
Experience with ML frameworks, especially Tensorflow or Tensorflow Lite
We are offering a hybrid approach to home and office working to provide an adaptable experience for all employees. We expect some working time to be spent in office, to promote a strong collaborative environment with good team integration but are accommodating to different home working requirements.
Arm is an equal opportunity employer, committed to providing an environment of mutual respect where equal opportunities are available to all applicants and colleagues. We are a diverse organization of dedicated and innovative individuals, and don’t discriminate on the basis of any characteristic.