Embedded Software Engineer
Persimmons
- San Jose, CA
- Permanent
- Full-time
- Design and implement highly parallel software running on multicore systems.
- Design and implement low level software to use systolic arrays, DMAs, interrupts, atomics, and other hardware capabilities.
- Optimize embedded software for high performance leveraging multicore parallelism and memory hierarchies.
- Collaborate with cross-functional teams to design, test, and optimize our hardware and software solutions.
- Stay abreast of industry trends and advancements to ensure our solutions remain competitive and innovative.
- Provide technical leadership across the runtime team, mentoring engineers, and help scale the team as the company grows.
- 4+ years of experience in developing software for multi-core systems.
- Knowledge of multi-core architectures, including resource locking techniques and workload partitioning.
- Familiarity with hardware architectures and optimization implications, including memory hierarchies, systolic arrays, DMA engines, and GPU-style parallelism.
- Experience in early board bring-up, low-level debugging, and utilizing JTAG for debugging, alongside working with simulators.
- If you can do the above, you already have strong C/C++ skills.
- BS/MS/PhD degree in Computer Science, Computer Engineering, or related field (or equivalent experience)
- Strong interpersonal, verbal and written communications skills
- Capability to achieve objectives under tight deadlines
- Experience executing tasks while managing competing priorities
- Deep understanding of technology and passion for what you do
- Strong teamwork, specifically a proven ability to effectively guide and influence within a dynamic matrix environment
- Excellent problem-solving skills and the ability to work in a dynamic, fast-paced environment.
- Competitive salary and benefits package
- Flexible PTO
- 401k