Senior System Software Engineer, ML and Vector Search
$184k - $288k • US, CA, Santa Clara
Posted 5d ago
Job Location
US, CA, Santa Clara
Tech Stack
Remote Work Policy
On-site
Categories
Machine Learning Engineer
About the job
NVIDIA is seeking an outstanding software engineer to join our team and contribute to the development of unstructured data processing libraries, specifically NVIDIA cuVS and cuML. These libraries leverage highly optimized C++ and CUDA algorithms, exposed to higher-level languages like Java and Python, to accelerate other libraries and database systems. In this role, you will research, develop, benchmark, and explore novel algorithms for accelerating vector preprocessing, indexing, and search, as well as building high-performance ML algorithms for clustering and visualization. This is a significant opportunity to utilize your CUDA/C++ skills and make a substantial impact in a rapidly growing industry, working at the intersection of databases and machine learning.
Responsibilities
- Analyze, design, and implement optimized GPU algorithms for large-scale vector search, databases, and machine learning.
- Drive performance analysis, benchmarking, and optimization of associated libraries.
- Collaborate with a multi-functional team to understand requirements and implement or improve solutions.
- Develop and improve machine learning algorithms.
- Implement solutions in C++, CUDA, and Python.
- Contribute to open-source projects like cuML, cuVS, and RAFT.
Requirements
- BS, MS, or PhD in Computer Science, Data Science or AI, Applied Math, or related field (or equivalent experience).
- 8+ years of experience programming in C++ or ability to learn it from a similar language (C, Rust, Java).
- Experience with ML concepts, writing ML algorithms, and using ML to solve problems.
- Strong analytical problem-solving skills, algorithms, and mathematics fundamentals.
- Excellent software development skills including programming, debugging, performance analysis, and test design.
- Ability to work independently and manage development efforts.
- Good communication and documentation habits.
- Commitment to robust, readable, high-performance code.
- Familiarity with at least one parallel programming or concurrency framework (e.g., CUDA, OpenMP, OpenACC, Java concurrency, pthreads).
Benefits
- Competitive salary package
- Equity
- Benefits
