The Role:
Openchip is building exciting new RISC-V chips with AI and HPC acceleration. As a Staff Performance Engineer you will play a crucial role within our performance team, contributing to optimize popular AI and HPC applications and benchmarks to deliver best in class performance, and work with customers to optimize their workloads.
Key responsibilities:
• Make independent technical contributions to help their team deliver its commitments. In particular: understand the technical landscape of their project and make decisions about it.
• Make independent technical contributions, especially for the most foundational or challenging parts of the project.
– Optimize AI, HPC, and other workloads and benchmarks for our RISC-V silicon with vector extensions.
– Identify bottlenecks with workload characterization and drive implementation of solutions.
– Decompose applications and how they run on the underlying hardware.
– Understand performance at a system level, from CPU, memory, storage, power utilization, etc.
– Profile and optimize on our pre-silicon (simulators, emulators, FPGAS), and silicon environments.
– Troubleshoot and root cause analysis, to resolve performance issues.
– Optimize HPC and AI libraries and runtimes.
– Work with customers to optimize their important workloads for our architecture.
– Contribute to instrumentation of performance and power at the operating system level.
– Integrate with CI/CD to automate performance benchmarking.
– Present findings to senior technical leaders at our company and at industry conferences.
– Contribute upstream where appropriate.
• Interact with colleagues across projects to unblock issues, or to reach consensus on technical topics, in particular, interact with engineers and leads from their and other teams to unblock issues, or to reach consensus on technical topics.
– Work with hardware teams, influencing hardware/software co-design.
– Work with teams developing compilers, firmware, AI stacks, middleware, etc., and contribute as
necessary.
– Collaborate with colleagues through code reviews, bug triaging, design documents,...
– Contribute to shared team responsibilities (CI failure triaging, documentation, code fixits, rotations...).
• Provide technical guidance to more junior team members, also acting as a mentor.
• Review team artifacts (design documents, code changes) both for correctness but also for code quality and consistency.
• Identify opportunities for code and/or process improvement.
• Loop in directors and above as needed, for instance to surface potential risks or get feedback based on area-level technical knowledge.
• Collaborate with program managers for task and deliverable tracking, as well as process improvements.
Required qualifications:
• Bachelor or Master’s degree in a relevant field.
• Experience in the relevant field (more than 10 years).
• Bachelor or Master’s degree in a relevant field.
• Solid knowledge about computer architecture (CPU, cache, memory hierarchy, buses, etc.).
• Proven experience with performance optimizaiton, and experience with performance profiling and analysis tools (Linux perf, iperf, lmbench, sysbench, flamegraphs, JMeter, LoadRunner, Gatling, Intel (R) VTUNE, ARM SPE, etc.).
• Solid knowledge of low-level development languages (C, C++, Rust, etc.).
• Experience with assembly language (any architecture).
• Experience with performance benchmarks (CoreMark, FPMark, LMBench, Stream, SPEC CPU, SPEC INT, graph500, CORAL, HPGMG, CoMD, Linpack, SuiteSparse Matrix Collection, MLPERF, ResNet, BERT etc.).
• Solid understanding of operating systems, databases, networking, and cloud technologies.
• Strong problem-solving skills with the ability to troubleshoot and identify complex issues.
• Experience with bare metal (without OS) development for embedded systems and microcontrollers.
• Experience with standard tools for source control (git), continuous integration, task management (Jira).
• Experience with standard tools for source control (git), continuous integration, task management (Jira).
Soft skills:
• Team player: communicative and collaborative person who focuses on the outcome of the team above the individual needs.
• Curious about learning new technologies/stacks.
• Capable of within- and cross-team collaboration at the technical level.
• Can-do attitude, proactive and willing to step up and resolve any obstacle. Self-aware, self-starter, and self-motivated.
• Within- and cross-team collaboration at the technical level.
• Experience leading teams at the technical level (not necessarily with a formal management role).
Preferred qualifications:
• Experience with machine learning and/or HPC performance optimization.
• Experience with Fortran.
• Experience with RISC-V development at the assembly-language level.
• Experience with statistical analysis.
• Experience with emulators and simulators (Qemu, Gem5, Spike).
• Experience in containerized environments (Docker, Kubernetes).
• Experience with hypervisor technology (KVM, Xen).
• Experience with open source software development.