Compiler Software Engineer
- 10 Aviva Way, Markham, ON L6G 1B3, Canada
Huawei is a leading global provider of information and communications technology (ICT) infrastructure and smart devices. With integrated solutions across four key domains – telecom networks, IT, smart devices, and cloud services – we are committed to bringing digital to every person, home and organization for a fully connected, intelligent world.
At Huawei, innovation focuses on customer needs. We invest heavily in basic research, concentrating on technological breakthroughs that drive the world forward. We have more than 180,000 employees, and we operate in more than 170 countries and regions. Founded in 1987, Huawei is a private company fully owned by its employees.
About Huawei Canada
Huawei Canada helps connect Canadians to world-leading high-speed wireless Internet – and supplies them with cutting-edge smart devices. In partnership with Canadian telecommunications providers, we work to bring the benefits of a reliable and secure digital experience to every person, home and organization, including those in rural and remote areas of the country. Huawei first came to Canada in 2008. Today, the company employs more than 1,100 Canadians in research and development, IT, sales and other fields. Huawei Canada is an active supporter of many charitable and community initiatives from coast to coast.
Huawei Canada is looking for talented, enthusiastic individuals to join the Heterogeneous Compiler Lab, based in Markham, Ontario. The Lab's mission is to leverage innovative programming technologies to improve the performance of Huawei products—from 5G network equipment to mobile phones, and from smart home appliances to cloud services—as well as the productivity of developers in the Huawei ecosystem. To achieve these goals, we conduct research and development in a variety of areas including, but not limited to, compilers, language runtimes, system-level exploitation of deep learning frameworks, and concurrent/distributed systems. This exciting position is a great opportunity to grow your skill set while solving real-world problems in a fast-paced, agile environment.
- Design, develop, and test software to satisfy business requirements in a wide range of products, possibly including (but not limited to):
- Compilers targeting next-generation mobile, network, or server hardware;
- Language runtimes for new programming languages;
- System-level optimization of deep learning frameworks;
- Concurrent programming frameworks and distributed systems that can scale from embedded devices to cloud services.
- Analyze and optimize software system performance.
- Actively participate in scrums and project planning; be a team player.
- Learn and adopt new technologies; research, survey, and present industry trends to the team.
- 3-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 (preferably LLVM/Clang-based).
- Development or research experience in a production language runtime (preferably JVM-related), 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 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.
- Master's degree or Ph.D. in Computer Science, Computer Engineering, or related field.
- Deep understanding of IR and machine level compiler optimization techniques.
- Experience in systems programming
- Proficiency in higher-level programming languages e.g. Go, Python
- Experience contributing to open-source projects, and demonstrated influence in the open community.
- Working knowledge of agile methodologies.