Software Tools Infrastructure Architecture Intern - Hardware

NVIDIA - Santa Clara, CA4.2

Full-time | InternshipEstimated: $79,000 - $110,000 a year
Skills
We are now looking for an Intern in our Software Tools Infrastructure Architecture team!

A key part of NVIDIA's strength is our unique, advanced, development tools and environments that enable our incredible pace of delivering new technology to market. We are looking for hard-working, and creative people who passionate about joining a dynamic agile software team with high production quality standards that can help across our infrastructure. The roles below offer the opportunity to play a critical part in every stage of development of GPU technology, and to learn and improve the daily workflows of the world’s top chip designers and to apply machine and deep learning to every part of our chip development pipeline. All of our roles require Excellent interpersonal skills and flexibility/adaptability for working in a dynamic environment with different frameworks and requirements

GPU C++ DEVELOPMENT TOOLS ARCHITECTURE INTERN

Our work includes developing chip definition languages, compute infrastructure for large scale distributed runs of critical applications and simulations, building integrated development and debugging environments. In this position, you will develop the core infrastructure for modeling, simulation, analysis, and debugging in the development of large-scale, general-purpose graphics and computing chips. Our C++ infrastructure enables our driver stack, applications, tests, and studies to run unchanged on all functional, diagnostic, and performance models, and on simulations, emulations, and silicon for all of our graphics chips.

What we need to see:
Strong C++ programming capability required (experience with STL and/or boost a plus).

Knowledge of object oriented design patterns required.

Experience with chip and/or system simulation a huge plus

Strong scripting skills desired

Graphics or CUDA knowledge a plus

Experience with OpenGL, Direct3D, CUDA APIs a plus

GPU DEEP LEARNING DEVELOPMENT TOOLS ARCHITECT

We are building a new computing model and environment through deep learning and are evolving the modeling, analysis, and debugging in the development of large scale general purpose AI, Graphics and Computing chips. This infrastructure enables scalable and distributed deep learning on our own super computer. You will work closely with the NVIDIA software stack for GPU-accelerated machine learning and deep learning, developing and leveraging some of the most powerful GPU compute clusters, and workflows running on them.

What we need to see:
Excellent knowledge of object oriented design pattern

Distributed systems programming

Strong scripting skills required – Perl or Python preferred

Background and prior experience with machine learning algorithms

Familiarity with deep learning frameworks such as Caffe, Theano, Torch, TensorFlow

Familiarity with CUDA or OpenCL APIs

GPU APPLIED DEEP LEARNING DEVELOPMENT ARCHITECTURE INTERN

We are looking for GPU-accelerated deep learning experts to apply deep learning techniques to problems in our workflows for developing AI, Graphics and Computing chips. This involves learning the core infrastructure being improved, current methods, and then proposing or improving deep learning techniques. You will want to have an interest in one of our other key areas such as HPC computing, metrics, build and release, modeling tools or simulation toosl, or application or chip performance analysis.

What we need to see:
Excellent knowledge of object oriented design pattern

Strong scripting skills required – Perl or Python preferred

Background and prior experience with machine learning algorithms

Expertise with deep learning frameworks such as Caffe, Theano, Torch, TensorFlow

Expertise with CUDA or OpenCL APIs

SYSTEMS INFRASTRUCTURE CHIP DEVELOPMENT ENVIRONMENT ARCHITECTURE INTERN

We are evolving the core build, simulation, verification and release pipeline for the development of our AI, grahics, discrete graphics, computing and SOC chips. This strongly Object Oriented Perl/Python and Java/C++ infrastructure encompasses several extensive proprietary applications that allow us to efficiently verify the world’s largest chips with a sophisticated distributed computing execution and triage environment.

What we need to see:
Strong object-oriented programming and design pattern knowledge: Object Oriented Perl, C++ or Java preferred

Excellent interpreted language skills highly desired –Perl or Python preferred

Experience in software development life cycle on Linux based platforms preferred

Experience with MySQL or Postgress strongly desired

Experience with hardware build, simulation or verification environments and testing strongly desired

WEB/DATABSE APPLICATIONS ARCHITECTURE INTERN

We develop the user interface and front end application for comprehensive workflows for the development of new graphics chips . In this position you will be working on backend and frontend design and development of proprietary web applications for hardware development. This will involve direct interaction with end users, analyzing performance bottlenecks in the workflow and application, and building infrastructure and microservices to support the hardware development teams.

What we need to see:
Solid knowledge of Java Language and common Java API's.

Thorough knowledge of object oriented design

Experience with SQL and at least one SQL database server.

Knowledge of at least one dynamic language like Python or Perl

Experience with Javascript and preferably the Ember framework

Experience with MongoDB and/or ELK

CAD SOFTWARE ARCHITECT

NVIDIA’s products involve designing some of the most complex chips ever seen. This is enabled by using design tools which automate a variety of of design tasks: RTL design entry, simulation, verification, timing, physical design, package and substrate design, signal integrity, and characterization. We are seeking software architects to build software solutions to automate design processes. Ideal candidates should have a strong background in computer science and basic knowledge of hardware design (logic/RTL design, silicon layout).

What we need to see:
Object-oriented design and programming using C++. Experience with STL and Boost is preferred.

Strong knowledge of algorithms and computer science theory, specifically graph theory, compiler design, synthesis, simulation, database, and computational geometry.

Interest in digital design.

Knowledge of Unix and Windows build and debugging environments. (g++, gdb) and (Visual Studio/Visual C++)

Programming experience in Perl and TCL

Experience developing GUIs using Qt

HPC/GPU INFRASTRUCTURE SYSTEMS INTERN

We are improving our existing HPC distributed computing infrastructure used for the development of all NVIDIA hardware products. Additionally, we are prototyping and development of the new modern converged computing infrastructure as our environments have both CPUs and GPUs. In this role you will identify and propose new effort saving automations for the distributed CPU and GPU computing clusters, improve root cause analysis and corrective action for problems large and small – identify patterns and propose how we can automate repetitive tasks and recommend and implement solutions to improve computing farm performance.

What we need to see:
Experience with system administration of Linux servers (CentOS/RHEL and Ubuntu preferred)

Strong systems API development – Python, Go, Perl

Knowledge about Linux infrastructure monitoring and alerting

Accomplished work related to the distributed compute/storage/network

Ways to stand out from the crowd:
Working knowledge of configuration management – Salt, Ansible, Puppet

Experience with at least one of the job schedulers such as LSF, SLURM, Mesos/Marathon, Kubernetes, Docker Swarm

Advanced knowledge of the virtualization and imaging – VmWare

Experience with solving Linux system level problems

Some experience at the large scale data center – 1000+ nodes

Experience with containers – Docker, Clear Containers, rkt

CONTINUOUS INTEGRATION ARCHITECTURE INTERN

Our continuous integration systems automate the build, testing, check-in, and regression test workflows for world-wide design engineering teams and runs on a large-scale, distributed cloud computing system with 1000s of heterogeneous servers. Our system operates at large scale, running millions of jobs per day to verify multiple designs in many configurations. Our systems use both Perforce and Git. In this role you will be improving the core testing algorithms and frameworks for testing and managing software submissions and release candidates. This can be in the core Perforce and Git back-end infrastructure, or in the hardware development team facing tools that integrate with their workflows.

What we need to see:
Strong software engineering process skills

Experience with Linux development programming tools

Experience with SCM tools such as Perforce, Git, Subversion, ClearCase, etc.

Strong object-oriented programming skills

Strong interpreted language application experience in Perl or Python

Ways to stand out from the crowd:
Experience developing and deploying automated continuous integration processes

Experience with chip design workflows

Object Oriented Perl expertise

Deep understanding of Source Code Management (SCM) processes and tools for large, multi-site development, including branching, integration, and release strategies

TEST AUTOMATION INTERN

Our advanced test automation enables us to intelligently verify chips with billions of gates. Our systems run millions of tests per day in distributed cloud computing system with 1000s of heterogeneous servers to verify multiple designs in many configurations. Proprietary algorithms are used to minimize the time to verify a change or complete chip. In this role you will improve the core automation, the data tracked and the algorithms used for this operation. You will analyze and improve system performance of the full pipeline. You will improve the current system’s ability to schedule and utilize resources, improve performance, increase reliability, and provide better throughput. You will directly contribute to the overall quality of and improve time to market for of our next generation chips.

What we need to see:
Strong software engineering process skills

Experience with Linux development programming tools

Strong object-oriented programming skills

Strong interpreted language application experience in Perl or Python preferred

Ways to stand out from the crowd:
Experience developing and deploying automated testing infrastructure

Experience with chip design workflows particularly chip verification

Expertise with Object Oriented Perl or Python

Deep understanding of distributed and microservice architecture principles

NVIDIA is committed to fostering a diverse work environment and proud to be an equal opportunity employer. As we highly value diversity in our current and future employees, we do not discriminate (including in our hiring and promotion practices) on the basis of race, religion, color, national origin, gender, gender expression , sexual orientation, age, marital status, veteran status, disability status or any other characteristic protected by law.