About the job
As a Kernel Engineer on our team, you will develop high-performance software solutions at the intersection of hardware and software, developing high-performance software for cutting-edge AI and HPC workloads. Your focus will be on implementing, optimizing, and scaling deep learning operations to fully leverage our custom, massively parallel processor architecture.
Responsibilities
Develop design specifications for new machine learning and linear algebra kernels and mapping to the Cerebras WSE System using various parallel programming algorithms.
Develop and debug kernel library of highly optimized low level assembly instruction and C-like domain specific language routines to implement algorithms targeting the Cerebras hardware system.
Develop and debug high-performance kernel routines in low-level assembly and a custom C-like (CSL) language, implementing algorithms optimized for the Cerebras hardware system.
Using mathematical models and analysis to measure the software performance and inform design decisions.
Develop and integrate unit and system testing methodologies to verify correct functionality and performance of kernel libraries.
Study emerging trends in Machine Learning applications and help evolve Kernel library architecture to address computational challenges of the start-of-the-art Neural Networks.
Interact with chip and system architects to optimize instruction sets, microarchitecture, and IO of next generation systems.
Qualifications
Minimum
Bachelor’s, Master’s, PhD or foreign equivalents in Computer Science, Computer Engineering, Mathematics, or related fields.
Understanding of hardware architecture concepts — must be comfortable learning the details of a new hardware architecture.
Skilled in C++ and Python programming languages.
Good knowledge of library and/or API development best practices.
Strong debugging skills and knowledge of debugging complex software stack.
Preferred
Experience in kernel development and/or testing.
Familiarity with parallel algorithms and distributed memory systems.
Experience in programming accelerators such as GPUs and FPGAs.
Familiarity with Machine Learning neural networks and frameworks such as TensorFlow and PyTorch.
Familiarity with HPC kernels and their optimization.