Software Engineer, Hardware
OpenAIAbout the Team
OpenAI’s Hardware organization develops AI-native silicon and system-level solutions for the unique demands of advanced AI workloads. Building on efforts like Jalapeño, the team is developing future generations of AI-native silicon and tightly integrated systems to power the next generation of frontier models. By co-designing chips, systems, tools, and methodologies, the team helps deliver faster, more efficient, and production-ready hardware for OpenAI’s supercomputing platform.
About the Role
As a software engineer on the Scaling team, you’ll help build and optimize the low-level stack that orchestrates computation and data movement across OpenAI’s supercomputing clusters. Your work will involve designing high-performance runtimes, building custom kernels, contributing to compiler infrastructure, and developing scalable simulation systems to validate and optimize distributed training workloads.
You will work at the intersection of systems programming, ML infrastructure, and high-performance computing, helping to create both ergonomic developer APIs and highly efficient runtime systems. This means balancing ease of use and introspection with the need for stability and performance on our evolving hardware fleet.
This role is based in San Francisco, CA, with a hybrid work model (3 days/week in-office). Relocation assistance is available.
In this role, you will:
Design and build APIs and runtime components to orchestrate computation and data movement across heterogeneous ML workloads.
Contribute to compiler infrastructure, including the development of optimizations and compiler passes to support evolving hardware.
Engineer and optimize compute and data kernels, ensuring correctness, high performance, and portability across simulation and production environments.
Profile and optimize system bottlenecks, especially around I/O, memory hierarchy, and interconnects, at both local and distributed scales.
Develop simulation infrastructure to validate runtime behaviors, test training stack changes, and support early-stage hardware and system development.
Rapidly deploy runtime and compiler updates to new supercomputing builds in close collaboration with hardware and research teams.
Work across a diverse stack, primarily using Rust and Python, with opportunities to influence architecture decisions across the training framework.