Software Engineer, Compiler (Middle-end)
Seoul, Seoul, South Korea On-site
Salary not listedJobFig found this opening at its original source and checks that it remains available.
About the role
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.
What you'll bring
- 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.
- 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.