Research Software Engineer at Durham University

Durham Univesity

on-site · full-time · Visa sponsorship

Apply for this role at Durham University

Responsibilities:
- Profile, benchmark and optimise large scientific codes for HPC systems (CPU and prototype hardware).
- Implement parallelisation and algorithmic improvements using MPI, OpenMP and other models.
- Port and tune codes for alternative architectures, including GPU accelerators (CUDA/OpenCL/other frameworks).
- Run performance experiments on DiRAC/COSMA resources and produce reproducible benchmarks.
- Collaborate with scientists to gather requirements, translate research needs into software changes, and validate scientific results.
- Develop and maintain automation, testing, and deployment workflows for HPC software (containers, job scripts, CI where applicable).
- Produce clear documentation, performance reports and support materials for users and maintainers.

Requirements:
- Degree in a relevant discipline; PhD preferred or equivalent research/software experience.
- Strong programming skills in C/C++ and Python; experience with Fortran is beneficial.
- Proven experience with parallel programming (MPI, OpenMP) and performance tuning on Linux-based HPC systems.
- Practical experience porting code to GPUs and optimising for accelerator architectures.
- Familiarity with HPC storage and I/O (HDF5, Lustre) and performance analysis tools (profilers, counters).
- Good communication skills to work with research teams and document technical work.
- Ability to manage tasks independently, prioritise work across multiple projects, and adhere to reproducible research practices.