The ideal candidate has worked on an ML compiler in the past, but non-ML compiler experience is also valuable. Experience with any part of the stack is fine, be it high-level ML frameworks (PyTorch, Jax, TensorFlow), graph compilers (Inductor, XLA, TVM) or kernel DSLs (Triton, Helion, cuTile). You should understand how all those pieces fit together even if you are unfamiliar with specific parts.
Some other things you might be excited about are
- Optimisations in ML compilers: algebraic rewriting, materialise vs recompute tradeoffs and fusion, equality saturation, scheduling languages, loop-level optimisation, autotuning
- ML compiler frontends: graph capture, symbolic and dynamic shapes, control flow, automatic differentiation
- GPU kernel programming and architecture: Triton, cuTile, CuTeDSL, CUDA, compute and memory hierarchies, programming with tensor cores
- Compiler concepts: static analysis, intermediate representations like SSA and CFGs, instruction selection
- ML inference: CUDA Graphs, KV caching, batching
- ML training: Tensor/Sequence/Expert/Pipeline Parallelism, FSDP, NCCL, activation checkpointing
- GPU debugging and optimisation: CUDA-GDB, Nsight Systems, Nsight Compute
- Formal methods: proof assistants, automated theorem provers, agentic proof systems
- Programming languages and DSL design: embedded DSLs, staging and metaprogramming, type systems, functional programming
- Fluency in English is required
If you're a recruiting agency and want to partner with us, please reach out to agency-partnerships@janestreet.com.