Staff Software Engineer - Analysis Tools
Graphcore
Bristol · Onsite · Full Time
Posted
Job description
*]:pointer-events-auto R6Vx5W_threadScrollVars scroll-mb-[calc(var(--scroll-root-safe-area-inset-bottom,0px)+var(--thread-response-height))] scroll-mt-[calc(var(--header-height)+min(200px,max(70px,20svh)))]" data-turn-id="request-WEB:dbb839dc-525c-4fc6-853b-8103854dd2fa-3" data-turn-id-container="request-WEB:dbb839dc-525c-4fc6-853b-8103854dd2fa-3" data-testid="conversation-turn-8" data-turn="assistant"> About the job Build profiling tools that help AI developers see, understand and optimise Graphcore hardware. You will design and develop analysis tools that turn complex performance data into useful insight. Your work will help users optimise ML applications running on Graphcore AI compute. You will lead profiling software design, build and test new features, fix defects and support customers. You will also mentor engineers and help raise the quality of technical delivery. This role brings deep ownership across systems software, custom hardware and large computing clusters. You will help users understand performance at scale and make better engineering decisions. The team and culture The Analysis Tools team builds profiling tools that collect, process and present performance information for Graphcore hardware. Work spans data collection, processing pipelines and user-facing tools. Engineers own problems from design through testing, support and improvement. The team values clear thinking, practical feedback and steady progress on difficult technical work. Decisions are shaped by technical evidence, user needs and code quality. You will be trusted to influence direction, support others and speak up when trade-offs matter. What we’re looking for · Experience developing complex software using a systems language, ideally Rust or strong C++ with a desire to work with Rust. · Rust experience, gained commercially or through personal projects. · Experience with large computing clusters and their performance monitoring ecosystems. · Understanding of system architecture, memory management, multithreading and hardware utilisation. · Strong problem-solving skills, with the ability to debug and resolve complex issues. · Clear communication and collaboration skills, with the ability to influence stakeholders and peers. While we have outlined a set of requirements, we value transferable skills and diverse experiences. If you meet most of our essential criteria, we encourage…