Summary Posted: 15 Oct 2024 Role Number: 200561235 Imagine what you could do here. At Apple, new ideas have a way of becoming extraordinary products, services, and customer experiences very quickly. Bring passion and dedication to your job and there's no telling what you could accomplish. Multifaceted, amazing people and inspiring, innovative technologies are the norm here. The people who work here have reinvented entire industries with all Apple Hardware products. The same passion for innovation that goes into our products also applies to our practices strengthening our commitment to leave the world better than we found it. The UK GPU team works on IPs that are part of Apple’s world-class GPU designs for Apple Silicon SoCs. We are seeking highly motivated, innovative and confident individuals to join us, across the following areas: Architecture Validation, Platform Architecture, Design Verification and Emulation. You will be at the centre of a chip design effort working with all disciplines, with a critical impact on getting high performant products to millions of Apple customers efficiently. Key Dates: - Applications are expected to close by 25th October 2024. - Initial Interviews will take place across week commencing 21st October and week commencing 28th October 2024. - Final Interviews will take place across week commencing 4th November and week commencing 11th November 2024. Locations: These roles will be based in London, St Albans or Cambridge. You will have the opportunity to express your location preferences if selected for interview. Description We will be hiring for the below internships in 2024/2025 and across the available start dates: Autumn / Winter 2024 or Spring / Summer 2025. Architecture Validation: Building experience interpreting hardware functional specifications together with architects, micro-architects, and designers, you will be able to build bit-accurate C/C++ models of the GPU or design workloads to verify new GPU features through models. You will partner with our verification and software teams to identify bugs in the workloads, model and hardware, collaborate to verify architectural solutions, and communicate recommendations to the wider team. Performance Modelling: You will have impact in defining and optimising Apple's GPU micro-architecture. Through collaboration, you will seek out areas for GPU performance improvement while collecting data and measurements that either confirm new features or rule them out. You will work with experienced designers in micro-architecture and RTL to assess the feasibility of ideas, refine them and create new ones. The role requires the analysis of interesting workloads across existing and new product categories to identify bottlenecks and opportunities for improvement. You will be architecting new simulator features and brainstorming novel ideas to boost simulation performance. We also cross-collaborate as a larger performance team to maintain and improve the simulation environment and look for ways to boost the productivity of the entire team. Platform Architecture: Are you ready to be at the forefront of architecting the next generation of Apple GPUs? This role will require you to analyze the performance of existing and future looking workloads and propose, alongside with world-class GPU and SoC Architects, new features and research on novel ideas to boost to new heights the performance of our GPUs. To do so, you’ll use performance and energy models to evaluate, iterate and tune the different ideas until the proposal is mature enough to be presented to senior GPU Architects to make a decision on its feasibility. You’ll also cross-collaborate as a larger architecture and performance team to maintain and improve the simulation environment and look for ways to boost the productivity of the entire team. Design Verification: You'll be part of creating comprehensive verification plans and contributing to test bench development, from stimulating real-world scenarios to ensuring designs are robust and complete. Collaborating closely with our expert architects and designers, you'll play a crucial role in identifying and addressing issues early in the design cycle. With hands-on mentorship, you'll not only implement key components of our verification flows but also sharpen your debugging skills as you tackle complex testbench and design challenges. This is a great opportunity to build expertise and make a real impact while working alongside some of the brightest minds in the industry. Emulation: As a Graphics Emulation Intern, you'll develop skills in a range of areas that involve accelerated platforms such as emulation: build GPU models, run cool intensive graphics workloads on those models, debug & resolve potential issues, and contribute to the infrastructure workflow. On top of that, you'll be exposed to the automation portal that pieces all of the previously mentioned areas together using a modern web user interface coupled with a sophisticated backend. Our team partners with teams that use emulation for functional, performance and power verification, through that modern portal - it’s a fantastic opportunity to explore engaging with different teams and build up on communication and interpersonal skills. Currently pursuing a BS, MS, or PhD in Computer Science, Electrical Engineering, Computer Engineering, Electrical and Computer Engineering, or a related field. At the end of the internship, you must return to school to continue your education or the internship must be the last requirement for you to graduate. Strong coding skills with C or C++ Strong understanding of common data structures, algorithms, and design patterns A curiosity about GPU / CPU / SOC architecture and micro-architecture Knowledge of scripting languages such as Perl, Python or Ruby Preferred Qualifications Strong interpersonal and analytical skills Ability to work well within a team and be productive under tight schedules Familiarity with SystemVerilog / Verilog / VHDL Prior experience on hardware architectural modelling and hardware description languages Experience with one or more GPU APIs (Metal, DX12, Vulcan, CUDA, OpenGL, OpenCL) Knowledge of performance simulation environments Knowledge of software design patterns