We are looking for an experienced Neural Network Kernel Software Development Engineer. The objective of the role is to build efficient implementations of real-world neural nets kernels specialized for our unique hardware architecture, as well as implementation of other computing algorithms, maximizing compute and communication throughput. The successful candidate will build a deep understanding of the hardware capabilities, limitations and details of our architecture and work closely with our architects and compiler engineers.
Responsibilities
-
- Design, prototype and implement C++ low-level flexible programs (kernels) for various neural net operations
- Design, document and communicate configuration APIs for these kernels to compiler team
- Communicate performance optimization ideas both to compiler engineers and to architects working on future product generations
- Design overall computation strategies across kernels for multi-kernel and multi-chip neural net implementations
Requirements
-
- Computer Science, Engineering, Math, Physics or related degree, preferably MS or PhD
- Deep knowledge of modern C++ with emphasis on code generation and low level compute optimizations
- Knowledge of Neural Network basic operator algorithms - Convolutions, Transformers, RNNs
- Demonstrated ability to work independently through challenging but tightly constrained problems
- Interest and ability to work with both high level conceptual and very low-level technical details
- Interest in problem-solving within highly structured and tightly constrained environments
Preferred Skills and Experience
-
- Python experience
- Experience with other AI accelerator programming
- Strong mathematical skills
- Enjoy solving very complex problems (like doing IQ tests, solving tricky math problems)