We are seeking a skilled and motivated HPC Developer to join our team and contribute to the development of the computational core for digital twin modelling software. This module will perform high-performance grid calculations and advanced operations on GPUs and CPUs using state-of-the-art parallel computing techniques. You will play a critical role in designing, implementing, and optimizing asynchronous workflows with load balancing, memory allocation, and cross-platform execution capabilities.
Key Responsibilities:
- Design and implement high-performance computation modules for grid operations.
- Develop algorithms optimized for both CPU and GPU architectures using modern frameworks like CUDA, OpenCL, OpenMP, SYCL, or MPI.
- Implement task-based parallelism and asynchronous execution strategies.
- Collaborate with the orchestration team to integrate task scheduling and resource management systems.
- Profile and optimize memory allocation, load balancing, and data movement across CPU and GPU.
- Ensure efficient communication between distributed processes using MPI or similar frameworks.
- Develop portable code that supports multiple hardware configurations (NVIDIA GPUs, AMD GPUs, CPUs).
- Leverage frameworks like SYCL, Kokkos, or OpenCL for cross-platform compatibility.
- Work closely with the backend and visualization teams to integrate the computation module with the overall Odin architecture.
- Implement APIs for seamless interaction between the computation module and other components.
- Develop unit tests, benchmarks, and validation procedures for computational accuracy and performance.
- Troubleshoot and debug issues across heterogeneous systems.
- Document code, algorithms, and design decisions to ensure maintainability and knowledge sharing.
Experience and Qualification:
- 3+ years of experience in HPC, parallel computing, or numerical simulations.
- Proven experience in GPU programming (CUDA, HIP, or OpenCL).
- Hands-on experience with CPU parallelism using OpenMP, MPI, or similar frameworks.
- Familiarity with asynchronous workflows and task orchestration frameworks
- Bachelor’s or Master’s degree in Computer Science, Computational Physics, Applied Mathematics, or related fields.
- Programming Languages: Proficiency in C++. Rust or Julia experience is a plus.
- Parallel Computing: Strong understanding of GPU programming (CUDA, HIP, or SYCL) and multi-threaded CPU programming (OpenMP, MPI).
- Memory Management: Expertise in optimizing memory allocation, data movement, and unified memory (e.g., CUDA UVM).
- Load Balancing: Experience with dynamic and static load-balancing techniques in HPC systems.
- Experience with orchestration tools
- Strong problem-solving skills and ability to work in a multidisciplinary team.
- Excellent communication skills for cross-team collaboration and documentation.
- Passion for innovation and a drive to push technological boundaries.
Preferred Qualifications:
- Experience in developing simulation or visualization software for oil and gas or similar industries.
- Familiarity with modern containerization technologies (e.g., Docker, Kubernetes).
- Knowledge of advanced numerical methods like finite element/volume methods, deep learning or deep neural operators.
We offer:
- Flexible working format - remote, office-based or flexible
- A competitive salary and good compensation package
- Personalized career growth
- Professional development tools (mentorship program, tech talks and trainings, centers of excellence, and more)
- Active tech communities with regular knowledge sharing
- Education reimbursement
- Memorable anniversary presents
- Corporate events and team buildings
- Other location-specific benefits