Software Engineer, Cuda-q

NVIDIA NVIDIA · Semiconductors · CA +1 · Remote

Software engineer to build the toolchain for CUDA Quantum, a platform for programming hybrid quantum-classical multi-processor systems. Requires expertise in GPU-programming, compilers, and parallel/distributed programming.

What you'd actually do

  1. Contributing to the development of CUDA Quantum by building core infrastructure for inter-device communication and efficient execution across multiple processors
  2. Partnering with architects, product managers, and collaborators to create an extensible toolchain integrating quantum architecture specific components
  3. Solving difficult problems at the intersection of compilers, HPC and quantum computing to enable ground-breaking research and technology
  4. Discussing and refining software designs and implementation strategies with peers
  5. Improving processes and infrastructure to accelerate our development

Skills

Required

  • GPU-programming
  • compiler fundamentals
  • parallel and distributed programming
  • performance profiling
  • multi-processor systems
  • large-scale software projects
  • building performant and robust production software
  • communication and collaboration skills

Nice to have

  • quantum computing hardware and control systems
  • optimization and code generation components for quantum computing architectures
  • system designing
  • improving extensibility
  • FPGA programming
  • HDLs
  • compiler toolchains, specifically LLVM/MLIR
  • Ph.D. or Masters degree

What the JD emphasized

  • proven track record of building performant and robust production software
  • Proficiency in GPU-programming
  • solid understanding of performance profiling, multi-processor systems, and compiler fundamentals
  • Extensive knowledge about quantum computing hardware and control systems and/or prior experience implementing optimization and code generation components for various quantum computing architectures
  • Deep understanding of compiler toolchains, specifically LLVM/MLIR