We are now looking for a Parallel Computing Software Engineer.
What you'll be doing:
In this role, you will research and develop techniques to GPU-accelerate leading applications in high performance computing fields within machine and deep learning, scientific computing, and data processing, performing in-depth analysis and optimization to ensure the best possible performance on current- and next-generation GPU architectures. This involves:
- Working directly with key application developers to understand the current and future problems they are solving, creating and optimizing core parallel algorithms and data structures to provide the best solutions using GPUs, through both library development and direct contribution to the applications.
- Collaborating closely with the architecture, research, libraries, tools, and system software teams at NVIDIA to influence the design of next-generation architectures, software platforms, and programming models, including by investigating impact on application performance and developer productivity.
What we need to see:
- A good degree from a leading university in an engineering or computer science related discipline (BS; MS or PhD preferred).
- Strong knowledge of C/C++ and/or Fortran.
- Strong knowledge of software design, programming techniques, and algorithms.
- Strong mathematical fundamentals, including linear algebra and numerical methods.
- Experience with parallel programming, ideally CUDA C/C++ and OpenACC.
- Good communication and organization skills, with a logical approach to problem solving, good time management, and task prioritization skills.
- Some travel is required for conferences and for on-site visits with developers.