Skip to content

Welcome to the QMUL HPC blog

Fiji and Napari - Sharing the Same CUDA Code

Image processing and analysis play an important role in science and engineering. Some calculations require heavy computation, thus needing a GPU to run some of the algorithms in a feasible time. However, the ecosystem of scientific image processing software is broadening. Fiji, a distribution of ImageJ written in Java, has been around for decades and is popular in biomedical imaging and other similar fields. In the Python world, Napari was released - another image processing tool for the Python community. Both of these software tools have a GUI for users to inspect and process the images.

NVIDIA L40S GPUs - New and expensive isn't always better

Our xlg nodes feature NVIDIA L40S GPUs, based on the Ada Lovelace architecture. They are a cheaper alternative to the H200 GPUs but still offer competitive performance depending on your scientific problem. In this blog post, we will compare the A100, H200, and L40S GPUs to help you decide which one to use for your jobs.

Marimo: The Antidote to Jupyter Notebooks

Don't use a notebook to do an HPC job-script's job, unless your notebook is also a job-script. Marimo, an alternative to Jupyter, enables this, and also helps mitigate some other common criticisms of notebooks. Through the magic of web-assembly, it even allows your Python code to live rent-free in someone else's web browser. Using Lyapunov fractals as a somewhat psychedelic example, we might as well experiment with multiprocessing and shared memory along the way.

Modernising Rcpp and C++ Code With std::span

The programming language C++ is still widely used today, especially for high-performance computing. Out-of-date practices from the 80s and 90s should still work now because the language is designed to be highly backwards compatible. As C++ evolved, there were numerous efforts to modernise the language and update programming practices with new features to improve the C++ experience, such as memory-safety features.

Queue scheduler announcement

Updated March 2026

We have updated this post with answers to some common questions.

For the lifetime of the Apocrita HPC cluster, the queue scheduler software we have been using to allocate jobs to individual compute nodes has been a variant of Grid Engine. Over the past few years, the company who own this software has changed hands a few times, and we feel that development has stagnated in terms of features, while bugs have not been resolved to our satisfaction.

Virtual vs physical memory

Memory usage can be broadly simplified into two values: Virtual memory (VMEM) which a program believes it has, and Physical memory (also known as "Resident Set Size" or RSS for short), which is the actual amount of memory it uses.