About the Role
Join the NVIDIA GPU Performance Tools team and contribute to a suite of groundbreaking tools that are revolutionizing accelerated computing. As a Senior Software Engineer, you will be instrumental in developing advanced performance profiling and debugging tools for NVIDIA GPUs, specifically catering to CUDA applications, Deep Learning, and Machine Learning workloads.
You will play a pivotal role in the entire software development lifecycle, from designing and implementing innovative features to ensuring the quality and stability of our tools. Your work will directly empower developers worldwide to optimize their GPU applications, pushing the boundaries of what's possible in AI and high-performance computing.
What you'll be doing:
- Design, develop, and maintain high-performance profiling and debugging tools for NVIDIA GPUs.
- Implement new features and enhancements for CUDA applications, Deep Learning, and Machine Learning workloads.
- Collaborate with cross-functional teams to integrate tools with various NVIDIA software and hardware platforms.
- Analyze performance bottlenecks and propose optimization strategies for GPU applications.
- Contribute to the entire software development lifecycle, including requirements gathering, design, implementation, testing, and deployment.
- Write clear, concise, and maintainable code in C++ and Python.
- Participate in code reviews, providing constructive feedback to peers.
- Stay up-to-date with the latest advancements in GPU computing, Deep Learning, and Machine Learning.
What we need to see:
- BS or MS degree in Computer Science, Computer Engineering, or a related field.
- 5+ years of experience in software development, with a strong focus on performance tools, profiling, or debugging.
- Expertise in C++ and Python programming languages.
- Solid understanding of GPU architecture and parallel programming concepts (e.g., CUDA).
- Experience with performance analysis, debugging, and optimization techniques.
- Familiarity with Deep Learning and Machine Learning frameworks (e.g., TensorFlow, PyTorch).
- Strong problem-solving and analytical skills.
- Excellent communication and collaboration abilities.
Ways to stand out from the crowd:
- Experience with other programming languages like Java, JavaScript, or Go.
- Familiarity with containerization technologies (e.g., Docker, Kubernetes) and cloud platforms.
- Experience with Linux development environments and scripting (e.g., Bash, Perl).
- Knowledge of database technologies (SQL, NoSQL).
- Experience with distributed systems and concurrency.
- Understanding of CI/CD pipelines and automated testing.