iOS GPU Driver Senior Engineer

Santa Clara Valley (Cupertino), California, United States
Software and Services

Summary

Posted: Dec 19, 2018
Role Number: 200015428
Apple’s GPU Software team provides the graphics software foundation across all of Apple's innovative products, including iPhone, iPad, Apple TV, Mac, and Watch. Our responsibilities encompass the frameworks, developer tools, and hardware drivers for the GPU and Display devices on all of Apple’s hardware. This team recently announced Metal 2 which provides near-direct access to the graphics processing unit (GPU), enabling you to maximize the graphics and compute potential of apps on iOS, macOS, and tvOS. Building upon the efficient low-overhead architecture of Metal with precompiled shaders, fine-grained resource control, and multithreading support, Metal 2 further boosts performance by enabling the GPU to take more control of the rendering pipeline. Moving beyond just graphics, Metal 2 provides deep support for GPU-accelerated machine learning and ray tracing, and offers enhanced developer tools that make it even easier to debug, optimize, and deploy Metal apps. On Mac, Metal 2 adds support for virtual reality (VR) rendering and external GPUs, and provides new APIs and optimizations to help developers embrace these emerging technologies within their apps. The iOS GPU Driver team is responsible for building graphics drivers for iOS, tvOS, and watchOS devices through deep collaboration with compiler, hardware, and platform architecture groups. This includes API encoding, resource management, submission, scheduling, power / thermal management, error recovery and reporting across many GPU generations. The team is also responsible for tuning and optimizing these drivers through deep analysis and collaboration with hardware teams and both internal and external clients. Finally, the iOS GPU Driver team provides core infrastructure powering the debug and performance tooling exposed in Xcode.

Key Qualifications

  • Excellent programming skills and knowledge of C/C++
  • Solid understanding of real-time graphics concepts and algorithms
  • Solid understanding of GPU compute concepts and algorithms
  • Experience with driver or operating system development
  • Knowledge of compiler techniques
  • Excellent software design, problem solving and debugging skills
  • In-depth knowledge of CPU or GPU architectures, including cache management`
  • Experience with one or more of Metal, OpenGL/CL, CUDA, Vulkan, or DirectX
  • Development experience on one or more of iOS, macOS, Windows, or Linux
  • Low-level programming experience
  • Experience analyzing and optimizing the performance of GPU applications
  • Strong communication and teamwork skills

Description

The iOS GPU Driver team is looking for a highly motivated senior software engineer to work on developing our GPU driver and technology for use in mobile and embedded platforms. Responsibilities for this position span the full GPU software stack from low level device driver support, user facing API development, shader compiler support, shader development, and internal tools to support GPU workflows. This position also requires the ability to deep-dive into debugging system level issues as well as strong performance analysis skills to help squeeze the most out of our hardware. This position requires collaboration with multiple internal teams across various domains. The ideal candidate will be self motivated and comfortable engaging and working with multiple internal teams to help develop and support our GPU compute technology. The ideal candidate should have previous GPU driver experience or low-level game console programming. Responsibilities include: - Developing all aspects of our Metal drivers including kernel, graphics, compute, and tooling - In-depth performance analysis of Metal drivers and applications - Working with developers to optimize their applications and games - Analyzing possible future GPU architectures, rendering algorithms, and compute algorithms - Validating GPU features for new SoCs

Education & Experience

Technical BS/MS degree preferred.

Additional Requirements

  • - Experience with device drivers for high performance hardware
  • - Interest and experience in machine learning, computer vision, image processing and ray tracing
  • - Experience creating tools to aid in the development and deployment of GPU technology, both for personal use and for customers
  • - Experience with power management and task scheduling techniques