System Software Engineer
About the Company:
Founded with the vision of building a runtime reconfigurable, future-proof processor, Morphing Machines is a fabless semiconductor company working on a ground-breaking technology that will transform the chip design landscape. Morphing Machines’ patent protected IP, REDEFINE, can concurrently accelerate heterogenous workloads, on a homogenous fabric of processing cores. REDEFINE combines ASIC (Application Specific Integrated Circuit) like performance with the reconfigurability of FPGAs (Field Programmable Gate Arrays). Morphing Machines’ innovation enables dataflow compute, which is a paradigm shift in the current processor industry. Due to the nature of our architecture, we can cater across domains from Data Centers, Quantitative Finance, AI/ML acceleration, Edge Vision to High Performance Compute (HPC) applications, all with the same hardware fabric. At Morphing Machines, we are building a cutting-edge technology guided by our vision to build truly software-defined hardware.
Position Overview:
As the Systems Software Engineer, you will lead the development of system software and Linux device drivers for the REDEFINE accelerator. You will work closely with cross-functional teams, including hardware engineers, software developers, and system architects, to ensure smooth and efficient integration of the accelerator with various software environments. Your expertise in system software development, Linux kernel programming, and hardware-software interaction will be essential in creating a robust and functional software ecosystem for the REDEFINE accelerator.
Responsibilities:
- System Software Development:
- Lead the development of system software components that enable the REDEFINE accelerator to interface with host systems and software.
- Design and implement software modules, libraries, and APIs to facilitate seamless integration and efficient utilization of accelerator features.
- Collaborate with software and hardware teams to ensure optimal performance, reliability, and compatibility.
- Linux Device Driver Development:
- Design, develop, and maintain Linux kernel device drivers for the REDEFINE accelerator.
- Collaborate with the hardware team to understand hardware features and specifications for accurate and efficient driver development.
- Ensure Linux kernel compatibility and contribute to open-source development communities as necessary.
- Hardware-Software Interaction:
- Collaborate closely with hardware engineers to understand the accelerator's architecture, memory mapping, and communication protocols.
- Develop software interfaces and drivers that maximize the hardware's potential while maintaining stability and reliability.
- Collaborate with verification and validation teams to ensure proper functionality and performance of software components.
- Performance Analysis and Optimization:
- Conduct performance analysis and optimization of system software and device drivers.
- Collaborate with hardware and system teams to identify opportunities for performance improvements and hardware-software co-optimizations.
- Implement and integrate profiling and debugging tools to aid developers in optimizing software performance.
- Integration and Compatibility:
- Ensure compatibility and interoperability of the REDEFINE accelerator with various software environments, libraries, and frameworks.
- Collaborate with software developers and AI-ML framework providers to facilitate seamless integration of the accelerator.
- Documentation and Support:
- Document system software architecture, design decisions, and APIs for internal and external reference.
- Provide technical support to customers and partners using the REDEFINE accelerator in their applications.
- Collaborate with technical writing teams to create user guides and documentation for system software components.
Requirements:
- Bachelor's or Master's degree in Computer Science, Electrical Engineering, or a related field. Proven experience (4+ years) in systems software development, Linux device driver programming and Linux System Programming.
- Strong expertise in C/C++ programming languages and Linux kernel programming.
- Familiarity with hardware-software co-design principles and hardware architectures.
- Understanding of system software architectures, memory management, and I/O operations. Proficiency in debugging and troubleshooting complex software systems.
- Working knowledge in Embedded development.
- Strong analytical and problem-solving skills.
- Excellent communication and collaboration abilities.
- Ability to work in a dynamic startup environment and manage multiple tasks effectively.