Responsibilities
- Participate in the software design of the runtime software across multi-device and heterogeneity.
- Apply code optimization techniques, ensuring efficient and optimized performance of the runtime software components.
- Participate in architecture definition; collaborate closely with software architect in refining architecture designs.
- Collaborate with silicon and platform bring-up to verify and debug the AI sub-system and its delivered performance.
Qualifications
- Bachelor's or Master's degree in Computer Engineering, Electrical Engineering, or related field.
- 3 years of embedded software design and development on SoCs and/or ASICs.
- Good coding skills in C/C++.
- Good knowledge of SW design patterns.
- Good knowledge of SDLC.
- Good knowledge of RTOS and/or Linux OS.
- Good knowledge of multi-thread and multi-process software design and debugging.
- Experience with embedded system involving multi-core CPU/DSP.
- Knowledge of debuggers (LLDB, GDB) and profilers on heterogeneous hardware system.
Preferences
- Experience with Python is a plus.
- Knowledge of Linux kernel and driver development is a plus.
- Knowledge of CNN and common NN operators/layers like Conv2D, BatchNorm, etc is a plus.
- Knowledge of managing CI/CD pipeline (especially under GitLab) is a plus.
- Knowledge of inference engines such as TFLite, OpenVINO runtime, ONNX runtime, TVM runtime, etc is a plus.
- Knowledge of JTAG debugger and bare-metal bring-up is a plus.
- Knowledge of high-performance domain-specific languages (SYCL/CUDA/OpenCL) is a plus.
- Knowledge of PyTorch or TensorFlow is a plus.
- Knowledge of just-in-time compilation techniques is a plus.