Profinder_LOGO_2014_utan-gubbe

Python & Machine Learning Engineer (Refnr: 139)

Background
The customer is working on a multi-core dataflow accelerator based on its proprietary processor technology. An FPGA-based prototype of the accelerator architecture is being developed and is to be validated and evaluated. The prototype is to be controlled from the computer that hosts the FPGA development board.
The first use case of dataflow processing is inference with Deep Neural Networks (DNNs). Our team has defined a virtual machine for DNN execution, which is targeted by a DNN compiler, functionally simulated in a custom Python implementation, and to be realized on top of the accelerator hardware architecture.
 
Task
This assignment consists of two main tasks as follows.
• Validation of the functional simulator: The bulk development of the simulator is done but further testing is needed. This task involves cooperation with compiler developers to prepare and generate test cases and debugging Python code to identify and fix errors in the simulator code.
• Implement control logic for the FPGA prototype: The FPGA prototype is to be controlled by the host computer via PCIe connection. A “low-level” API for the PCIe communication is available in Python and various facilities of the functional simulator can be used as basis for the controller. This task involves (1) implementing the host-side control of various operations of the DNN virtual machine, for which the existing functional simulation can be used as reference, and (2) assisting the hardware engineers to validate the hardware for different accelerator use cases.
 
Requirements
We expect the following experience from an ideal candidate:
•                                  Strong experience in Python programming
•                                  Strong background in Machine Learning
•                                  Hands-on experience with PyTorch
•                                  Understanding hardware architectures
•                                  Experience in developing embedded systems
•                                  Understanding testing techniques
•                                  Good troubleshooting skills