Skip to content

Compiler Engineer

  • Markham, Ontario
tnm64

Job description

Our team has an immediate permanent opening for an Engineer.

Responsibilities:

  • 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.

Job requirements

What you’ll bring 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.
  • Bachelor's, Master's degree or Ph.D. in Computer Science, Computer Engineering, or related field.
  • Deep understanding of IR and machine level compiler optimization techniques is an asset.
  • Experience in systems programming is an asset.
  • Proficiency in higher-level programming languages e.g. Go, Python is an asset.
  • Experience contributing to open-source projects, and demonstrated influence in the open community is an asset.
  • Working knowledge of agile methodologies.

#LI-CL1

or