Responsibilities/Duties:
- Develop and optimize high-performance computing (HPC) software applications tailored for specific scientific or engineering domains.
- Designs new software tools, and refactors existing tools, to take advantage of object-oriented structures and software architecting best practices.
- Develops and implements algorithms which exploit high performance compute clusters.
- Collaborate with domain scientists and researchers to understand their computational needs and translate them into efficient software solutions, ensuring compatibility with existing HPC infrastructure and workflows.
- Works both independently and on small teams; interacts with program office and global customers.
- Participate in code reviews, team meetings, and technical discussions, contributing expertise and insights to enhance the overall quality and effectiveness of HPC software development efforts.
- Contributes to technical reports, user documentation, regular status reports, and other presentations to disseminate findings, guidance, and technical information to as wide an audience as possible.
- Available to travel according to business needs, including attending conferences, workshops, or visiting client sites to provide technical expertise, support, and training as necessary.
Requirements:
- B.Eng. Degree in Computer Engineering, Computer Science, or Related Discipline.
- Proficiency in C and/or C++ programming language or any other OOP languages.
- Knowledge in one or more of the popular scripting languages such as Python, Julia, or R.
- Knowledge in one or more of the parallel libraries/languages such as MPI, OpenMP, OneAPI and CUDA.
- Knowledge in one or more of the following is desirable:
Optimization
Hardware/Software Architecture
High Performance Computing
Data Science
- Knowledge in one of the following areas is a plus:
Numerical solvers and/or numerical methods e.g. Finite Difference/Element/Volume Method.
Basic knowledge of Containers
Basic knowledge of version control
Basic knowledge of CI/CD tools
- Deep understanding of software design, programming techniques, and algorithms.
- Decent level work experience in developing algorithms.
- Excellent communication skills and experience working in a collaborative environment.
- Excellent Command in English written & verbal.