Senior Software Engineer, Cuda Umd - Graphs and GPU Sharing

NVIDIA NVIDIA · Semiconductors · Santa Clara, CA

Senior Software Engineer role at NVIDIA focusing on the CUDA Driver, a core component of their GPU platform. The role involves architecting and implementing new features, extending CUDA programming models like CUDA Graphs and MPS, and developing code for multiple operating systems. It requires strong C/C++ skills, experience with operating system interfaces, and multithreaded programming. While the role supports AI workloads, it is not directly building AI models but rather the underlying infrastructure.

What you'd actually do

  1. Evangelize, architect, and implement new features
  2. Coordinate and drive development efforts across multiple teams
  3. Help define forward-looking improvements to the CUDA APIs and programming model
  4. Extend important CUDA programming models and functionality such as CUDA Graphs and MPS (Multi-Process Service)
  5. Write effective, maintainable, and well-tested code

Skills

Required

  • BS or MS degree in Computer Science, Electrical Engineering​ or related field (or equivalent experience)
  • Strong C and C++ programming skills
  • Minimum of 8-10 years of related development experience
  • Experience driving projects across multiple teams
  • Experience working with large codebases
  • Background with operating system interfaces for threads, process control, and virtual memory
  • Experience writing and debugging multithreaded programs
  • Good written communication as well as presentation skills

Nice to have

  • Prior experience with parallel computing - preferably writing CUDA Programs or Libraries that use CUDA
  • Understanding of system level architecture, such as interconnects, memory hierarchy, interrupts, and memory-mapped IO
  • Knowledge of memory coherence and consistency models
  • Background with kernel mode development
  • Experience with Linux Systems Software development

What the JD emphasized

  • Minimum of 8-10 years of related development experience
  • Experience driving projects across multiple teams
  • Background with operating system interfaces for threads, process control, and virtual memory
  • Experience writing and debugging multithreaded programs