Software Engineer - Advanced- MPI
Business Unit: Product Lifecycle Management-PLM
Requisition Number: 234452
Primary Location: United States-New Hampshire-Lebanon
Assignment Category: Full-time regular
Experience Level: Mid level
Education Required Level: Bachelor's Degree
Travel Required: 5%
Siemens Digital Factory offers a comprehensive portfolio of seamlessly-integrated hardware software and technology-based services in order to support manufacturing companies worldwide. Siemens PLM Software, a Plano, Texas-based business unit of the Digital Factory Division, is a leading global provider of product lifecycle management (PLM) and manufacturing operations management (MOM) software, systems and services with over nine million licensed seats and more than 77,000 customers worldwide.
For more information, please visit:
We are seeking a Software Engineer-Advanced to design and implement Distributed Data Parallel Applications. The candidate will benchmark, profile and optimize the SimCenter STAR-CCM+ application on a range of hardware.
The primary obligations of the role include designing, creating, and documenting high-quality, extensible software in a timely manner.
This position reports to the Manager of the Runtime team under the Software Framework division of the Platform department working on SimCenter STAR-CCM+. This position reports to the Director of Software Framework in the Platform Department of Development. The Platform Department is part of Siemens Product Lifecycle Management, Simulation and Test Solutions.
• Implement support for vendor MPI libraries in our distributed memory parallel applications.
• Implement runtime arguments for optimal performance on a range of HPC hardware (InfiniBand, Intel Omni-Path, Mellanox).
• Implement support for a range of HPC environments and schedulers.
• Assist support engineers with customer HPC issues.
• Implement secure systems for managing compute resources used by STAR-CCM+ including authentication and authorization, APIs, and front-ends.
• Write and maintain technical design documents and new-feature documents.
• Write unit tests and functional tests.
• Collaborate closely as part of a large, distributed group of developers.
• Cooperate with engineers, testers, and product managers.
• Participate in peer-based code reviews and design reviews.
• Travel when necessary (up to 3%) to collaborate with other teams.
• Communicate project status during regular meetings.
• Use systems for managing development including Jira, Confluence, Git, and Stash.
Required Knowledge/Skills, Education, and Experience
• Bachelor’s degree in Computer Science or a closely related field + 5 years non-academic experience, or Master’s degree in Computer Science or a closely related field + 2 years non-academic experience.
Required technical experience
• Extensive experience (5+ years) in object-oriented software design and development.
• Experience with software QA including unit, acceptance, and regression testing.
• Intimate familiarity with C++, Java, Python, scripting languages.
• Familiarity with parallel computing paradigms (shared and distributed memory) and experience with the MPI Library.
• Experience of HPC Systems, including RDMA (InfiniBand, RoCE, Omni-Path) fabrics, batch schedulers (PBS, LSF, Grid Engine, SLURM), and basic system administration.
• Extensive experience working on large, distributed teams and navigating a massive code base.
• Experience with software development tool-chains (Git, Eclipse, Visual Studio).
• Excellent communication and collaboration skills.
• Ability to communicate complex technical issues clearly and to present data concisely.
• Proficiency at optimizing and benchmarking code for performance and memory.
• Comfort in a dynamic, fast-paced environment.
• Ability to handle multiple tasks with minimal oversight.
Required amount of travel
• Fewer than 10 days per year, mostly domestic.
Preferred knowledge, skills, or expertise
• TurboGears framework.
• STL, Boost, and Git.
• Successful experience working on large, commercial software products.
• Test-driven / test-first development.
• Experience with distributed systems authentication and/or token-based authentication.