Auto-tuning & Auto-scheduling Engineer
Verfasst am 2026-09-15
-
Software Entwicklung
Software-Ingenieur, Künstliche Intelligenz Ingenieur, Maschinelles Lernen
We make complex software run efficiently on any processor—from CPUs and GPUs to novel accelerators—using a self-learning compiler and cloud-scale optimization infrastructure. Our team brings together researchers and engineers from RWTH Aachen, TU Munich, TU Darmstadt, and ETH Zurich to tackle some of the hardest problems in systems and infrastructure software. If you want to work on deeply technical challenges with real-world impact, join us and help shape the future of compute.
As an Auto-tuning & Auto-scheduling Engineer at Daisytuner, you will design and implement the algorithms that automatically optimize programs for modern hardware. You will work at the intersection of compiler technology, optimization algorithms, and performance modeling, developing search strategies and cost models for navigating complex compiler scheduling spaces. Unlike traditional parameter tuning, compiler scheduling requires reasoning about large, highly structured combinatorial search spaces where decisions such as loop transformations, tiling, permutation, fusion, vectorization, and memory layout are strongly interdependent.
Your work will directly shape the intelligence of our compiler and influence how applications are optimized for CPUs, GPUs, and emerging accelerators.
- Design and implement auto-tuning and auto-scheduling algorithms for performance-critical applications
- Design, implement, and evaluate search strategies such as beam search, stochastic search, evolutionary algorithms, reinforcement learning, and hybrid optimization techniques for compiler scheduling and auto-tuning
- Reason about large combinatorial search spaces arising from compiler scheduling decisions—including loop transformations, tiling, permutation, fusion, vectorization, and memory layout optimizations—and develop scalable search strategies that efficiently navigate them, rather than relying on traditional parameter tuning techniques
- Design and improve analytical and heuristic cost models that predict performance from program structure, memory access patterns, and hardware characteristics
- Analyze optimization quality and performance trade-offs across diverse workloads and hardware platforms
- Collaborate closely with compiler engineers to integrate new scheduling algorithms and optimization strategies into the compiler framework
- Stay up to date with current research in compiler optimization, auto-tuning, scheduling algorithms, and machine learning for systems
- Master's degree (or equivalent experience) in Computer Science, Mathematics, Electrical Engineering, or a related technical field
- Strong C++ skills and experience developing complex software systems
- Excellent understanding of algorithms and optimization techniques
- Strong background in compiler optimizations, program analysis, compiler scheduling, or intermediate representations
- Experience with performance optimization techniques, including loop transformations, cache optimization, vectorization, and parallelization
- Experience with combinatorial optimization and search algorithms beyond classical hyperparameter optimization or black-box parameter tuning
- Ability to reason about optimization trade-offs, search complexity, and heuristic design for large compiler optimization problems
- Experience designing heuristic or analytical cost models for optimization problems
- Strong Python skills for experimentation, automation, and evaluation
- Experience working with Linux development environments and Git
- Ability to independently investigate challenging optimization problems and translate research ideas into production-quality implementations
- Strong analytical thinking and a structured approach to solving difficult systems problems
- Experience with…
(Wenn dieser Job tatsächlich in Ihrem Zuständigkeitsbereich liegt, verwenden Sie möglicherweise einen Proxy oder VPN, um auf diese Seite zuzugreifen. Um weiterzukommen, sollten Sie Ihre Verbindung zu einem anderen Mobilgerät oder PC wechseln).