The Compiler Engineer is responsible for development and enhancement of high-performance production level C/C++/Fortran compilers/Java-JVM. Compiler Engineers are expected to independently design and develop complex optimization passes. Compiler Engineers must work closely with performance analysts, Compiler QA and the Compiler support organization. As needed, Compiler Engineers also work on Performance Analysis of the compiler and produce analysis reports.
Following are the responsibilities of the Compiler Engineer
- Own or co-own major compiler passes (mostly backend optimization passes)
- Independently work on complex optimization passes
- Propose design, defend and implement complex optimization passes
- Review code changes and design proposals from team members
- Should be a key contributor and be able to influence both tactical and strategic directions.
- Should be a technical evangelist and be able to work with/influence the customers, as and when needed.
- Mentor and grow technical talent in the organization
- Contribute to the technical content of the compiler documentation/manuals.
- Generate a formal Performance Analysis report on performance issues, analysis and quantified improvement in performance.
- Develop a close working relationship with Compiler QA, Compiler Support and other performance/compiler teams.
Qualifications / Experience
- BS/ MS / PhD and 17+ years in compiler development
- Hands-on experience in complex compiler code generation and optimization in at least one major general purpose compiler for C/C++/Fortran/Java-JVM a must
- Excellent working experience with one or more commercial or open source compilers (eg: Open64, LLVM or Java JVMs etc)
- Excellent knowledge of micro-architectural features of modern microprocessors (eg; x86 , ARM)
- Excellent programming/debugging skills at the Assembly level.
- Very solid practical C/C++/Fortran/Java-JVM experience.
- Prior experience with performance analysis of programs, tuning and experience with analysis tools like profilers
- Prior experience with ARM and/or x86 target code generation a plus.
- Good interpersonal and communication (written and oral) skills
- Experience with parallel programming domain (OpenMP, MPI, auto-parallelization etc) is a plus
- Experience in parallel computing domain like (multi-core, GPGPU, SIMD, MIMD etc) is a plus
- Experience with GCC/LLVM/Java-JVM internal is a plus
- Extensive experience with Oracle JVM or IBM JVM or OpenJDK is a plus