We are looking for an outstanding Senior Software Engineer to join our Video/Multimedia Architecture & Algorithms (A&A) team - the people who build tomorrows NVENC and NVDEC, the dedicated video encode and decode engines that power streaming, cloud gaming, video conferencing and broadcast on every modern NVIDIA GPU. You will be the software-craftsmanship anchor of a small Software team inside A&A. You will craft and implement the core components developed using C++ alongside Python. These components support our research and product paths. You will raise the engineering bar across the group. You will also guide research code through to the shipping NVENC/NVDEC SDK.
This is a hybrid role - 4 days per week from the office.
Work closely with our Architects and Algorithms Engineers to understand the needs and build, implement and/or optimize the most elegant solutions - in modern C++ and Python
Set the bar for what good software means inside A&A: reviewing code, mentoring engineers from non-software backgrounds, and bringing the rest of the group up with you
Implement detailed, focused tweaks into the SDK and the wider video stack. These changes let researchers test new ideas without forking the world. Walk research code through to a shipping NVENC/NVDEC release when needed.
Profile and optimize critical paths in the codec stack; reach for CUDA when CPU-side optimization is not enough
Build and sharpen the small libraries, frameworks and tools the team uses every day, and make sure they are a joy to work with.
Requirements: What We Need To See
B.Sc. in Computer Science or Electrical/Computer Engineering
8+ years of relevant proven experience (or 5+ years and a relevant M.Sc.)
Proficiency in modern C++ (C++14/17/20) - templates, RAII, concurrency, move semantics, the standard library, the works
Proficiency in Python - idiomatic, performant, well-tested, with a strong sense of what is appropriate for C++ and what suits Python
Strong software design instincts and a real care for code quality: APIs, modularity, testability, clean abstractions, performance, the long tail of maintainability
Experience working on Linux as a development platform - CMake, Git, debuggers, profilers, sanitizers
Experience with optimizing Algorithmic code with different methods such as Multi-Threading/Multi-Processing, SIMD, C++, C, etc
Ways To Stand Out From The Crowd
Familiarity with video compression / codecs (NVENC, NVDEC, FFmpeg, GStreamer, x264/x265, AV1, VVC)
CUDA or GPU programming experience
Experience embedding Python in C++ (pybind11, nanobind) or building Python extensions
Extensive mileage with C++/Python Algorithmic Frameworks such as OpenCV, Numpy, SciPy, CuPy, matplotlib, TensorFlow, PyTorch, etc.
This position is open to all candidates.