Software Engineer - Advanced - HPC/Parallel/C++
Business Unit: Product Lifecycle Management-PLM
Requisition Number: 233432
Primary Location: United States-New Hampshire-Lebanon
Other Locations: United States-Pennsylvania-State College
Assignment Category: Full-time regular
Experience Level: Senior level
Education Required Level: Bachelor's Degree
Travel Required: 5%
Siemens is a global technology powerhouse that has stood for engineering excellence, innovation, quality, reliability and internationality for more than 165 years. As a global technology company, Siemens is rigorously leveraging the advantages that this setup provides. To tap business opportunities in both new and established markets, the Company is organized in nine Divisions: Power and Gas, Wind Power and Renewables, Energy Management, Building Technologies, Mobility, Digital Factory, Process Industries and Drives, Healthcare and Financial Services.
Siemens PLM is seeking an advanced software developer with HPC proficiency to contribute to our Simulation Framework team. The primary focus of this team is the development of high quality software that serves as an underlying framework for other parts of the STAR-CCM+ simulation product such as mesh generation and physics. The successful candidate will develop and optimize HPC framework for shared and distributed memory systems, including in support of both new and existing features.
The position reports to the HPC program manager, as part of the Simulation Framework division of the STAR-CCM+ Platform department.
• Design, implement, and extend HPC-specific framework for use on a range of systems and modern hardware.
• Interact with stakeholders to identify needs and requirements.
• Profile and optimize new and existing implementations to ensure scalability on shared and distributed memory systems.
• Collaborate closely as part of a large, distributed team of developers, testers, and managers.
• Participate in peer-based code and design reviews.
• Communicate project status during regular meetings.
• Use systems for managing development including Jira, Confluence, Git, and BitBucket.
Required Knowledge/Skills, Education, and Experience
• Master’s Degree or higher in a related field (computer science, applied mathematics, or engineering).
• At least 3 years of professional software development experience in a related field.
• Expertise in C++ and object-oriented software development.
• Experience with designing/implementing distributed parallel algorithms via message passing (e.g., MPI).
• Experience with shared memory (threads) and instruction level (SIMD) parallelism.
• Proficiency at optimizing and benchmarking code for performance and memory.
• A sound understanding of algorithmic complexity.
• Experience working on large, distributed teams and navigating large, complex code bases.
• Experience with software development tool-chains (Git, Eclipse, Visual Studio, etc.).
• Ability to communicate complex technical issues clearly and to present data concisely.
• Ability to handle multiple tasks with minimal oversight.
Preferred Knowledge/Skills, Education, and Experience
• Familiarity with computational simulation such as CFD and FEA.
• Practical experience with vectorization, SIMD, and GPGPU programming
• Experience with graph partitioning and associated tools (e.g., ParMETIS)
• Experience with parallel file systems (e.g., Lustre, Panasas)