The client is looking for software engineers to develop embedded software for CPU and DSP processors and hardware engines comprising its SoC portfolio. In this role you will utilize your solid foundation in embedded software development, operating systems, and drivers to deploy platform software for complex multimedia and machine learning use cases running on our SoCs.
Responsibilities May Include, but are not limited to Architect, design and develop software frameworks across the processors available on the SoC Develop high-performance system drivers for compute resources Identify areas of performance optimization in the SoC for both Software and Hardware architectures Work closely with our global team to integrate, test, and commercially support our embedded software Offsite and occasional onsite work with OEMs and Independent Software Vendors may be required Required Skills/Experience
Strong programming experience in C, C++, and Python
4+ years of experience writing scalable C++ multi-threaded, multi-process software applications for Android/Embedded Linux/ QNX operating systems
Experience in system programming, threading, mutex, synchronization, communication, and parallel computing to build highly scalable and efficient applications
Deep understanding of CPU, DSP, Deep Learning Accelerators (NSP/NPU) architectures, system programming and optimization of Multimedia/ML algorithms on hardware acceleration cores using C/C++, assembly language, OpenCL/CUDA programming frameworks.
Experience with ARM and NSP/Hardware engines Inter-processor communications using RPCs
Familiarity and hands-on experience with various system analysis tools used for memory, performance and hardware resource management for optimization and stability
Experience with build systems such as CMake, Make, ninja and Yocto for large scale software.
Familiarity with source control tools (Git, GitHub, GitLab, Perforce, etc)
Experience in writing documents on software design, algorithms, and interfaces
Education Requirements Required: bachelors, Computer Engineering and/or Computer Science, software engineering or closely related discipline with 4-6yrs of relevant work experience Preferred: masters, Computer Engineering and/or Computer Science, software engineering or closely related discipline with minimum 4yrs of relevant work experience