ashby
Posted 22 hours ago
Software Engineer, Compiler (Middle-end)
Job description
About the Job
The compiler plays a central role in FuriosaAI’s mission to build high-performance, energy-efficient AI systems. As modern deep learning models continue to evolve in structure and execution behavior, the compiler’s abstractions and optimization strategies must advance in parallel. Our goal is to build a production compiler that delivers high performance across a broad range of workloads.
The middle-end tackles key optimization problems that determine how tensor programs execute on FuriosaAI hardware. These involve a large, tightly coupled space of decisions, including tiling, fusion, data layout, hardware mapping, and scheduling. We formulate these problems at the right level of abstraction for the TCP architecture and optimize them jointly.
In this role, you will identify and take ownership of compiler problems in real models and production workloads. You will turn those insights into general compiler solutions. You will design IR abstractions, optimization passes, program analyses, or planning algorithms, then integrate and validate them in the compiler.
Responsibilities
- IR, Semantics, and Lowering. Design and evolve intermediate representations, semantics, and lowering transformations that connect tensor programs to efficient hardware execution.
- Global Optimization and Execution Planning. Develop performance models, search and solver techniques, and optimization algorithms that produce efficient execution plans across the program.
- Scheduling and Resource Management. Optimize execution schedules and hardware resource allocation.
- Program Analysis and Verification. Build dependence and alias analyses, race detectors, and compiler checks that validate transformations and catch correctness issues early.
- Hardware/Software Co-design. Contribute compiler and workload insights to future hardware generations, and evaluate proposed architectures before implementation in silicon.
Minimum Qualifications
- Bachelor's degree in Computer Science, Mathematics, or a related technical field.
- Foundational knowledge of compiler design and optimization passes.
- Ability to abstract complex hardware/software constraints into logical algorithms and solve problems through rigorous reasoning.
Preferred Qualifications
- Master's or PhD in Programming Languages, Compilers, Program Analysis, or related fields.
- Research or industry experience with compiler infrastructures like LLVM or MLIR.
- Experience developing code generators, instruction schedulers, or high-performance kernels for specialized accelerators (NPU, GPU, etc).
- Experience applying search, constraint solving, or mathematical optimization (ILP, SMT, dynamic programming, heuristic search) to compilation, scheduling, or resource allocation problems.
- Experience building analytical or learned performance models for hardware.
- Experience applying program analysis techniques to optimize performance or ensure program correctness.
- Experience with functional programming languages, particularly in the design of large-scale software systems.
Skills and functions
- Software Engineering