About Graphcore
How often do you get the chance to build a technology that transforms the future of humanity?
Graphcore products have set the standard in made-for-AI compute hardware and software, gaining global attention and industry acclaim. Now we are developing the next generation of artificial intelligence compute with systems that will allow AI researchers to develop more advanced models, help scientists unlock exciting new discoveries, and power companies around the world as they put AI at the heart of their business.
Graphcore recently joined SoftBank Group – bringing large and ongoing investment from one of the world’s leading backers of innovative AI companies.
Job Summary
As a member of the drivers and utilities team you will contribute to the planning, design, implementation and testing of low level kernel drivers and user space driver library code. You will be part of one of the two teams in the system software department (the firmware team being the other one) and report to the drivers and utilities team manager.
The Team
The drivers and utilities team forms part of the system software group – working closely with both software engineers developing our Poplar SDK and with silicon and hardware engineers developing Graphcore’s IPU solution. The drivers and utilities team develop custom control software on the host in kernel and user space. Our solutions enable our customers to get maximum performance and utility for our cutting-edge products.
Responsibilities and Duties
- Design, implement, test and document OS Kernel and Device Driver software at the highest standard using C/C++/Python programming languages
- Participate in agile development – working as part of a scrum team to develop the right software at pace
- Communicate effectively and contribute regularly to technical discussions with your peers in software and hardware engineering, with architects and other stakeholders
- Hands-on during key product development phases involving close working with hardware and silicon engineering groups to enable fast time to market delivery
- Promote Graphcore values and culture
Candidate Profile
Essential:
- 5- 7 year’s industry experience in software development using programming languages such as C/C++/Python
- OS Kernel and Device Driver development and deployment experience in Linux or Windows systems
- Good understanding of lower-level software stack and interactions with the hardware layer
- Possess effective problem-solving skills, familiar with a full suite of debug and performance analysis tools and techniques
- Experience with one or more of the following: PCIe, CPU, device drivers, SoC, firmware, and hardware/software integration
- Proactive in obtaining engineering or management input to solve issues
- Motivated to schedule own workload
- Excellent written and verbal communication skills, work well within a multinational team and with multinational customers. Excellent cultural awareness is essential.
Desirable
- Experience developing firmware or drivers for GPUs.
- Knowledge of CUDA or OpenCL
- Experience working on upstreaming of kernel code / contributing to Linux kernel.
- Exposure to integration with data centre / cloud service operations – for example integration with Kubernetes or open stack.
Benefits
In addition to a competitive salary, Graphcore offers flexible working, annual leave policy, medical and dental health plans, a gym card, medical assessments and employee pension (matched up to 4%). We also have an employee assistance programme (which includes health, mental wellbeing, and bereavement support). We review our benefits on a yearly basis to ensure we offer a valuable and rewarding benefits programme to our employees. We welcome people of different backgrounds and experiences; we’re committed to building an inclusive work environment that makes Graphcore a great home for everyone. We offer an equal opportunity process and understand that there are visible and invisible differences in all of us. We can provide a flexible approach to interview and encourage you to chat to us if you require any reasonable adjustments.