RSE Team

RSE Team

Who we are

The DiRAC Research Software Engineering (RSE) team supports the DiRAC scientific community with bespoke scientific software assistance. When it comes to scientific computing, access to cutting-edge hardware is only half the story — making optimal use of it via your software is the other half. Done well, this can achieve dramatic improvements in runtimes at a fraction of the cost of new hardware, opening the road to more novel science and faster results.

We are a team of professional RSEs with varied scientific backgrounds. As an integral part of DiRAC, we already have familiarity with many of the codes running on DiRAC systems, as well as the systems themselves. We are trained in software engineering methodology and best practices, and in scientific algorithms and numerical methods. Our exposure to a wide range of scientific domains means we can offer unique insights into your code and be valuable collaborators in your research.

What we can help with

We are here to help you make the best use of your software on DiRAC infrastructure:

  • Ensure your software makes best use of the DiRAC infrastructure
  • Help you establish and maintain good software development practices
  • Optimise the CPU, GPU, memory, and network/scaling performance of your codes
  • Help refactor your code to use new hardware architectures and accelerators, including GPUs
  • Benchmark codes of interest to DiRAC on existing and upcoming architectures
  • Help you better understand how your code interacts with the hardware — and how to optimise that


We also participate in the DiRAC training programme, delivering training sessions and developing materials in collaboration with technology vendors.

How to work with us

Access to RSE effort is provided via the same annual Resource Allocation Committee (RAC) process as compute resources. [Link to latest call]

You can apply for RSE effort on its own or alongside compute resources. We recommend requesting a realistic amount of RSE time for your task — factoring in onboarding, implementing good software development practices, documentation, and handover at the end of your project. If you need help planning your RSE project, please get in touch — we’re happy to help.

The RSE team also provides Technical Assessments for all RAC proposals, supporting applicants to request the appropriate resources on the appropriate facility. As part of this process, we may recommend applying for RSE effort alongside compute resources.

FAQs

Who provides RSE support and how is it decided who works on my project?

The particular RSE or RSEs allocated to a project are decided by the RSE team, taking into account your proposal and the expertise and availability within the team. We always prioritise the best outcome for the research project when making this decision.

When will my project start?

While we strive to accommodate all RAC requests for RSE time, the exact start date and amount of effort available will vary according to team capacity. We’ll be in touch once allocations are confirmed.

How long can RSE projects run?

Project length can vary from 3 months to 3 years according to the RAC. For projects longer than 3 months, we typically allocate more than one RSE — for example two RSEs at 50% effort — to ensure resilience and continuity, so that important projects and codes are not left without support if circumstances change.

How do RSEs work with research teams day to day?

DiRAC RSEs work collaboratively with the scientific groups they support. We strive to understand your science well enough to contribute meaningfully to the software, developing it in close collaboration with you. Regular meetings with your assigned RSE are a minimum expectation, and we’ll also use other approaches — pair programming, hackathons, site visits — wherever they make sense.

What about the long-term sustainability of our code?

Sustainability is central to what we do. We’ll work with your group to develop software in a sustainable and reproducible way, covering source code management, unit testing, code validation, performance monitoring, documentation, and version control. The goal is a codebase your team can maintain, expand, and hand on to future collaborators.