Senior Software Engineer for Multiprocessor Programming Tools
Greenwaves Technologies is a 5-year-old fabless semiconductor startup established in Grenoble, France. Our first product GAP8 is the world’s first IoT Application Processor armed with 8+1 RISC-V based cores and a high performance HW convolution engine. It is a simple yet very sophisticated unique processor architecture, which delivers an energy efficiency that is 20x better than the state-of-the-art, opening a large range of battery powered applications. Examples of applications are people counting, keyword spotting, combined with beamforming, object recognition, face detection and vibration analysis. GAP8 is especially effective on machine learning inference algorithms (CNN, SVM, Bayesian, Boosting, Cepstral analysis). Yet, GAP8 is by and large programmed just like a regular MCU.
Our technology is very much ahead of the state-of-art, and our chip is just about to prove its revolutionary potential on a wide open global market. For a team, it is a very motivating challenge that each of us could be part of in proportion to one’s own enthusiasm at work. As a growing and highly multicultural team with sharp personalities, Greenwaves Technologies is very proud of its specific collaborative management style. The company is and will be what we each of us make of it, as we experience every day, and we are looking for talented, enthusiastic, curious and committed people, who will be ready to bring their energy and skills for a significant contribution to the success of the company’s project.
Greenwaves Technologies has developed a GCC port for the extended cores embedded in GAP8 (32-bit RISC-V core with DSP extensions). We have also devised an in-house tool, called Autotiler, which helps application developers to efficiently parallelize applications on the architecture, managing and optimizing inter-core synchronizations and data movements across the memory hierarchy in parallel of the execution of application kernels. This set of tool is completed by a profiling tool that plugs into our simulation platform and enables identification of performance bottlenecks in large applications.
As a member of the SDK and Tools team, you will be responsible for maintaining, extending and optimizing this programming tool suite. Your tasks will include:
- Identification of new features to be integrated into Autotiler to support a wider range of applications, based on real use cases and performance analysis;
- Improvement of Autotiler usability for application programmer, alongside engineers porting real applications onto our platform;
- Improvement of achieved performances by analysing bottlenecks and optimizing application graphs (e.g. kernel merging or splitting) and their mapping onto the device (e.g. cores and memory allocation);
- Interaction with HW and SW engineers to identify optimization opportunities, and in particular provide feedback on existing or envisioned HW extensions;
- Adaptation of GCC in case of new RISC-V ISA extensions for the next generations of chips;
- Seamless integration with other in-house tools for neural network porting onto GAP8 chip;
- Regular interactions with the software team and tool users for debug and possible improvements;
- Associated documentation.
- Graph optimization and mapping techniques;
- Generated code performance analysis and optimization;
- Knowledge of compiler intrinsics (front-end and back-end);
- Proficient in C/C++ programming and assembly;
- Familiarity with versioning/revision control systems.
- Good level of spoken and written English, to be used daily to communicate with colleagues and international partners;
- Organizational skills;
- Strong team spirit and communication abilities;
- Ability to work autonomously and proactively on assigned tasks.
- Knowledge of GCC overall organization and functioning;
- Knowledge of parallel architectures and DSP processors
- Application parallelization;
- Git proficiency;
- Knowledge of AI application and their port on constrained embedded architectures.
- Master Degree or plus with a specialization in computer science;
- A significant experience (5+ years) in compiler development or similar is highly desirable;
- A previous experience in programming of embedded system is a plus.