Huawei Canada has an immediate permanent opening for a Senior Compiler Engineer.
About the team:
The Heterogeneous Compiler Lab, led by esteemed technical experts with extensive
industry and academic experience, publishes innovative research at leading
conferences. Recognized as key contributors to the LLVM Compiler Infrastructure
project, this lab excels in developing diversified IP compiler collaborations,
focusing on AI, GPU, and CPU architectures. Our efforts include heterogeneous
compilation technology and SW-HW co-design, optimizing for AI, graphics, games,
and mobile applications while tackling technological challenges through
open-source community.
About the job:
-
Design, develop, and test software to satisfy business requirements in a wide
range of products.
-
Analyze and optimize software system performance, and assist with
software/hardware co-design.
-
Liaise with internal and external stakeholders, determine project and feature
requirements, and create development plans for software productization.
-
Provide leadership in scrums, reviews, and project planning; engage in team
building.
-
Mentor junior developers through education sessions, code reviews, and career
development.
-
Research industry trends and paradigms, and propose new technical directions
for the team.
About the ideal candidate:
-
5+ years of experience programming in large software projects with at least
one of the following: C++, C, or Java.
-
Satisfy at least two of the following:
-
Development or research experience in a production compiler
(LLVM/Clang-based is an asset).
-
Development or research experience in a production language runtime, and/or
design and implementation of a major programming language.
-
Development or research experience with deep learning frameworks and
related ecosystem, such as TensorFlow, Caffe2, MXNet, ONNX, TVM.
-
Development or research of GPU drivers, such as Vulkan, OpenGL, DirectX, or
CUDA/OpenCL.
-
Development or research experience with hardware accelerators such as GPUs,
NPUs, or FPGAs.
-
Solid grasp of fundamental concepts related to system design, such as data
structures, algorithms, and operating systems.
-
In-depth understanding of computer processor architecture.
-
Proficiency with software development tools and concepts such as source
control, bug tracking, etc.
-
Bachelor's, Master's degree or Ph.D (an asset). in Computer Science, Computer
Engineering, or related field.
-
The following items are assets: Deep understanding of IR and machine level
compiler optimization techniques; experience in systems programming;
proficiency in higher-level programming languages e.g. Go, Python; or an
understanding of the implementation of higher-level programming languages.