Embedded Driver Engineer (GPGPU)
ARM is looking for a motivated engineer to join us in developing software at the cutting edge of mobile GPU technology. Working on the next generation Mali™ mobile GPUs and the latest yet-to-be-published Android versions, you will help shape the technologies that the mobile market will see in years to come.
You will be joining a multinational and dynamic Agile software development team located in Cambridge (UK). The team is responsible for the Compute Runtime component of the driver implementing the OpenCL and Renderscript APIs. OpenCL allows massively parallel execution of general purpose (C-like) code on the Mali GPUs, often known as GPGPU (General Purpose computing on the GPU).
The GPGPU team's challenge is to provide robust and performant functionality in a highly constrained environment. Compute Runtime is a complex, power-efficient and performance-critical component of the Mali GPU driver stack. Embedded GPGPU use cases include image processing, computer vision, video and virtual reality.
The Compute Runtime component works in close conjunction with the LLVM-based runtime compiler (developed by a separate team in the same building) and must efficiently interoperate with other parts of the driver stack. You will need embedded software development and optimization skills, but previous experience of GPGPU is not essential.
Join us to help us make GPGPU and Mali a success in other peoples' hands.
The role involves cooperating with fellow ARM GPU driver stack developers across three continents, with a primary focus on the Compute Runtime component. We have a roadmap of features to be implemented, and at the same time need to continuously improve the driver's performance, and ensure that existing customers continue to receive a robust and performant product.
Day to day:
The role will invovle the design and implementation of new features and tests, as well as the benchmarking, maintenance and optimisation of existing areas of the driver.
Your day to day role will involve the design and implementation of new features and tests, as well as the benchmarking, maintenance and optimisation of existing areas of the driver. You will work in a Linux environment coding and debugging for target ARM platforms including models, FPGAs and silicon from our partner companies (thereby covering past, present and future generations of our designs). As a member of an Agile team you will have the chance to try your hand at all aspects of our work. Engineers grow their expertise through this work, through on and off the job training, and through peer code reviews. One of the great things about working at ARM is that if you have a question about another component, you can usually speak directly to the designer, whether it's other software, hardware or tooling. Over the years engineers develop into specialised experts, generalists, or transition to other disciplines such as project and product management.
About the Media Processing Group:
The Media Processing Group produces multimedia hardware and software products for mobile and embedded devices. Our product portfolio includes GPU, Display and Video IP. Our Mali™ Graphics Processors (GPUs) have an advanced, highly programmable architecture for accelerating 2D and 3D graphics, specifically tuned for high performance and energy efficiency. The flagship Mali-T800 series multi-core GPU sets a new standard for graphics and compute performance with low energy consumption. Our OpenGL ES, OpenCL and Renderscript drivers support cutting edge gaming and state of the art user interfaces on operating systems such as Linux and Android. To see the current Mali GPUs in action take a look at the Mali Developer Center (http://www.malideveloper.com).
Our innovative technology is licensed by ARM Partners who have shipped more than 50 billion Systems on Chip (SoCs) containing our intellectual property since the company was formed in 1990. Together with our Connected Community, we are breaking down barriers to innovation for developers, designers and engineers, ensuring a fast, reliable route to market for leading electronics companies.
With offices around the world, ARM is a diverse community of dedicated, innovative and highly talented professionals. By enabling an inclusive, meritocratic and open workplace where all our people can grow and succeed, we encourage our people to share their unique contributions to ARM's success in the global marketplace.
Our mission is to be the number one provider of 2D/3D Graphics technology on the planet. If you have a passion for technology and want to shape the future of mobile devices, then we want to hear from you.
Education & Qualifications
Bachelors, Masters or PhD (computer science or electronics engineering) with good academic record.
Essential Skills & Experience
- Strong C knowledge and skills.
- Experience of working with embedded systems.
- Proficiency in problem solving and debugging.
- A strong understanding of hardware architectures, including CPU, GPU and cache concepts, memory, I/O, etc.
- Good knowledge of efficient programming styles, algorithms and data structures.
- Knowledge of software optimization and instrumentation.
- Understanding of software engineering development practices.
- Capable of working as a team player or independently.
- Self-motivated, flexible, with strong interpersonal skills.
- Good written and spoken English.
- Able to work to tight deadlines.
Desirable Skills & Experience
- Experience with OpenCL, CUDA, Renderscript, OpenGLES, DirectX or similar
- Scripting, such as Python
- Experience with Linux or Android development
- Willingness to travel occasionally.
- Experience in the creation and maintenance of test suites.
- Experience in creating design and test specifications.
- The ability to guide and mentor other engineers.
Opening Date: July 2016
Closing Date: August 2016