We are seeking an experienced and highly skilled Software Engineer to join our Runtime Software group. In this role, you will drive the development of the full software stack and architecture behind our revolutionary coprocessor. You will be challenged to deliver high-performance, system-wide solutions, requiring a deep understanding of complex architectural trade-offs and distributed systems.
As a core team member, you will design and implement infrastructure that enables our unique hardware to accelerate diverse applications at scale. You will collaborate across disciplines - working with hardware engineers, compiler developers, and system architects - to optimize execution in a massive, multi-process, and multi-threaded environment.
Responsibilities
Design and implement next-generation runtime architectures and infrastructures to support evolving product requirements
Develop environments for the acceleration of massively parallel applications, managing complex process and thread lifecycles
Define development scopes and roadmaps to ensure the successful delivery of robust software features
Partner with hardware and compiler teams to bridge the gap between silicon capabilities and software performance.
Requirements: BSc in Computer Science, Engineering, or an equivalent technical field
5+ years of advanced C++ experience, with excellent coding skills
Ability to work in a multi task and dynamic environment
Fast learner and a team player
Excellent communication and teamwork skills
Strong problem solving skills and the ability to analyze and debug complex issues
Familiarity with Linux environments
Advantage - Experience with varied levels of software, from embedded systems and low-level development.
Advantage - Experience with large scale distributed multi-threaded systems
Advantage - Familiarity with and passion for any of the following - machine learning, compilers, parallel programming, high-performance and massively parallel systems, processor and computer architecture.
This position is open to all candidates.