HPC Software Engineer
About the role
Synopsys software engineers are key enablers in the world of Electronic Design Automation (EDA), developing and maintaining software used in chip design, verification and manufacturing. They work on assignments like designing, developing, and troubleshooting software, leveraging the state-of-the-art technologies like AI/ML, GenAI and Cloud. Their critical contributions enable world-wide EDA designers to extend the frontiers of semiconductors and chip development.
Responsibilities
- Design, implement, and optimize parallel programming methods within Ansys Mechanical solver products using MPI, GPU programming models like CUDA, HIP, SYCL, OpenMP, and other HPC frameworks
- Profile solver performance across CPU and GPU architectures using tools like Intel VTune, NVIDIA Nsight, or similar, and translate findings into actionable performance improvements
- Build and maintain code benchmarking suites that track solver performance across releases and catch regressions before they ship
- Drive adoption of modular, hardware-agnostic HPC programming models across multiple solver codebases, working with development teams to ensure consistency and reusability
- Collaborate with numerical methods experts to translate complex algorithmic requirements into performant, maintainable software designs
- Support procurement, configuration, and management of HPC development and testing platforms, including on-premise clusters and cloud-based environments
- Own packaging, build system work, and DevOps tooling using CMake, Azure DevOps, Conan, Docker, or CI/CD pipelines to streamline deployment and testing workflows
Requirements
- Minimum Requirements: Bachelor's degree in Mechanical Engineering, Computational Science, Applied Mathematics, Physics, or related field with 2+ years of experience, or Master's degree in a related field. PhD preferred.
- Strong hands-on experience with HPC software design, testing, and deployment in production or research environments
- Solid understanding of data structures, algorithms, and performance considerations in parallel computing contexts
- Proficiency with Git and collaborative development workflows across distributed teams
- Proficiency in Fortran and C/C++ for performance-critical code development
- Experience with MPI and distributed memory programming models
- Experience with GPU hardware and at least one GPU programming model such as CUDA, HIP, SYCL/oneAPI, OpenMP, OpenACC, or Kokkos is a strong plus
Qualifications
You can look at a profiler trace and identify the bottleneck without needing three meetings to discuss it
You write code that other engineers can pick up six months later without needing you to explain every design choice
You ask clarifying questions when a requirement is vague rather than guessing and building the wrong thing
You are comfortable managing your own time across multiple priorities and know when to escalate blockers versus solve them yourself
You can explain a technical tradeoff between two HPC approaches to a domain expert in terms they care about, not just what the benchmark says
You stay current with HPC architecture trends and programming models without needing to be told, because you care about building software that will still perform well two hardware generations from now
Skills
- Hands-on experience with HPC software design, testing, and deployment in production or research environments
- Strong understanding of data structures, algorithms, and performance considerations in parallel computing contexts
- Proficiency with Git and collaborative development workflows across distributed teams
- Proficiency in Fortran and C/C++ for performance-critical code development
- Experience with MPI and distributed memory programming models
- Experience with GPU hardware and at least one GPU programming model such as CUDA, HIP, SYCL/oneAPI, OpenMP, OpenACC, or Kokkos
Benefits
- Health & Wellness
- Time Away
- Family Support
- Retail Plans
- Compensation