SWE - Apple Silicon GPU Compiler Backend Engineer, Development Technologies

London, Greater London, United Kingdom
Software and Services

Summary

Posted:
Weekly Hours: 35
Role Number:200488944
As a member of the Apple Silicon GPU Compiler Backend Performance Team, you’ll implement improvements to the open-source LLVM mid-level optimizer as well as our LLVM-based machine-dependent code generator for the Apple GPU architecture. The Apple GPU architecture is part of the silicon that powers macOS, iOS, iPadOS, tvOS, and watchOS devices. The work we do has direct impact on the billions of Apple devices shipped to date. We work with many different organizations within Apple – hardware architecture, silicon engineering, device drivers, application frameworks, and the Xcode developer tools. This kind of collaboration and cross-functional reach allows our team to influence the hardware architecture and software stack. We're part of delivering phenomenal performance, functionality, and adaptability for all graphics shaders and compute kernels that run on Apple GPUs. Our team is focused on improving the end-user experience by increasing the execution speed of the code generated for Apple GPUs while minimizing energy consumption. We are enabling new GPU architectures, technologies, and applications through innovation in compilers.

Key Qualifications

  • Experience writing C++ code in a modern style
  • Knowledge of common data structures like linked lists, sets, maps, and graphs
  • Understanding of algorithmic complexity and how it impacts execution time
  • Hands-on experience developing LLVM-based compiler backends (e.g. instruction selection, instruction scheduling, register allocation)
  • Experience implementing SSA-based optimization passes
  • Knowledge of GPU architectures and how they differ from CPU architectures
  • The ability to communicate clearly and effectively, especially with people less technically proficient in the areas you’ve gained expertise in.
  • An inclination toward collaborative approaches to solving complex problems

Description

In this role your primary responsibility will be to implement improvements to the compiler backend that generates the machine code for the GPU used by all graphics applications running on Apple Silicon platforms (iOS, iPadOS, macOS, tvOS, and watchOS). This may include improving the performance of generated code, compile time, and maintainability of the code, as well as implementing new features driven by changes to the Metal API and shading language. As part of your work, you’ll analyze the performance of GPU workloads and review the assembly code we generate in order to find new opportunities to improve the compiler backend to generate better assembly code for those workloads. You’ll also review and provide feedback on the work of your peers, and collaborate with them on solutions to the problems they are working on. In addition, you’ll work with the GPU hardware teams and the Metal graphics API and device driver teams to influence the direction of both our GPU hardware and GPU software platforms. If you believe you have additional skills not listed here that would make you a good candidate for this position, please feel free to include a cover letter describing those skills and their applicability to the position. If this sounds of interest to you, we'd love to hear from you!

Education & Experience

Education B.S. in Computer Science or equivalent experience.

Additional Requirements

  • We are an equal opportunity employer and value diversity at our company. We do not discriminate on the basis of race, religion, color, national origin, gender, sexual orientation, age, marital status, veteran status, or disability status.
  • Apple is an Equal Opportunity Employer that is committed to inclusion and diversity. We also take affirmative action to offer employment and advancement opportunities to all applicants, including minorities, women, protected veterans, and individuals with disabilities. Apple will not discriminate or retaliate against applicants who inquire about, disclose, or discuss their compensation or that of other applicants.