# Software Engineer - Unstructured Data Processing Libraries

**Company**: NVIDIA
**Experience**: senior
**Job type**: full-time
**Salary**: 184,000 USD - 287,500 USD
**Category**: Engineering
**Industry**: Technology

**Apply**: https://nvidia.wd5.myworkdayjobs.com/en-US/NVIDIAExternalCareerSite/job/US-CA-Santa-Clara/Senior-System-Software-Engineer--ML-and-Vector-Search_JR2023222?utm_source=yubhub.co&utm_medium=jobs_feed&utm_campaign=apply
**Canonical**: https://yubhub.co/jobs/job_0799467a-49e

## Description

We're looking for an outstanding software engineer to apply their skills in the development of our unstructured data processing libraries, NVIDIA cuVS and cuML. These libraries compile highly optimized C++ and CUDA algorithms and expose them to higher-level languages like Java and Python.

In this role, you will research, develop, benchmark, and explore novel tuned custom algorithms for accelerating vector preprocessing, indexing, and search, as well as building high-performance ML algorithms for clustering and visualization.

**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, by moving from a similar language: C, Rust, Java.

- Experience with ML: ML concepts (approximation vs exact, iterative vs. closed-form), writing ML algorithms, and using ML to solve problems.

- Strong analytical problem-solving skills, algorithms and mathematics fundamentals.

- Excellent software development skills: programming, debugging, performance analysis, and test design.

- Ability to work independently and manage your own development efforts.

- Good communication and documentation habits.

- You care deeply about robust, readable, high-performance code.

- Familiar with at least one parallel programming or concurrency framework, such as CUDA, OpenMP, OpenACC, Java concurrency, pthreads, etc.

**Preferred Qualifications:**

- Experience developing distributed algorithms and running on distributed systems: HPC, Cloud, etc.

- Strong debugging skills, including for complex multi-language, multi-hardware systems.

- Familiarity with vector databases and nearest-neighbor algorithms (for example, Milvus, Pinecone, LanceDB; graph and IVF indexes).

- ML background, including clustering and dimensionality reduction; probability and formal methods; applied research.

- GPU programming is a plus, though we're happy to teach GPU development.

Your base salary will be determined based on your location, experience, and the pay of employees in similar positions. The base salary range is 184,000 USD - 287,500 USD. You will also be eligible for equity and benefits.

## Skills

### Required
- C++
- CUDA
- Python
- Machine Learning
- Parallel Programming
- Algorithms
- Mathematics

### Nice to have
- Distributed Algorithms
- Vector Databases
- Nearest-Neighbor Algorithms
- GPU Programming
- Clustering
- Dimensionality Reduction

---

Source: [Apply at nvidia.wd5.myworkdayjobs.com](https://nvidia.wd5.myworkdayjobs.com/en-US/NVIDIAExternalCareerSite/job/US-CA-Santa-Clara/Senior-System-Software-Engineer--ML-and-Vector-Search_JR2023222?utm_source=yubhub.co&utm_medium=jobs_feed&utm_campaign=apply)
